summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@gmail.com>2020-11-02 18:54:33 -0500
committerKent Overstreet <kent.overstreet@gmail.com>2020-11-05 12:45:15 -0500
commit79d3ca41349844919de3fde5c2ace7a77ba43dc8 (patch)
tree95763b6b17a7e27374e6de35aa0416062919258c
parentae49b96828aaec202340118b0c1f68b6e8344481 (diff)
bcachefs: Don't embed btree iters in btree_trans
These haven't been in used since reallocing iterators has been disabled, and saves us a lot of stack if we get rid of it. Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
-rw-r--r--fs/bcachefs/btree_iter.c13
-rw-r--r--fs/bcachefs/btree_types.h4
2 files changed, 3 insertions, 14 deletions
diff --git a/fs/bcachefs/btree_iter.c b/fs/bcachefs/btree_iter.c
index 9ada864536a6..9e1971e6f484 100644
--- a/fs/bcachefs/btree_iter.c
+++ b/fs/bcachefs/btree_iter.c
@@ -2039,8 +2039,7 @@ success:
sizeof(struct btree_iter) * trans->nr_iters +
sizeof(struct btree_insert_entry) * trans->nr_iters);
- if (trans->iters != trans->iters_onstack)
- kfree(trans->iters);
+ kfree(trans->iters);
trans->iters = new_iters;
trans->updates = new_updates;
@@ -2330,21 +2329,15 @@ void bch2_trans_init(struct btree_trans *trans, struct bch_fs *c,
unsigned expected_nr_iters,
size_t expected_mem_bytes)
{
- memset(trans, 0, offsetof(struct btree_trans, iters_onstack));
-
/*
* reallocating iterators currently completely breaks
* bch2_trans_iter_put():
*/
expected_nr_iters = BTREE_ITER_MAX;
+ memset(trans, 0, sizeof(*trans));
trans->c = c;
trans->ip = _RET_IP_;
- trans->size = ARRAY_SIZE(trans->iters_onstack);
- trans->iters = trans->iters_onstack;
- trans->updates = trans->updates_onstack;
- trans->updates2 = trans->updates2_onstack;
- trans->fs_usage_deltas = NULL;
if (expected_nr_iters > trans->size)
bch2_trans_realloc_iters(trans, expected_nr_iters);
@@ -2376,7 +2369,7 @@ int bch2_trans_exit(struct btree_trans *trans)
kfree(trans->mem);
if (trans->used_mempool)
mempool_free(trans->iters, &trans->c->btree_iters_pool);
- else if (trans->iters != trans->iters_onstack)
+ else
kfree(trans->iters);
trans->mem = (void *) 0x1;
trans->iters = (void *) 0x1;
diff --git a/fs/bcachefs/btree_types.h b/fs/bcachefs/btree_types.h
index 7ba016d4ad30..93721fbc7794 100644
--- a/fs/bcachefs/btree_types.h
+++ b/fs/bcachefs/btree_types.h
@@ -381,10 +381,6 @@ struct btree_trans {
unsigned journal_u64s;
unsigned journal_preres_u64s;
struct replicas_delta_list *fs_usage_deltas;
-
- struct btree_iter iters_onstack[2];
- struct btree_insert_entry updates_onstack[2];
- struct btree_insert_entry updates2_onstack[2];
};
#define BTREE_FLAG(flag) \