On Sun, May 10, 2026 at 07:50:55PM +0200, Sam Li wrote:
> This patch series add a new extension - zoned format - to the
> qcow2 driver thereby allowing full zoned storage emulation on
> the qcow2 img file. Users can attach such a qcow2 file to the
> guest as a zoned device.
> 
> Write pointer are preserved in the zoned metadata. It will be
> recovered after power cycle. Meanwhile, any open (implicit or
> explicit) zone will show up as closed.
> 
> Zone states are in memory. Read-only and offline states are
> device-internal events, which are not considerred in qcow2
> emulation for simplicity. The other zone states
> (closed, empty, full) can be inferred from write poiner
> values, presistent across QEMU reboots. The open states are
> kept in memory using open zone lists.
> 

Hi Sam,
Thanks for picking up this work again!

> To create a qcow2 file with zoned format, use command like this:

A qemu-img create command-line is missing here in the cover letter.

> 
> Then add it to the QEMU command line:
>     -blockdev 
> node-name=drive1,driver=qcow2,file.driver=file,file.filename=../qemu/test.qcow2
>  \
>     -device virtio-blk-pci,drive=drive1 \
> 
> v9->v10:
> - add cross-boundary constraint for merging writes on zoned devices
> - extract call from assert() to fix image creation crash
> 
> v8->v9:
> - fix compilation err after modifying types
> 
> v7->v8:
> - sets default values for zoned img confurations [Markus, Damien]
> - changes the type of zone_size, zone_capacity from uint32_t to uint64_t 
> [Stefan]
> - fix docs [Stefan]
> - modify append writes to increase concurrency [Damien, Stefan]
> - use tailqueue to track active zones [Stefan]
> - fix undefined behavior of ranges_overlap()
> - fix the iotest of case 2(1)
> 
> v6->v7:
> - modify zone resource managemant (style) [Damien]
> - fix accessing list with negative index err
> - add some tests for zrm in iotests
> - address review comments [Markus]
> 
> v5->v6:
> - fix docs and specs [Eric, Markus, Stefan]
> - add general sanity checks for zoned device configurations while creation 
> and opening [Eric]
> - fix LRU when implicitly open a zone for a long time [Stefan]
> 
> v4->v5:
> - add incompatible bit for zoned format [Eric]
> - fix and manage zone resources via LRU [Damien]
> - renaming functions and fields, spec changes [Markus, Damien]
> - add closed zone list
> - make qemu iotests for zoned device consecutive [Stefan]
> 
> v3->v4:
> - use QLIST for implicit, explicit open zones management [Stefan]
> - keep zone states in memory and drop state bits in wp metadata structure 
> [Damien, Stefan]
> - change zone resource management and iotests accordingly
> - add tracing for number of implicit zones
> - address review comments [Stefan, Markus]:
>   * documentation, config, style
> 
> v2->v3:
> - drop zoned_profile option [Klaus]
> - reformat doc comments of qcow2 [Markus]
> - add input validation and checks for zoned information [Stefan]
> - code style: format, comments, documentation, naming [Stefan]
> - add tracing function for wp tracking [Stefan]
> - reconstruct io path in check_zone_resources [Stefan]
> 
> v1->v2:
> - add more tests to qemu-io zoned commands
> - make zone append change state to full when wp reaches end
> - add documentation to qcow2 zoned extension header
> - address review comments (Stefan):
>   * fix zoned_mata allocation size
>   * use bitwise or than addition
>   * fix wp index overflow and locking
>   * cleanups: comments, naming
> 
> Sam Li (4):
>   docs/qcow2: add the zoned format feature
>   qcow2: add configurations for zoned format extension
>   qcow2: add zoned emulation capability
>   iotests: test the zoned format feature for qcow2 file
> 
>  block/file-posix.c                       |    2 +-
>  block/qcow2.c                            | 1113 +++++++++++++++++++++-
>  block/qcow2.h                            |   39 +-
>  block/trace-events                       |    2 +
>  docs/interop/qcow2.rst                   |  110 ++-
>  docs/system/qemu-block-drivers.rst.inc   |   42 +
>  hw/block/virtio-blk.c                    |   22 +-
>  include/block/block_int-common.h         |   15 +-
>  include/qemu/queue.h                     |    1 +
>  include/qemu/range.h                     |    4 +
>  qapi/block-core.json                     |   70 +-
>  tests/qemu-iotests/tests/zoned-qcow2     |  150 +++
>  tests/qemu-iotests/tests/zoned-qcow2.out |  173 ++++
>  13 files changed, 1730 insertions(+), 13 deletions(-)
>  create mode 100755 tests/qemu-iotests/tests/zoned-qcow2
>  create mode 100644 tests/qemu-iotests/tests/zoned-qcow2.out
> 
> -- 
> 2.43.0
> 

Attachment: signature.asc
Description: PGP signature

Reply via email to