qemu-img: convert: don't use unallocated_blocks_are_zero
qemu-img convert wants to distinguish ZERO which comes from short backing files. unallocated_blocks_are_zero field of bdi is unrelated: space after EOF is always considered to be zero anyway. So, just make post_backing_zero true in case of short backing file. Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com> Reviewed-by: Eric Blake <eblake@redhat.com> Message-Id: <20200528094405.145708-2-vsementsov@virtuozzo.com> Signed-off-by: Max Reitz <mreitz@redhat.com>
This commit is contained in:
parent
a2cd85f6ac
commit
2253d86eb4
@ -1681,7 +1681,6 @@ typedef struct ImgConvertState {
|
||||
BlockBackend *target;
|
||||
bool has_zero_init;
|
||||
bool compressed;
|
||||
bool unallocated_blocks_are_zero;
|
||||
bool target_is_new;
|
||||
bool target_has_backing;
|
||||
int64_t target_backing_sectors; /* negative if unknown */
|
||||
@ -1726,7 +1725,7 @@ static int convert_iteration_sectors(ImgConvertState *s, int64_t sector_num)
|
||||
|
||||
if (s->target_backing_sectors >= 0) {
|
||||
if (sector_num >= s->target_backing_sectors) {
|
||||
post_backing_zero = s->unallocated_blocks_are_zero;
|
||||
post_backing_zero = true;
|
||||
} else if (sector_num + n > s->target_backing_sectors) {
|
||||
/* Split requests around target_backing_sectors (because
|
||||
* starting from there, zeros are handled differently) */
|
||||
@ -2678,7 +2677,6 @@ static int img_convert(int argc, char **argv)
|
||||
} else {
|
||||
s.compressed = s.compressed || bdi.needs_compressed_writes;
|
||||
s.cluster_sectors = bdi.cluster_size / BDRV_SECTOR_SIZE;
|
||||
s.unallocated_blocks_are_zero = bdi.unallocated_blocks_are_zero;
|
||||
}
|
||||
|
||||
ret = convert_do_copy(&s);
|
||||
|
Loading…
Reference in New Issue
Block a user