hw/nvme: reimplement dsm to allow cancellation
commitd7d1474fd85d6c3fce46fa2edd051a6ff3f17cd1
authorKlaus Jensen <k.jensen@samsung.com>
Thu, 17 Jun 2021 19:06:49 +0000 (17 21:06 +0200)
committerKlaus Jensen <k.jensen@samsung.com>
Tue, 29 Jun 2021 05:16:25 +0000 (29 07:16 +0200)
tree73e83d36e050a2c184814ade2a581ce5e9bb8d42
parentff0ac2c8b89dfcfbb4186d8ae5469d4e80a10da9
hw/nvme: reimplement dsm to allow cancellation

Prior to this patch, a loop was used to issue multiple "fire and forget"
aios for each range in the command. Without a reference to the aiocb
returned from the blk_aio_pdiscard calls, the aios cannot be canceled.

Fix this by processing the ranges one after another.

As a bonus, this fixes how metadata is cleared (i.e. we only zero it out
if the data was succesfully discarded).

Signed-off-by: Klaus Jensen <k.jensen@samsung.com>
Reviewed-by: Keith Busch <kbusch@kernel.org>
hw/nvme/ctrl.c
hw/nvme/trace-events