summaryrefslogtreecommitdiff
path: root/fs/bcachefs/inode.c
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@linux.dev>2023-11-03 02:37:15 +0300
committerKent Overstreet <kent.overstreet@linux.dev>2024-01-01 19:47:39 +0300
commit183bcc89b855c412bfefa545b799006d66f689a6 (patch)
tree5f639310d3f967cc5f938d56f2a0f59382f07210 /fs/bcachefs/inode.c
parentcf5bacb6a5213cd7f59c1dbf11531ff96445027a (diff)
downloadlinux-183bcc89b855c412bfefa545b799006d66f689a6.tar.xz
bcachefs: Clean up btree write buffer write ref handling
__bch2_btree_write_buffer_flush() now assumes a write ref is already held (as called by the transaction commit path); and the wrappers bch2_write_buffer_flush() and flush_sync() take an explicit write ref. This means internally the write buffer code can always use BTREE_INSERT_NOCHECK_RW, instead of in the previous code passing flags around and hoping the NOCHECK_RW flag was always carried around correctly. Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
Diffstat (limited to 'fs/bcachefs/inode.c')
-rw-r--r--fs/bcachefs/inode.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/fs/bcachefs/inode.c b/fs/bcachefs/inode.c
index abd6cacafe93..0d2bdc7575a8 100644
--- a/fs/bcachefs/inode.c
+++ b/fs/bcachefs/inode.c
@@ -1162,10 +1162,6 @@ int bch2_delete_dead_inodes(struct bch_fs *c)
again:
need_another_pass = false;
- ret = bch2_btree_write_buffer_flush_sync(trans);
- if (ret)
- goto err;
-
/*
* Weird transaction restart handling here because on successful delete,
* bch2_inode_rm_snapshot() will return a nested transaction restart,
@@ -1196,8 +1192,12 @@ again:
}
bch2_trans_iter_exit(trans, &iter);
- if (!ret && need_another_pass)
+ if (!ret && need_another_pass) {
+ ret = bch2_btree_write_buffer_flush_sync(trans);
+ if (ret)
+ goto err;
goto again;
+ }
err:
bch2_trans_put(trans);