From: Omar Sandoval Date: Thu, 15 Aug 2019 21:04:03 +0000 (-0700) Subject: btrfs: treat RWF_{,D}SYNC writes as sync for CRCs X-Git-Tag: v5.15~5166^2~47 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=f50cb7aff9645998b3269eac903a5e01cd6ba689;p=platform%2Fkernel%2Flinux-starfive.git btrfs: treat RWF_{,D}SYNC writes as sync for CRCs The VFS indicates a synchronous write to ->write_iter() via iocb->ki_flags. The IOCB_{,D}SYNC flags may be set based on the file (see iocb_flags()) or the RWF_* flags passed to a syscall like pwritev2() (see kiocb_set_rw_flags()). However, in btrfs_file_write_iter(), we're checking if a write is synchronous based only on the file; we use this to decide when to bump the sync_writers counter and thus do CRCs synchronously. Make sure we do this for all synchronous writes as determined by the VFS. Reviewed-by: Josef Bacik Signed-off-by: Omar Sandoval Reviewed-by: David Sterba [ add const ] Signed-off-by: David Sterba --- diff --git a/fs/btrfs/file.c b/fs/btrfs/file.c index 25df5b0..702c30a 100644 --- a/fs/btrfs/file.c +++ b/fs/btrfs/file.c @@ -1882,7 +1882,7 @@ static ssize_t btrfs_file_write_iter(struct kiocb *iocb, u64 start_pos; u64 end_pos; ssize_t num_written = 0; - bool sync = (file->f_flags & O_DSYNC) || IS_SYNC(file->f_mapping->host); + const bool sync = iocb->ki_flags & IOCB_DSYNC; ssize_t err; loff_t pos; size_t count;