From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:32867) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aS2qZ-0005N1-PD for qemu-devel@nongnu.org; Sat, 06 Feb 2016 08:24:20 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1aS2qY-00007h-R6 for qemu-devel@nongnu.org; Sat, 06 Feb 2016 08:24:19 -0500 References: <1454637630-10585-1-git-send-email-famz@redhat.com> <1454637630-10585-2-git-send-email-famz@redhat.com> From: Max Reitz Message-ID: <56B5F3F9.2030509@redhat.com> Date: Sat, 6 Feb 2016 14:24:09 +0100 MIME-Version: 1.0 In-Reply-To: <1454637630-10585-2-git-send-email-famz@redhat.com> Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="RDDC426kFDDCS9H7E8PcLSj1xvs3v5rFg" Subject: Re: [Qemu-devel] [PATCH v12 1/2] mirror: Rewrite mirror_iteration List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Fam Zheng , qemu-devel@nongnu.org Cc: Kevin Wolf , pbonzini@redhat.com, Jeff Cody , qemu-block@nongnu.org This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --RDDC426kFDDCS9H7E8PcLSj1xvs3v5rFg Content-Type: text/plain; charset=iso-8859-15 Content-Transfer-Encoding: quoted-printable On 05.02.2016 03:00, Fam Zheng wrote: > The "pnum < nb_sectors" condition in deciding whether to actually copy > data is unnecessarily strict, and the qiov initialization is > unnecessarily for bdrv_aio_write_zeroes and bdrv_aio_discard. >=20 > Rewrite mirror_iteration to fix both flaws. >=20 > The output of iotests 109 is updated because we now report the offset > and len slightly differently in mirroring progress. >=20 > Signed-off-by: Fam Zheng > --- > block/mirror.c | 335 +++++++++++++++++++++++++++----------= -------- > tests/qemu-iotests/109.out | 80 +++++------ > trace-events | 1 - > 3 files changed, 243 insertions(+), 173 deletions(-) >=20 > diff --git a/block/mirror.c b/block/mirror.c > index 2c0edfa..48cd0b3 100644 > --- a/block/mirror.c > +++ b/block/mirror.c [...] > @@ -449,16 +520,16 @@ static void coroutine_fn mirror_run(void *opaque)= > */ > bdrv_get_backing_filename(s->target, backing_filename, > sizeof(backing_filename)); > - if (backing_filename[0] && !s->target->backing) { > - ret =3D bdrv_get_info(s->target, &bdi); > - if (ret < 0) { > - goto immediate_exit; > - } > - if (s->granularity < bdi.cluster_size) { > - s->buf_size =3D MAX(s->buf_size, bdi.cluster_size); > - s->cow_bitmap =3D bitmap_new(length); > - } > + if (!bdrv_get_info(s->target, &bdi) && bdi.cluster_size) { This should be bdi.has_cluster_size... > + target_cluster_size =3D bdi.cluster_size; =2E..and maybe we want an explicit minimum of BDRV_SECTOR_SIZE here; but = I guess this is already assumed all over the block layer, so it may be fine without. > } > + if (backing_filename[0] && !s->target->backing > + && s->granularity < target_cluster_size) { > + s->buf_size =3D MAX(s->buf_size, target_cluster_size); > + s->cow_bitmap =3D bitmap_new(length); > + } > + s->target_cluster_sectors =3D target_cluster_size >> BDRV_SECTOR_B= ITS; (this shouldn't be 0, so target_cluster_size needs to be at least BDRV_SECTOR_SIZE) Max --RDDC426kFDDCS9H7E8PcLSj1xvs3v5rFg Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQEcBAEBCAAGBQJWtfP5AAoJEDuxQgLoOKythqQIAKGcae4PuBDZ5BWT9hbQguZp +k/NBmDHcZ5ZQqngZ3t5RzksncKWp5DZmoSQIkZqKcYSGx95emAJazmAYCgWPpHg NeV3NPE94RStQXVtUulKAiL5UXmcsvwF0iRXBFLNkWXY56rTCrRb3en44PelsfPG dsRsfyLWkSitEXrj2WY8S7enrowWCQKVDMc8R4X6/5CMahxmqgTedUqK+k23A4Bf /FzrnSmo348uqgW+YM74LhApoEf1XVwKoHTBc8yxDev7UPQHYkMEYIAR9aZmQmhR qaJXTWQuMbNkGljY6qV/Vb/+6RGTdAHabAyswUgnaBWiG2YE9M4j3QjdWIUlPf4= =KHIf -----END PGP SIGNATURE----- --RDDC426kFDDCS9H7E8PcLSj1xvs3v5rFg--