From: Klaus Jensen <k.jen...@samsung.com> This adds support for the Deallocated or Unwritten Logical Block error recovery feature as well as the Dataset Management command.
I wanted to add support for the NPDG and NPDA fields such that the host could get a hint on how many blocks to request deallocation of for the deallocation to actually happen, but I cannot find a realiable way to get the actual block size of the underlying device. If it is an image on a file system we could typically use the host page size, but if it is a raw device, we might have 512 byte sectors that we can issue discards on. And QEMU doesn't seem to provide this without root privileges at least. See the two patches for some gotchas. I also integrated this into my zoned proposal. I'll spare you the v4, nobody cares anyway. But I put it in my repo[1] for posterity. [1]: https://irrelevant.dk/g/pci-nvme.git/tag/?h=zoned-v4. v4: - Removed mixed declaration and code (Keith) - Set NPDG and NPDA and account for the blockdev cluster size. Klaus Jensen (2): hw/block/nvme: add dulbe support hw/block/nvme: add the dataset management command hw/block/nvme-ns.h | 4 + hw/block/nvme.h | 2 + include/block/nvme.h | 12 ++- hw/block/nvme-ns.c | 40 +++++++-- hw/block/nvme.c | 183 +++++++++++++++++++++++++++++++++++++++++- hw/block/trace-events | 4 + 6 files changed, 236 insertions(+), 9 deletions(-) -- 2.28.0