From 33eb63e5753ad6229d4027340153817b92840760 Mon Sep 17 00:00:00 2001 From: Kent Overstreet Date: Tue, 14 May 2019 13:25:25 -0400 Subject: [PATCH] bcachefs: Fix a bug with multiple iterators being traversed If upgrade fails on one iterator, but it was copied from another iterator and will be freed before transaction restart, then the original iterator will get traversed first, so we need to make required btree nodes on the original iterator will be traversed too. Signed-off-by: Kent Overstreet --- fs/bcachefs/btree_iter.c | 1 - 1 file changed, 1 deletion(-) diff --git a/fs/bcachefs/btree_iter.c b/fs/bcachefs/btree_iter.c index ac3c3769e1261..eeb9a59283a7a 100644 --- a/fs/bcachefs/btree_iter.c +++ b/fs/bcachefs/btree_iter.c @@ -320,7 +320,6 @@ bool __bch2_btree_iter_upgrade(struct btree_iter *iter, trans_for_each_iter(iter->trans, linked) if (linked != iter && linked->btree_id == iter->btree_id && - btree_iter_cmp(linked, iter) <= 0 && linked->locks_want < new_locks_want) { linked->locks_want = new_locks_want; btree_iter_get_locks(linked, true); -- 2.30.2