summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@gmail.com>2021-06-14 12:23:14 -0400
committerKent Overstreet <kent.overstreet@gmail.com>2021-06-15 20:40:55 -0400
commita23d35f01a1fbe02bb7baa7e902b50acd15f9fa6 (patch)
tree078dc394b2bdf3ad0138193c73b0b7100774fcfe
parente4b835369ff3889b777a927b5261d508b1df765b (diff)
locking improvements
-rw-r--r--fs/bcachefs/btree_iter.h7
-rw-r--r--fs/bcachefs/btree_update_leaf.c14
2 files changed, 5 insertions, 16 deletions
diff --git a/fs/bcachefs/btree_iter.h b/fs/bcachefs/btree_iter.h
index b771c7241385..0828f9df0d1d 100644
--- a/fs/bcachefs/btree_iter.h
+++ b/fs/bcachefs/btree_iter.h
@@ -308,13 +308,6 @@ static inline bool btree_iter_touched(struct btree_trans *trans, struct btree_it
return (trans->iters_touched & (1ULL << iter->idx)) != 0;
}
-static inline bool btree_iter_keep(struct btree_trans *trans, struct btree_iter *iter)
-{
- return btree_iter_live(trans, iter) ||
- btree_iter_touched(trans, iter) ||
- (iter->flags & BTREE_ITER_KEEP_UNTIL_COMMIT);
-}
-
struct btree_iter *bch2_set_btree_iter_keep(struct btree_trans *, struct btree_iter *);
static inline void set_btree_iter_dontneed(struct btree_trans *trans, struct btree_iter *iter)
diff --git a/fs/bcachefs/btree_update_leaf.c b/fs/bcachefs/btree_update_leaf.c
index 605c05b1a04a..b7ca86c4429a 100644
--- a/fs/bcachefs/btree_update_leaf.c
+++ b/fs/bcachefs/btree_update_leaf.c
@@ -580,15 +580,11 @@ static inline int do_bch2_trans_commit(struct btree_trans *trans,
*/
trans_for_each_iter(trans, iter) {
if (iter->nodes_locked != iter->nodes_intent_locked) {
- if (btree_iter_keep(trans, iter)) {
- if (!bch2_btree_iter_upgrade(iter, 1)) {
- trace_trans_restart_upgrade(trans->ip, trace_ip,
- iter->btree_id,
- &iter->real_pos);
- return -EINTR;
- }
- } else {
- bch2_btree_iter_unlock_noinline(iter);
+ if (!bch2_btree_iter_upgrade(iter, 1)) {
+ trace_trans_restart_upgrade(trans->ip, trace_ip,
+ iter->btree_id,
+ &iter->real_pos);
+ return -EINTR;
}
}
}