]> git.sesse.net Git - bcachefs-tools-debian/commitdiff
Update bcachefs sources to 7786034caa bcachefs: Fix for freespace version upgrade...
authorKent Overstreet <kent.overstreet@gmail.com>
Mon, 28 Mar 2022 22:44:48 +0000 (18:44 -0400)
committerKent Overstreet <kent.overstreet@gmail.com>
Mon, 28 Mar 2022 22:44:48 +0000 (18:44 -0400)
.bcachefs_revision
libbcachefs/alloc_background.c
libbcachefs/recovery.c

index 901b02da77d69c5a21ac719582beec168953bdd4..4a20b81775952554da0ed2d4c97c35b59e208406 100644 (file)
@@ -1 +1 @@
-bba7493dda9d1a0a9741fff88aff2228af3f4fc0
+7786034caa4ee7d10d25202284220513c0944ce2
index 0c33424393bee1b87300e657cfc4c5866cb642f9..81cbfeb58cd1a9e40220a3e680e1ab229ec89bb4 100644 (file)
@@ -724,12 +724,23 @@ int bch2_check_alloc_info(struct bch_fs *c, bool initial)
        struct btree_trans trans;
        struct btree_iter iter;
        struct bkey_s_c k;
-       int ret = 0;
+       int ret = 0, last_dev = -1;
 
        bch2_trans_init(&trans, c, 0, 0);
 
        for_each_btree_key(&trans, iter, BTREE_ID_alloc, POS_MIN,
                           BTREE_ITER_PREFETCH, k, ret) {
+               if (k.k->p.inode != last_dev) {
+                       struct bch_dev *ca = bch_dev_bkey_exists(c, k.k->p.inode);
+
+                       if (!ca->mi.freespace_initialized) {
+                               bch2_btree_iter_set_pos(&iter, POS(k.k->p.inode + 1, 0));
+                               continue;
+                       }
+
+                       last_dev = k.k->p.inode;
+               }
+
                ret = __bch2_trans_do(&trans, NULL, NULL, 0,
                        bch2_check_alloc_key(&trans, &iter));
                if (ret)
index 66492dde7930ac7fcb84144e11f618f1d904152d..68612d52aa83e1ceb7667c95a5467be6f536b4a8 100644 (file)
@@ -1174,8 +1174,7 @@ use_clean:
                bch_verbose(c, "done checking allocations");
        }
 
-       if (c->opts.fsck &&
-           c->sb.version >= bcachefs_metadata_version_freespace) {
+       if (c->opts.fsck) {
                bch_info(c, "checking need_discard and freespace btrees");
                err = "error checking need_discard and freespace btrees";
                ret = bch2_check_alloc_info(c, true);