]> git.sesse.net Git - bcachefs-tools-debian/blobdiff - libbcachefs/sb-clean.c
Update bcachefs sources to 44ac32df8e0c bcachefs: Split brain detection
[bcachefs-tools-debian] / libbcachefs / sb-clean.c
index 61203d7c8d36054400ff0d1ee2e1838966168a73..ca14f86fb2a9954af5cbaf9b161010cb971061d3 100644 (file)
@@ -82,6 +82,7 @@ int bch2_verify_superblock_clean(struct bch_fs *c,
        int ret = 0;
 
        if (mustfix_fsck_err_on(j->seq != clean->journal_seq, c,
+                       sb_clean_journal_seq_mismatch,
                        "superblock journal seq (%llu) doesn't match journal (%llu) after clean shutdown",
                        le64_to_cpu(clean->journal_seq),
                        le64_to_cpu(j->seq))) {
@@ -119,6 +120,7 @@ int bch2_verify_superblock_clean(struct bch_fs *c,
                                    k1->k.u64s != k2->k.u64s ||
                                    memcmp(k1, k2, bkey_bytes(&k1->k)) ||
                                    l1 != l2, c,
+                       sb_clean_btree_root_mismatch,
                        "superblock btree root %u doesn't match journal after clean shutdown\n"
                        "sb:      l=%u %s\n"
                        "journal: l=%u %s\n", i,
@@ -140,6 +142,7 @@ struct bch_sb_field_clean *bch2_read_superblock_clean(struct bch_fs *c)
        sb_clean = bch2_sb_field_get(c->disk_sb.sb, clean);
 
        if (fsck_err_on(!sb_clean, c,
+                       sb_clean_missing,
                        "superblock marked clean but clean section not present")) {
                SET_BCH_SB_CLEAN(c->disk_sb.sb, false);
                c->sb.clean = false;
@@ -188,13 +191,10 @@ void bch2_journal_super_entries_add_common(struct bch_fs *c,
                                           struct jset_entry **end,
                                           u64 journal_seq)
 {
-       struct bch_dev *ca;
-       unsigned i, dev;
-
        percpu_down_read(&c->mark_lock);
 
        if (!journal_seq) {
-               for (i = 0; i < ARRAY_SIZE(c->usage); i++)
+               for (unsigned i = 0; i < ARRAY_SIZE(c->usage); i++)
                        bch2_fs_usage_acc_to_base(c, i);
        } else {
                bch2_fs_usage_acc_to_base(c, journal_seq & JOURNAL_BUF_MASK);
@@ -220,7 +220,7 @@ void bch2_journal_super_entries_add_common(struct bch_fs *c,
                u->v            = cpu_to_le64(atomic64_read(&c->key_version));
        }
 
-       for (i = 0; i < BCH_REPLICAS_MAX; i++) {
+       for (unsigned i = 0; i < BCH_REPLICAS_MAX; i++) {
                struct jset_entry_usage *u =
                        container_of(jset_entry_init(end, sizeof(*u)),
                                     struct jset_entry_usage, entry);
@@ -231,8 +231,8 @@ void bch2_journal_super_entries_add_common(struct bch_fs *c,
                u->v            = cpu_to_le64(c->usage_base->persistent_reserved[i]);
        }
 
-       for (i = 0; i < c->replicas.nr; i++) {
-               struct bch_replicas_entry *e =
+       for (unsigned i = 0; i < c->replicas.nr; i++) {
+               struct bch_replicas_entry_v1 *e =
                        cpu_replicas_entry(&c->replicas, i);
                struct jset_entry_data_usage *u =
                        container_of(jset_entry_init(end, sizeof(*u) + e->nr_devs),
@@ -244,7 +244,7 @@ void bch2_journal_super_entries_add_common(struct bch_fs *c,
                              "embedded variable length struct");
        }
 
-       for_each_member_device(ca, c, dev) {
+       for_each_member_device(c, ca) {
                unsigned b = sizeof(struct jset_entry_dev_usage) +
                        sizeof(struct jset_entry_dev_usage_type) * BCH_DATA_NR;
                struct jset_entry_dev_usage *u =
@@ -252,10 +252,9 @@ void bch2_journal_super_entries_add_common(struct bch_fs *c,
                                     struct jset_entry_dev_usage, entry);
 
                u->entry.type = BCH_JSET_ENTRY_dev_usage;
-               u->dev = cpu_to_le32(dev);
-               u->buckets_ec           = cpu_to_le64(ca->usage_base->buckets_ec);
+               u->dev = cpu_to_le32(ca->dev_idx);
 
-               for (i = 0; i < BCH_DATA_NR; i++) {
+               for (unsigned i = 0; i < BCH_DATA_NR; i++) {
                        u->d[i].buckets = cpu_to_le64(ca->usage_base->d[i].buckets);
                        u->d[i].sectors = cpu_to_le64(ca->usage_base->d[i].sectors);
                        u->d[i].fragmented = cpu_to_le64(ca->usage_base->d[i].fragmented);
@@ -264,7 +263,7 @@ void bch2_journal_super_entries_add_common(struct bch_fs *c,
 
        percpu_up_read(&c->mark_lock);
 
-       for (i = 0; i < 2; i++) {
+       for (unsigned i = 0; i < 2; i++) {
                struct jset_entry_clock *clock =
                        container_of(jset_entry_init(end, sizeof(*clock)),
                                     struct jset_entry_clock, entry);
@@ -373,7 +372,7 @@ void bch2_fs_mark_clean(struct bch_fs *c)
 
        entry = sb_clean->start;
        bch2_journal_super_entries_add_common(c, &entry, 0);
-       entry = bch2_btree_roots_to_journal_entries(c, entry, entry);
+       entry = bch2_btree_roots_to_journal_entries(c, entry, 0);
        BUG_ON((void *) entry > vstruct_end(&sb_clean->field));
 
        memset(entry, 0,