FTL: Add config checks during startup flow

Signed-off-by: Kozlowski Mateusz <mateusz.kozlowski@intel.com>
Signed-off-by: Artur Paszkiewicz <artur.paszkiewicz@intel.com>
Change-Id: I336880ee263dbb23b613bd933c776f0b922412cc
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/13294
Community-CI: Mellanox Build Bot
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Konrad Sztyber <konrad.sztyber@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
This commit is contained in:
Kozlowski Mateusz 2022-06-20 12:00:04 +02:00 committed by Konrad Sztyber
parent 7a7ac2af33
commit b872e29fef
6 changed files with 42 additions and 1 deletions

View File

@ -19,7 +19,7 @@ FTL_SUBDIRS := mngt utils
C_SRCS = ftl_core.c ftl_init.c ftl_layout.c C_SRCS = ftl_core.c ftl_init.c ftl_layout.c
C_SRCS += mngt/ftl_mngt.c mngt/ftl_mngt_bdev.c mngt/ftl_mngt_shutdown.c mngt/ftl_mngt_startup.c C_SRCS += mngt/ftl_mngt.c mngt/ftl_mngt_bdev.c mngt/ftl_mngt_shutdown.c mngt/ftl_mngt_startup.c
C_SRCS += mngt/ftl_mngt_md.c C_SRCS += mngt/ftl_mngt_md.c mngt/ftl_mngt_misc.c
C_SRCS += utils/ftl_conf.c utils/ftl_md.c C_SRCS += utils/ftl_conf.c utils/ftl_md.c
SPDK_MAP_FILE = $(abspath $(CURDIR)/spdk_ftl.map) SPDK_MAP_FILE = $(abspath $(CURDIR)/spdk_ftl.map)

View File

@ -0,0 +1,20 @@
/* SPDX-License-Identifier: BSD-3-Clause
* Copyright (c) Intel Corporation.
* All rights reserved.
*/
#include "ftl_core.h"
#include "ftl_utils.h"
#include "ftl_mngt.h"
#include "ftl_mngt_steps.h"
#include "ftl_internal.h"
void
ftl_mngt_check_conf(struct spdk_ftl_dev *dev, struct ftl_mngt_process *mngt)
{
if (ftl_conf_is_valid(&dev->conf)) {
ftl_mngt_next_step(mngt);
} else {
ftl_mngt_fail_step(mngt);
}
}

View File

@ -12,6 +12,10 @@ static const struct ftl_mngt_process_desc desc_startup;
static const struct ftl_mngt_process_desc desc_startup = { static const struct ftl_mngt_process_desc desc_startup = {
.name = "FTL startup", .name = "FTL startup",
.steps = { .steps = {
{
.name = "Check configuration",
.action = ftl_mngt_check_conf,
},
{ {
.name = "Open base bdev", .name = "Open base bdev",
.action = ftl_mngt_open_base_bdev, .action = ftl_mngt_open_base_bdev,

View File

@ -8,6 +8,8 @@
#include "ftl_mngt.h" #include "ftl_mngt.h"
void ftl_mngt_check_conf(struct spdk_ftl_dev *dev, struct ftl_mngt_process *mngt);
void ftl_mngt_open_base_bdev(struct spdk_ftl_dev *dev, struct ftl_mngt_process *mngt); void ftl_mngt_open_base_bdev(struct spdk_ftl_dev *dev, struct ftl_mngt_process *mngt);
void ftl_mngt_close_base_bdev(struct spdk_ftl_dev *dev, struct ftl_mngt_process *mngt); void ftl_mngt_close_base_bdev(struct spdk_ftl_dev *dev, struct ftl_mngt_process *mngt);

View File

@ -101,3 +101,16 @@ ftl_conf_init_dev(struct spdk_ftl_dev *dev, const struct spdk_ftl_conf *conf)
return 0; return 0;
} }
bool
ftl_conf_is_valid(const struct spdk_ftl_conf *conf)
{
if (conf->overprovisioning >= 100) {
return false;
}
if (conf->overprovisioning == 0) {
return false;
}
return true;
}

View File

@ -8,6 +8,8 @@
#include "spdk/ftl.h" #include "spdk/ftl.h"
bool ftl_conf_is_valid(const struct spdk_ftl_conf *conf);
int ftl_conf_cpy(struct spdk_ftl_conf *dst, const struct spdk_ftl_conf *src); int ftl_conf_cpy(struct spdk_ftl_conf *dst, const struct spdk_ftl_conf *src);
void ftl_conf_deinit(struct spdk_ftl_conf *conf); void ftl_conf_deinit(struct spdk_ftl_conf *conf);