From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:45707) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1X4AP4-00066a-3i for qemu-devel@nongnu.org; Mon, 07 Jul 2014 11:00:32 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1X4AOy-0002uw-52 for qemu-devel@nongnu.org; Mon, 07 Jul 2014 11:00:26 -0400 Received: from mx1.redhat.com ([209.132.183.28]:49044) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1X4AOx-0002us-P0 for qemu-devel@nongnu.org; Mon, 07 Jul 2014 11:00:20 -0400 Received: from int-mx09.intmail.prod.int.phx2.redhat.com (int-mx09.intmail.prod.int.phx2.redhat.com [10.5.11.22]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s67F0IC7030352 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Mon, 7 Jul 2014 11:00:18 -0400 Message-ID: <53BAB601.8000803@redhat.com> Date: Mon, 07 Jul 2014 09:00:17 -0600 From: Eric Blake MIME-Version: 1.0 References: <1404744824-8072-1-git-send-email-kwolf@redhat.com> In-Reply-To: <1404744824-8072-1-git-send-email-kwolf@redhat.com> Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="MlHaIxndfVAQkLmKM1tXcfCR6vuV9BnQJ" Subject: Re: [Qemu-devel] [PATCH for-2.1] block/backup: Fix hang for unaligned image size List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Kevin Wolf , qemu-devel@nongnu.org Cc: stefanha@redhat.com This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --MlHaIxndfVAQkLmKM1tXcfCR6vuV9BnQJ Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable 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 backu= p > job ran into an endless loop. >=20 > Stop looping when seeing a result valid for 0 sectors, we're at EOF the= n. >=20 > 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= =2E >=20 > Signed-off-by: Kevin Wolf > --- > block/backup.c | 2 +- > tests/qemu-iotests/028 | 27 ++++- > tests/qemu-iotests/028.out | 269 +++++++++++++++++++++++++++++++++++++= ++++++++ > 3 files changed, 296 insertions(+), 2 deletions(-) >=20 > 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 +=3D n; > =20 > - if (alloced =3D=3D 1) { > + if (alloced =3D=3D 1 || n =3D=3D 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=3D1 # failure is the default! > =20 > _cleanup() > { > - _cleanup_test_img > + rm -f $TEST_IMG.copy Doesn't this need to be "$TEST_IMG.copy", to allow for spaces in $TEST_IM= G? > +QEMU X.Y.Z monitor - type 'help' for more information > +(qemu) d=1B[K=1B[Ddr=1B[K=1B[D=1B[Ddri=1B[K=1B[D=1B[D=1B[Ddriv=1B[K=1B= [D=1B[D=1B[D=1B[Ddrive=1B[K=1B[D=1B[D=1B[D=1B[D=1B[Ddrive_=1B[K=1B[D=1B[D= =1B[D=1B[D=1B[D=1B[Ddrive_b=1B[K=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[Ddrive_= ba=1B[K=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[Ddrive_bac=1B[K=1B[D=1B[D=1B= [D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[Ddrive_back=1B[K=1B[D=1B[D=1B[D=1B[D=1B[D=1B= [D=1B[D=1B[D=1B[D=1B[Ddrive_backu=1B[K=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D= =1B[D=1B[D=1B[D=1B[Ddrive_backup=1B[K=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B= [D=1B[D=1B[D=1B[D=1B[Ddrive_backup =1B[K=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B= [D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[Ddrive_backup d=1B[K=1B[D=1B[D=1B[D=1B[D=1B= [D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[Ddrive_backup di=1B[K=1B[D=1B= [D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[Ddrive_= backup dis=1B[K=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B= [D=1B[D=1B[D=1B[D=1B[Ddrive_backup disk=1B[K=1B[D=1B[D=1B[D=1B[D=1B[D=1B[= D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[Ddrive_backup disk= =1B[K=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B= [D=1B[D=1B[D=1B[D=1B[Ddrive_backup disk /=1B[K=1B[D=1B[D=1B[D=1B[D=1B[D=1B= [D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[Ddrive_= backup disk /h=1B[K=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[= D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[Ddrive_backup disk /ho=1B[K=1B= [D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B= [D=1B[D=1B[D=1B[D! > =1B[D=1B[Ddrive_backup disk /hom=1B[K=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B= [D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B= [Ddrive_backup disk /home=1B[K=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B= [D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[Dd= rive_backup disk /home/=1B[K=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D= =1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B= [Ddrive_backup disk /home/k=1B[K=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B= [D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B= [D=1B[Ddrive_backup disk /home/kw=1B[K=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D= =1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B= [D=1B[D=1B[D=1B[D=1B[Ddrive_backup disk /home/kwo=1B[K=1B[D=1B[D=1B[D=1B[= D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B= [D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[Ddrive_backup disk /home/kwol=1B= [K=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B= [D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[Ddrive_= backup disk /home/kwolf=1B[K=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D= =1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B= [D=1B[D=1B[D=1B[D=1B[D=1B[Ddrive_backup disk /home/kwolf/=1B[K=1B[D=1B[D=1B= [D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B= [D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[Ddrive_backu= p disk /! > home/kwolf/s=1B[K=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B= [D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B= [D=1B[D=1B[D=1B[D=1B[D=1B[Ddrive_backup disk /home/kwolf/so=1B[K=1B[D=1B[= D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B= [D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B= [Ddrive_backup disk /home/kwolf/sou=1B[K=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B= [D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B= [D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[Ddrive_backup dis= k /home/kwolf/sour=1B[K=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D= =1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B= [D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[Ddrive_backup disk /home/kw= olf/sourc=1B[K=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[= D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B= [D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[Ddrive_backup disk /home/kwolf/s= ource=1B[K=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B= [D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B= [D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[Ddrive_backup disk /home/kwolf/s= ource/=1B[K=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B= [D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B= [D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[Ddrive_backup disk /home/kw= olf/sour! > ce/q=1B[K=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B= [D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B! > [D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B= [D=1B[D=1B[Ddrive_backup disk /home/kwolf/source/qe=1B[K=1B[D=1B[D=1B[D=1B= [D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B= [D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B= [D=1B[D=1B[D=1B[D=1B[D=1B[Ddrive_backup disk /home/kwolf/source/qem=1B[K=1B= [D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B= [D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B= [D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[Ddrive_backup disk /home/kw= olf/source/qemu=1B[K=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B= [D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B= [D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B= [Ddrive_backup disk /home/kwolf/source/qemu/=1B[K=1B[D=1B[D=1B[D=1B[D=1B[= D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B= [D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B= [D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[Ddrive_backup disk /home/kwolf/source= /qemu/t=1B[K=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B= [D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B= [D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B= [Ddrive_backup disk /home/kwolf/source/qemu/te=1B[K=1B[D=1B[D=1B[D=1B[D=1B= [D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[! > D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[= D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[Ddrive_backup disk= /home/kwolf/source/qemu/tes=1B[K=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D= =1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B= [D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B= [D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[Ddrive_backup disk /home/kwolf/source= /qemu/test=1B[K=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B= [D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B= [D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B= [D=1B[D=1B[D=1B[D=1B[Ddrive_backup disk /home/kwolf/source/qemu/tests=1B[= K=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B= [D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B= [D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B= [D=1B[D=1B[Ddrive_backup disk /home/kwolf/source/qemu/tests/=1B[K=1B[D=1B= [D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B= [D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B= [D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B= [D=1B[Ddrive_backup disk /home/kwolf/source/qemu/tests/q=1B[K=1B[D=1B[D=1B= [D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B= [D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B= [D=1B[D=1B[! > D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[D=1B[= 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 --=20 Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org --MlHaIxndfVAQkLmKM1tXcfCR6vuV9BnQJ Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 Comment: Public key at http://people.redhat.com/eblake/eblake.gpg Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/ iQEcBAEBCAAGBQJTurYBAAoJEKeha0olJ0Nq48AH/045txXJAKrdGNfwQMNcfKhT gwe0wTKiFJRV+UE8xXUIlipSxZ5aKJa8g3lfXkWw0TIkRUijC7P+YhW6E6sZ4gFt 28fA3QmX602CEKxQDth8NUWpXEHSwWa9C/uRDk74HW/j/mpYjDadb/D3ud2TXNKF Z7+H7hbefc7wIqmfu6aVFE+Aua7jf+uxKwsaQJcKim6RBagLfqvJwXWIwTGSxiSZ lpJ8cj/TIUGaq0MdOAClbrg/MO0OBPMZurYpMj17DyhbTcCbA8ZUaAQ7Zs4Sz6LA iE+Caj+zlmc3AdfDRTeBjFL09OuGBvgK6cctbZ5X10C/3vjMIiaVZNt3UzRp6k8= =bafw -----END PGP SIGNATURE----- --MlHaIxndfVAQkLmKM1tXcfCR6vuV9BnQJ--