bdev: bdev_io_get_nvme_status() supports NVMe abort command
spdk_bdev_io_get_nvme_status() does not follow NVMe abort command about return values. NVMe abort command sets completion status to SUCCESS both for success and failure cases and differentiates only the bit 0 of cdw0. lib/nvmf do not use spdk_bdev_io_get_nvme_status() but checks only success or failure at completion. So there is no issue now but let spdk_bdev_io_get_nvme_status() follow NVMe abort command. In future, the user of spdk_bdev_abort() may use spdk_bdev_io_get_nvme_status(). Signed-off-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com> Change-Id: Ic4a08056bd8a1aee4c400f72ef5de7c68e23990b Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/9977 Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com> Community-CI: Mellanox Build Bot Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Aleksey Marchuk <alexeymar@mellanox.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com> Reviewed-by: Konrad Sztyber <konrad.sztyber@intel.com>
This commit is contained in:
parent
2c5a850a13
commit
04569c99c0
@ -5591,6 +5591,17 @@ spdk_bdev_io_get_nvme_status(const struct spdk_bdev_io *bdev_io, uint32_t *cdw0,
|
||||
assert(sc != NULL);
|
||||
assert(cdw0 != NULL);
|
||||
|
||||
if (spdk_unlikely(bdev_io->type == SPDK_BDEV_IO_TYPE_ABORT)) {
|
||||
*sct = SPDK_NVME_SCT_GENERIC;
|
||||
*sc = SPDK_NVME_SC_SUCCESS;
|
||||
if (bdev_io->internal.status == SPDK_BDEV_IO_STATUS_SUCCESS) {
|
||||
*cdw0 = 0;
|
||||
} else {
|
||||
*cdw0 = 1U;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
if (bdev_io->internal.status == SPDK_BDEV_IO_STATUS_NVME_ERROR) {
|
||||
*sct = bdev_io->internal.error.nvme.sct;
|
||||
*sc = bdev_io->internal.error.nvme.sc;
|
||||
|
Loading…
Reference in New Issue
Block a user