summaryrefslogtreecommitdiff
path: root/fs/bcachefs/btree_key_cache.c
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@gmail.com>2021-08-30 14:22:43 -0400
committerKent Overstreet <kent.overstreet@gmail.com>2022-05-30 18:16:41 -0400
commit376305dd6b88d4f404e833c9e2e7593a726e40ed (patch)
tree435f24f181fb3f9bc2b5d514edb5ed7d7b25d4c9 /fs/bcachefs/btree_key_cache.c
parent1b1c96e093ad414049760560e1e48dc6311b5258 (diff)
bcachefs: Further reduce iter->trans usage
This is prep work for splitting btree_path out from btree_iter - btree_path will not have a pointer to btree_trans. Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
Diffstat (limited to 'fs/bcachefs/btree_key_cache.c')
-rw-r--r--fs/bcachefs/btree_key_cache.c13
1 files changed, 6 insertions, 7 deletions
diff --git a/fs/bcachefs/btree_key_cache.c b/fs/bcachefs/btree_key_cache.c
index 6bc20813d00d..568c1f2704c2 100644
--- a/fs/bcachefs/btree_key_cache.c
+++ b/fs/bcachefs/btree_key_cache.c
@@ -212,7 +212,7 @@ static int btree_key_cache_fill(struct btree_trans *trans,
if (ret)
goto err;
- if (!bch2_btree_node_relock(ck_iter, 0)) {
+ if (!bch2_btree_node_relock(trans, ck_iter, 0)) {
trace_transaction_restart_ip(trans->ip, _THIS_IP_);
ret = btree_trans_restart(trans);
goto err;
@@ -265,9 +265,8 @@ static int bkey_cached_check_fn(struct six_lock *lock, void *p)
}
__flatten
-int bch2_btree_iter_traverse_cached(struct btree_iter *iter)
+int bch2_btree_iter_traverse_cached(struct btree_trans *trans, struct btree_iter *iter)
{
- struct btree_trans *trans = iter->trans;
struct bch_fs *c = trans->c;
struct bkey_cached *ck;
int ret = 0;
@@ -276,7 +275,7 @@ int bch2_btree_iter_traverse_cached(struct btree_iter *iter)
iter->l[1].b = NULL;
- if (bch2_btree_node_relock(iter, 0)) {
+ if (bch2_btree_node_relock(trans, iter, 0)) {
ck = (void *) iter->l[0].b;
goto fill;
}
@@ -301,7 +300,7 @@ retry:
} else {
enum six_lock_type lock_want = __btree_lock_want(iter, 0);
- if (!btree_node_lock((void *) ck, iter->pos, 0, iter, lock_want,
+ if (!btree_node_lock(trans, iter, (void *) ck, iter->pos, 0, lock_want,
bkey_cached_check_fn, iter, _THIS_IP_)) {
if (!trans->restarted)
goto retry;
@@ -325,7 +324,7 @@ retry:
fill:
if (!ck->valid && !(iter->flags & BTREE_ITER_CACHED_NOFILL)) {
if (!iter->locks_want &&
- !!__bch2_btree_iter_upgrade(iter, 1)) {
+ !!__bch2_btree_iter_upgrade(trans, iter, 1)) {
trace_transaction_restart_ip(trans->ip, _THIS_IP_);
BUG_ON(!trans->restarted);
ret = -EINTR;
@@ -343,7 +342,7 @@ fill:
iter->uptodate = BTREE_ITER_NEED_PEEK;
if ((iter->flags & BTREE_ITER_INTENT) &&
- !bch2_btree_iter_upgrade(iter, 1)) {
+ !bch2_btree_iter_upgrade(trans, iter, 1)) {
BUG_ON(!trans->restarted);
ret = -EINTR;
}