nvmf: check interleaved metadata size when adding NS
When doing DIF insert and strip, we will reserve extra buffer in block device layer to save DIF information, so when attaching one device to Namespace, we will check the value first so that the reserved buffer size isn't smaller than metadata size. Change-Id: Id9272886ce8a7c01271279686730af4e5b24f35a Signed-off-by: Changpeng Liu <changpeng.liu@intel.com> Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/12188 Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com> Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Konrad Sztyber <konrad.sztyber@intel.com> Reviewed-by: Aleksey Marchuk <alexeymar@nvidia.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com> Reviewed-by: Dong Yi <dongx.yi@intel.com>
This commit is contained in:
parent
c650b7eae3
commit
6abb4764ad
@ -1638,13 +1638,23 @@ spdk_nvmf_subsystem_add_ns_ext(struct spdk_nvmf_subsystem *subsystem, const char
|
||||
|
||||
ns->bdev = spdk_bdev_desc_get_bdev(ns->desc);
|
||||
|
||||
if (spdk_bdev_get_md_size(ns->bdev) != 0 && !spdk_bdev_is_md_interleaved(ns->bdev)) {
|
||||
if (spdk_bdev_get_md_size(ns->bdev) != 0) {
|
||||
if (!spdk_bdev_is_md_interleaved(ns->bdev)) {
|
||||
SPDK_ERRLOG("Can't attach bdev with separate metadata.\n");
|
||||
spdk_bdev_close(ns->desc);
|
||||
free(ns);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (spdk_bdev_get_md_size(ns->bdev) > SPDK_BDEV_MAX_INTERLEAVED_MD_SIZE) {
|
||||
SPDK_ERRLOG("Maximum supported interleaved md size %u, current md size %u\n",
|
||||
SPDK_BDEV_MAX_INTERLEAVED_MD_SIZE, spdk_bdev_get_md_size(ns->bdev));
|
||||
spdk_bdev_close(ns->desc);
|
||||
free(ns);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
rc = spdk_bdev_module_claim_bdev(ns->bdev, ns->desc, &ns_bdev_module);
|
||||
if (rc != 0) {
|
||||
spdk_bdev_close(ns->desc);
|
||||
|
Loading…
Reference in New Issue
Block a user