[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [Qemu-block] [PATCH 1/2] qcow2: Do not mark inactive im
From: |
Max Reitz |
Subject: |
Re: [Qemu-devel] [Qemu-block] [PATCH 1/2] qcow2: Do not mark inactive images corrupt |
Date: |
Wed, 6 Jun 2018 12:22:40 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.8.0 |
On 2018-06-04 22:06, Jeff Cody wrote:
> On Mon, Jun 04, 2018 at 04:14:36PM +0200, Max Reitz wrote:
>> When signaling a corruption on a read-only image, qcow2 already makes
>> fatal events non-fatal (i.e., they will not result in the image being
>> closed, and the image header's corrupt flag will not be set). This is
>> necessary because we cannot set the corrupt flag on read-only images,
>> and it is possible because further corruption of read-only images is
>> impossible.
>>
>> Inactive images are effectively read-only, too, so we should do the same
>> for them.
>>
>> (Otherwise, the assert(!(bs->open_flags & BDRV_O_INACTIVE)) in
>> bdrv_co_pwritev() will fail, crashing qemu.)
>>
>> Cc: address@hidden
>> Signed-off-by: Max Reitz <address@hidden>
>> ---
>> block/qcow2.c | 4 +++-
>> 1 file changed, 3 insertions(+), 1 deletion(-)
>>
>> diff --git a/block/qcow2.c b/block/qcow2.c
>> index 59a38b9cd3..8b5f7386f7 100644
>> --- a/block/qcow2.c
>> +++ b/block/qcow2.c
>> @@ -4402,7 +4402,9 @@ void qcow2_signal_corruption(BlockDriverState *bs,
>> bool fatal, int64_t offset,
>> char *message;
>> va_list ap;
>>
>> - fatal = fatal && !bs->read_only;
>> + if ((bs->open_flags & (BDRV_O_RDWR | BDRV_O_INACTIVE)) != BDRV_O_RDWR) {
>
> Hmm, this is pretty much exactly what the bdrv_is_writable() helper function
> does in block.c; too bad it's scope is limited to block.c. Maybe worth it
> to make it a more widely available helper and use it here?
You know what, I copied it from there but for some reason never thought
of making it global.
Will do.
Max
>> + fatal = false;
>> + }
>>
>> if (s->signaled_corruption &&
>> (!fatal || (s->incompatible_features & QCOW2_INCOMPAT_CORRUPT)))
>> --
>> 2.17.0
>>
>>
signature.asc
Description: OpenPGP digital signature