From: Kent Overstreet Date: Wed, 10 Mar 2021 00:37:40 +0000 (-0500) Subject: bcachefs: Ensure btree iterators are traversed in bch2_trans_commit() X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=9f631dc14325df8acfa73c76299dbefb68582ee4;p=linux.git bcachefs: Ensure btree iterators are traversed in bch2_trans_commit() The upcoming patch to allow extents to span btree nodes will require this... and this assertion seems to be popping, and it's not a very good assertion anyways. Signed-off-by: Kent Overstreet Signed-off-by: Kent Overstreet --- diff --git a/fs/bcachefs/btree_update_leaf.c b/fs/bcachefs/btree_update_leaf.c index 022ab3d90871d..2f94b8917a767 100644 --- a/fs/bcachefs/btree_update_leaf.c +++ b/fs/bcachefs/btree_update_leaf.c @@ -929,9 +929,14 @@ int __bch2_trans_commit(struct btree_trans *trans) } trans_for_each_update2(trans, i) { - BUG_ON(i->iter->uptodate > BTREE_ITER_NEED_PEEK); BUG_ON(i->iter->locks_want < 1); + ret = bch2_btree_iter_traverse(i->iter); + if (unlikely(ret)) { + trace_trans_restart_traverse(trans->ip); + goto out; + } + u64s = jset_u64s(i->k->k.u64s); if (btree_iter_type(i->iter) == BTREE_ITER_CACHED && likely(!(trans->flags & BTREE_INSERT_JOURNAL_REPLAY)))