diff options
author | Kent Overstreet <kent.overstreet@linux.dev> | 2024-04-15 14:10:51 -0400 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@linux.dev> | 2024-04-15 14:24:48 -0400 |
commit | 5aaa6422b6fdc9cda8f808f7152df2073626b1bd (patch) | |
tree | 19c64dc4c4073a4d6585b16553c84e1fc5e2e9ec /libbcachefs/fs-io.c | |
parent | 5639fb38cabaa326b8b664d874a46509d4a60bf2 (diff) |
Update bcachefs sources to ad29cf999a91 bcachefs: set_btree_iter_dontneed also clears should_be_locked
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
Diffstat (limited to 'libbcachefs/fs-io.c')
-rw-r--r-- | libbcachefs/fs-io.c | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/libbcachefs/fs-io.c b/libbcachefs/fs-io.c index 8c70123b..20b40477 100644 --- a/libbcachefs/fs-io.c +++ b/libbcachefs/fs-io.c @@ -174,18 +174,18 @@ void __bch2_i_sectors_acct(struct bch_fs *c, struct bch_inode_info *inode, static int bch2_flush_inode(struct bch_fs *c, struct bch_inode_info *inode) { - struct bch_inode_unpacked u; - int ret; - if (c->opts.journal_flush_disabled) return 0; - ret = bch2_inode_find_by_inum(c, inode_inum(inode), &u); - if (ret) - return ret; + if (!bch2_write_ref_tryget(c, BCH_WRITE_REF_fsync)) + return -EROFS; - return bch2_journal_flush_seq(&c->journal, u.bi_journal_seq) ?: - bch2_inode_flush_nocow_writes(c, inode); + struct bch_inode_unpacked u; + int ret = bch2_inode_find_by_inum(c, inode_inum(inode), &u) ?: + bch2_journal_flush_seq(&c->journal, u.bi_journal_seq) ?: + bch2_inode_flush_nocow_writes(c, inode); + bch2_write_ref_put(c, BCH_WRITE_REF_fsync); + return ret; } int bch2_fsync(struct file *file, loff_t start, loff_t end, int datasync) |