]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
bcachefs: disk accounting: ignore unknown types
authorKent Overstreet <kent.overstreet@linux.dev>
Wed, 14 Aug 2024 02:47:55 +0000 (22:47 -0400)
committerKent Overstreet <kent.overstreet@linux.dev>
Wed, 14 Aug 2024 02:56:50 +0000 (22:56 -0400)
forward compat fix

Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
fs/bcachefs/disk_accounting.c

index 212f53927111119132ea4d61ff3b1ab431f9fc91..03a9de6c2e0a046e1e741091628dbe91c9cb2243 100644 (file)
@@ -528,6 +528,9 @@ int bch2_gc_accounting_done(struct bch_fs *c)
                struct disk_accounting_pos acc_k;
                bpos_to_disk_accounting_pos(&acc_k, e->pos);
 
+               if (acc_k.type >= BCH_DISK_ACCOUNTING_TYPE_NR)
+                       continue;
+
                u64 src_v[BCH_ACCOUNTING_MAX_COUNTERS];
                u64 dst_v[BCH_ACCOUNTING_MAX_COUNTERS];
 
@@ -760,6 +763,12 @@ void bch2_verify_accounting_clean(struct bch_fs *c)
                        struct bkey_s_c_accounting a = bkey_s_c_to_accounting(k);
                        unsigned nr = bch2_accounting_counters(k.k);
 
+                       struct disk_accounting_pos acc_k;
+                       bpos_to_disk_accounting_pos(&acc_k, k.k->p);
+
+                       if (acc_k.type >= BCH_DISK_ACCOUNTING_TYPE_NR)
+                               continue;
+
                        bch2_accounting_mem_read(c, k.k->p, v, nr);
 
                        if (memcmp(a.v->d, v, nr * sizeof(u64))) {
@@ -775,9 +784,6 @@ void bch2_verify_accounting_clean(struct bch_fs *c)
                                mismatch = true;
                        }
 
-                       struct disk_accounting_pos acc_k;
-                       bpos_to_disk_accounting_pos(&acc_k, a.k->p);
-
                        switch (acc_k.type) {
                        case BCH_DISK_ACCOUNTING_persistent_reserved:
                                base.reserved += acc_k.persistent_reserved.nr_replicas * a.v->d[0];