summaryrefslogtreecommitdiff
path: root/fs/bcachefs/btree_iter.c
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@gmail.com>2021-04-24 00:24:25 -0400
committerKent Overstreet <kent.overstreet@gmail.com>2021-05-19 15:33:45 -0400
commit1f39b8fe6af3152097c1482a96891a72bcc2bfda (patch)
tree36f70615e9d87c8a391b8dd385f1fb26f2977ae1 /fs/bcachefs/btree_iter.c
parent801b6f7205ee5f89979560d1b1eb26aa38824448 (diff)
bcachefs: Add a mempool for the replicas delta list
Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
Diffstat (limited to 'fs/bcachefs/btree_iter.c')
-rw-r--r--fs/bcachefs/btree_iter.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/fs/bcachefs/btree_iter.c b/fs/bcachefs/btree_iter.c
index 975b87a356a8..93194e62ab2a 100644
--- a/fs/bcachefs/btree_iter.c
+++ b/fs/bcachefs/btree_iter.c
@@ -2304,7 +2304,14 @@ int bch2_trans_exit(struct btree_trans *trans)
bch2_journal_preres_put(&trans->c->journal, &trans->journal_preres);
- kfree(trans->fs_usage_deltas);
+ if (trans->fs_usage_deltas) {
+ if (trans->fs_usage_deltas->size + sizeof(trans->fs_usage_deltas) ==
+ REPLICAS_DELTA_LIST_MAX)
+ mempool_free(trans->fs_usage_deltas,
+ &trans->c->replicas_delta_pool);
+ else
+ kfree(trans->fs_usage_deltas);
+ }
if (trans->mem_bytes == BTREE_TRANS_MEM_MAX)
mempool_free(trans->mem, &trans->c->btree_trans_mem_pool);