]> git.sesse.net Git - bcachefs-tools-debian/blobdiff - libbcachefs/sb-members.c
Merge remote-tracking branch 'github/master'
[bcachefs-tools-debian] / libbcachefs / sb-members.c
index 259af07f4624792062fff170ae69c28cd2e9aa8a..eff5ce18c69c0600047c1fef688a5980af33c678 100644 (file)
@@ -235,6 +235,11 @@ static void member_to_text(struct printbuf *out,
                prt_printf(out, "(never)");
        prt_newline(out);
 
+       prt_printf(out, "Last superblock write:");
+       prt_tab(out);
+       prt_u64(out, le64_to_cpu(m.seq));
+       prt_newline(out);
+
        prt_printf(out, "State:");
        prt_tab(out);
        prt_printf(out, "%s",
@@ -246,7 +251,7 @@ static void member_to_text(struct printbuf *out,
        prt_printf(out, "Data allowed:");
        prt_tab(out);
        if (BCH_MEMBER_DATA_ALLOWED(&m))
-               prt_bitflags(out, bch2_data_types, BCH_MEMBER_DATA_ALLOWED(&m));
+               prt_bitflags(out, __bch2_data_types, BCH_MEMBER_DATA_ALLOWED(&m));
        else
                prt_printf(out, "(none)");
        prt_newline(out);
@@ -254,14 +259,14 @@ static void member_to_text(struct printbuf *out,
        prt_printf(out, "Has data:");
        prt_tab(out);
        if (data_have)
-               prt_bitflags(out, bch2_data_types, data_have);
+               prt_bitflags(out, __bch2_data_types, data_have);
        else
                prt_printf(out, "(none)");
        prt_newline(out);
 
        prt_str(out, "Durability:");
        prt_tab(out);
-       prt_printf(out, "%llu", BCH_MEMBER_DURABILITY(&m));
+       prt_printf(out, "%llu", BCH_MEMBER_DURABILITY(&m) ? BCH_MEMBER_DURABILITY(&m) - 1 : 1);
        prt_newline(out);
 
        prt_printf(out, "Discard:");
@@ -358,14 +363,12 @@ const struct bch_sb_field_ops bch_sb_field_ops_members_v2 = {
 void bch2_sb_members_from_cpu(struct bch_fs *c)
 {
        struct bch_sb_field_members_v2 *mi = bch2_sb_field_get(c->disk_sb.sb, members_v2);
-       struct bch_dev *ca;
-       unsigned i, e;
 
        rcu_read_lock();
-       for_each_member_device_rcu(ca, c, i, NULL) {
-               struct bch_member *m = __bch2_members_v2_get_mut(mi, i);
+       for_each_member_device_rcu(c, ca, NULL) {
+               struct bch_member *m = __bch2_members_v2_get_mut(mi, ca->dev_idx);
 
-               for (e = 0; e < BCH_MEMBER_ERROR_NR; e++)
+               for (unsigned e = 0; e < BCH_MEMBER_ERROR_NR; e++)
                        m->errors[e] = cpu_to_le64(atomic64_read(&ca->errors[e]));
        }
        rcu_read_unlock();
@@ -418,7 +421,7 @@ void bch2_dev_errors_reset(struct bch_dev *ca)
        m = bch2_members_v2_get_mut(c->disk_sb.sb, ca->dev_idx);
        for (unsigned i = 0; i < ARRAY_SIZE(m->errors_at_reset); i++)
                m->errors_at_reset[i] = cpu_to_le64(atomic64_read(&ca->errors[i]));
-       m->errors_reset_time = ktime_get_real_seconds();
+       m->errors_reset_time = cpu_to_le64(ktime_get_real_seconds());
 
        bch2_write_super(c);
        mutex_unlock(&c->sb_lock);