From: Kent Overstreet Date: Wed, 31 Mar 2021 00:35:46 +0000 (-0400) Subject: bcachefs: Improve bch2_trans_relock() X-Git-Tag: v6.7-rc1~201^2~1690 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=d5a43661a1e9d9448e9e508470deec973c3d6644;p=thirdparty%2Fkernel%2Flinux.git bcachefs: Improve bch2_trans_relock() 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 Signed-off-by: Kent Overstreet --- diff --git a/fs/bcachefs/btree_iter.c b/fs/bcachefs/btree_iter.c index 42113f86e878a..b74d79127df00 100644 --- a/fs/bcachefs/btree_iter.c +++ b/fs/bcachefs/btree_iter.c @@ -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)