Hello Sam,

Again, thank you so much for spending your spare time on this!

On Tue, Jun 23, 2026 at 08:48:25PM +0200, Sam Li wrote:
> This patch series add a new extension - zoned format - to the
> qcow2 driver, allowing full zoned storage emulation on a qcow2
> image file. A user can attach such an image to a guest and have
> it appear as a host-managed zoned block device.
> 
> The zoned format is opt-in through a new qcow2 header extension
> that pins the zone geometry. Behind the extension is a dedicated
> zoned metadata region that stores one 8-byte write pointer (WP)
> per zone. The extension is gated by an incompatible bit, so an
> older qcow2 implementation cannot accidentally open the image.
> 
> Each write pointer is routed through the write pointer cache,
> a Qcow2Cache object. The write pointer cache is written to disk
> after the qcow2 metadata is written, thus guaranteeing that
> the write pointer is updated after the corresponding data is
> written.
> 
> Zone states are in memory. Read-only and offline states are
> device-internal events, which are not modelled 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.
> 
> To create a qcow2 file with the zoned format:
> 
>     qemu-img create -f qcow2 zbc.qcow2 \
>         -o size=768M \
>         -o zone.size=64M \
>         -o zone.capacity=64M \
>         -o zone.conventional_zones=0 \
>         -o zone.max_append_bytes=4096 \
>         -o zone.max_open_zones=6 \
>         -o zone.max_active_zones=8 \
>         -o zone.mode=host-managed
> 
> Then attach it to a guest via the QEMU command line:
>     -blockdev node-name=drive1,driver=qcow2,\
>               file.driver=file,file.filename=zbc.qcow2 \
>     -device virtio-blk-pci,drive=drive1 \
> 
> v11->v12:
> - validate the zoned header extension before allocating any zoned metadata
> - fix the zoned locking discipline: hold the qcow2 state lock (s->lock)
>   across all zone-state list updates [Stefan]
> - reject, instead of aborting on an assertion, a write that reaches the
>   open-zone limit while every open zone is explicitly open
> - fix reduced-capacity (zone_capacity < zone_size) handling:
>     * transition a zone to FULL when the write pointer reaches the zone
>       capacity
>     * report the zone capacity, not the zone size, in zone_report
> - return -EIO rather than -EINVAL for zone write-rule violations
> - use int64_t for the zoned-metadata cluster offset and zone_size to
>   avoid truncation on large images
> - simplify qcow2_cache_set_dependency() [Stefan]
> - virtio-blk: read the zone size through a new blk_get_zone_size() [Stefan]

> - docs/QAPI: clarify the max_open_zones / max_active_zones /
>   max_append_bytes descriptions; use warn_report() for recoverable zoned
>   configuration values in qcow2_check_zone_options() [Niklas, Stefan]

I'm sorry, but to me, it looks like patch 1/5 in v12 is identical to v11.

Did you perhaps forget to do git add or something?


Kind regards,
Niklas

Reply via email to