OpenVZ / Virtuozzo kernel development (devel@openvz.org)
 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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox