diff options
author | Kent Overstreet <kent.overstreet@gmail.com> | 2021-05-19 21:21:49 -0400 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@gmail.com> | 2021-05-19 21:35:54 -0400 |
commit | 83462182b7f1d3bf9205fed508ffee5235c43256 (patch) | |
tree | eda6e60b63dfdb49c0990853e04ec67d59b8899d | |
parent | dfd8ef7343065ba961167bf4c89752ed4f286534 (diff) |
bcachefs: Make bch2_remap_range respect O_SYNC
Caught by xfstest generic/628
Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
-rw-r--r-- | fs/bcachefs/fs-io.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/fs/bcachefs/fs-io.c b/fs/bcachefs/fs-io.c index 33c8ac17703d..174ec3004370 100644 --- a/fs/bcachefs/fs-io.c +++ b/fs/bcachefs/fs-io.c @@ -2935,6 +2935,11 @@ loff_t bch2_remap_file_range(struct file *file_src, loff_t pos_src, if (pos_dst + ret > dst->v.i_size) i_size_write(&dst->v, pos_dst + ret); spin_unlock(&dst->v.i_lock); + + if (((file_dst->f_flags & (__O_SYNC | O_DSYNC)) || + IS_SYNC(file_inode(file_dst))) && + !c->opts.journal_flush_disabled) + ret = bch2_journal_flush_seq(&c->journal, dst->ei_journal_seq); err: bch2_unlock_inodes(INODE_LOCK|INODE_PAGECACHE_BLOCK, src, dst); |