summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@gmail.com>2022-02-24 13:27:31 -0500
committerKent Overstreet <kent.overstreet@gmail.com>2022-02-24 13:27:31 -0500
commitca257ee93acabbbe6a50f97a1fe7ece6549f7241 (patch)
tree9db9e20e9863e4cfaf3e40fd47bd03f52549f21d
parentb70bd5fcc2b0d96f847c85cffb3a245a4ca679cd (diff)
bcachefs: Always clear should_be_locked in bch2_trans_begin()
bch2_trans_begin() invalidates all iterators, until they're revalidated by calling peek() or traverse(). Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
-rw-r--r--fs/bcachefs/btree_iter.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/fs/bcachefs/btree_iter.c b/fs/bcachefs/btree_iter.c
index 05dc48611c64..0f136cb51e4e 100644
--- a/fs/bcachefs/btree_iter.c
+++ b/fs/bcachefs/btree_iter.c
@@ -2990,6 +2990,8 @@ void bch2_trans_begin(struct btree_trans *trans)
}
trans_for_each_path(trans, path) {
+ path->should_be_locked = false;
+
/*
* XXX: we probably shouldn't be doing this if the transaction
* was restarted, but currently we still overflow transaction
@@ -2998,7 +3000,7 @@ void bch2_trans_begin(struct btree_trans *trans)
if (!path->ref && !path->preserve)
__bch2_path_free(trans, path);
else
- path->preserve = path->should_be_locked = false;
+ path->preserve = false;
}
bch2_trans_cond_resched(trans);