module/null: remove legacy config support
This patch removes legacy config support in null bdev module. All options through the legacy config are already reflected in JSON. While here, added allocation failure check for g_null_read_buf. Signed-off-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com> Change-Id: I59a28a402e0c61e5636da623bc109e15b36f0584 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/4626 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> Reviewed-by: Aleksey Marchuk <alexeymar@mellanox.com>
This commit is contained in:
parent
98fde363f3
commit
2eda3fa095
@ -135,6 +135,7 @@ DEPDIRS-bdev_split := $(BDEV_DEPS_CONF)
|
||||
DEPDIRS-bdev_aio := $(BDEV_DEPS_THREAD)
|
||||
DEPDIRS-bdev_compress := $(BDEV_DEPS_THREAD) reduce
|
||||
DEPDIRS-bdev_delay := $(BDEV_DEPS_THREAD)
|
||||
DEPDIRS-bdev_null := $(BDEV_DEPS_THREAD)
|
||||
DEPDIRS-bdev_zone_block := $(BDEV_DEPS_THREAD)
|
||||
ifeq ($(OS),Linux)
|
||||
DEPDIRS-bdev_ftl := $(BDEV_DEPS_THREAD) ftl
|
||||
@ -142,7 +143,6 @@ endif
|
||||
|
||||
DEPDIRS-bdev_crypto := $(BDEV_DEPS_CONF_THREAD)
|
||||
DEPDIRS-bdev_iscsi := $(BDEV_DEPS_CONF_THREAD)
|
||||
DEPDIRS-bdev_null := $(BDEV_DEPS_CONF_THREAD)
|
||||
DEPDIRS-bdev_nvme = $(BDEV_DEPS_CONF_THREAD) nvme
|
||||
DEPDIRS-bdev_ocf := $(BDEV_DEPS_CONF_THREAD)
|
||||
DEPDIRS-bdev_passthru := $(BDEV_DEPS_CONF_THREAD)
|
||||
|
@ -34,7 +34,6 @@
|
||||
#include "spdk/stdinc.h"
|
||||
|
||||
#include "spdk/bdev.h"
|
||||
#include "spdk/conf.h"
|
||||
#include "spdk/env.h"
|
||||
#include "spdk/thread.h"
|
||||
#include "spdk/json.h"
|
||||
@ -61,13 +60,11 @@ static void *g_null_read_buf;
|
||||
|
||||
static int bdev_null_initialize(void);
|
||||
static void bdev_null_finish(void);
|
||||
static void bdev_null_get_spdk_running_config(FILE *fp);
|
||||
|
||||
static struct spdk_bdev_module null_if = {
|
||||
.name = "null",
|
||||
.module_init = bdev_null_initialize,
|
||||
.module_fini = bdev_null_finish,
|
||||
.config_text = bdev_null_get_spdk_running_config,
|
||||
.async_fini = true,
|
||||
};
|
||||
|
||||
@ -399,23 +396,9 @@ null_bdev_destroy_cb(void *io_device, void *ctx_buf)
|
||||
spdk_poller_unregister(&ch->poller);
|
||||
}
|
||||
|
||||
static void
|
||||
_bdev_null_cleanup_cb(void *arg)
|
||||
{
|
||||
spdk_free(g_null_read_buf);
|
||||
}
|
||||
|
||||
static int
|
||||
bdev_null_initialize(void)
|
||||
{
|
||||
struct spdk_conf_section *sp = spdk_conf_find_section(NULL, "Null");
|
||||
uint64_t size_in_mb, num_blocks;
|
||||
int block_size, i, rc = 0;
|
||||
int md_size, dif_type;
|
||||
struct spdk_bdev *bdev;
|
||||
const char *name, *val;
|
||||
struct spdk_null_bdev_opts opts = {};
|
||||
|
||||
/*
|
||||
* This will be used if upper layer expects us to allocate the read buffer.
|
||||
* Instead of using a real rbuf from the bdev pool, just always point to
|
||||
@ -423,96 +406,18 @@ bdev_null_initialize(void)
|
||||
*/
|
||||
g_null_read_buf = spdk_zmalloc(SPDK_BDEV_LARGE_BUF_MAX_SIZE, 0, NULL,
|
||||
SPDK_ENV_SOCKET_ID_ANY, SPDK_MALLOC_DMA);
|
||||
if (g_null_read_buf == NULL) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
/*
|
||||
* We need to pick some unique address as our "io device" - so just use the
|
||||
* address of the global tailq.
|
||||
*/
|
||||
spdk_io_device_register(&g_null_bdev_head, null_bdev_create_cb, null_bdev_destroy_cb,
|
||||
sizeof(struct null_io_channel),
|
||||
"null_bdev");
|
||||
sizeof(struct null_io_channel), "null_bdev");
|
||||
|
||||
if (sp == NULL) {
|
||||
goto end;
|
||||
}
|
||||
|
||||
for (i = 0; ; ++i) {
|
||||
val = spdk_conf_section_get_nval(sp, "Dev", i);
|
||||
if (val == NULL) {
|
||||
break;
|
||||
}
|
||||
|
||||
name = spdk_conf_section_get_nmval(sp, "Dev", i, 0);
|
||||
if (name == NULL) {
|
||||
SPDK_ERRLOG("Null entry %d: Name must be provided\n", i);
|
||||
continue;
|
||||
}
|
||||
|
||||
val = spdk_conf_section_get_nmval(sp, "Dev", i, 1);
|
||||
if (val == NULL) {
|
||||
SPDK_ERRLOG("Null entry %d: Size in MB must be provided\n", i);
|
||||
continue;
|
||||
}
|
||||
|
||||
errno = 0;
|
||||
size_in_mb = strtoull(val, NULL, 10);
|
||||
if (errno) {
|
||||
SPDK_ERRLOG("Null entry %d: Invalid size in MB %s\n", i, val);
|
||||
continue;
|
||||
}
|
||||
|
||||
val = spdk_conf_section_get_nmval(sp, "Dev", i, 2);
|
||||
if (val == NULL) {
|
||||
block_size = 512;
|
||||
} else {
|
||||
block_size = (int)spdk_strtol(val, 10);
|
||||
if (block_size <= 0) {
|
||||
SPDK_ERRLOG("Null entry %d: Invalid block size %s\n", i, val);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
val = spdk_conf_section_get_nmval(sp, "Dev", i, 3);
|
||||
if (val == NULL) {
|
||||
md_size = 0;
|
||||
} else {
|
||||
md_size = (int)spdk_strtol(val, 10);
|
||||
if (md_size < 0) {
|
||||
SPDK_ERRLOG("Null entry %d: Invalid metadata size %s\n", i, val);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
val = spdk_conf_section_get_nmval(sp, "Dev", i, 4);
|
||||
if (val == NULL) {
|
||||
dif_type = SPDK_DIF_DISABLE;
|
||||
} else {
|
||||
dif_type = (int)spdk_strtol(val, 10);
|
||||
if (dif_type < SPDK_DIF_DISABLE || dif_type > SPDK_DIF_TYPE3) {
|
||||
SPDK_ERRLOG("Null entry %d: Invalid data protection type %s\n", i, val);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
num_blocks = size_in_mb * (1024 * 1024) / block_size;
|
||||
|
||||
opts.name = name;
|
||||
opts.num_blocks = num_blocks;
|
||||
opts.block_size = block_size;
|
||||
opts.md_size = md_size;
|
||||
opts.md_interleave = true;
|
||||
opts.dif_type = dif_type;
|
||||
opts.dif_is_head_of_md = false;
|
||||
rc = bdev_null_create(&bdev, &opts);
|
||||
if (rc) {
|
||||
SPDK_ERRLOG("Could not create null bdev\n");
|
||||
goto end;
|
||||
}
|
||||
}
|
||||
end:
|
||||
if (rc) {
|
||||
spdk_io_device_unregister(&g_null_bdev_head, _bdev_null_cleanup_cb);
|
||||
}
|
||||
return rc;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void
|
||||
@ -528,21 +433,4 @@ bdev_null_finish(void)
|
||||
spdk_io_device_unregister(&g_null_bdev_head, _bdev_null_finish_cb);
|
||||
}
|
||||
|
||||
static void
|
||||
bdev_null_get_spdk_running_config(FILE *fp)
|
||||
{
|
||||
struct null_bdev *bdev;
|
||||
uint64_t null_bdev_size;
|
||||
|
||||
fprintf(fp, "\n[Null]\n");
|
||||
|
||||
TAILQ_FOREACH(bdev, &g_null_bdev_head, tailq) {
|
||||
null_bdev_size = bdev->bdev.blocklen * bdev->bdev.blockcnt;
|
||||
null_bdev_size /= (1024 * 1024);
|
||||
fprintf(fp, " Dev %s %" PRIu64 " %d %d %d\n",
|
||||
bdev->bdev.name, null_bdev_size, bdev->bdev.blocklen, bdev->bdev.md_len,
|
||||
bdev->bdev.dif_type);
|
||||
}
|
||||
}
|
||||
|
||||
SPDK_LOG_REGISTER_COMPONENT(bdev_null)
|
||||
|
Loading…
Reference in New Issue
Block a user