block/backup: Fix hang for unaligned image size
authorKevin Wolf <kwolf@redhat.com>
Mon, 7 Jul 2014 14:38:58 +0000 (16:38 +0200)
committerKevin Wolf <kwolf@redhat.com>
Wed, 9 Jul 2014 13:50:11 +0000 (15:50 +0200)
commitd40593dd9033d39a5e4cc32915c5eb28f3e858b6
treecdfb304e99958e6c5f9643fc2f95609c2dc00029
parent675879f6f3c9463e103735a4e41e9deb0bee9b39
block/backup: Fix hang for unaligned image size

When doing a block backup of an image with an unaligned size (with
respect to the BACKUP_CLUSTER_SIZE), qemu would check the allocation
status of sectors after the end of the image. bdrv_is_allocated()
returns a result that is valid for 0 sectors in this case, so the backup
job ran into an endless loop.

Stop looping when seeing a result valid for 0 sectors, we're at EOF then.

The test case looks somewhat unrelated at first sight because I
originally tried to reproduce a different suspected bug that turned out
to not exist. Still a good test case and it accidentally found this one.

Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
block/backup.c
tests/qemu-iotests/028
tests/qemu-iotests/028.out