diff options
author | Miklos Szeredi <mszeredi@redhat.com> | 2017-09-12 16:57:53 +0200 |
---|---|---|
committer | Miklos Szeredi <mszeredi@redhat.com> | 2017-09-12 16:57:53 +0200 |
commit | e1c0eecba1a4154c35c400f1cc9a035e6246bbcd (patch) | |
tree | c13747b8adb3435b46c1c65647d5f7ab173cc0a7 /fs/fuse/fuse_i.h | |
parent | 5d6d3a301c4e749e04be6fcdcf4cb1ffa8bae524 (diff) | |
download | lwn-e1c0eecba1a4154c35c400f1cc9a035e6246bbcd.tar.gz lwn-e1c0eecba1a4154c35c400f1cc9a035e6246bbcd.zip |
fuse: honor iocb sync flags on write
If the IOCB_DSYNC flag is set a sync is not being performed by
fuse_file_write_iter.
Honor IOCB_DSYNC/IOCB_SYNC by setting O_DYSNC/O_SYNC respectively in the
flags filed of the write request.
We don't need to sync data or metadata, since fuse_perform_write() does
write-through and the filesystem is responsible for updating file times.
Original patch by Vitaly Zolotusky.
Reported-by: Nate Clark <nate@neworld.us>
Cc: Vitaly Zolotusky <vitaly@unitc.com>.
Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
Diffstat (limited to 'fs/fuse/fuse_i.h')
-rw-r--r-- | fs/fuse/fuse_i.h | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/fs/fuse/fuse_i.h b/fs/fuse/fuse_i.h index bd4d2a3e1ec1..610514f6aadf 100644 --- a/fs/fuse/fuse_i.h +++ b/fs/fuse/fuse_i.h @@ -252,16 +252,15 @@ struct fuse_io_priv { bool should_dirty; int err; struct kiocb *iocb; - struct file *file; struct completion *done; bool blocking; }; -#define FUSE_IO_PRIV_SYNC(f) \ +#define FUSE_IO_PRIV_SYNC(i) \ { \ .refcnt = KREF_INIT(1), \ .async = 0, \ - .file = f, \ + .iocb = i, \ } /** |