[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [RFC PATCH v2 22/26] qcow2: Add subcluster support to handle_alloc_s
From: |
Max Reitz |
Subject: |
Re: [RFC PATCH v2 22/26] qcow2: Add subcluster support to handle_alloc_space() |
Date: |
Tue, 5 Nov 2019 13:05:12 +0100 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.1.1 |
On 26.10.19 23:25, Alberto Garcia wrote:
> The bdrv_co_pwrite_zeroes() call here fills complete clusters with
> zeroes, but it can happen that some subclusters are not part of the
> write request or the copy-on-write. This patch makes sure that only
> the affected subclusters are overwritten.
>
> A potential improvement would be to also fill with zeroes the other
> subclusters if we can guarantee that we are not overwriting existing
> data. However this would waste more disk space, so we should first
> evaluate if it's really worth doing.
>
> Signed-off-by: Alberto Garcia <address@hidden>
> ---
> block/qcow2.c | 9 +++++----
> 1 file changed, 5 insertions(+), 4 deletions(-)
>
> diff --git a/block/qcow2.c b/block/qcow2.c
> index 0261e87709..01322ca449 100644
> --- a/block/qcow2.c
> +++ b/block/qcow2.c
> @@ -2304,6 +2304,9 @@ static int handle_alloc_space(BlockDriverState *bs,
> QCowL2Meta *l2meta)
>
> for (m = l2meta; m != NULL; m = m->next) {
> int ret;
> + uint64_t start_offset = m->alloc_offset + m->cow_start.offset;
> + uint64_t nb_bytes = m->cow_end.offset + m->cow_end.nb_bytes -
> + m->cow_start.offset;
It might be more honest to make nb_bytes an unsigned. (There shouldn’t
be any overflows here, because the total size is limited to INT64_MAX by
handle_alloc().)
Max
> if (!m->cow_start.nb_bytes && !m->cow_end.nb_bytes) {
> continue;
signature.asc
Description: OpenPGP digital signature
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Re: [RFC PATCH v2 22/26] qcow2: Add subcluster support to handle_alloc_space(),
Max Reitz <=