diff options
Diffstat (limited to 'libbcachefs/recovery.c')
-rw-r--r-- | libbcachefs/recovery.c | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/libbcachefs/recovery.c b/libbcachefs/recovery.c index af2628f4..4fd8ce55 100644 --- a/libbcachefs/recovery.c +++ b/libbcachefs/recovery.c @@ -1215,7 +1215,9 @@ use_clean: err = "error reading allocation information"; down_read(&c->gc_lock); - ret = bch2_alloc_read(c); + ret = c->sb.version < bcachefs_metadata_version_bucket_gens + ? bch2_alloc_read(c) + : bch2_bucket_gens_read(c); up_read(&c->gc_lock); if (ret) @@ -1351,6 +1353,16 @@ use_clean: if (ret) goto err; + if (c->sb.version < bcachefs_metadata_version_bucket_gens && + c->opts.version_upgrade) { + bch_info(c, "initializing bucket_gens"); + err = "error initializing bucket gens"; + ret = bch2_bucket_gens_init(c); + if (ret) + goto err; + bch_verbose(c, "bucket_gens init done"); + } + if (c->sb.version < bcachefs_metadata_version_snapshot_2) { /* set bi_subvol on root inode */ err = "error upgrade root inode for subvolumes"; |