[PATCH] fuse: check O_DIRECT
Check O_DIRECT and return -EINVAL error in open. dentry_open() also checks this but only after the open method is called. This patch optimizes away the unnecessary upcalls in this case. It could be a correctness issue too: if filesystem has open() with side effect, then it should fail before doing the open, not after. Signed-off-by: Miklos Szeredi <miklos@szeredi.hu> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
daa35edc0a
commit
dd190d066b
@ -23,6 +23,10 @@ int fuse_open_common(struct inode *inode, struct file *file, int isdir)
|
|||||||
struct fuse_file *ff;
|
struct fuse_file *ff;
|
||||||
int err;
|
int err;
|
||||||
|
|
||||||
|
/* VFS checks this, but only _after_ ->open() */
|
||||||
|
if (file->f_flags & O_DIRECT)
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
err = generic_file_open(inode, file);
|
err = generic_file_open(inode, file);
|
||||||
if (err)
|
if (err)
|
||||||
return err;
|
return err;
|
||||||
|
Loading…
Reference in New Issue
Block a user