From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:54899) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Y0UbV-0007VV-F7 for qemu-devel@nongnu.org; Mon, 15 Dec 2014 07:18:25 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Y0UbQ-0003f1-S3 for qemu-devel@nongnu.org; Mon, 15 Dec 2014 07:18:21 -0500 Received: from mx1.redhat.com ([209.132.183.28]:60034) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Y0UbQ-0003er-J6 for qemu-devel@nongnu.org; Mon, 15 Dec 2014 07:18:16 -0500 Date: Mon, 15 Dec 2014 13:18:13 +0100 From: Kevin Wolf Message-ID: <20141215121813.GF4411@noname.str.redhat.com> References: <1418632081-20667-1-git-send-email-den@openvz.org> <1418632081-20667-11-git-send-email-den@openvz.org> <548ECB67.4000205@openvz.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <548ECB67.4000205@openvz.org> 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: , To: "Denis V. Lunev" Cc: Jeff Cody , qemu-devel@nongnu.org, Stefan Hajnoczi , Roman Kagan Am 15.12.2014 um 12:52 hat Denis V. Lunev geschrieben: > 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. Perhaps the application of padding should be moved into seek_to_sector(). In this case, the following changes to parallels_read() would follow: * Reading from the backing file would not apply the padding. I think the padding is an internal property of this specific image file, so this is what actually should happen. In other words, a bug fix that you would have to do anyway. * n = cluster_remainder(...) must be changed to be based on position (i.e. the position in the image file) rather than sector_num (i.e. the virtual offset as seen by the guest) Kevin