diff options
author | Kent Overstreet <kent.overstreet@linux.dev> | 2023-12-10 16:48:22 -0500 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@linux.dev> | 2024-01-01 11:47:41 -0500 |
commit | 24de63dacbffbfa069b44a1da1750eb5382275e7 (patch) | |
tree | e907442a4e66b636d3f956dd795de70fb51e4da7 /fs/bcachefs/btree_iter.c | |
parent | e4e49375a8e4d9c9b65e79070ef6cff2433a7d5f (diff) | |
download | lwn-24de63dacbffbfa069b44a1da1750eb5382275e7.tar.gz lwn-24de63dacbffbfa069b44a1da1750eb5382275e7.zip |
bcachefs: Improve trans->extra_journal_entries
Instead of using a darray, we now allocate journal entries for the
transaction commit path with our normal bump allocator - with an inlined
fastpath, and using btree_transaction_stats to remember how much to
initially allocate so as to avoid transaction restarts.
This is prep work for converting write buffer updates to use this
mechanism.
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
Diffstat (limited to 'fs/bcachefs/btree_iter.c')
-rw-r--r-- | fs/bcachefs/btree_iter.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/fs/bcachefs/btree_iter.c b/fs/bcachefs/btree_iter.c index 48691b62d671..2b0dc0ebbba3 100644 --- a/fs/bcachefs/btree_iter.c +++ b/fs/bcachefs/btree_iter.c @@ -2794,6 +2794,7 @@ u32 bch2_trans_begin(struct btree_trans *trans) trans->restart_count++; trans->mem_top = 0; + trans->journal_entries = NULL; trans_for_each_path(trans, path) { path->should_be_locked = false; @@ -2914,6 +2915,7 @@ struct btree_trans *__bch2_trans_get(struct bch_fs *c, unsigned fn_idx) if (s) { trans->nr_max_paths = s->nr_max_paths; trans->wb_updates_size = s->wb_updates_size; + trans->journal_entries_size = s->journal_entries_size; } trans->srcu_idx = srcu_read_lock(&c->btree_trans_barrier); @@ -3000,8 +3002,6 @@ void bch2_trans_put(struct btree_trans *trans) srcu_read_unlock(&c->btree_trans_barrier, trans->srcu_idx); } - kfree(trans->extra_journal_entries.data); - if (trans->fs_usage_deltas) { if (trans->fs_usage_deltas->size + sizeof(trans->fs_usage_deltas) == REPLICAS_DELTA_LIST_MAX) |