Commit e4a86f88 authored by Paolo Bonzini's avatar Paolo Bonzini Committed by Stefan Hajnoczi
Browse files

qemu-img: always probe the input image for allocated sectors



qemu-img convert can assume "that sectors which are unallocated in the
input image are present in both the output's and input's base images".

However it is only doing this if the output image returns true for
bdrv_has_zero_init().  Testing bdrv_has_zero_init() does not make much
sense if the output image is copy-on-write, because a copy-on-write
image is never initialized to zero (it is initialized to the content
of the backing file).

There is nothing here that makes has_zero_init images special.  The
input and output must be equal for the operation to make sense, and
that's it.

Reviewed-by: default avatarEric Blake <eblake@redhat.com>
Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
Signed-off-by: default avatarStefan Hajnoczi <stefanha@redhat.com>
parent d663640c
Loading
Loading
Loading
Loading
+19 −21
Original line number Diff line number Diff line
@@ -1502,7 +1502,6 @@ static int img_convert(int argc, char **argv)
                n = bs_offset + bs_sectors - sector_num;
            }

            if (has_zero_init) {
            /* If the output image is being created as a copy on write image,
               assume that sectors which are unallocated in the input image
               are present in both the output's and input's base images (no
@@ -1523,7 +1522,6 @@ static int img_convert(int argc, char **argv)
                /* The next 'n1' sectors are allocated in the input image. Copy
                   only those as they may be followed by unallocated sectors. */
                n = n1;
                }
            } else {
                n1 = n;
            }