qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v4 5/5] qcow2-refcount: don't mask corruptions u


From: Vladimir Sementsov-Ogievskiy
Subject: Re: [Qemu-devel] [PATCH v4 5/5] qcow2-refcount: don't mask corruptions under internal errors
Date: Wed, 27 Feb 2019 12:47:19 +0000

27.02.2019 15:42, Max Reitz wrote:
> On 14.12.18 14:42, Vladimir Sementsov-Ogievskiy wrote:
>> No reasons for not reporting found corruptions as corruptions in case
>> of some internal errors, especially in case of just failed to fix l2
>> entry (and in this case, missed corruptions may influence comparing
>> logic, when we calculate difference between corruptions fields of two
>> results)
>>
>> Signed-off-by: Vladimir Sementsov-Ogievskiy <address@hidden>
>> ---
>>   block/qcow2-refcount.c | 31 ++++++++++++++-----------------
>>   1 file changed, 14 insertions(+), 17 deletions(-)
>>
>> diff --git a/block/qcow2-refcount.c b/block/qcow2-refcount.c
>> index 8da0e91dd3..b0e006e628 100644
>> --- a/block/qcow2-refcount.c
>> +++ b/block/qcow2-refcount.c
> 
> [...]
> 
>> @@ -1899,19 +1899,16 @@ static int check_oflag_copied(BlockDriverState *bs, 
>> BdrvCheckResult *res,
>>                       fprintf(stderr, "%s OFLAG_COPIED data cluster: "
>>                               "l2_entry=%" PRIx64 " refcount=%" PRIu64 "\n",
>>                               repair ? "Repairing" : "ERROR", l2_entry, 
>> refcount);
>> -                    if (repair) {
>> -                        l2_table[j] = cpu_to_be64(refcount == 1
>> -                                    ? l2_entry |  QCOW_OFLAG_COPIED
>> -                                    : l2_entry & ~QCOW_OFLAG_COPIED);
>> -                        l2_dirty++;
>> -                    } else {
>> -                        res->corruptions++;
>> -                    }
>> +                    l2_table[j] = cpu_to_be64(refcount == 1
>> +                                ? l2_entry |  QCOW_OFLAG_COPIED
>> +                                : l2_entry & ~QCOW_OFLAG_COPIED);
>> +                    l2_dirty++;
> 
> I found the old logic to be easier to understand, actually.  It made it
> clear that if !repair, the L2 table is not going to be touched.
> 
> Max
> 

so,

   if (repair) {
      keep as is
   }
   res->corruptions++;

ok?


-- 
Best regards,
Vladimir

reply via email to

[Prev in Thread] Current Thread [Next in Thread]