OpenVZ / Virtuozzo kernel development (devel@openvz.org)
 help / color / mirror / Atom feed
From: Konstantin Khorenko <khorenko@virtuozzo.com>
To: "Denis V. Lunev" <den@virtuozzo.com>,
	Alexander Ivanov <alexander.ivanov@virtuozzo.com>
Cc: devel@openvz.org
Subject: Re: [Devel] [PATCH hci-8.1] drivers/md/dm-qcow2: truncate unused tail of image on suspend
Date: Tue, 6 Oct 2026 19:39:56 +0200	[thread overview]
Message-ID: <78b9ef44-860d-4c54-89ea-b3589e229a4b@virtuozzo.com> (raw)
In-Reply-To: <e1227b97-e11c-44b7-ae64-23f27eb6d5f5@virtuozzo.com>

On 10/6/26 17:56, Denis V. Lunev wrote:
> On 10/6/26 17:52, Konstantin Khorenko wrote:
>>> drivers/md/dm-qcow2: truncate unused tail of image on suspend
>> ...
>>> Truncate the file to min(file_preallocated_area_start, used end).
>>> Skip the scan if md writeback failed, as refcounts on disk are stale
>>> then, and fall back to the old behaviour on scan error.
>> There is one more case of stale refcounts on disk: an image with
>> INCOMPATIBLE_FEATURES_DIRTY_BIT set. qcow2_check_convert_hdr() accepts it
>> (the check is commented out), and with qemu lazy refcounts that bit means
>> refcounts were not written for the last allocations, so they are too low.
>>
>> Today such an image loses data only when the allocator hands out a
>> cluster whose refcount is zero but which L2 still references. After this
>> patch the first suspend truncates live clusters at the tail without a
>> single write to the device. The image is already invalid per spec, so
>> this is not a regression in the strict sense, but either the commit
>> message should say that a dirty image is not supported, or the dirty-bit
>> check in qcow2_check_convert_hdr() should come back.
> 
> Image should go clean into the kernel on first pass.

Well, i agree here, so please disregard my comment about dirty bit handling.

On the other hand i would like to note that the current design does not allow kernel to distinguish 2 situations:

1. the image is CLEAN (it might be checked / fixed after the crash, does not matter),
ploop utility marks it as DIRTY when sending to the kernel - intended behavior.

2. the image had DIRTY bit because the Node crashed, so the image was NOT fixed, but
someone issued "dmsetup create" manually, not via ploop util.


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

      reply	other threads:[~2026-10-06 17:41 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-10-06 14:44 Alexander Ivanov
2026-10-06 14:45 ` Denis V. Lunev
2026-10-06 14:49 ` no-reply
2026-10-06 15:52 ` Konstantin Khorenko
2026-10-06 15:56   ` Denis V. Lunev
2026-10-06 17:39     ` Konstantin Khorenko [this message]

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=78b9ef44-860d-4c54-89ea-b3589e229a4b@virtuozzo.com \
    --to=khorenko@virtuozzo.com \
    --cc=alexander.ivanov@virtuozzo.com \
    --cc=den@virtuozzo.com \
    --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