diff --git a/lib/ftl/mngt/ftl_mngt_md.c b/lib/ftl/mngt/ftl_mngt_md.c index 1faac1a7f..dd8211b4a 100644 --- a/lib/ftl/mngt/ftl_mngt_md.c +++ b/lib/ftl/mngt/ftl_mngt_md.c @@ -459,6 +459,12 @@ ftl_mngt_validate_sb(struct spdk_ftl_dev *dev, struct ftl_mngt_process *mngt) return; } + if (ftl_superblock_upgrade(dev)) { + FTL_ERRLOG(dev, "FTL superblock dirty or invalid version\n"); + ftl_mngt_fail_step(mngt); + return; + } + if (spdk_uuid_compare(&sb->uuid, &dev->conf.uuid) != 0) { FTL_ERRLOG(dev, "Invalid FTL superblock UUID\n"); ftl_mngt_fail_step(mngt); diff --git a/lib/ftl/mngt/ftl_mngt_startup.c b/lib/ftl/mngt/ftl_mngt_startup.c index cea8ffcce..9de97f5b7 100644 --- a/lib/ftl/mngt/ftl_mngt_startup.c +++ b/lib/ftl/mngt/ftl_mngt_startup.c @@ -95,6 +95,10 @@ static const struct ftl_mngt_process_desc desc_startup = { .name = "Initialize layout", .action = ftl_mngt_init_layout }, + { + .name = "Verify layout", + .action = ftl_mngt_layout_verify, + }, { .name = "Initialize metadata", .action = ftl_mngt_init_md, @@ -105,6 +109,10 @@ static const struct ftl_mngt_process_desc desc_startup = { .action = ftl_mngt_init_nv_cache, .cleanup = ftl_mngt_deinit_nv_cache }, + { + .name = "Upgrade layout", + .action = ftl_mngt_layout_upgrade, + }, { .name = "Initialize valid map", .action = ftl_mngt_init_vld_map,