From: Kent Overstreet Date: Mon, 11 Mar 2024 03:00:23 +0000 (-0400) Subject: bcachefs: Always flush write buffer in delete_dead_inodes() X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=5d04409a62c322494cca0d0d8fef8b7f2d3bcc3f;p=linux.git bcachefs: Always flush write buffer in delete_dead_inodes() Signed-off-by: Kent Overstreet --- diff --git a/fs/bcachefs/inode.c b/fs/bcachefs/inode.c index a3139bb66f77e..2b5e06770ab39 100644 --- a/fs/bcachefs/inode.c +++ b/fs/bcachefs/inode.c @@ -1181,6 +1181,15 @@ int bch2_delete_dead_inodes(struct bch_fs *c) bool need_another_pass; int ret; again: + /* + * if we ran check_inodes() unlinked inodes will have already been + * cleaned up but the write buffer will be out of sync; therefore we + * alway need a write buffer flush + */ + ret = bch2_btree_write_buffer_flush_sync(trans); + if (ret) + goto err; + need_another_pass = false; /* @@ -1213,12 +1222,8 @@ again: ret; })); - if (!ret && need_another_pass) { - ret = bch2_btree_write_buffer_flush_sync(trans); - if (ret) - goto err; + if (!ret && need_another_pass) goto again; - } err: bch2_trans_put(trans); return ret;