All Virtuozzo development lists (kernel + QEMU)
 help / color / mirror / Atom feed
From: Andrey Zhadchenko <andrey.zhadchenko@virtuozzo.com>
To: "Denis V. Lunev" <den@openvz.org>
Cc: devel@openvz.org
Subject: Re: [Devel] [PATCH hci-8.1 v2 0/3] dm-qcow2: fix merges not stopping the users of the images they change
Date: Wed, 4 Nov 2026 14:15:52 +0100	[thread overview]
Message-ID: <a44ef9de-8ffb-40e3-a963-574383bd3cdd@virtuozzo.com> (raw)
In-Reply-To: <20261103090813.166986-1-den@openvz.org>

Reviewed-by: Andrey Zhadchenko <andrey.zhadchenko@virtuozzo.com>

On 11/3/26 10:08, Denis V. Lunev wrote:
> Checking dm-qcow2 for the same problem showed that a merge does not
> stop everything using the images it changes (VSTOR-153049,
> VSTOR-153050):
> 
> - a backward merge of an inner image pauses that image, while reads
>    enter through the top one. A read reaching the inner image as the
>    merge starts oopses on a NULL qio->ext (patch 2);
> 
> - SEEK_HOLE/SEEK_DATA walks the images with nothing keeping them
>    alive, so merge_backward complete frees an image under the walk
>    (patch 3).
> 
> Patch 1 (VSTOR-153051) is the counterpart of dm-ploop patch 4, an
> error path leaving state behind: after a failed refcount table
> relocation, allocating writes past the old refcount coverage fail with
> EIO until the device is suspended and resumed.
> 
> The series does not depend on the dm-ploop one.
> 
> Tested on dev-cl04, stock 6.12.0-211.52.1.22.11.vz10, dm-qcow2 built
> out of tree, with a test-only kprobe module widening the windows:
> - on the stock module, with 4K clusters and refcount_bits=64 so the
>    reftable relocates at 1G, a failed md page insert left every later
>    write past 1G failing with EIO; a seek went on with an image
>    qcow2_destroy() had freed; an intermediate merge oopsed in
>    submit_read_sliced_clu(). None of them reproduce with the series;
> - the ploop pytest suite, qcow2 format, passes.
> 
> Changes in v2, after Sashiko's review:
> - 1/3: a note in the commit message on why the error path does not
>    unlink the pages from the writeback lists;
> - 3/3: guard the walk with a per-target rw_semaphore, taken for write
>    by merge_backward complete, instead of an inflight ref held over the
>    walk. With the ref every inflight ref switch waited for the whole
>    scan, including the one starting a backward merge with the top image
>    paused, so guest I/O stalled for as long as the scan ran.
> The seek reproducer and the qcow2 pytest suite were rerun on v2: a
> merge now starts while a seek is held, and merge_backward complete
> waits for the seek to finish before destroying the image.
> 
> v1: http://lore.virtuozzo.com/kernel/20261103083708.131379-1-den@openvz.org/
> 
> Denis V. Lunev (3):
>    dm-qcow2: fix a failed refcount table relocation leaking md pages
>    dm-qcow2: fix backward merge of an inner image racing its reads
>    dm-qcow2: fix SEEK_HOLE/SEEK_DATA using an image freed by a merge
> 
>   drivers/md/dm-qcow2-cmd.c    | 28 ++++++++++++----------------
>   drivers/md/dm-qcow2-map.c    | 18 +++++++++++++-----
>   drivers/md/dm-qcow2-target.c |  1 +
>   drivers/md/dm-qcow2.h        |  2 ++
>   4 files changed, 28 insertions(+), 21 deletions(-)
> 
> 
> base-commit: 09eb9a82fe872048d082391415d1cdeda2ac6879

_______________________________________________
Devel mailing list
Devel@openvz.org
https://lists.openvz.org/mailman/listinfo/devel

  parent reply	other threads:[~2026-11-04 13:17 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-11-03  9:08 Denis V. Lunev
2026-11-03  9:08 ` [Devel] [PATCH hci-8.1 v2 1/3] dm-qcow2: fix a failed refcount table relocation leaking md pages Denis V. Lunev
2026-11-03  9:13   ` no-reply
2026-11-03  9:27     ` Denis V. Lunev
2026-11-04 16:59   ` Konstantin Khorenko
2026-11-03  9:08 ` [Devel] [PATCH hci-8.1 v2 2/3] dm-qcow2: fix backward merge of an inner image racing its reads Denis V. Lunev
2026-11-03  9:13   ` no-reply
2026-11-04 16:59   ` Konstantin Khorenko
2026-11-03  9:08 ` [Devel] [PATCH hci-8.1 v2 3/3] dm-qcow2: fix SEEK_HOLE/SEEK_DATA using an image freed by a merge Denis V. Lunev
2026-11-03  9:15   ` no-reply
2026-11-04 16:59   ` Konstantin Khorenko
2026-11-04 13:15 ` Andrey Zhadchenko [this message]
2026-11-04 16:59 ` [Devel] [PATCH hci-8.1 v2 0/3] dm-qcow2: fix merges not stopping the users of the images they change Konstantin Khorenko

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=a44ef9de-8ffb-40e3-a963-574383bd3cdd@virtuozzo.com \
    --to=andrey.zhadchenko@virtuozzo.com \
    --cc=den@openvz.org \
    --cc=devel@openvz.org \
    /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.