From: Miklos Szeredi Date: Fri, 30 Sep 2005 18:59:02 +0000 (-0700) Subject: [PATCH] fuse: check O_DIRECT X-Git-Tag: v2.6.14-rc3~17 X-Git-Url: http://pilppa.com/gitweb/?a=commitdiff_plain;h=dd190d066b7ded8c44b2b67dd0a14bed01525d3c;p=linux-2.6-omap-h63xx.git [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 Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds --- diff --git a/fs/fuse/file.c b/fs/fuse/file.c index 6454022b053..657ab11c173 100644 --- a/fs/fuse/file.c +++ b/fs/fuse/file.c @@ -23,6 +23,10 @@ int fuse_open_common(struct inode *inode, struct file *file, int isdir) struct fuse_file *ff; int err; + /* VFS checks this, but only _after_ ->open() */ + if (file->f_flags & O_DIRECT) + return -EINVAL; + err = generic_file_open(inode, file); if (err) return err;