[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH for-2.1] block/backup: Fix hang for unaligned im
From: |
Eric Blake |
Subject: |
Re: [Qemu-devel] [PATCH for-2.1] block/backup: Fix hang for unaligned image size |
Date: |
Mon, 07 Jul 2014 09:00:17 -0600 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.6.0 |
On 07/07/2014 08:53 AM, Kevin Wolf wrote:
> 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 <address@hidden>
> ---
> block/backup.c | 2 +-
> tests/qemu-iotests/028 | 27 ++++-
> tests/qemu-iotests/028.out | 269
> +++++++++++++++++++++++++++++++++++++++++++++
> 3 files changed, 296 insertions(+), 2 deletions(-)
>
> diff --git a/block/backup.c b/block/backup.c
> index 7978ae2..d0b0225 100644
> --- a/block/backup.c
> +++ b/block/backup.c
> @@ -307,7 +307,7 @@ static void coroutine_fn backup_run(void *opaque)
> BACKUP_SECTORS_PER_CLUSTER - i, &n);
> i += n;
>
> - if (alloced == 1) {
> + if (alloced == 1 || n == 0) {
> break;
> }
> }
> diff --git a/tests/qemu-iotests/028 b/tests/qemu-iotests/028
> index a99e4fa..864e9cc 100755
> --- a/tests/qemu-iotests/028
> +++ b/tests/qemu-iotests/028
> @@ -33,7 +33,8 @@ status=1 # failure is the default!
>
> _cleanup()
> {
> - _cleanup_test_img
> + rm -f $TEST_IMG.copy
Doesn't this need to be "$TEST_IMG.copy", to allow for spaces in $TEST_IMG?
> +QEMU X.Y.Z monitor - type 'help' for more information
> +(qemu)
> d[K[Ddr[K[D[Ddri[K[D[D[Ddriv[K[D[D[D[Ddrive[K[D[D[D[D[Ddrive_[K[D[D[D[D[D[Ddrive_b[K[D[D[D[D[D[D[Ddrive_ba[K[D[D[D[D[D[D[D[Ddrive_bac[K[D[D[D[D[D[D[D[D[Ddrive_back[K[D[D[D[D[D[D[D[D[D[Ddrive_backu[K[D[D[D[D[D[D[D[D[D[D[Ddrive_backup[K[D[D[D[D[D[D[D[D[D[D[D[Ddrive_backup
> [K[D[D[D[D[D[D[D[D[D[D[D[D[Ddrive_backup
> d[K[D[D[D[D[D[D[D[D[D[D[D[D[D[Ddrive_backup
> di[K[D[D[D[D[D[D[D[D[D[D[D[D[D[D[Ddrive_backup
> dis[K[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[Ddrive_backup
> disk[K[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[Ddrive_backup disk
> [K[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[Ddrive_backup disk
> /[K[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[Ddrive_backup
> disk
> /h[K[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[Ddrive_backup
> disk /ho[K[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D!
> [D[Ddrive_backup disk
> /hom[K[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[Ddrive_backup
> disk
> /home[K[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[Ddrive_backup
> disk
> /home/[K[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[Ddrive_backup
> disk
> /home/k[K[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[Ddrive_backup
> disk
> /home/kw[K[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[Ddrive_backup
> disk
> /home/kwo[K[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[Ddrive_backup
> disk
> /home/kwol[K[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[Ddrive_backup
> disk
> /home/kwolf[K[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[Ddrive_backup
> disk
> /home/kwolf/[K[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[Ddrive_backup
> disk /!
>
> home/kwolf/s[K[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[Ddrive_backup
> disk
> /home/kwolf/so[K[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[Ddrive_backup
> disk
> /home/kwolf/sou[K[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[Ddrive_backup
> disk
> /home/kwolf/sour[K[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[Ddrive_backup
> disk
> /home/kwolf/sourc[K[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[Ddrive_backup
> disk
> /home/kwolf/source[K[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[Ddrive_backup
> disk
> /home/kwolf/source/[K[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[Ddrive_backup
> disk /home/kwolf/sour!
> ce/q[K[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D!
> [D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[Ddrive_backup disk
> /home/kwolf/source/qe[K[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[Ddrive_backup
> disk
> /home/kwolf/source/qem[K[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[Ddrive_backup
> disk
> /home/kwolf/source/qemu[K[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[Ddrive_backup
> disk
> /home/kwolf/source/qemu/[K[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[Ddrive_backup
> disk
> /home/kwolf/source/qemu/t[K[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[Ddrive_backup
> disk
> /home/kwolf/source/qemu/te[K[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[!
>
> D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[Ddrive_backup
> disk
> /home/kwolf/source/qemu/tes[K[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[Ddrive_backup
> disk
> /home/kwolf/source/qemu/test[K[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[Ddrive_backup
> disk
> /home/kwolf/source/qemu/tests[K[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[Ddrive_backup
> disk
> /home/kwolf/source/qemu/tests/[K[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[Ddrive_backup
> disk
> /home/kwolf/source/qemu/tests/q[K[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[!
> D[D[D[D[D[D[D[D[D[D[D[D[D[D[Ddrive_backup disk /home/kwol!
Is there any way to avoid super-long-lines like this in the testsuite?
But that's a generic complaint, and doesn't affect the correctness of
this patch.
With the quotes added,
Reviewed-by: Eric Blake <address@hidden>
--
Eric Blake eblake redhat com +1-919-301-3266
Libvirt virtualization library http://libvirt.org
signature.asc
Description: OpenPGP digital signature