Skip to content
  • Max Reitz's avatar
    qemu-img: Fix preallocation with -S 0 for convert · aad15de4
    Max Reitz authored
    
    
    When passing -S 0 to qemu-img convert, the target image is supposed to
    be fully allocated. Right now, this is not the case if the source image
    contains areas which bdrv_get_block_status() reports as being zero.
    
    This patch changes a zeroed area's status from BLK_ZERO to BLK_DATA
    before invoking convert_write() if -S 0 has been specified. In addition,
    the check whether convert_read() actually needs to do anything
    (basically only if the current area is a BLK_DATA area) is pulled out of
    that function to the caller.
    
    If -S 0 has been specified, zeroed areas need to be written as data to
    the output, thus they then have to be accounted when calculating the
    progress made.
    
    This patch changes the reference output for iotest 122; contrary to what
    it assumed, -S 0 really should allocate everything in the output, not
    just areas that are filled with zeros (as opposed to being zeroed).
    
    Signed-off-by: default avatarMax Reitz <mreitz@redhat.com>
    Reviewed-by: default avatarFam Zheng <famz@redhat.com>
    Signed-off-by: default avatarKevin Wolf <kwolf@redhat.com>
    aad15de4