]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
bcachefs: Bump limit in btree_trans_too_many_iters()
authorKent Overstreet <kent.overstreet@linux.dev>
Thu, 4 Apr 2024 20:51:40 +0000 (16:51 -0400)
committerKent Overstreet <kent.overstreet@linux.dev>
Thu, 4 Apr 2024 20:53:12 +0000 (16:53 -0400)
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
fs/bcachefs/btree_iter.h
fs/bcachefs/btree_types.h

index 24772538e4cc74ada59851bd7847dd5ece5ea122..1d58d447b386cdf74ecce2609f8aa23851ae4057 100644 (file)
@@ -642,7 +642,7 @@ int __bch2_btree_trans_too_many_iters(struct btree_trans *);
 
 static inline int btree_trans_too_many_iters(struct btree_trans *trans)
 {
-       if (bitmap_weight(trans->paths_allocated, trans->nr_paths) > BTREE_ITER_INITIAL - 8)
+       if (bitmap_weight(trans->paths_allocated, trans->nr_paths) > BTREE_ITER_NORMAL_LIMIT - 8)
                return __bch2_btree_trans_too_many_iters(trans);
 
        return 0;
index 9404d96c38f3b368726a6603b601b241b5106100..e0c982a4195c764ab8a415b5f7f80cbff88c1935 100644 (file)
@@ -364,7 +364,21 @@ struct btree_insert_entry {
        unsigned long           ip_allocated;
 };
 
+/* Number of btree paths we preallocate, usually enough */
 #define BTREE_ITER_INITIAL             64
+/*
+ * Lmiit for btree_trans_too_many_iters(); this is enough that almost all code
+ * paths should run inside this limit, and if they don't it usually indicates a
+ * bug (leaking/duplicated btree paths).
+ *
+ * exception: some fsck paths
+ *
+ * bugs with excessive path usage seem to have possibly been eliminated now, so
+ * we might consider eliminating this (and btree_trans_too_many_iter()) at some
+ * point.
+ */
+#define BTREE_ITER_NORMAL_LIMIT                256
+/* never exceed limit */
 #define BTREE_ITER_MAX                 (1U << 10)
 
 struct btree_trans_commit_hook;