bcachefs: Allocate some extra room in btree_key_cache_fill()
authorKent Overstreet <kent.overstreet@gmail.com>
Sun, 17 Apr 2022 21:50:47 +0000 (17:50 -0400)
committerKent Overstreet <kent.overstreet@linux.dev>
Sun, 22 Oct 2023 21:09:32 +0000 (17:09 -0400)
If we allocate a buffer that's a bit bigger than necessary the
transaction commit path will be much less likely to have to reallocate -
which requires a transaction restart.

Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
fs/bcachefs/btree_key_cache.c

index f86d57d..d316e9b 100644 (file)
@@ -236,6 +236,13 @@ static int btree_key_cache_fill(struct btree_trans *trans,
         */
        new_u64s = k.k->u64s + 1;
 
+       /*
+        * Allocate some extra space so that the transaction commit path is less
+        * likely to have to reallocate, since that requires a transaction
+        * restart:
+        */
+       new_u64s = min(256U, (new_u64s * 3) / 2);
+
        if (new_u64s > ck->u64s) {
                new_u64s = roundup_pow_of_two(new_u64s);
                new_k = kmalloc(new_u64s * sizeof(u64), GFP_NOFS);