Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Browse the repository at this point in the history
virtio-blk: add zoned block device specification
Introduce support for Zoned Block Devices to virtio. Zoned Block Devices (ZBDs) aim to achieve a better capacity, latency and/or cost characteristics compared to commonly available block devices by getting the entire LBA space of the device divided to block regions that are much larger than the LBA size. These regions are called zones and they can only be written sequentially. More details about ZBDs can be found at https://zonedstorage.io/docs/introduction/zoned-storage . In its current form, the virtio protocol for block devices (virtio-blk) is not aware of ZBDs but it allows the driver to successfully scan a host-managed drive provided by the virtio block device. As the result, the host-managed drive is recognized by virtio driver as a regular, non-zoned drive that will operate erroneously under the most common write workloads. Host-aware ZBDs are currently usable, but their performance may not be optimal because the driver can only see them as non-zoned block devices. To fix this, the virtio-blk protocol needs to be extended to add the capabilities to convey the zone characteristics of ZBDs at the device side to the driver and to provide support for ZBD-specific commands - Report Zones, four zone operations (Open, Close, Finish and Reset) and (optionally) Zone Append. The proposed standard extension aims to define this new functionality. This patch extends the virtio-blk section of virtio specification with the minimum set of requirements that are necessary to support ZBDs. The resulting device model is a subset of the models defined in ZAC/ZBC and ZNS standards documents. The included functionality mirrors the existing Linux kernel block layer ZBD support and should be sufficient to handle the host-managed and host-aware HDDs that are on the market today as well as ZNS SSDs that are entering the market at the time of submission of this patch. I would like to thank the following people for their useful feedback and suggestions while working on the initial iterations of this patch. Damien Le Moal <damien.lemoal@opensource.wdc.com> Matias Bjørling <Matias.Bjorling@wdc.com> Niklas Cassel <Niklas.Cassel@wdc.com> Hans Holmberg <Hans.Holmberg@wdc.com> Fixes: #143 Signed-off-by: Dmitry Fomichev <dmitry.fomichev@wdc.com> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com> Reviewed-by: Damien Le Moal <damien.lemoal@opensource.wdc.com> Signed-off-by: Cornelia Huck <cohuck@redhat.com>
- Loading branch information