From d2525134e74e2e48c777c45db7cb58fdff4af165 Mon Sep 17 00:00:00 2001 From: Changpeng Liu Date: Mon, 12 Nov 2018 01:29:41 -0500 Subject: [PATCH] nvmf: check block size is 512 aligned for each Namespace NVMf target can't support extended LBA format for now, so print a error log for those NVMe backend devices with extended LBA format. Fix the issue #497. Change-Id: Idda76ba934dd0eb45f92ae22b0b71398b3ae69dd Signed-off-by: Changpeng Liu Reviewed-on: https://review.gerrithub.io/432799 Chandler-Test-Pool: SPDK Automated Test System Tested-by: SPDK CI Jenkins Reviewed-by: Shuhei Matsumoto Reviewed-by: Jim Harris Reviewed-by: Reviewed-by: Seth Howell --- lib/nvmf/subsystem.c | 6 ++++++ test/unit/lib/nvmf/ctrlr_discovery.c/ctrlr_discovery_ut.c | 3 +++ test/unit/lib/nvmf/subsystem.c/subsystem_ut.c | 3 +++ 3 files changed, 12 insertions(+) diff --git a/lib/nvmf/subsystem.c b/lib/nvmf/subsystem.c index b61755b41..ca71c3c48 100644 --- a/lib/nvmf/subsystem.c +++ b/lib/nvmf/subsystem.c @@ -995,6 +995,12 @@ spdk_nvmf_subsystem_add_ns(struct spdk_nvmf_subsystem *subsystem, struct spdk_bd return 0; } + if (spdk_bdev_get_block_size(bdev) % 512) { + SPDK_ERRLOG("Block size %u for Bdev %s is not supported now\n", + spdk_bdev_get_block_size(bdev), spdk_bdev_get_name(bdev)); + return 0; + } + spdk_nvmf_ns_opts_get_defaults(&opts, sizeof(opts)); if (user_opts) { memcpy(&opts, user_opts, spdk_min(sizeof(opts), opts_size)); diff --git a/test/unit/lib/nvmf/ctrlr_discovery.c/ctrlr_discovery_ut.c b/test/unit/lib/nvmf/ctrlr_discovery.c/ctrlr_discovery_ut.c index 88fceac34..8e6653861 100644 --- a/test/unit/lib/nvmf/ctrlr_discovery.c/ctrlr_discovery_ut.c +++ b/test/unit/lib/nvmf/ctrlr_discovery.c/ctrlr_discovery_ut.c @@ -50,6 +50,9 @@ DEFINE_STUB(spdk_bdev_module_claim_bdev, DEFINE_STUB_V(spdk_bdev_module_release_bdev, (struct spdk_bdev *bdev)); +DEFINE_STUB(spdk_bdev_get_block_size, uint32_t, + (const struct spdk_bdev *bdev), 512); + uint32_t spdk_env_get_current_core(void) { diff --git a/test/unit/lib/nvmf/subsystem.c/subsystem_ut.c b/test/unit/lib/nvmf/subsystem.c/subsystem_ut.c index bd5de9979..1a9791634 100644 --- a/test/unit/lib/nvmf/subsystem.c/subsystem_ut.c +++ b/test/unit/lib/nvmf/subsystem.c/subsystem_ut.c @@ -49,6 +49,9 @@ DEFINE_STUB(spdk_bdev_module_claim_bdev, DEFINE_STUB_V(spdk_bdev_module_release_bdev, (struct spdk_bdev *bdev)); +DEFINE_STUB(spdk_bdev_get_block_size, uint32_t, + (const struct spdk_bdev *bdev), 512); + static void _subsystem_send_msg(spdk_thread_fn fn, void *ctx, void *thread_ctx) {