summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@gmail.com>2021-09-06 17:00:35 -0400
committerKent Overstreet <kent.overstreet@gmail.com>2021-09-06 17:00:35 -0400
commitdae7fab1616148b79a4948aa285202cc22a67024 (patch)
tree577664fcac95523ab304dae20e1c9df10e01239f
parentcbabda279ca1a6fe52249fb342cbd132318440be (diff)
bcachefs: Only mark iterators nopreserve that aren't in use
Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
-rw-r--r--fs/bcachefs/btree_iter.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/fs/bcachefs/btree_iter.c b/fs/bcachefs/btree_iter.c
index 761153601e75..06fc10cd3b48 100644
--- a/fs/bcachefs/btree_iter.c
+++ b/fs/bcachefs/btree_iter.c
@@ -2488,6 +2488,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
@@ -2495,8 +2497,8 @@ 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;
+ else if (!path->ref)
+ path->preserve = false;
}
bch2_trans_cond_resched(trans);