2008-11-06 09:14:01

by Bryan Wu

[permalink] [raw]
Subject: [PATCH] nfs client: kill compile warning on NOMMU machine

On nommu machine such as Blackfin, when compling NFS we got an warning about
nfs_file_mmap() function defined but not used.

This patch kills this warning.

Signed-off-by: Bryan Wu <[email protected]>
---
fs/nfs/file.c | 16 ++++++++++++----
1 files changed, 12 insertions(+), 4 deletions(-)

diff --git a/fs/nfs/file.c b/fs/nfs/file.c
index d319b49..66b8b8e 100644
--- a/fs/nfs/file.c
+++ b/fs/nfs/file.c
@@ -64,11 +64,7 @@ const struct file_operations nfs_file_operations = {
.write = do_sync_write,
.aio_read = nfs_file_read,
.aio_write = nfs_file_write,
-#ifdef CONFIG_MMU
.mmap = nfs_file_mmap,
-#else
- .mmap = generic_file_mmap,
-#endif
.open = nfs_file_open,
.flush = nfs_file_flush,
.release = nfs_file_release,
@@ -294,6 +290,7 @@ nfs_file_splice_read(struct file *filp, loff_t *ppos,
return res;
}

+#ifdef CONFIG_MMU
static int
nfs_file_mmap(struct file * file, struct vm_area_struct * vma)
{
@@ -312,6 +309,17 @@ nfs_file_mmap(struct file * file, struct vm_area_struct * vma)
}
return status;
}
+#else
+static int
+nfs_file_mmap(struct file *file, struct vm_area_struct *vma)
+{
+ /* Kill warning: 'nfs_file_vm_ops' defined but not used */
+ struct vm_operations_struct *vm_ops;
+ vm_ops = &nfs_file_vm_ops;
+
+ return generic_file_mmap(file, vma);
+}
+#endif

