From: Kent Overstreet Date: Sun, 17 Apr 2022 21:50:47 +0000 (-0400) Subject: bcachefs: Allocate some extra room in btree_key_cache_fill() X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=a729e489ab0805fb93047508fb9439cd1464cf70;p=linux.git bcachefs: Allocate some extra room in btree_key_cache_fill() 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 --- diff --git a/fs/bcachefs/btree_key_cache.c b/fs/bcachefs/btree_key_cache.c index f86d57d1ace0f..d316e9b9ae023 100644 --- a/fs/bcachefs/btree_key_cache.c +++ b/fs/bcachefs/btree_key_cache.c @@ -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);