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
prev parent 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 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.