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 >