On 10/11/22 08:05, Klaus Jensen wrote:
From: Klaus Jensen <k.jen...@samsung.com>

Cancelling a format operation neglects to set iocb->ret as well as
clearing the iocb->aiocb after cancelling the underlying aiocb.

Fix this.

Fixes: 3bcf26d3d619 ("hw/nvme: reimplement format nvm to allow cancellation")
Signed-off-by: Klaus Jensen <k.jen...@samsung.com>
---
  hw/nvme/ctrl.c | 3 +++
  1 file changed, 3 insertions(+)

diff --git a/hw/nvme/ctrl.c b/hw/nvme/ctrl.c
index 918af03d32be..819c02067191 100644
--- a/hw/nvme/ctrl.c
+++ b/hw/nvme/ctrl.c
@@ -5762,8 +5762,11 @@ static void nvme_format_cancel(BlockAIOCB *aiocb)
  {
      NvmeFormatAIOCB *iocb = container_of(aiocb, NvmeFormatAIOCB, common);
+ iocb->ret = -ECANCELED;
+
      if (iocb->aiocb) {
          blk_aio_cancel_async(iocb->aiocb);
+        iocb->aiocb = NULL;
      }
  }

What about nvme_flush_cancel()?

Reply via email to