]> git.sesse.net Git - bcachefs-tools-debian/blobdiff - libbcachefs/recovery.c
Update bcachefs sources to 84505cfd37 bcachefs: Go RW before check_alloc_info()
[bcachefs-tools-debian] / libbcachefs / recovery.c
index 069aafba48acc8e32b554a6bd87f3f2f0f663a5e..0ad2bb2aa039bdec4426b1d98b92672159bb08b7 100644 (file)
@@ -625,8 +625,8 @@ static int bch2_journal_replay(struct bch_fs *c)
                                     : 0),
                             bch2_journal_replay_key(&trans, k));
                if (ret) {
-                       bch_err(c, "journal replay: error %d while replaying key at btree %s level %u",
-                               ret, bch2_btree_ids[k->btree_id], k->level);
+                       bch_err(c, "journal replay: error while replaying key at btree %s level %u: %s",
+                               bch2_btree_ids[k->btree_id], k->level, bch2_err_str(ret));
                        goto err;
                }
        }
@@ -1246,13 +1246,6 @@ use_clean:
 
                set_bit(BCH_FS_INITIAL_GC_DONE, &c->flags);
 
-               bch_info(c, "checking need_discard and freespace btrees");
-               err = "error checking need_discard and freespace btrees";
-               ret = bch2_check_alloc_info(c);
-               if (ret)
-                       goto err;
-               bch_verbose(c, "done checking need_discard and freespace btrees");
-
                if (c->sb.version < bcachefs_metadata_version_snapshot_2) {
                        err = "error creating root snapshot node";
                        ret = bch2_fs_initialize_subvolumes(c);
@@ -1277,6 +1270,15 @@ use_clean:
                if (c->opts.verbose || !c->sb.clean)
                        bch_info(c, "journal replay done");
 
+               bch_info(c, "checking need_discard and freespace btrees");
+               err = "error checking need_discard and freespace btrees";
+               ret = bch2_check_alloc_info(c);
+               if (ret)
+                       goto err;
+               bch_verbose(c, "done checking need_discard and freespace btrees");
+
+               set_bit(BCH_FS_CHECK_ALLOC_DONE, &c->flags);
+
                bch_info(c, "checking lrus");
                err = "error checking lrus";
                ret = bch2_check_lrus(c);
@@ -1316,6 +1318,7 @@ use_clean:
                set_bit(BCH_FS_CHECK_ALLOC_TO_LRU_REFS_DONE, &c->flags);
        } else {
                set_bit(BCH_FS_INITIAL_GC_DONE, &c->flags);
+               set_bit(BCH_FS_CHECK_ALLOC_DONE, &c->flags);
                set_bit(BCH_FS_CHECK_LRUS_DONE, &c->flags);
                set_bit(BCH_FS_CHECK_BACKPOINTERS_DONE, &c->flags);
                set_bit(BCH_FS_CHECK_ALLOC_TO_LRU_REFS_DONE, &c->flags);