nvmf/ctrlr_bdev: Set DNR bit in status for failed NVMe passthru
When NVMe passthru command (IO or admin) fails on submission (e.g. it is not supported), set DNR bit in completion status field. There is no sense in retrying the command in this case. Signed-off-by: Evgeniy Kochetov <evgeniik@nvidia.com> Change-Id: I55960c128bd9fc31f6defef0b9832259a71684b1 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/8578 Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com> Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
This commit is contained in:
parent
d03b31c61f
commit
1fd2af0150
@ -697,6 +697,7 @@ nvmf_bdev_ctrlr_nvme_passthru_io(struct spdk_bdev *bdev, struct spdk_bdev_desc *
|
||||
}
|
||||
req->rsp->nvme_cpl.status.sct = SPDK_NVME_SCT_GENERIC;
|
||||
req->rsp->nvme_cpl.status.sc = SPDK_NVME_SC_INVALID_OPCODE;
|
||||
req->rsp->nvme_cpl.status.dnr = 1;
|
||||
return SPDK_NVMF_REQUEST_EXEC_STATUS_COMPLETE;
|
||||
}
|
||||
|
||||
@ -726,6 +727,7 @@ spdk_nvmf_bdev_ctrlr_nvme_passthru_admin(struct spdk_bdev *bdev, struct spdk_bde
|
||||
req->rsp->nvme_cpl.status.sc = SPDK_NVME_SC_INTERNAL_DEVICE_ERROR;
|
||||
}
|
||||
|
||||
req->rsp->nvme_cpl.status.dnr = 1;
|
||||
return SPDK_NVMF_REQUEST_EXEC_STATUS_COMPLETE;
|
||||
}
|
||||
|
||||
|
@ -846,6 +846,7 @@ test_nvmf_bdev_ctrlr_nvme_passthru(void)
|
||||
CU_ASSERT(rc == SPDK_NVMF_REQUEST_EXEC_STATUS_COMPLETE);
|
||||
CU_ASSERT(rsp.nvme_cpl.status.sct == SPDK_NVME_SCT_GENERIC);
|
||||
CU_ASSERT(rsp.nvme_cpl.status.sc == SPDK_NVME_SC_INVALID_OPCODE);
|
||||
CU_ASSERT(rsp.nvme_cpl.status.dnr == 1);
|
||||
|
||||
/* NVME_IO no channel - queue IO */
|
||||
memset(&rsp, 0, sizeof(rsp));
|
||||
@ -881,6 +882,7 @@ test_nvmf_bdev_ctrlr_nvme_passthru(void)
|
||||
CU_ASSERT(rc == SPDK_NVMF_REQUEST_EXEC_STATUS_COMPLETE);
|
||||
CU_ASSERT(rsp.nvme_cpl.status.sct == SPDK_NVME_SCT_GENERIC);
|
||||
CU_ASSERT(rsp.nvme_cpl.status.sc == SPDK_NVME_SC_INVALID_OPCODE);
|
||||
CU_ASSERT(rsp.nvme_cpl.status.dnr == 1);
|
||||
|
||||
/* NVME_ADMIN no channel - queue IO */
|
||||
memset(&rsp, 0, sizeof(rsp));
|
||||
|
Loading…
x
Reference in New Issue
Block a user