From 64eb2cc1deb8e3da91375305b0e860203d10f575 Mon Sep 17 00:00:00 2001 From: Jim Harris Date: Thu, 26 Aug 2021 08:57:34 -0700 Subject: [PATCH] bdev/nvme: account for abort completion with cdw0=1 When an abort command completes successfully, cdw0 bit 0 may be set to indicate that the controller was unable to abort the specified cid. In that case the bdev nvme abort completion callback needs to reset the controller. Signed-off-by: Jim Harris Change-Id: I42a5e96e19e113c38dec67c2d8575a11f39d41a9 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/9320 Community-CI: Broadcom CI Community-CI: Mellanox Build Bot Tested-by: SPDK CI Jenkins Reviewed-by: Changpeng Liu Reviewed-by: Ziye Yang Reviewed-by: Konrad Sztyber Reviewed-by: Tomasz Zawadzki --- module/bdev/nvme/bdev_nvme.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/module/bdev/nvme/bdev_nvme.c b/module/bdev/nvme/bdev_nvme.c index 826b6ee5e..d18e6c8cb 100644 --- a/module/bdev/nvme/bdev_nvme.c +++ b/module/bdev/nvme/bdev_nvme.c @@ -1684,6 +1684,9 @@ nvme_abort_cpl(void *ctx, const struct spdk_nvme_cpl *cpl) SPDK_WARNLOG("Abort failed. Resetting controller. sc is %u, sct is %u.\n", cpl->status.sc, cpl->status.sct); bdev_nvme_reset(nvme_ctrlr); + } else if (cpl->cdw0 & 0x1) { + SPDK_WARNLOG("Specified command could not be aborted.\n"); + bdev_nvme_reset(nvme_ctrlr); } }