2007-12-09 19:04:06

by Enrik Berkhan

[permalink] [raw]
Subject: [PATCH 1/1] fix 2.6.24-rc1 nfs_file_mmap change for NOMMU

- generic_file_mmap returns -ENOSYS for NOMMU systems; replicate this
behaviour

Signed-off-by: Enrik Berkhan <[email protected]>
---
fs/nfs/file.c | 4 ++++
1 files changed, 4 insertions(+)

Index: fs/nfs/file.c
===================================================================
--- fs/nfs/file.c.orig 2007-12-05 09:48:59.000000000 +0100
+++ fs/nfs/file.c 2007-12-05 09:49:56.000000000 +0100
@@ -283,7 +283,11 @@ nfs_file_mmap(struct file * file, struct
if (!status) {
vma->vm_ops = &nfs_file_vm_ops;
vma->vm_flags |= VM_CAN_NONLINEAR;
+#ifdef CONFIG_MMU
file_accessed(file);
+#else
+ return -ENOSYS;
+#endif
}
return status;
}


2007-12-12 02:40:42

by Trond Myklebust

[permalink] [raw]
Subject: Re: [PATCH 1/1] fix 2.6.24-rc1 nfs_file_mmap change for NOMMU


On Sun, 2007-12-09 at 19:52 +0100, Berkhan, Enrik (GE Infra, Oil & Gas)
wrote:
> - generic_file_mmap returns -ENOSYS for NOMMU systems; replicate this
> behaviour
>
> Signed-off-by: Enrik Berkhan <[email protected]>
> ---
> fs/nfs/file.c | 4 ++++
> 1 files changed, 4 insertions(+)
>
> Index: fs/nfs/file.c
> ===================================================================
> --- fs/nfs/file.c.orig 2007-12-05 09:48:59.000000000 +0100
> +++ fs/nfs/file.c 2007-12-05 09:49:56.000000000 +0100
> @@ -283,7 +283,11 @@ nfs_file_mmap(struct file * file, struct
> if (!status) {
> vma->vm_ops = &nfs_file_vm_ops;
> vma->vm_flags |= VM_CAN_NONLINEAR;
> +#ifdef CONFIG_MMU
> file_accessed(file);
> +#else
> + return -ENOSYS;
> +#endif
> }
> return status;
> }

Why do that after going through the process of revalidating the inode
etc.? Just replace nfs_file_mmap() with a function returning ENOSYS in
the case of CONFIG_MMU.

Better still, in the case of CONFIG_MMU, instead of having an
nfs_file_mmap(), just replace the .mmap field in nfs_file_operations
with a call to generic_file_mmap().

Trond

2007-12-12 07:30:24

by Enrik Berkhan

[permalink] [raw]
Subject: Re: [PATCH 1/1] fix 2.6.24-rc1 nfs_file_mmap change for NOMMU

Trond Myklebust wrote:
> On Sun, 2007-12-09 at 19:52 +0100, Berkhan, Enrik (GE Infra, Oil & Gas)
> wrote:
>> - generic_file_mmap returns -ENOSYS for NOMMU systems; replicate this
>> behaviour
>
> Why do that after going through the process of revalidating the inode
> etc.? Just replace nfs_file_mmap() with a function returning ENOSYS in
> the case of CONFIG_MMU.
>
> Better still, in the case of CONFIG_MMU, instead of having an
> nfs_file_mmap(), just replace the .mmap field in nfs_file_operations
> with a call to generic_file_mmap().

I just tried to make it work without really knowing what I do :)

I have mailed another patch implementing your second suggestion (the system
still boots with nfsroot).

Enrik

2007-12-12 20:03:39

by Trond Myklebust

[permalink] [raw]
Subject: Re: [PATCH 1/1] fix 2.6.24-rc1 nfs_file_mmap change for NOMMU


On Wed, 2007-12-12 at 08:29 +0100, Berkhan, Enrik (GE Infra, Oil & Gas)
wrote:
> Trond Myklebust wrote:
> > On Sun, 2007-12-09 at 19:52 +0100, Berkhan, Enrik (GE Infra, Oil & Gas)
> > wrote:
> >> - generic_file_mmap returns -ENOSYS for NOMMU systems; replicate this
> >> behaviour
> >
> > Why do that after going through the process of revalidating the inode
> > etc.? Just replace nfs_file_mmap() with a function returning ENOSYS in
> > the case of CONFIG_MMU.
> >
> > Better still, in the case of CONFIG_MMU, instead of having an
> > nfs_file_mmap(), just replace the .mmap field in nfs_file_operations
> > with a call to generic_file_mmap().
>
> I just tried to make it work without really knowing what I do :)
>
> I have mailed another patch implementing your second suggestion (the system
> still boots with nfsroot).

Thanks. That patch looks better. I have 2 questions, though:

1. Is this urgent enough to warrant pushing into 2.6.24?
2. Are there any filesystems which support mmap() on !CONFIG_MMU?

Cheers
Trond