]> git.sesse.net Git - bcachefs-tools-debian/commitdiff
Update bcachefs sources to 6c5219caf0 bcachefs: Rev the on disk format version for...
authorKent Overstreet <kent.overstreet@gmail.com>
Mon, 27 Sep 2021 17:32:44 +0000 (13:32 -0400)
committerKent Overstreet <kent.overstreet@gmail.com>
Mon, 27 Sep 2021 17:32:44 +0000 (13:32 -0400)
.bcachefs_revision
libbcachefs/bcachefs_format.h
libbcachefs/btree_update_interior.c
libbcachefs/recovery.c

index 76bc725683cf45cc9927ca7886a191635fa5986e..3d1868cdf4e293c792c81af8c288dca0eadd1288 100644 (file)
@@ -1 +1 @@
-386f00b6399a1eb38053c236aae87678f3535df7
+6c5219caf0cc4a917298fcea5483b9bac2dacc90
index c082d5fce79aed80932debd7df3b0b22a1d614a3..0b8eabe5eaa47a2d3922e2a2d12aa5deef6df18d 100644 (file)
@@ -1258,7 +1258,8 @@ enum bcachefs_metadata_version {
        bcachefs_metadata_version_snapshot              = 12,
        bcachefs_metadata_version_inode_backpointers    = 13,
        bcachefs_metadata_version_btree_ptr_sectors_written = 14,
-       bcachefs_metadata_version_max                   = 15,
+       bcachefs_metadata_version_snapshot_2            = 15,
+       bcachefs_metadata_version_max                   = 16,
 };
 
 #define bcachefs_metadata_version_current      (bcachefs_metadata_version_max - 1)
index 5a1420b392bad9041b242946caceba9ff25ec880..c54e6b46a02625af829272ecc33fc1524c5b57d5 100644 (file)
@@ -165,7 +165,8 @@ static void bch2_btree_node_free_inmem(struct btree_trans *trans,
        struct btree_path *path;
 
        trans_for_each_path(trans, path)
-               BUG_ON(path->l[b->c.level].b == b);
+               BUG_ON(path->l[b->c.level].b == b &&
+                      path->l[b->c.level].lock_seq == b->c.lock.state.seq);
 
        six_lock_write(&b->c.lock, NULL, NULL);
 
index 64e0b542e7791d53cf0a0b5323e00e3e79656800..6afb37a2e1b04a07bb92111857dfe62f700d3185 100644 (file)
@@ -1004,11 +1004,10 @@ static int bch2_fs_upgrade_for_subvolumes(struct btree_trans *trans)
        struct btree_iter iter;
        struct bkey_s_c k;
        struct bch_inode_unpacked inode;
-       struct bkey_inode_buf *packed;
        int ret;
 
        bch2_trans_iter_init(trans, &iter, BTREE_ID_inodes,
-                            POS(0, BCACHEFS_ROOT_INO), 0);
+                            SPOS(0, BCACHEFS_ROOT_INO, U32_MAX), 0);
        k = bch2_btree_iter_peek_slot(&iter);
        ret = bkey_err(k);
        if (ret)
@@ -1025,13 +1024,7 @@ static int bch2_fs_upgrade_for_subvolumes(struct btree_trans *trans)
 
        inode.bi_subvol = BCACHEFS_ROOT_SUBVOL;
 
-       packed = bch2_trans_kmalloc(trans, sizeof(*packed));
-       ret = PTR_ERR_OR_ZERO(packed);
-       if (ret)
-               goto err;
-
-       bch2_inode_pack(c, packed, &inode);
-       ret = bch2_trans_update(trans, &iter, &packed->inode.k_i, 0);
+       ret = bch2_inode_write(trans, &iter, &inode);
 err:
        bch2_trans_iter_exit(trans, &iter);
        return ret;
@@ -1096,8 +1089,8 @@ int bch2_fs_recovery(struct bch_fs *c)
        } else if (c->sb.version < bcachefs_metadata_version_btree_ptr_sectors_written) {
                bch_info(c, "version prior to btree_ptr_sectors_written, upgrade required");
                c->opts.version_upgrade = true;
-       } else if (c->sb.version < bcachefs_metadata_version_snapshot) {
-               bch_info(c, "filesystem version is prior to snapshot field - upgrading");
+       } else if (c->sb.version < bcachefs_metadata_version_snapshot_2) {
+               bch_info(c, "filesystem version is prior to snapshots - upgrading");
                c->opts.version_upgrade = true;
        }
 
@@ -1267,7 +1260,9 @@ use_clean:
                bch_verbose(c, "alloc write done");
        }
 
-       if (c->sb.version < bcachefs_metadata_version_snapshot) {
+       if (c->sb.version < bcachefs_metadata_version_snapshot_2) {
+               bch2_fs_lazy_rw(c);
+
                err = "error creating root snapshot node";
                ret = bch2_fs_initialize_subvolumes(c);
                if (ret)
@@ -1281,7 +1276,7 @@ use_clean:
                goto err;
        bch_verbose(c, "reading snapshots done");
 
-       if (c->sb.version < bcachefs_metadata_version_snapshot) {
+       if (c->sb.version < bcachefs_metadata_version_snapshot_2) {
                /* set bi_subvol on root inode */
                err = "error upgrade root inode for subvolumes";
                ret = bch2_trans_do(c, NULL, NULL, BTREE_INSERT_LAZY_RW,