[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: discard and v2 qcow2 images
From: |
Alberto Garcia |
Subject: |
Re: discard and v2 qcow2 images |
Date: |
Fri, 20 Mar 2020 20:41:27 +0100 |
User-agent: |
Notmuch/0.18.2 (http://notmuchmail.org) Emacs/24.4.1 (i586-pc-linux-gnu) |
On Fri 20 Mar 2020 08:35:44 PM CET, Eric Blake <address@hidden> wrote:
>> This flag is however only supported when qcow_version >= 3. In older
>> images the cluster is simply deallocated, exposing any possible
>> previous data from the backing file.
>
> Discard is advisory, and has no requirements that discarded data read
> back as zero. However, if write zeroes uses discard under the hood,
> then THAT usage must guarantee reading back as zero.
write_zeroes doesn't seem to use discard in any case, so no problem
there.
>> @@ -3763,6 +3763,10 @@ static coroutine_fn int
>> qcow2_co_pdiscard(BlockDriverState *bs,
>> int ret;
>> BDRVQcow2State *s = bs->opaque;
>>
>> + if (s->qcow_version < 3) {
>> + return -ENOTSUP;
>> + }
>> +
>
> This changes it so you no longer see stale data, but doesn't change
> the fact that you don't read zeroes (just that your stale data is now
> from the current layer instead of the backing layer, since we did
> nothing at all).
discard can already fail if the request is not aligned, in this case you
get -ENOTSUP and stay with the same data as before.
What's different in this case is that you can actually get stale data,
that doesn't seem like a desirable outcome.
Berto