On Mon, Jun 01, 2026 at 11:44:01PM +0200, Sam Li wrote:
> Add the specs for the zoned format feature of the qcow2 driver.
> The qcow2 file then can emulate real zoned devices, either passed
> through by virtio-blk device or NVMe ZNS drive to the guest
> given zoned information.
> 
> Signed-off-by: Sam Li <[email protected]>
> Reviewed-by: Stefan Hajnoczi <[email protected]>
> ---
>  docs/system/qemu-block-drivers.rst.inc | 47 ++++++++++++++++++++++++++
>  1 file changed, 47 insertions(+)
> 
> diff --git a/docs/system/qemu-block-drivers.rst.inc 
> b/docs/system/qemu-block-drivers.rst.inc
> index 675daa72f9..1af968c4fd 100644
> --- a/docs/system/qemu-block-drivers.rst.inc
> +++ b/docs/system/qemu-block-drivers.rst.inc
> @@ -172,6 +172,53 @@ This section describes each format and the options that 
> are supported for it.
>      filename`` to check if the NOCOW flag is set or not (Capital 'C' is
>      NOCOW flag).
>  
> +  .. option:: zone.mode
> +    If this is set to ``host-managed``, the image is an emulated zoned
> +    block device. This option is only valid to emulated zoned device files.
> +
> +  .. option:: zone.size
> +
> +    The size of a zone in bytes. The device is divided into zones of this
> +    size with the exception of the last zone, which may be smaller.
> +    Defaults to ``256 MiB``.
> +
> +  .. option:: zone.capacity
> +
> +    The initial capacity value, in bytes, for all zones. The capacity must
> +    be less than or equal to zone size. If the last zone is smaller, then
> +    its capacity is capped. Defaults to ``zone.size``.
> +
> +    The zone capacity is per zone and may be different between zones in real
> +    devices. QCow2 sets all zones to the same capacity.
> +
> +  .. option:: zone.conventional_zones
> +
> +    The number of conventional zones of the zoned device. Defaults to ``0``
> +    (all zones are sequential-write-required).
> +
> +  .. option:: zone.max_active_zones
> +
> +    The limit of the zones with implicit open, explicit open or closed state.

To make the text slightly less ambiguous, perhaps write this as:

The maximum allowed active zones (zones in the implicit open, explicit open,
or closed state).


> +
> +    The max active zones must be less or equal to the number of SWR
> +    (sequential write required) zones of the device. Defaults to ``0``,
> +    meaning no limit.
> +
> +  .. option:: zone.max_open_zones
> +
> +    The maximal allowed open zones. The max open zones must not be larger 
> than

The specifications usually use the word maximum instead of maximal.


> +    the max active zones. Defaults to ``zone.max_active_zones`` if that is
> +    set, otherwise ``0`` (no limit).
> +
> +    If the limits of open zones or active zones are equal to the number of
> +    SWR zones, then it is the same as having no limits.
> +
> +  .. option:: zone.max_append_bytes
> +
> +    The number of bytes in a zone append request that can be issued to the
> +    device. It must be 512-byte aligned and less than the zone capacity.
> +    Defaults to ``64 KiB``.

Perhaps mention what 0 means here.
In the VIRTIO specification, 0 means that zone append requests are not
supported, while in NVMe ZNS, a value of 0 means follow MDTS, and a MDTS
value of 0 means no limit.


Kind regards,
Niklas

Reply via email to