From 5d04409a62c322494cca0d0d8fef8b7f2d3bcc3f Mon Sep 17 00:00:00 2001 From: Kent Overstreet Date: Sun, 10 Mar 2024 23:00:23 -0400 Subject: [PATCH] bcachefs: Always flush write buffer in delete_dead_inodes() Signed-off-by: Kent Overstreet --- fs/bcachefs/inode.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) 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; -- 2.30.2