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>
        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;