summaryrefslogtreecommitdiff
path: root/fs/bcachefs/btree_update_leaf.c
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@gmail.com>2019-12-22 23:04:30 -0500
committerKent Overstreet <kent.overstreet@linux.dev>2023-10-22 17:08:33 -0400
commitb1fd23df1deda45a408d007aa0b105569d12b907 (patch)
tree152537cbb9cb393a0ecb3ab38ecbe8343326ce39 /fs/bcachefs/btree_update_leaf.c
parenta8abd3a7f63efe4a366ae5aba10b2466feba39d7 (diff)
downloadlwn-b1fd23df1deda45a408d007aa0b105569d12b907.tar.gz
lwn-b1fd23df1deda45a408d007aa0b105569d12b907.zip
bcachefs: Convert all bch2_trans_commit() users to BTREE_INSERT_ATOMIC
BTREE_INSERT_ATOMIC should really be the default mode, and there's not that much code that doesn't need it - so this is prep work for getting rid of the flag. Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com> Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
Diffstat (limited to 'fs/bcachefs/btree_update_leaf.c')
-rw-r--r--fs/bcachefs/btree_update_leaf.c41
1 files changed, 19 insertions, 22 deletions
diff --git a/fs/bcachefs/btree_update_leaf.c b/fs/bcachefs/btree_update_leaf.c
index 55f785dadaac..1112bdb689dc 100644
--- a/fs/bcachefs/btree_update_leaf.c
+++ b/fs/bcachefs/btree_update_leaf.c
@@ -823,6 +823,20 @@ err:
goto retry;
}
+static int __bch2_btree_insert(struct btree_trans *trans,
+ enum btree_id id, struct bkey_i *k)
+{
+ struct btree_iter *iter;
+
+ iter = bch2_trans_get_iter(trans, id, bkey_start_pos(&k->k),
+ BTREE_ITER_INTENT);
+ if (IS_ERR(iter))
+ return PTR_ERR(iter);
+
+ bch2_trans_update(trans, iter, k);
+ return 0;
+}
+
/**
* bch2_btree_insert - insert keys into the extent btree
* @c: pointer to struct bch_fs
@@ -831,29 +845,12 @@ err:
* @hook: insert callback
*/
int bch2_btree_insert(struct bch_fs *c, enum btree_id id,
- struct bkey_i *k,
- struct disk_reservation *disk_res,
- u64 *journal_seq, int flags)
+ struct bkey_i *k,
+ struct disk_reservation *disk_res,
+ u64 *journal_seq, int flags)
{
- struct btree_trans trans;
- struct btree_iter *iter;
- int ret;
-
- bch2_trans_init(&trans, c, 0, 0);
-retry:
- bch2_trans_begin(&trans);
-
- iter = bch2_trans_get_iter(&trans, id, bkey_start_pos(&k->k),
- BTREE_ITER_INTENT);
-
- bch2_trans_update(&trans, iter, k);
-
- ret = bch2_trans_commit(&trans, disk_res, journal_seq, flags);
- if (ret == -EINTR)
- goto retry;
- bch2_trans_exit(&trans);
-
- return ret;
+ return bch2_trans_do(c, disk_res, journal_seq, flags,
+ __bch2_btree_insert(&trans, id, k));
}
int bch2_btree_delete_at_range(struct btree_trans *trans,