[PATCH v3 1/4] docs/qcow2: add the zoned format feature

Sam Li posted 4 patches 1 year, 3 months ago
Maintainers: Kevin Wolf <kwolf@redhat.com>, Hanna Reitz <hreitz@redhat.com>, Eric Blake <eblake@redhat.com>, Markus Armbruster <armbru@redhat.com>
There is a newer version of this series
[PATCH v3 1/4] docs/qcow2: add the zoned format feature
Posted by Sam Li 1 year, 3 months ago
Add the specs for the zoned format feature of the qcow2 driver.
The qcow2 file can be taken as zoned device and passed through by
virtio-blk device or NVMe ZNS device to the guest given zoned
information.

Signed-off-by: Sam Li <faithilikerun@gmail.com>
---
 docs/system/qemu-block-drivers.rst.inc | 39 ++++++++++++++++++++++++++
 1 file changed, 39 insertions(+)

diff --git a/docs/system/qemu-block-drivers.rst.inc b/docs/system/qemu-block-drivers.rst.inc
index 105cb9679c..640ab151a7 100644
--- a/docs/system/qemu-block-drivers.rst.inc
+++ b/docs/system/qemu-block-drivers.rst.inc
@@ -172,6 +172,45 @@ 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:: zoned
+    The zoned interface of zoned storage divices can different forms which
+    is referred to as models. This option uses number to represent, 1 for
+    host-managed and 0 for non-zoned.
+
+  .. option:: zone_size
+
+    The size of a zone of the zoned device in bytes. The device is divided
+    into zones of this size with the exception of the last zone, which may
+    be smaller.
+
+  .. option:: zone_capacity
+
+    The initial capacity value 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. The device follows the ZBC protocol tends to have the same size
+    as its zone.
+
+    The zone capacity is per zone and may be different between zones in real
+    devices. For simplicity, limits QCow2 emulation to the same zone capacity
+    for all zones.
+
+  .. option:: zone_nr_conv
+
+    The number of conventional zones of the zoned device.
+
+  .. option:: max_open_zones
+
+    The maximal allowed open zones.
+
+  .. option:: max_active_zones
+
+    The limit of the zones with implicit open, explicit open or closed state.
+
+  .. option:: max_append_sectors
+
+    The maximal sectors in 512B blocks that is allowed to append to zones
+    while writing.
+
 .. program:: image-formats
 .. option:: qed
 
-- 
2.40.1
Re: [PATCH v3 1/4] docs/qcow2: add the zoned format feature
Posted by Stefan Hajnoczi 1 year, 2 months ago
On Mon, Aug 28, 2023 at 11:09:52PM +0800, Sam Li wrote:
> Add the specs for the zoned format feature of the qcow2 driver.
> The qcow2 file can be taken as zoned device and passed through by
> virtio-blk device or NVMe ZNS device to the guest given zoned
> information.
> 
> Signed-off-by: Sam Li <faithilikerun@gmail.com>
> ---
>  docs/system/qemu-block-drivers.rst.inc | 39 ++++++++++++++++++++++++++
>  1 file changed, 39 insertions(+)
> 
> diff --git a/docs/system/qemu-block-drivers.rst.inc b/docs/system/qemu-block-drivers.rst.inc
> index 105cb9679c..640ab151a7 100644
> --- a/docs/system/qemu-block-drivers.rst.inc
> +++ b/docs/system/qemu-block-drivers.rst.inc
> @@ -172,6 +172,45 @@ 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:: zoned
> +    The zoned interface of zoned storage divices can different forms which
> +    is referred to as models. This option uses number to represent, 1 for
> +    host-managed and 0 for non-zoned.

I would simplify this paragraph down to:

  1 for a host-managed zoned device or 0 for a non-zoned device.

> +
> +  .. option:: zone_size
> +
> +    The size of a zone of the zoned device in bytes. The device is divided

The first sentence is a little confusing due to the repetition of the
word "zone". It can be shortened:

  The size of a zone, in bytes.

> +    into zones of this size with the exception of the last zone, which may
> +    be smaller.
> +
> +  .. option:: zone_capacity
> +
> +    The initial capacity value for all zones. The capacity must be less than

  The initial capacity value, in bytes, for all zones.

> +    or equal to zone size. If the last zone is smaller, then its capacity is
> +    capped. The device follows the ZBC protocol tends to have the same size
> +    as its zone.

I think the last sentence says that ZBC devices tend to have capacity ==
len whereas ZNS devices may have a unique capacity for each zone? You
could drop this last sentence completely.

> +
> +    The zone capacity is per zone and may be different between zones in real
> +    devices. For simplicity, limits QCow2 emulation to the same zone capacity
> +    for all zones.

The last sentence:

  For simplicity, qcow2 sets all zones to the same capacity.

> +
> +  .. option:: zone_nr_conv
> +
> +    The number of conventional zones of the zoned device.
> +
> +  .. option:: max_open_zones
> +
> +    The maximal allowed open zones.
> +
> +  .. option:: max_active_zones
> +
> +    The limit of the zones with implicit open, explicit open or closed state.
> +
> +  .. option:: max_append_sectors
> +
> +    The maximal sectors in 512B blocks that is allowed to append to zones
> +    while writing.

Rephrasing:

  The maximum number of 512-byte sectors in a zone append request.

> +
>  .. program:: image-formats
>  .. option:: qed
>  
> -- 
> 2.40.1
>