diff options
author | Miklos Szeredi <mszeredi@suse.cz> | 2009-04-02 08:25:34 -0400 |
---|---|---|
committer | Miklos Szeredi <mszeredi@suse.cz> | 2009-04-02 08:25:34 -0400 |
commit | f4975c67dd9ad8eb47a4c77af0521a2b16ee0197 (patch) | |
tree | 4d4642e04e40f4835df9a18192da53b98b206bf8 /fs/fuse/dir.c | |
parent | 833bb3046b6cb320e775ea2160ddca87d53260d5 (diff) |
fuse: allow kernel to access "direct_io" files
Allow the kernel read and write on "direct_io" files. This is
necessary for nfs export and execute support.
The implementation is simple: if an access from the kernel is
detected, don't perform get_user_pages(), just use the kernel address
provided by the requester to copy from/to the userspace filesystem.
Signed-off-by: Miklos Szeredi <mszeredi@suse.cz>
Diffstat (limited to 'fs/fuse/dir.c')
-rw-r--r-- | fs/fuse/dir.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/fs/fuse/dir.c b/fs/fuse/dir.c index 06da05261e04..8b8eebc5614b 100644 --- a/fs/fuse/dir.c +++ b/fs/fuse/dir.c | |||
@@ -1032,6 +1032,7 @@ static int fuse_readdir(struct file *file, void *dstbuf, filldir_t filldir) | |||
1032 | fuse_put_request(fc, req); | 1032 | fuse_put_request(fc, req); |
1033 | return -ENOMEM; | 1033 | return -ENOMEM; |
1034 | } | 1034 | } |
1035 | req->out.argpages = 1; | ||
1035 | req->num_pages = 1; | 1036 | req->num_pages = 1; |
1036 | req->pages[0] = page; | 1037 | req->pages[0] = page; |
1037 | fuse_read_fill(req, file, inode, file->f_pos, PAGE_SIZE, FUSE_READDIR); | 1038 | fuse_read_fill(req, file, inode, file->f_pos, PAGE_SIZE, FUSE_READDIR); |