From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:49478) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Y0UCU-0004zD-3C for qemu-devel@nongnu.org; Mon, 15 Dec 2014 06:52:35 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Y0UCK-0002lK-Qj for qemu-devel@nongnu.org; Mon, 15 Dec 2014 06:52:30 -0500 Received: from relay.parallels.com ([195.214.232.42]:57574) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Y0UCK-0002lA-Is for qemu-devel@nongnu.org; Mon, 15 Dec 2014 06:52:20 -0500 Message-ID: <548ECB67.4000205@openvz.org> Date: Mon, 15 Dec 2014 14:52:07 +0300 From: "Denis V. Lunev" MIME-Version: 1.0 References: <1418632081-20667-1-git-send-email-den@openvz.org> <1418632081-20667-11-git-send-email-den@openvz.org> In-Reply-To: <1418632081-20667-11-git-send-email-den@openvz.org> Content-Type: text/plain; charset="ISO-8859-1"; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH 10/16] block/parallels: add get_block_status List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , Jeff Cody , qemu-devel@nongnu.org, Stefan Hajnoczi , Roman Kagan On 15/12/14 11:27, Denis V. Lunev wrote: > From: Roman Kagan > > Implement VFS method for get_block_status to Parallels format driver. > > Signed-off-by: Roman Kagan > Signed-off-by: Denis V. Lunev > CC: Jeff Cody > CC: Kevin Wolf > CC: Stefan Hajnoczi > --- > block/parallels.c | 21 +++++++++++++++++++++ > 1 file changed, 21 insertions(+) > > diff --git a/block/parallels.c b/block/parallels.c > index a05bf39..2d3e962 100644 > --- a/block/parallels.c > +++ b/block/parallels.c > @@ -384,6 +384,26 @@ static int cluster_remainder(BDRVParallelsState *s, int64_t sector_num, > return MIN(nb_sectors, ret); > } > > +static int64_t coroutine_fn parallels_co_get_block_status(BlockDriverState *bs, > + int64_t sector_num, int nb_sectors, int *pnum) > +{ > + BDRVParallelsState *s = bs->opaque; > + int64_t offset; > + > + qemu_co_mutex_lock(&s->lock); > + offset = seek_to_sector(s, sector_num); I have mistaken here at porting Roman's changes on top of my changes. "padding" is not applied here while it should. Shame on me :( Something safe should be invented to avoid this mess. > + qemu_co_mutex_unlock(&s->lock); > + > + *pnum = cluster_remainder(s, sector_num, nb_sectors); > + > + if (offset < 0) { > + return 0; > + } > + > + return (offset << BDRV_SECTOR_BITS) | > + BDRV_BLOCK_DATA | BDRV_BLOCK_OFFSET_VALID; > +} > + > static int parallels_read(BlockDriverState *bs, int64_t sector_num, > uint8_t *buf, int nb_sectors) > { > @@ -433,6 +453,7 @@ static BlockDriver bdrv_parallels = { > .bdrv_open = parallels_open, > .bdrv_read = parallels_co_read, > .bdrv_close = parallels_close, > + .bdrv_co_get_block_status = parallels_co_get_block_status, > }; > > static void bdrv_parallels_init(void)