diff options
author | Kent Overstreet <kent.overstreet@gmail.com> | 2021-06-14 12:23:14 -0400 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@gmail.com> | 2021-06-15 20:40:55 -0400 |
commit | a23d35f01a1fbe02bb7baa7e902b50acd15f9fa6 (patch) | |
tree | 078dc394b2bdf3ad0138193c73b0b7100774fcfe | |
parent | e4b835369ff3889b777a927b5261d508b1df765b (diff) |
locking improvements
-rw-r--r-- | fs/bcachefs/btree_iter.h | 7 | ||||
-rw-r--r-- | fs/bcachefs/btree_update_leaf.c | 14 |
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; } } } |