From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:42571) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TvJ6S-0000Ar-3p for qemu-devel@nongnu.org; Tue, 15 Jan 2013 21:51:49 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TvJ6R-00030P-13 for qemu-devel@nongnu.org; Tue, 15 Jan 2013 21:51:48 -0500 Received: from e28smtp05.in.ibm.com ([122.248.162.5]:51004) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TvJ6Q-0002wP-C3 for qemu-devel@nongnu.org; Tue, 15 Jan 2013 21:51:46 -0500 Received: from /spool/local by e28smtp05.in.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Wed, 16 Jan 2013 08:20:13 +0530 Received: from d28relay05.in.ibm.com (d28relay05.in.ibm.com [9.184.220.62]) by d28dlp01.in.ibm.com (Postfix) with ESMTP id E5389E004B for ; Wed, 16 Jan 2013 08:21:38 +0530 (IST) Received: from d28av05.in.ibm.com (d28av05.in.ibm.com [9.184.220.67]) by d28relay05.in.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id r0G2pGef45285386 for ; Wed, 16 Jan 2013 08:21:17 +0530 Received: from d28av05.in.ibm.com (loopback [127.0.0.1]) by d28av05.in.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id r0G2pIEb007797 for ; Wed, 16 Jan 2013 13:51:18 +1100 Message-ID: <50F615A2.6050802@linux.vnet.ibm.com> Date: Wed, 16 Jan 2013 10:51:14 +0800 From: Wenchao Xia MIME-Version: 1.0 References: <1358147387-8221-1-git-send-email-xiawenc@linux.vnet.ibm.com> <1358147387-8221-12-git-send-email-xiawenc@linux.vnet.ibm.com> <1358162137.22120.4.camel@localhost> <50F4C0A6.4070404@linux.vnet.ibm.com> <20130115090536.7fd92be7@doriath.home> In-Reply-To: <20130115090536.7fd92be7@doriath.home> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Subject: Re: [Qemu-devel] [PATCH V3 11/11] hmp: show snapshot on single block device List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Luiz Capitulino Cc: aliguori@us.ibm.com, Pavel Hrdina , stefanha@gmail.com, qemu-devel@nongnu.org, armbru@redhat.com, pbonzini@redhat.com 于 2013-1-15 19:05, Luiz Capitulino 写道: > On Tue, 15 Jan 2013 10:36:22 +0800 > Wenchao Xia wrote: > >> > On Mon, 2013-01-14 at 15:09 +0800, Wenchao Xia wrote: >>>> This patch use block layer API to qmp snapshot info on a block >>>> device, then use the same code dumping vm snapshot info, to print >>>> in monitor. >>>> >>>> Signed-off-by: Wenchao Xia >>>> --- >>>> Note: >>>> This patch need previous hmp extention patch which enable >>>> info sub command take qdict * as paramter. >>> >>>> diff --git a/savevm.c b/savevm.c >>>> index cabdcb6..cd474e9 100644 >>>> --- a/savevm.c >>>> +++ b/savevm.c >>>> @@ -2354,9 +2354,50 @@ static void do_info_snapshots_vm(Monitor *mon) >>>> return; >>>> } >>>> >>>> +static void do_info_snapshots_blk(Monitor *mon, const char *device) >>>> +{ >>>> + Error *err = NULL; >>>> + SnapshotInfoList *list; >>>> + BlockDriverState *bs; >>>> + >>>> + /* find the target bs */ >>>> + bs = bdrv_find(device); >>>> + if (!bs) { >>>> + monitor_printf(mon, "Device '%s' not found.\n", device); >>>> + return ; >>>> + } >>>> + >>>> + if (!bdrv_can_snapshot(bs)) { >>>> + monitor_printf(mon, "Device '%s' can't have snapshot.\n", device); >>>> + return ; >>>> + } >>>> + >>>> + list = bdrv_query_snapshot_infolist(bs, NULL, NULL, &err); >>>> + if (error_is_set(&err)) { >>>> + hmp_handle_error(mon, &err); >>>> + return; >>>> + } >>>> + >>>> + if (list == NULL) { >>>> + monitor_printf(mon, "There is no snapshot available.\n"); >>>> + return; >>>> + } >>>> + >>>> + monitor_printf(mon, "Device '%s':\n", device); >>>> + monitor_dump_snapshotinfolist(mon, list); >>>> + qapi_free_SnapshotInfoList(list); >>>> + return; >>>> +} >>>> + >>>> void do_info_snapshots(Monitor *mon, const QDict *qdict) >>>> { >>>> - do_info_snapshots_vm(mon); >>>> + const char *device = qdict_get_try_str(qdict, "device"); >>>> + if (!device) { >>>> + do_info_snapshots_vm(mon); >>>> + } else { >>>> + do_info_snapshots_blk(mon, device); >>>> + } >>>> + return; >>>> } >>>> >>> >>> I think that you should move these functions into hmp.c file. This also >>> applies to previous patch and according to this changes you don't have >>> to export hmp_handle_error() function which should be used only in hmp.c >>> >>> Pavel >>> >> It seems there are other "do_info_**" function in other .c files, >> so I suggest a different serial later which move those functions, if >> necessary. > > The other functions are probably old hmp code. That is, code that is not > converted to make QMP calls. Generally, new hmp code goes into hmp.c unless > there's a good reason to put them in a different file. > > So, please move it to hmp.c. > OK, new hmp function will goto hmp.c -- Best Regards Wenchao Xia