[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 09/12] hw/nvme: improve cancellation handling in zone reset
From: |
Klaus Jensen |
Subject: |
[PATCH 09/12] hw/nvme: improve cancellation handling in zone reset |
Date: |
Thu, 23 Jun 2022 23:18:18 +0200 |
From: Klaus Jensen <k.jensen@samsung.com>
If the zone reset operation is cancelled but the block unmap operation
completes normally, the callback will continue resetting the next zone
since it neglects to check iocb->ret which will have been set to
-ECANCELED. Make sure that this is checked and bail out if an error is
present.
Signed-off-by: Klaus Jensen <k.jensen@samsung.com>
---
hw/nvme/ctrl.c | 15 +++++++--------
1 file changed, 7 insertions(+), 8 deletions(-)
diff --git a/hw/nvme/ctrl.c b/hw/nvme/ctrl.c
index 1acf88d9e8c7..9add74753fd8 100644
--- a/hw/nvme/ctrl.c
+++ b/hw/nvme/ctrl.c
@@ -3760,14 +3760,8 @@ static void nvme_zone_reset_epilogue_cb(void *opaque,
int ret)
int64_t moff;
int count;
- if (ret < 0) {
- nvme_zone_reset_cb(iocb, ret);
- return;
- }
-
- if (!ns->lbaf.ms) {
- nvme_zone_reset_cb(iocb, 0);
- return;
+ if (ret < 0 || iocb->ret < 0 || !ns->lbaf.ms) {
+ goto out;
}
moff = nvme_moff(ns, iocb->zone->d.zslba);
@@ -3777,6 +3771,9 @@ static void nvme_zone_reset_epilogue_cb(void *opaque, int
ret)
BDRV_REQ_MAY_UNMAP,
nvme_zone_reset_cb, iocb);
return;
+
+out:
+ nvme_zone_reset_cb(iocb, ret);
}
static void nvme_zone_reset_cb(void *opaque, int ret)
@@ -3788,6 +3785,8 @@ static void nvme_zone_reset_cb(void *opaque, int ret)
if (ret < 0) {
iocb->ret = ret;
goto done;
+ } else if (iocb->ret < 0) {
+ goto done;
}
if (iocb->zone) {
--
2.36.1
- [PATCH 00/12] hw/nvme: misc fixes and updates, Klaus Jensen, 2022/06/23
- [PATCH 01/12] hw/nvme: fix incorrect use of errp/local_err, Klaus Jensen, 2022/06/23
- [PATCH 02/12] hw/nvme: remove redundant passing of PCIDevice, Klaus Jensen, 2022/06/23
- [PATCH 03/12] hw/nvme: cleanup error reporting in nvme_init_pci(), Klaus Jensen, 2022/06/23
- [PATCH 04/12] hw/nvme: fix numzrwa handling, Klaus Jensen, 2022/06/23
- [PATCH 05/12] hw/nvme: fix accidental reintroduction of redundant code, Klaus Jensen, 2022/06/23
- [PATCH 06/12] hw/nvme: fix cancellation of format operations, Klaus Jensen, 2022/06/23
- [PATCH 07/12] hw/nvme: fix flush cancel, Klaus Jensen, 2022/06/23
- [PATCH 08/12] hw/nvme: rework flush bh scheduling, Klaus Jensen, 2022/06/23
- [PATCH 09/12] hw/nvme: improve cancellation handling in zone reset,
Klaus Jensen <=
- [PATCH 10/12] hw/nvme: improve cancellation handling in dsm, Klaus Jensen, 2022/06/23
- [PATCH 11/12] hw/nvme: simplify copy command error handling, Klaus Jensen, 2022/06/23
- [PATCH 12/12] hw/nvme: align logic of format with flush, Klaus Jensen, 2022/06/23