diff --git a/lib/nvmf/ctrlr.c b/lib/nvmf/ctrlr.c index 1077086ea..5581832da 100644 --- a/lib/nvmf/ctrlr.c +++ b/lib/nvmf/ctrlr.c @@ -2358,10 +2358,8 @@ nvmf_ns_reservation_request_check(struct spdk_nvmf_subsystem_pg_ns_info *ns_info } break; case SPDK_NVME_OPC_RESERVATION_ACQUIRE: - case SPDK_NVME_OPC_RESERVATION_RELEASE: racqa = cmd->cdw10_bits.resv_acquire.racqa; - if (cmd->opc == SPDK_NVME_OPC_RESERVATION_ACQUIRE && - racqa == SPDK_NVME_RESERVE_ACQUIRE) { + if (racqa == SPDK_NVME_RESERVE_ACQUIRE) { status = SPDK_NVME_SC_RESERVATION_CONFLICT; goto exit; } @@ -2370,6 +2368,12 @@ nvmf_ns_reservation_request_check(struct spdk_nvmf_subsystem_pg_ns_info *ns_info goto exit; } break; + case SPDK_NVME_OPC_RESERVATION_RELEASE: + if (!is_registrant) { + status = SPDK_NVME_SC_RESERVATION_CONFLICT; + goto exit; + } + break; default: break; }