bcachefs: Improve bch2_trans_relock()
authorKent Overstreet <kent.overstreet@gmail.com>
Wed, 31 Mar 2021 00:35:46 +0000 (20:35 -0400)
committerKent Overstreet <kent.overstreet@linux.dev>
Sun, 22 Oct 2023 21:08:58 +0000 (17:08 -0400)
We're getting away from relying on iter->uptodate - this changes
bch2_trans_relock() to more directly specify which iterators should be
relocked.

Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
fs/bcachefs/btree_iter.c

index 42113f86e878a27da36ede842ea70054b8e36228..b74d79127df00ff1b5adb546a927b9bc8ea50b17 100644 (file)
@@ -504,13 +504,12 @@ void bch2_trans_downgrade(struct btree_trans *trans)
 bool bch2_trans_relock(struct btree_trans *trans)
 {
        struct btree_iter *iter;
-       bool ret = true;
 
        trans_for_each_iter(trans, iter)
-               if (iter->uptodate == BTREE_ITER_NEED_RELOCK)
-                       ret &= bch2_btree_iter_relock(iter, true);
-
-       return ret;
+               if (btree_iter_keep(trans, iter) &&
+                   !bch2_btree_iter_relock(iter, true))
+                       return false;
+       return true;
 }
 
 void bch2_trans_unlock(struct btree_trans *trans)