From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:49661) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1S7528-0001W7-SK for qemu-devel@nongnu.org; Mon, 12 Mar 2012 09:11:35 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1S751x-0002Oy-PB for qemu-devel@nongnu.org; Mon, 12 Mar 2012 09:11:28 -0400 Received: from mx1.redhat.com ([209.132.183.28]:36994) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1S751x-0002OF-HN for qemu-devel@nongnu.org; Mon, 12 Mar 2012 09:11:17 -0400 Message-ID: <4F5DF6BE.7020707@redhat.com> Date: Mon, 12 Mar 2012 14:14:38 +0100 From: Kevin Wolf MIME-Version: 1.0 References: <1331112179-12726-1-git-send-email-wdongxu@linux.vnet.ibm.com> In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH 1/4] block: add image fragmentation statistics to qemu-img List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Stefan Hajnoczi Cc: Dong Xu Wang , qemu-devel@nongnu.org, stefanha@linux.vnet.ibm.com Am 12.03.2012 14:07, schrieb Stefan Hajnoczi: > On Wed, Mar 7, 2012 at 9:22 AM, Dong Xu Wang wrote: >> From: Dong Xu Wang >> >> Discussion can be found at: >> http://patchwork.ozlabs.org/patch/128730/ >> >> This patch add image fragmentation statistics while using qemu-img info. >> >> Signed-off-by: Dong Xu Wang >> --- >> block.c | 13 +++++++++++++ >> block.h | 7 +++++++ >> block_int.h | 1 + >> qemu-img.c | 9 +++++++++ >> 4 files changed, 30 insertions(+), 0 deletions(-) >> >> diff --git a/block.c b/block.c >> index 52ffe14..947607b 100644 >> --- a/block.c >> +++ b/block.c >> @@ -2588,6 +2588,19 @@ int bdrv_get_info(BlockDriverState *bs, BlockDriverInfo *bdi) >> return drv->bdrv_get_info(bs, bdi); >> } >> >> +int bdrv_get_fragment(BlockDriverState *bs, BlockFragInfo *bfi) > > bdrv_get_fraginfo() makes it clearer that this function gets a summary > of fragmentation information. bdrv_get_fragment() makes me think it > gets one specific "fragment". > >> +{ >> + BlockDriver *drv = bs->drv; >> + if (!drv) { >> + return -ENOMEDIUM; >> + } >> + if (!drv->bdrv_get_fragment) { >> + return -ENOTSUP; >> + } >> + memset(bfi, 0, sizeof(*bfi)); >> + return drv->bdrv_get_fragment(bs, bfi); > > For now this .drv_get_fraginfo() interface makes sense but if we merge > the QCOW2<->QED in-place conversion patch series in the future it will > be possible to implement this in a generic way because image formats > will expose their guest -> host mapping. We can probably resurrect Devin's patches for this part even now instead of introducing an interface that we don't really want. > >> @@ -1126,6 +1127,14 @@ static int img_info(int argc, char **argv) >> printf("cluster_size: %d\n", bdi.cluster_size); >> } >> } >> + if (bdrv_get_fragment(bs, &bfi) >= 0) { > > I think we need a separate sub-command for fragmentation info: > > qemu-img fraginfo > > Utilities that invoke qemu-img info want it to be fast. Reading all > metadata from a large image can take several seconds. Since many > qemu-img info users don't need to see the fragmentation information, > it makes sense to put it in a new sub-command. Yes. If we wanted to merge it into an existing qemu-img subcommand, I think check would be the one, as it scans the whole image already today and fragmentation is something that could be added fairly easily. Kevin