nvmf: don't allow 0xFFFFFFFF as a NSID
FFFFFFFFh is reserved for the broadcast NSID and can't be used as a NSID for a specific namespace. Change-Id: I64a3cc80993d7b34324823462f4d992d1415773f Signed-off-by: Daniel Verkamp <daniel.verkamp@intel.com> Reviewed-on: https://review.gerrithub.io/378849 Tested-by: SPDK Automated Test System <sys_sgsw@intel.com> Reviewed-by: Changpeng Liu <changpeng.liu@intel.com>
This commit is contained in:
parent
9290e0bcf7
commit
8011d8c0e6
@ -328,6 +328,11 @@ spdk_nvmf_subsystem_add_ns(struct spdk_nvmf_subsystem *subsystem, struct spdk_bd
|
|||||||
uint32_t i;
|
uint32_t i;
|
||||||
int rc;
|
int rc;
|
||||||
|
|
||||||
|
if (nsid == SPDK_NVME_GLOBAL_NS_TAG) {
|
||||||
|
SPDK_ERRLOG("Invalid NSID %" PRIu32 "\n", nsid);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
if (nsid > subsystem->max_nsid ||
|
if (nsid > subsystem->max_nsid ||
|
||||||
(nsid == 0 && subsystem->num_allocated_nsid == subsystem->max_nsid)) {
|
(nsid == 0 && subsystem->num_allocated_nsid == subsystem->max_nsid)) {
|
||||||
struct spdk_nvmf_ns *new_ns_array;
|
struct spdk_nvmf_ns *new_ns_array;
|
||||||
|
@ -189,6 +189,11 @@ test_spdk_nvmf_subsystem_add_ns(void)
|
|||||||
CU_ASSERT(nsid == 0);
|
CU_ASSERT(nsid == 0);
|
||||||
CU_ASSERT(subsystem.max_nsid == 5);
|
CU_ASSERT(subsystem.max_nsid == 5);
|
||||||
|
|
||||||
|
/* Request 0xFFFFFFFF (invalid NSID, reserved for broadcast) */
|
||||||
|
nsid = spdk_nvmf_subsystem_add_ns(&subsystem, &bdev2, 0xFFFFFFFF);
|
||||||
|
CU_ASSERT(nsid == 0);
|
||||||
|
CU_ASSERT(subsystem.max_nsid == 5);
|
||||||
|
|
||||||
free(subsystem.ns);
|
free(subsystem.ns);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user