Skip to content

Commit

Permalink
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
dmitry-fomichev authored and cohuck committed Dec 5, 2022
1 parent a7251b0 commit b4e8efa
Showing 1 changed file with 692 additions and 2 deletions.

0 comments on commit b4e8efa

Please sign in to comment.