/*
* Flush any dirty pages for this process, and check for write errors.
--
1.5.6.3


2009-02-05 09:02:39

by Bryan Wu

[permalink] [raw]
Subject: Re: [PATCH] nfs client: kill compile warning on NOMMU machine

Hi guys,

Is it possible to merge this patch?

Thanks
-Bryan

On Thu, Nov 6, 2008 at 5:15 PM, Bryan Wu <[email protected]> wrote:
> On nommu machine such as Blackfin, when compling NFS we got an warning about
> nfs_file_mmap() function defined but not used.
>
> This patch kills this warning.
>
> Signed-off-by: Bryan Wu <[email protected]>
> ---
> fs/nfs/file.c | 16 ++++++++++++----
> 1 files changed, 12 insertions(+), 4 deletions(-)
>
> diff --git a/fs/nfs/file.c b/fs/nfs/file.c
> index d319b49..66b8b8e 100644
> --- a/fs/nfs/file.c
> +++ b/fs/nfs/file.c
> @@ -64,11 +64,7 @@ const struct file_operations nfs_file_operations = {
> .write = do_sync_write,
> .aio_read = nfs_file_read,
> .aio_write = nfs_file_write,
> -#ifdef CONFIG_MMU
> .mmap = nfs_file_mmap,
> -#else
> - .mmap = generic_file_mmap,
> -#endif
> .open = nfs_file_open,
> .flush = nfs_file_flush,
> .release = nfs_file_release,
> @@ -294,6 +290,7 @@ nfs_file_splice_read(struct file *filp, loff_t *ppos,
> return res;
> }
>
> +#ifdef CONFIG_MMU
> static int
> nfs_file_mmap(struct file * file, struct vm_area_struct * vma)
> {
> @@ -312,6 +309,17 @@ nfs_file_mmap(struct file * file, struct vm_area_struct * vma)
> }
> return status;
> }
> +#else
> +static int
> +nfs_file_mmap(struct file *file, struct vm_area_struct *vma)
> +{
> + /* Kill warning: 'nfs_file_vm_ops' defined but not used */
> + struct vm_operations_struct *vm_ops;
> + vm_ops = &nfs_file_vm_ops;
> +
> + return generic_file_mmap(file, vma);
> +}
> +#endif
>
> /*
> * Flush any dirty pages for this process, and check for write errors.
> --
> 1.5.6.3
>

2009-02-05 13:28:40

by Myklebust, Trond

[permalink] [raw]
Subject: Re: [PATCH] nfs client: kill compile warning on NOMMU machine

On Thu, 2009-02-05 at 17:02 +0800, Bryan Wu wrote:
> Hi guys,
>
> Is it possible to merge this patch?

NACK. Although it would be nice to get rid of the warning, this patch
does so at the price of even further obfuscating the fact that we're
just returning -ENOSYS in the no MMU case, and by causing
nfs_file_vm_ops (which is currently optimised away) to be compiled in
for no good reason at all.

Trond

> Thanks
> -Bryan
>
> On Thu, Nov 6, 2008 at 5:15 PM, Bryan Wu <[email protected]> wrote:
> > On nommu machine such as Blackfin, when compling NFS we got an warning about
> > nfs_file_mmap() function defined but not used.
> >
> > This patch kills this warning.
> >
> > Signed-off-by: Bryan Wu <[email protected]>
> > ---
> > fs/nfs/file.c | 16 ++++++++++++----
> > 1 files changed, 12 insertions(+), 4 deletions(-)
> >
> > diff --git a/fs/nfs/file.c b/fs/nfs/file.c
> > index d319b49..66b8b8e 100644
> > --- a/fs/nfs/file.c
> > +++ b/fs/nfs/file.c
> > @@ -64,11 +64,7 @@ const struct file_operations nfs_file_operations = {
> > .write = do_sync_write,
> > .aio_read = nfs_file_read,
> > .aio_write = nfs_file_write,
> > -#ifdef CONFIG_MMU
> > .mmap = nfs_file_mmap,
> > -#else
> > - .mmap = generic_file_mmap,
> > -#endif
> > .open = nfs_file_open,
> > .flush = nfs_file_flush,
> > .release = nfs_file_release,
> > @@ -294,6 +290,7 @@ nfs_file_splice_read(struct file *filp, loff_t *ppos,
> > return res;
> > }
> >
> > +#ifdef CONFIG_MMU
> > static int
> > nfs_file_mmap(struct file * file, struct vm_area_struct * vma)
> > {
> > @@ -312,6 +309,17 @@ nfs_file_mmap(struct file * file, struct vm_area_struct * vma)
> > }
> > return status;
> > }
> > +#else
> > +static int
> > +nfs_file_mmap(struct file *file, struct vm_area_struct *vma)
> > +{
> > + /* Kill warning: 'nfs_file_vm_ops' defined but not used */
> > + struct vm_operations_struct *vm_ops;
> > + vm_ops = &nfs_file_vm_ops;
> > +
> > + return generic_file_mmap(file, vma);
> > +}
> > +#endif
> >
> > /*
> > * Flush any dirty pages for this process, and check for write errors.
> > --
> > 1.5.6.3
> >
--
Trond Myklebust
Linux NFS client maintainer

NetApp
[email protected]
http://www.netapp.com

2009-02-05 15:38:24

by Myklebust, Trond

[permalink] [raw]
Subject: Re: [PATCH] nfs client: kill compile warning on NOMMU machine

On Thu, 2009-02-05 at 08:28 -0500, Trond Myklebust wrote:
> On Thu, 2009-02-05 at 17:02 +0800, Bryan Wu wrote:
> > Hi guys,
> >
> > Is it possible to merge this patch?
>
> NACK. Although it would be nice to get rid of the warning, this patch
> does so at the price of even further obfuscating the fact that we're
> just returning -ENOSYS in the no MMU case, and by causing
> nfs_file_vm_ops (which is currently optimised away) to be compiled in
> for no good reason at all.
>
> Trond

How about the following compromise: we get rid of the special casing
altogether and just always call generic_file_mmap. If the noMMU folks
want further optimisations, then they can inline generic_file_mmap(), so
that the compiler always takes the 'generic_file_mmap() failed' path.

Cheers
Trond
------------------------------------------------------------
From: Trond Myklebust <[email protected]>
Date: Thu, 5 Feb 2009 10:23:36 -0500
NFS: Kill the "defined but not used" compile error on nommu machines

Bryan Wu reports that when compiling NFS on nommu machines he gets a
"defined but not used" error on nfs_file_mmap().

The easiest fix is simply to get rid of the special casing in NFS, and
just always call generic_file_mmap() to set up the file.

Signed-off-by: Trond Myklebust <[email protected]>
---

fs/nfs/file.c | 12 +++++-------
1 files changed, 5 insertions(+), 7 deletions(-)


diff --git a/fs/nfs/file.c b/fs/nfs/file.c
index 404c19c..1eab9c9 100644
--- a/fs/nfs/file.c
+++ b/fs/nfs/file.c
@@ -64,11 +64,7 @@ const struct file_operations nfs_file_operations = {
.write = do_sync_write,
.aio_read = nfs_file_read,
.aio_write = nfs_file_write,
-#ifdef CONFIG_MMU
.mmap = nfs_file_mmap,
-#else
- .mmap = generic_file_mmap,
-#endif
.open = nfs_file_open,
.flush = nfs_file_flush,
.release = nfs_file_release,
@@ -304,11 +300,13 @@ nfs_file_mmap(struct file * file, struct vm_area_struct * vma)
dprintk("NFS: mmap(%s/%s)\n",
dentry->d_parent->d_name.name, dentry->d_name.name);

- status = nfs_revalidate_mapping(inode, file->f_mapping);
+ /* Note: generic_file_mmap() returns ENOSYS on nommu systems
+ * so we call that before revalidating the mapping
+ */
+ status = generic_file_mmap(file, vma);
if (!status) {
vma->vm_ops = &nfs_file_vm_ops;
- vma->vm_flags |= VM_CAN_NONLINEAR;
- file_accessed(file);
+ status = nfs_revalidate_mapping(inode, file->f_mapping);
}
return status;
}

