]> git.sesse.net Git - bcachefs-tools-debian/blobdiff - libbcachefs/super-io.c
Update bcachefs sources to 96b991466a bcachefs: Improve error message in fsck
[bcachefs-tools-debian] / libbcachefs / super-io.c
index daaeaf0446a3958153f2f8883499fc2cc9285c97..6596764c84215eecb1650fdb2ca4ccc39f216e26 100644 (file)
@@ -51,7 +51,9 @@ static struct bch_sb_field *__bch2_sb_field_resize(struct bch_sb_handle *sb,
        BUG_ON(get_order(__vstruct_bytes(struct bch_sb, sb_u64s)) >
               sb->page_order);
 
-       if (!f) {
+       if (!f && !u64s) {
+               /* nothing to do: */
+       } else if (!f) {
                f = vstruct_last(sb->sb);
                memset(f, 0, sizeof(u64) * u64s);
                f->u64s = cpu_to_le32(u64s);
@@ -954,6 +956,9 @@ int bch2_fs_mark_dirty(struct bch_fs *c)
        mutex_lock(&c->sb_lock);
        SET_BCH_SB_CLEAN(c->disk_sb.sb, false);
        c->disk_sb.sb->compat[0] &= ~(1ULL << BCH_COMPAT_FEAT_ALLOC_METADATA);
+       c->disk_sb.sb->features[0] |= 1ULL << BCH_FEATURE_new_extent_overwrite;
+       c->disk_sb.sb->features[0] |= 1ULL << BCH_FEATURE_extents_above_btree_updates;
+       c->disk_sb.sb->features[0] |= 1ULL << BCH_FEATURE_btree_updates_journalled;
        ret = bch2_write_super(c);
        mutex_unlock(&c->sb_lock);
 
@@ -1084,6 +1089,8 @@ void bch2_fs_mark_clean(struct bch_fs *c)
 
        c->disk_sb.sb->compat[0] |= 1ULL << BCH_COMPAT_FEAT_ALLOC_INFO;
        c->disk_sb.sb->compat[0] |= 1ULL << BCH_COMPAT_FEAT_ALLOC_METADATA;
+       c->disk_sb.sb->features[0] &= ~(1ULL << BCH_FEATURE_extents_above_btree_updates);
+       c->disk_sb.sb->features[0] &= ~(1ULL << BCH_FEATURE_btree_updates_journalled);
 
        u64s = sizeof(*sb_clean) / sizeof(u64) + c->journal.entry_u64s_reserved;