From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59990) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1W5bSX-0002YJ-6J for qemu-devel@nongnu.org; Tue, 21 Jan 2014 08:33:46 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1W5bSS-0002IL-6P for qemu-devel@nongnu.org; Tue, 21 Jan 2014 08:33:41 -0500 Received: from paradis.irqsave.net ([62.212.105.220]:47952) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1W5bSR-0002IE-St for qemu-devel@nongnu.org; Tue, 21 Jan 2014 08:33:36 -0500 Date: Tue, 21 Jan 2014 14:33:35 +0100 From: =?iso-8859-1?Q?Beno=EEt?= Canet Message-ID: <20140121133335.GG9834@irqsave.net> References: <1389968119-24771-1-git-send-email-kwolf@redhat.com> <1389968119-24771-13-git-send-email-kwolf@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline In-Reply-To: <1389968119-24771-13-git-send-email-kwolf@redhat.com> Content-Transfer-Encoding: quoted-printable Subject: Re: [Qemu-devel] [PATCH v3 12/29] block: write: Handle COR dependency after I/O throttling List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Kevin Wolf Cc: pl@kamp.de, qemu-devel@nongnu.org, mreitz@redhat.com, stefanha@redhat.com, pbonzini@redhat.com, xiawenc@linux.vnet.ibm.com Le Friday 17 Jan 2014 =E0 15:15:02 (+0100), Kevin Wolf a =E9crit : > First waiting for all COR requests to complete and calling the > throttling function afterwards means that the request could be delayed > and we still need to wait for the COR request even if it was issued onl= y > after the throttled write request. >=20 > Signed-off-by: Kevin Wolf > Reviewed-by: Max Reitz > --- > block.c | 8 ++++---- > 1 file changed, 4 insertions(+), 4 deletions(-) >=20 > diff --git a/block.c b/block.c > index 70b72f0..fe55217 100644 > --- a/block.c > +++ b/block.c > @@ -2979,6 +2979,10 @@ static int coroutine_fn bdrv_aligned_pwritev(Blo= ckDriverState *bs, > assert((offset & (BDRV_SECTOR_SIZE - 1)) =3D=3D 0); > assert((bytes & (BDRV_SECTOR_SIZE - 1)) =3D=3D 0); > =20 > + if (bs->copy_on_read_in_flight) { > + wait_for_overlapping_requests(bs, sector_num, nb_sectors); > + } > + > tracked_request_begin(&req, bs, sector_num, nb_sectors, true); > =20 > ret =3D notifier_with_return_list_notify(&bs->before_write_notifie= rs, &req); > @@ -3028,10 +3032,6 @@ static int coroutine_fn bdrv_co_do_writev(BlockD= riverState *bs, > return -EIO; > } > =20 > - if (bs->copy_on_read_in_flight) { > - wait_for_overlapping_requests(bs, sector_num, nb_sectors); > - } > - > /* throttling disk I/O */ > if (bs->io_limits_enabled) { > bdrv_io_limits_intercept(bs, nb_sectors, true); > --=20 > 1.8.1.4 >=20 >=20 Reviewed-by: Benoit Canet