qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
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

      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).