}
 
 static int bch2_disk_accounting_validate_late(struct btree_trans *trans,
-                                             struct disk_accounting_pos acc,
+                                             struct disk_accounting_pos *acc,
                                              u64 *v, unsigned nr)
 {
        struct bch_fs *c = trans->c;
        struct printbuf buf = PRINTBUF;
        int ret = 0, invalid_dev = -1;
 
-       switch (acc.type) {
+       switch (acc->type) {
        case BCH_DISK_ACCOUNTING_replicas: {
                struct bch_replicas_padded r;
-               __accounting_to_replicas(&r.e, &acc);
+               __accounting_to_replicas(&r.e, acc);
 
                for (unsigned i = 0; i < r.e.nr_devs; i++)
                        if (r.e.devs[i] != BCH_SB_MEMBER_INVALID &&
                                trans, accounting_replicas_not_marked,
                                "accounting not marked in superblock replicas\n%s",
                                (printbuf_reset(&buf),
-                                bch2_accounting_key_to_text(&buf, &acc),
+                                bch2_accounting_key_to_text(&buf, acc),
                                 buf.buf))) {
                        /*
                         * We're not RW yet and still single threaded, dropping
        }
 
        case BCH_DISK_ACCOUNTING_dev_data_type:
-               if (!bch2_dev_exists(c, acc.dev_data_type.dev)) {
-                       invalid_dev = acc.dev_data_type.dev;
+               if (!bch2_dev_exists(c, acc->dev_data_type.dev)) {
+                       invalid_dev = acc->dev_data_type.dev;
                        goto invalid_device;
                }
                break;
                     "accounting entry points to invalid device %i\n%s",
                     invalid_dev,
                     (printbuf_reset(&buf),
-                     bch2_accounting_key_to_text(&buf, &acc),
+                     bch2_accounting_key_to_text(&buf, acc),
                      buf.buf))) {
                for (unsigned i = 0; i < nr; i++)
                        v[i] = -v[i];
 
                ret = commit_do(trans, NULL, NULL, 0,
-                               bch2_disk_accounting_mod(trans, &acc, v, nr, false)) ?:
+                               bch2_disk_accounting_mod(trans, acc, v, nr, false)) ?:
                        -BCH_ERR_remove_disk_accounting_entry;
        } else {
                ret = -BCH_ERR_remove_disk_accounting_entry;
                        if (acc_k.type >= BCH_DISK_ACCOUNTING_TYPE_NR)
                                break;
 
-                       if (!bch2_accounting_is_mem(acc_k)) {
+                       if (!bch2_accounting_is_mem(&acc_k)) {
                                struct disk_accounting_pos next;
                                memset(&next, 0, sizeof(next));
                                next.type = acc_k.type + 1;
                        struct disk_accounting_pos acc_k;
                        bpos_to_disk_accounting_pos(&acc_k, i->k->k.p);
 
-                       if (!bch2_accounting_is_mem(acc_k))
+                       if (!bch2_accounting_is_mem(&acc_k))
                                continue;
 
                        struct bkey_s_c k = bkey_i_to_s_c(i->k);
                 */
                ret = bch2_is_zero(v, sizeof(v[0]) * i->nr_counters)
                        ? -BCH_ERR_remove_disk_accounting_entry
-                       : bch2_disk_accounting_validate_late(trans, acc_k, v, i->nr_counters);
+                       : bch2_disk_accounting_validate_late(trans, &acc_k, v, i->nr_counters);
 
                if (ret == -BCH_ERR_remove_disk_accounting_entry) {
                        free_percpu(i->v[0]);
                        if (acc_k.type >= BCH_DISK_ACCOUNTING_TYPE_NR)
                                break;
 
-                       if (!bch2_accounting_is_mem(acc_k)) {
+                       if (!bch2_accounting_is_mem(&acc_k)) {
                                struct disk_accounting_pos next;
                                memset(&next, 0, sizeof(next));
                                next.type = acc_k.type + 1;