From: Max Reitz <mreitz@redhat.com>
To: qemu-devel@nongnu.org
Cc: "Kevin Wolf" <kwolf@redhat.com>, "Fam Zheng" <famz@redhat.com>,
"Stefan Hajnoczi" <stefanha@redhat.com>,
"Benoît Canet" <benoit.canet@nodalink.com>
Subject: Re: [Qemu-devel] [PATCH v5 00/11] qcow2: Fix image repairing
Date: Wed, 08 Oct 2014 21:25:31 +0200 [thread overview]
Message-ID: <54358FAB.1040701@redhat.com> (raw)
In-Reply-To: <1409348463-16627-1-git-send-email-mreitz@redhat.com>
On 29.08.2014 23:40, Max Reitz wrote:
> As can be seen in the final patch of this series, there are certain
> cases where the current repair implementation of qcow2 actually damages
> the image further because it allocates new clusters for the refcount
> structure which overlap with existing but according to the on-disk
> refcounts (which are assumed to be wrong to begin with) unallocated
> clusters.
>
> This series fixes this by completely recreating the refcount structure
> based on the in-memory information calculated during the check operation
> if the possibility of damaging the image while repairing the refcount
> structures in-place exists.
>
>
> v5:
> - Added patch 1 which adds two helper variables to BDRVQcowState
> reflecting the number of entries per refcount block;
> in contrast to v4, we don't need to clamp the refcount order against
> sub-byte widths, because sub-byte widths are actually correct (that
> means, I dropped the MAX() around refcount_order - 3)
> - Patch 8 (prev. 7):
> - Use these new variables [Benoît]
> - Use a struct for rt_offset_and_clusters [Benoît]
>
>
> git-backport-diff against v4:
>
> Key:
> [----] : patches are identical
> [####] : number of functional differences between upstream/downstream patch
> [down] : patch is downstream-only
> The flags [FC] indicate (F)unctional and (C)ontextual differences, respectively
>
> 001/11:[down] 'qcow2: Calculate refcount block entry count'
> 002/11:[----] [--] 'qcow2: Fix leaks in dirty images'
> 003/11:[----] [--] 'qcow2: Split qcow2_check_refcounts()'
> 004/11:[----] [--] 'qcow2: Pull check_refblocks() up'
> 005/11:[----] [--] 'qcow2: Reuse refcount table in calculate_refcounts()'
> 006/11:[----] [--] 'qcow2: Fix refcount blocks beyond image end'
> 007/11:[----] [--] 'qcow2: Do not perform potentially damaging repairs'
> 008/11:[0025] [FC] 'qcow2: Rebuild refcount structure during check'
> 009/11:[----] [--] 'qcow2: Clean up after refcount rebuild'
> 010/11:[----] [--] 'iotests: Fix test outputs'
> 011/11:[----] [-C] 'iotests: Add test for potentially damaging repairs'
>
>
> Max Reitz (11):
> qcow2: Calculate refcount block entry count
> qcow2: Fix leaks in dirty images
> qcow2: Split qcow2_check_refcounts()
> qcow2: Pull check_refblocks() up
> qcow2: Reuse refcount table in calculate_refcounts()
> qcow2: Fix refcount blocks beyond image end
> qcow2: Do not perform potentially damaging repairs
> qcow2: Rebuild refcount structure during check
> qcow2: Clean up after refcount rebuild
> iotests: Fix test outputs
> iotests: Add test for potentially damaging repairs
>
> block/qcow2-refcount.c | 677 ++++++++++++++++++++++++++++++++-------------
> block/qcow2.c | 4 +-
> block/qcow2.h | 2 +
> tests/qemu-iotests/039.out | 10 +-
> tests/qemu-iotests/060.out | 10 +-
> tests/qemu-iotests/061.out | 18 +-
> tests/qemu-iotests/104 | 141 ++++++++++
> tests/qemu-iotests/104.out | 110 ++++++++
> tests/qemu-iotests/group | 1 +
> 9 files changed, 767 insertions(+), 206 deletions(-)
> create mode 100755 tests/qemu-iotests/104
> create mode 100644 tests/qemu-iotests/104.out
>
Ping. Patch 8 still requires a review. I know it's probably the hardest
patch of the series, but well...
Max
prev parent reply other threads:[~2014-10-08 19:25 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-08-29 21:40 [Qemu-devel] [PATCH v5 00/11] qcow2: Fix image repairing Max Reitz
2014-08-29 21:40 ` [Qemu-devel] [PATCH v5 01/11] qcow2: Calculate refcount block entry count Max Reitz
2014-08-29 23:03 ` Eric Blake
2014-09-02 18:56 ` Max Reitz
2014-10-10 12:29 ` Benoît Canet
2014-10-11 10:27 ` Max Reitz
2014-10-20 14:25 ` Kevin Wolf
2014-10-20 14:39 ` Max Reitz
2014-10-20 14:48 ` Kevin Wolf
2014-10-21 16:26 ` Max Reitz
2014-10-22 8:27 ` Kevin Wolf
2014-08-29 21:40 ` [Qemu-devel] [PATCH v5 02/11] qcow2: Fix leaks in dirty images Max Reitz
2014-10-20 14:28 ` Kevin Wolf
2014-08-29 21:40 ` [Qemu-devel] [PATCH v5 03/11] qcow2: Split qcow2_check_refcounts() Max Reitz
2014-10-20 14:45 ` Kevin Wolf
2014-08-29 21:40 ` [Qemu-devel] [PATCH v5 04/11] qcow2: Pull check_refblocks() up Max Reitz
2014-08-29 21:40 ` [Qemu-devel] [PATCH v5 05/11] qcow2: Reuse refcount table in calculate_refcounts() Max Reitz
2014-08-29 21:40 ` [Qemu-devel] [PATCH v5 06/11] qcow2: Fix refcount blocks beyond image end Max Reitz
2014-08-29 21:40 ` [Qemu-devel] [PATCH v5 07/11] qcow2: Do not perform potentially damaging repairs Max Reitz
2014-08-29 21:41 ` [Qemu-devel] [PATCH v5 08/11] qcow2: Rebuild refcount structure during check Max Reitz
2014-10-08 23:09 ` Eric Blake
2014-10-11 10:17 ` Max Reitz
2014-10-16 15:27 ` Max Reitz
2014-10-16 15:33 ` Eric Blake
2014-10-10 12:44 ` Benoît Canet
2014-10-11 10:27 ` Max Reitz
2014-10-11 18:56 ` Benoît Canet
2014-10-12 7:32 ` Max Reitz
2014-08-29 21:41 ` [Qemu-devel] [PATCH v5 09/11] qcow2: Clean up after refcount rebuild Max Reitz
2014-08-29 21:41 ` [Qemu-devel] [PATCH v5 10/11] iotests: Fix test outputs Max Reitz
2014-09-02 19:49 ` Eric Blake
2014-08-29 21:41 ` [Qemu-devel] [PATCH v5 11/11] iotests: Add test for potentially damaging repairs Max Reitz
2014-09-02 19:52 ` Eric Blake
2014-10-08 19:25 ` Max Reitz [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=54358FAB.1040701@redhat.com \
--to=mreitz@redhat.com \
--cc=benoit.canet@nodalink.com \
--cc=famz@redhat.com \
--cc=kwolf@redhat.com \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).