From: Kent Overstreet Date: Sat, 27 Aug 2022 14:30:36 +0000 (-0400) Subject: bcachefs: Make more btree_paths available X-Git-Tag: v6.7-rc1~201^2~810 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=b1cdc398ae36689300b4108ce9c90c58cac1ba34;p=thirdparty%2Fkernel%2Flinux.git bcachefs: Make more btree_paths available - Don't decrease BTREE_ITER_MAX when building with CONFIG_LOCKDEP anymore. The lockdep table sizes are configurable now, we don't need this anymore. - btree_trans_too_many_iters() is less conservative now. Previously it was causing a transaction restart if we had used more than BTREE_ITER_MAX / 2 paths, change this to BTREE_ITER_MAX - 8. This helps with excessive transaction restarts/livelocks in the bucket allocator path. Signed-off-by: Kent Overstreet --- diff --git a/fs/bcachefs/btree_iter.h b/fs/bcachefs/btree_iter.h index 87b456998ef44..1081ea753be6c 100644 --- a/fs/bcachefs/btree_iter.h +++ b/fs/bcachefs/btree_iter.h @@ -387,7 +387,7 @@ static inline struct bkey_s_c bch2_btree_iter_peek_upto_type(struct btree_iter * static inline int btree_trans_too_many_iters(struct btree_trans *trans) { - if (hweight64(trans->paths_allocated) > BTREE_ITER_MAX / 2) { + if (hweight64(trans->paths_allocated) > BTREE_ITER_MAX - 8) { trace_trans_restart_too_many_iters(trans, _THIS_IP_); return btree_trans_restart(trans, BCH_ERR_transaction_restart_too_many_iters); }