All of lore.kernel.org
 help / color / mirror / Atom feed
From: Niklas Cassel <cassel@kernel.org>
To: Sam Li <faithilikerun@gmail.com>
Cc: qemu-devel@nongnu.org, "Michael S. Tsirkin" <mst@redhat.com>,
	Stefan Hajnoczi <stefanha@redhat.com>,
	Hanna Reitz <hreitz@redhat.com>, Kevin Wolf <kwolf@redhat.com>,
	dlemoal@kernel.org, qemu-block@nongnu.org,
	dmitry.fomichev@wdc.com, Markus Armbruster <armbru@redhat.com>,
	Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>,
	Eric Blake <eblake@redhat.com>
Subject: Re: [PATCH v12 0/5] Add full zoned storage emulation to the qcow2 driver
Date: Fri, 26 Jun 2026 13:33:17 +0200	[thread overview]
Message-ID: <aj5jfQ90ej74tAB-@ryzen> (raw)
In-Reply-To: <20260623184830.373232-1-faithilikerun@gmail.com>

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


  parent reply	other threads:[~2026-06-26 11:34 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-06-23 18:48 [PATCH v12 0/5] Add full zoned storage emulation to the qcow2 driver Sam Li
2026-06-23 18:48 ` [PATCH v12 1/5] docs/qcow2: add the zoned format feature Sam Li
2026-06-23 18:48 ` [PATCH v12 2/5] qcow2: add configurations for zoned format extension Sam Li
2026-06-26 12:26   ` Niklas Cassel
2026-06-23 18:48 ` [PATCH v12 3/5] virtio-blk: do not merge writes across a zone boundary Sam Li
2026-06-24 19:21   ` Stefan Hajnoczi
2026-06-26 11:44   ` Niklas Cassel
2026-06-26 11:50     ` Sam Li
2026-06-23 18:48 ` [PATCH v12 4/5] qcow2: add zoned emulation capability Sam Li
2026-06-23 18:48 ` [PATCH v12 5/5] iotests: test the zoned format feature for qcow2 file Sam Li
2026-06-26 11:33 ` Niklas Cassel [this message]
2026-06-26 11:41   ` [PATCH v12 0/5] Add full zoned storage emulation to the qcow2 driver Sam Li

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=aj5jfQ90ej74tAB-@ryzen \
    --to=cassel@kernel.org \
    --cc=armbru@redhat.com \
    --cc=dlemoal@kernel.org \
    --cc=dmitry.fomichev@wdc.com \
    --cc=eblake@redhat.com \
    --cc=faithilikerun@gmail.com \
    --cc=hreitz@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=mst@redhat.com \
    --cc=pierrick.bouvier@oss.qualcomm.com \
    --cc=qemu-block@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    --cc=stefanha@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.