From: Omar Sandoval <osan...@fb.com> In btrfs_file_write_iter(), we treat a write as synchrononous if the file is marked as synchronous. However, with pwritev2(), a write with RWF_SYNC or RWF_DSYNC is also synchronous even if the file isn't by default. Make sure we bump the sync_writers counter in that case, too, so that we'll do the CRCs synchronously.
Signed-off-by: Omar Sandoval <osan...@fb.com> --- fs/btrfs/file.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fs/btrfs/file.c b/fs/btrfs/file.c index 4393b6b24e02..27223753da7b 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); + bool sync = iocb->ki_flags & IOCB_DSYNC; ssize_t err; loff_t pos; size_t count; -- 2.17.1