ftl: Add layout upgrade to management path

Execute the upgrade management path during startup. Will attempt to
update metadata and verify layout validity.

Signed-off-by: Kozlowski Mateusz <mateusz.kozlowski@intel.com>
Change-Id: I2cff15cbe87836ca8b7700d0e3f4eee0f331ac56
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/14450
Community-CI: Mellanox Build Bot
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
This commit is contained in:
Kozlowski Mateusz 2022-09-12 10:14:29 +02:00 committed by Jim Harris
parent 8c41c40331
commit d748bc41e2
2 changed files with 14 additions and 0 deletions

View File

@ -459,6 +459,12 @@ ftl_mngt_validate_sb(struct spdk_ftl_dev *dev, struct ftl_mngt_process *mngt)
return; 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) { if (spdk_uuid_compare(&sb->uuid, &dev->conf.uuid) != 0) {
FTL_ERRLOG(dev, "Invalid FTL superblock UUID\n"); FTL_ERRLOG(dev, "Invalid FTL superblock UUID\n");
ftl_mngt_fail_step(mngt); ftl_mngt_fail_step(mngt);

View File

@ -95,6 +95,10 @@ static const struct ftl_mngt_process_desc desc_startup = {
.name = "Initialize layout", .name = "Initialize layout",
.action = ftl_mngt_init_layout .action = ftl_mngt_init_layout
}, },
{
.name = "Verify layout",
.action = ftl_mngt_layout_verify,
},
{ {
.name = "Initialize metadata", .name = "Initialize metadata",
.action = ftl_mngt_init_md, .action = ftl_mngt_init_md,
@ -105,6 +109,10 @@ static const struct ftl_mngt_process_desc desc_startup = {
.action = ftl_mngt_init_nv_cache, .action = ftl_mngt_init_nv_cache,
.cleanup = ftl_mngt_deinit_nv_cache .cleanup = ftl_mngt_deinit_nv_cache
}, },
{
.name = "Upgrade layout",
.action = ftl_mngt_layout_upgrade,
},
{ {
.name = "Initialize valid map", .name = "Initialize valid map",
.action = ftl_mngt_init_vld_map, .action = ftl_mngt_init_vld_map,