[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [RFC V6 27/33] qcow2: Adapt checking of QCOW_OFLAG_COPI
From: |
Stefan Hajnoczi |
Subject: |
Re: [Qemu-devel] [RFC V6 27/33] qcow2: Adapt checking of QCOW_OFLAG_COPIED for dedup. |
Date: |
Fri, 8 Feb 2013 11:57:46 +0100 |
User-agent: |
Mutt/1.5.21 (2010-09-15) |
On Wed, Feb 06, 2013 at 01:32:00PM +0100, Benoît Canet wrote:
> Signed-off-by: Benoit Canet <address@hidden>
> ---
> block/qcow2-refcount.c | 9 ++++++++-
> 1 file changed, 8 insertions(+), 1 deletion(-)
>
> diff --git a/block/qcow2-refcount.c b/block/qcow2-refcount.c
> index d7d9339..ee5de6b 100644
> --- a/block/qcow2-refcount.c
> +++ b/block/qcow2-refcount.c
> @@ -999,7 +999,14 @@ static int check_refcounts_l2(BlockDriverState *bs,
> BdrvCheckResult *res,
> PRIx64 ": %s\n", l2_entry, strerror(-refcount));
> goto fail;
> }
> - if ((refcount == 1) != ((l2_entry & QCOW_OFLAG_COPIED) !=
> 0)) {
> + if (!s->has_dedup &&
> + (refcount == 1) != ((l2_entry & QCOW_OFLAG_COPIED) !=
> 0)) {
> + fprintf(stderr, "ERROR OFLAG_COPIED: offset=%"
> + PRIx64 " refcount=%d\n", l2_entry, refcount);
> + res->corruptions++;
> + }
Why is this warning suppressed when dedup is enabled? The meaning of
QCOW_OFLAG_COPIED is that refcount == 1. If this invariant is violated
then something is wrong.
> + if (s->has_dedup && refcount > 1 &&
> + ((l2_entry & QCOW_OFLAG_COPIED) != 0)) {
> fprintf(stderr, "ERROR OFLAG_COPIED: offset=%"
> PRIx64 " refcount=%d\n", l2_entry, refcount);
> res->corruptions++;
> --
> 1.7.10.4
>
[Qemu-devel] [RFC V6 07/33] qcow2: Add qcow2_dedup and related functions, Benoît Canet, 2013/02/06
[Qemu-devel] [RFC V6 13/33] qcow2: make the deduplication forget a cluster hash when a cluster is to dedupe, Benoît Canet, 2013/02/06