From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53183) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WLEQG-0008S1-MD for qemu-devel@nongnu.org; Wed, 05 Mar 2014 11:12:02 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1WLEQA-0001Y6-MH for qemu-devel@nongnu.org; Wed, 05 Mar 2014 11:11:56 -0500 Received: from lnantes-156-75-100-125.w80-12.abo.wanadoo.fr ([80.12.84.125]:55735 helo=paradis.irqsave.net) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WLEQA-0001Y0-GM for qemu-devel@nongnu.org; Wed, 05 Mar 2014 11:11:50 -0500 Date: Wed, 5 Mar 2014 17:11:50 +0100 From: =?iso-8859-1?Q?Beno=EEt?= Canet Message-ID: <20140305161150.GG1709@irqsave.net> References: <1393860533-2063-1-git-send-email-mreitz@redhat.com> <1393860533-2063-6-git-send-email-mreitz@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline In-Reply-To: <1393860533-2063-6-git-send-email-mreitz@redhat.com> Content-Transfer-Encoding: quoted-printable Subject: Re: [Qemu-devel] [PATCH 05/10] block/json: Add bdrv_co_get_block_status() List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Max Reitz Cc: Kevin Wolf , qemu-devel@nongnu.org, Stefan Hajnoczi The Monday 03 Mar 2014 =E0 16:28:48 (+0100), Max Reitz wrote : > Implement this function in the same way as raw_bsd does: Acknowledge > that this is a passthrough driver (always return BDRV_BLOCK_OFFSET_VALI= D > and BDRV_BLOCK_DATA and derive the offset directly from the sector > index) and add BDRV_BLOCK_RAW to the returned value. >=20 > Signed-off-by: Max Reitz > --- > block/json.c | 9 +++++++++ > 1 file changed, 9 insertions(+) >=20 > diff --git a/block/json.c b/block/json.c > index a2f4691..7392802 100644 > --- a/block/json.c > +++ b/block/json.c > @@ -113,6 +113,14 @@ static coroutine_fn int json_co_write_zeroes(Block= DriverState *bs, > return bdrv_co_write_zeroes(bs, sector_num, nb_sectors, flags); > } > =20 > +static coroutine_fn int64_t json_co_get_block_status(BlockDriverState = *bs, > + int64_t sector_nu= m, > + int nb_sectors, i= nt *pnum) > +{ > + return BDRV_BLOCK_RAW | BDRV_BLOCK_OFFSET_VALID | BDRV_BLOCK_DATA = | > + (sector_num << BDRV_SECTOR_BITS); > +} I don't understand what is the selling point of this method instead of ca= lling bdrv_co_get_block_status on bs->file. Some information risk to be lost and it does look like magic. Best regards Beno=EEt > + > static void json_invalidate_cache(BlockDriverState *bs) > { > return bdrv_invalidate_cache(bs->file); > @@ -159,6 +167,7 @@ static BlockDriver bdrv_json =3D { > .bdrv_aio_discard =3D json_aio_discard, > =20 > .bdrv_co_write_zeroes =3D json_co_write_zeroes, > + .bdrv_co_get_block_status =3D json_co_get_block_status, > =20 > .bdrv_invalidate_cache =3D json_invalidate_cache, > =20 > --=20 > 1.9.0 >=20 >=20