--
Trond Myklebust
Linux NFS client maintainer

NetApp
[email protected]
http://www.netapp.com

2009-02-05 16:24:39

by Bryan Wu

[permalink] [raw]
Subject: Re: [PATCH] nfs client: kill compile warning on NOMMU machine

On Thu, Feb 5, 2009 at 11:37 PM, Trond Myklebust
<[email protected]> wrote:
> On Thu, 2009-02-05 at 08:28 -0500, Trond Myklebust wrote:
>> On Thu, 2009-02-05 at 17:02 +0800, Bryan Wu wrote:
>> > Hi guys,
>> >
>> > Is it possible to merge this patch?
>>
>> NACK. Although it would be nice to get rid of the warning, this patch
>> does so at the price of even further obfuscating the fact that we're
>> just returning -ENOSYS in the no MMU case, and by causing
>> nfs_file_vm_ops (which is currently optimised away) to be compiled in
>> for no good reason at all.
>>
>> Trond
>
> How about the following compromise: we get rid of the special casing
> altogether and just always call generic_file_mmap. If the noMMU folks
> want further optimisations, then they can inline generic_file_mmap(), so
> that the compiler always takes the 'generic_file_mmap() failed' path.
>

Beautiful, I do love this one and would like to test it on our platform.

Thanks
-Bryan

> Cheers
> Trond
> ------------------------------------------------------------
> From: Trond Myklebust <[email protected]>
> Date: Thu, 5 Feb 2009 10:23:36 -0500
> NFS: Kill the "defined but not used" compile error on nommu machines
>
> Bryan Wu reports that when compiling NFS on nommu machines he gets a
> "defined but not used" error on nfs_file_mmap().
>
> The easiest fix is simply to get rid of the special casing in NFS, and
> just always call generic_file_mmap() to set up the file.
>
> Signed-off-by: Trond Myklebust <[email protected]>
> ---
>
> fs/nfs/file.c | 12 +++++-------
> 1 files changed, 5 insertions(+), 7 deletions(-)
>
>
> diff --git a/fs/nfs/file.c b/fs/nfs/file.c
> index 404c19c..1eab9c9 100644
> --- a/fs/nfs/file.c
> +++ b/fs/nfs/file.c
> @@ -64,11 +64,7 @@ const struct file_operations nfs_file_operations = {
> .write = do_sync_write,
> .aio_read = nfs_file_read,
> .aio_write = nfs_file_write,
> -#ifdef CONFIG_MMU
> .mmap = nfs_file_mmap,
> -#else
> - .mmap = generic_file_mmap,
> -#endif
> .open = nfs_file_open,
> .flush = nfs_file_flush,
> .release = nfs_file_release,
> @@ -304,11 +300,13 @@ nfs_file_mmap(struct file * file, struct vm_area_struct * vma)
> dprintk("NFS: mmap(%s/%s)\n",
> dentry->d_parent->d_name.name, dentry->d_name.name);
>
> - status = nfs_revalidate_mapping(inode, file->f_mapping);
> + /* Note: generic_file_mmap() returns ENOSYS on nommu systems
> + * so we call that before revalidating the mapping
> + */
> + status = generic_file_mmap(file, vma);
> if (!status) {
> vma->vm_ops = &nfs_file_vm_ops;
> - vma->vm_flags |= VM_CAN_NONLINEAR;
> - file_accessed(file);
> + status = nfs_revalidate_mapping(inode, file->f_mapping);
> }
> return status;
> }
>
> --
> Trond Myklebust
> Linux NFS client maintainer
>
> NetApp
> [email protected]
> http://www.netapp.com
>