ftl: Add md upgrade templates for P2L/Band/Chunk from version 0 to version 1

Since P2L, Band, Chunks start at version 1, adding some code blocking the loading
of version 0 for them.

Signed-off-by: Kozlowski Mateusz <mateusz.kozlowski@intel.com>
Signed-off-by: Artur Paszkiewicz <artur.paszkiewicz@intel.com>
Change-Id: I4f5d3a8bb3ed1e39bea18803ffb8ba319a815ae8
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/13387
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Community-CI: Mellanox Build Bot
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-05-25 11:55:36 +02:00 committed by Jim Harris
parent c8ab874d7c
commit 8c41c40331
6 changed files with 84 additions and 10 deletions

View File

@ -33,7 +33,8 @@ C_SRCS += mngt/ftl_mngt_md.c mngt/ftl_mngt_misc.c mngt/ftl_mngt_ioch.c mngt/ftl_
C_SRCS += mngt/ftl_mngt_band.c mngt/ftl_mngt_self_test.c mngt/ftl_mngt_p2l.c
C_SRCS += mngt/ftl_mngt_recovery.c mngt/ftl_mngt_upgrade.c
C_SRCS += utils/ftl_conf.c utils/ftl_md.c utils/ftl_mempool.c utils/ftl_bitmap.c
C_SRCS += upgrade/ftl_layout_upgrade.c upgrade/ftl_sb_upgrade.c
C_SRCS += upgrade/ftl_layout_upgrade.c upgrade/ftl_sb_upgrade.c upgrade/ftl_p2l_upgrade.c
C_SRCS += upgrade/ftl_band_upgrade.c upgrade/ftl_chunk_upgrade.c
SPDK_MAP_FILE = $(abspath $(CURDIR)/spdk_ftl.map)

View File

@ -64,7 +64,7 @@ superblock_md_region_overflow(struct spdk_ftl_dev *dev, struct ftl_superblock_md
}
/* Make sure the entry doesn't overflow the pointer value (probably overkill to check) */
if (UINT64_MAX - (uintptr_t)sb_reg < sizeof(*sb_reg)) {
if (UINT64_MAX - (uintptr_t)sb_reg <= sizeof(*sb_reg)) {
return true;
}

View File

@ -0,0 +1,16 @@
/* SPDX-License-Identifier: BSD-3-Clause
* Copyright (c) Intel Corporation.
* All rights reserved.
*/
#include "ftl_band.h"
#include "ftl_layout_upgrade.h"
struct ftl_region_upgrade_desc band_upgrade_desc[] = {
[FTL_BAND_VERSION_0] = {
.verify = ftl_region_upgrade_disabled,
},
};
SPDK_STATIC_ASSERT(SPDK_COUNTOF(band_upgrade_desc) == FTL_BAND_VERSION_CURRENT,
"Missing band region upgrade descriptors");

View File

@ -0,0 +1,16 @@
/* SPDX-License-Identifier: BSD-3-Clause
* Copyright (c) Intel Corporation.
* All rights reserved.
*/
#include "ftl_nv_cache.h"
#include "ftl_layout_upgrade.h"
struct ftl_region_upgrade_desc nvc_upgrade_desc[] = {
[FTL_NVC_VERSION_0] = {
.verify = ftl_region_upgrade_disabled,
},
};
SPDK_STATIC_ASSERT(SPDK_COUNTOF(nvc_upgrade_desc) == FTL_NVC_VERSION_CURRENT,
"Missing NVC region upgrade descriptors");

View File

@ -45,17 +45,41 @@ static struct ftl_layout_upgrade_desc_list layout_upgrade_desc[] = {
.desc = sb_upgrade_desc,
},
[FTL_LAYOUT_REGION_TYPE_L2P] = {},
[FTL_LAYOUT_REGION_TYPE_BAND_MD] = {},
[FTL_LAYOUT_REGION_TYPE_BAND_MD_MIRROR] = {},
[FTL_LAYOUT_REGION_TYPE_BAND_MD] = {
.count = FTL_BAND_VERSION_CURRENT,
.desc = band_upgrade_desc,
},
[FTL_LAYOUT_REGION_TYPE_BAND_MD_MIRROR] = {
.count = FTL_BAND_VERSION_CURRENT,
.desc = band_upgrade_desc,
},
[FTL_LAYOUT_REGION_TYPE_VALID_MAP] = {},
[FTL_LAYOUT_REGION_TYPE_NVC_MD] = {},
[FTL_LAYOUT_REGION_TYPE_NVC_MD_MIRROR] = {},
[FTL_LAYOUT_REGION_TYPE_NVC_MD] = {
.count = FTL_NVC_VERSION_CURRENT,
.desc = nvc_upgrade_desc,
},
[FTL_LAYOUT_REGION_TYPE_NVC_MD_MIRROR] = {
.count = FTL_NVC_VERSION_CURRENT,
.desc = nvc_upgrade_desc,
},
[FTL_LAYOUT_REGION_TYPE_DATA_NVC] = {},
[FTL_LAYOUT_REGION_TYPE_DATA_BASE] = {},
[FTL_LAYOUT_REGION_TYPE_P2L_CKPT_GC] = {},
[FTL_LAYOUT_REGION_TYPE_P2L_CKPT_GC_NEXT] = {},
[FTL_LAYOUT_REGION_TYPE_P2L_CKPT_COMP] = {},
[FTL_LAYOUT_REGION_TYPE_P2L_CKPT_COMP_NEXT] = {},
[FTL_LAYOUT_REGION_TYPE_P2L_CKPT_GC] = {
.count = FTL_P2L_VERSION_CURRENT,
.desc = p2l_upgrade_desc,
},
[FTL_LAYOUT_REGION_TYPE_P2L_CKPT_GC_NEXT] = {
.count = FTL_P2L_VERSION_CURRENT,
.desc = p2l_upgrade_desc,
},
[FTL_LAYOUT_REGION_TYPE_P2L_CKPT_COMP] = {
.count = FTL_P2L_VERSION_CURRENT,
.desc = p2l_upgrade_desc,
},
[FTL_LAYOUT_REGION_TYPE_P2L_CKPT_COMP_NEXT] = {
.count = FTL_P2L_VERSION_CURRENT,
.desc = p2l_upgrade_desc,
},
[FTL_LAYOUT_REGION_TYPE_TRIM_MD] = {},
[FTL_LAYOUT_REGION_TYPE_TRIM_MD_MIRROR] = {},
};

View File

@ -0,0 +1,17 @@
/* SPDX-License-Identifier: BSD-3-Clause
* Copyright (c) Intel Corporation.
* All rights reserved.
*/
#include "mngt/ftl_mngt.h"
#include "mngt/ftl_mngt_steps.h"
#include "ftl_layout_upgrade.h"
struct ftl_region_upgrade_desc p2l_upgrade_desc[] = {
[FTL_P2L_VERSION_0] = {
.verify = ftl_region_upgrade_disabled
},
};
SPDK_STATIC_ASSERT(SPDK_COUNTOF(p2l_upgrade_desc) == FTL_P2L_VERSION_CURRENT,
"Missing P2L region upgrade descriptors");