bcachefs: Don't embed btree iters in btree_trans
authorKent Overstreet <kent.overstreet@gmail.com>
Mon, 2 Nov 2020 23:54:33 +0000 (18:54 -0500)
committerKent Overstreet <kent.overstreet@linux.dev>
Sun, 22 Oct 2023 21:08:46 +0000 (17:08 -0400)
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>
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
fs/bcachefs/btree_iter.c
fs/bcachefs/btree_types.h

index 0b69cdccccdb9a249ce8dbfaac385f755c4741ef..a4141a5b569ea211ae69946b2aaeef029dc52db6 100644 (file)
@@ -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;
@@ -2331,21 +2330,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);
@@ -2377,7 +2370,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;
index 3b1dcbf5e62575603aa6e9e5a5cae2a915f21c02..55ea028d242e0ca56d93fb5e8f085696b8f362e5 100644 (file)
@@ -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)                                               \