On Tue, Jun 2, 2026 at 10:06 PM Stefan Hajnoczi <[email protected]> wrote:
>
> On Mon, Jun 01, 2026 at 11:44:00PM +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 \
>
> Please run `make check-block-qcow` and ensure the tests pass. In some
> cases the test reference output may be outdated and you can simply copy
> the <test>.out.bad file over the <test>.out reference file.

Thanks, I will check this.

Sam

Reply via email to