From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:54916) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bIHKI-0001k4-3a for qemu-devel@nongnu.org; Wed, 29 Jun 2016 11:22:59 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bIHKD-0005ua-U0 for qemu-devel@nongnu.org; Wed, 29 Jun 2016 11:22:53 -0400 References: <0caba858-787c-ccdf-69df-f8dc92528c1f@redhat.com> <1467202266-15088-1-git-send-email-kwolf@redhat.com> From: Max Reitz Message-ID: <02972b11-ccb3-5c2a-844b-611061506338@redhat.com> Date: Wed, 29 Jun 2016 17:22:39 +0200 MIME-Version: 1.0 In-Reply-To: <1467202266-15088-1-git-send-email-kwolf@redhat.com> Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="jVJv3hPlHjAQNUi47XfvO8URi59oTd1dh" Subject: Re: [Qemu-devel] [PATCH v2 12/17] block: Convert bdrv_write() to BdrvChild List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Kevin Wolf , qemu-block@nongnu.org Cc: qemu-devel@nongnu.org This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --jVJv3hPlHjAQNUi47XfvO8URi59oTd1dh From: Max Reitz To: Kevin Wolf , qemu-block@nongnu.org Cc: qemu-devel@nongnu.org Message-ID: <02972b11-ccb3-5c2a-844b-611061506338@redhat.com> Subject: Re: [PATCH v2 12/17] block: Convert bdrv_write() to BdrvChild References: <0caba858-787c-ccdf-69df-f8dc92528c1f@redhat.com> <1467202266-15088-1-git-send-email-kwolf@redhat.com> In-Reply-To: <1467202266-15088-1-git-send-email-kwolf@redhat.com> Content-Type: text/plain; charset=iso-8859-15 Content-Transfer-Encoding: quoted-printable On 29.06.2016 14:11, Kevin Wolf wrote: > Signed-off-by: Kevin Wolf > Acked-by: Stefan Hajnoczi > --- >=20 > This patch contains non-trivial fixes, so I think it's worth sending ou= t a v2 > for it even though I already applied the series. I added a coroutine en= try > wrapper qcow(2)_write that can be used from .bdrv_write_compressed. The= se > wrappers will soon disappear again when .bdrv_write_compressed is chang= ed into > .bdrv_co_pwritev_compressed (Pavel Butsykin's backup compression series= ). >=20 > block/io.c | 5 +++-- > block/qcow.c | 45 ++++++++++++++++++++++++++++++++++++++++++= ++- > block/qcow2-cluster.c | 2 +- > block/qcow2-refcount.c | 2 +- > block/qcow2.c | 47 ++++++++++++++++++++++++++++++++++++++++++= ++++- > block/vdi.c | 4 ++-- > block/vvfat.c | 5 ++--- > include/block/block.h | 2 +- > 8 files changed, 100 insertions(+), 12 deletions(-) Reviewed-by: Max Reitz [...] > diff --git a/block/qcow2.c b/block/qcow2.c > index 0178931..cd9c27b 100644 > --- a/block/qcow2.c > +++ b/block/qcow2.c > @@ -2533,6 +2533,51 @@ static int qcow2_truncate(BlockDriverState *bs, = int64_t offset) > return 0; > } > =20 > +typedef struct Qcow2WriteCo { > + BlockDriverState *bs; > + int64_t sector_num; > + const uint8_t *buf; > + int nb_sectors; > + int ret; > +} Qcow2WriteCo; > + > +static void qcow2_write_co_entry(void *opaque) > +{ > + Qcow2WriteCo *co =3D opaque; > + QEMUIOVector qiov; > + uint64_t offset =3D co->sector_num * BDRV_SECTOR_SIZE; > + uint64_t bytes =3D co->nb_sectors * BDRV_SECTOR_SIZE; It doesn't make much sense to make this a uint64_t, and I'm afraid Coverity will complain about it... It's not wrong, though, but an int would have been more "honest". Max > + > + struct iovec iov =3D (struct iovec) { > + .iov_base =3D (uint8_t*) co->buf, > + .iov_len =3D bytes, > + }; > + qemu_iovec_init_external(&qiov, &iov, 1); > + > + co->ret =3D qcow2_co_pwritev(co->bs, offset, bytes, &qiov, 0); > +} --jVJv3hPlHjAQNUi47XfvO8URi59oTd1dh 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 iQEvBAEBCAAZBQJXc+e/EhxtcmVpdHpAcmVkaGF0LmNvbQAKCRA7sUIC6Disrdsy B/9RXdZnpiZloQn9BaoyqRV/90UafgNVWlYDJdm57VziUjELxgRwMsw/mAultu3c 5IyPthuhWWD2ZUMwyrKfng839IB5W42HFTxYYvTgyMea/qYFxCW4QsJVIzOfr2vl 2WbNNQ7q5FVOuLQCYpGYDPjY3/gRhpNkNRueYifXv+K4b6RxNV9sdm+Y/MRj6uFU 7I1QmvPG686LZ3vHr8JGkkjAweOWrfS2nuciKouulLkloE4QJnDlPTI+q4H4NAJt 5rpqB4I5ZyI6+NcU8FDbCTuMxgcu9JjXwcE67Dq7R0VBs1JDtati4OWvfrWQpG9O T3kRmLib6lWKRdeh4RpzQ/jR =rZnI -----END PGP SIGNATURE----- --jVJv3hPlHjAQNUi47XfvO8URi59oTd1dh--