From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:47676) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1USPUI-00057D-16 for qemu-devel@nongnu.org; Wed, 17 Apr 2013 06:21:18 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1USPU9-00068I-Of for qemu-devel@nongnu.org; Wed, 17 Apr 2013 06:21:13 -0400 Received: from e28smtp09.in.ibm.com ([122.248.162.9]:34173) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1USPU8-00066R-TQ for qemu-devel@nongnu.org; Wed, 17 Apr 2013 06:21:05 -0400 Received: from /spool/local by e28smtp09.in.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Wed, 17 Apr 2013 15:47:53 +0530 Received: from d28relay05.in.ibm.com (d28relay05.in.ibm.com [9.184.220.62]) by d28dlp03.in.ibm.com (Postfix) with ESMTP id BA9661258023 for ; Wed, 17 Apr 2013 15:52:28 +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 r3HAKs6o5243138 for ; Wed, 17 Apr 2013 15:50:54 +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 r3HAKvbP006679 for ; Wed, 17 Apr 2013 20:20:57 +1000 Message-ID: <516E774D.8080809@linux.vnet.ibm.com> Date: Wed, 17 Apr 2013 18:19:57 +0800 From: Wenchao Xia MIME-Version: 1.0 References: <13b9d1e79947b89982ec51c421b9b1bd0a7b587d.1366127809.git.phrdina@redhat.com> <516E0E9A.9050607@linux.vnet.ibm.com> <516E54AF.8070206@redhat.com> In-Reply-To: <516E54AF.8070206@redhat.com> Content-Type: text/plain; charset=GB2312 Content-Transfer-Encoding: 8bit Subject: Re: [Qemu-devel] [PATCH 11/11] savevm: remove backward compatibility from bdrv_snapshot_find() List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Pavel Hrdina Cc: armbru@redhat.com, qemu-devel@nongnu.org, lcapitulino@redhat.com ÓÚ 2013-4-17 15:52, Pavel Hrdina дµÀ: > Hi Wenchao, > > unfortunately no. According to new design of savevm, loadvm and delvm I > need also search for snapshots that have the specified name and id. > It seems the logic in your function, is same with mine... > I'm also touching bdrv_snapshot_list where I'm adding an Error parameter I looked it before, but it needs all call back in ./block support it, so is it really necessary? > and changing the return value to be used only for getting a number of > snapshots. So in case that there is some error, the return value will be 0. > > Pavel > > On 17.4.2013 04:53, Wenchao Xia wrote: >> Hi, Pavel >> I have implemented it at >> http://lists.nongnu.org/archive/html/qemu-devel/2013-04/msg02533.html >> in patch 1,2. Could u check if it satisfy your requirement, if yes maybe >> you can directly use them. >> >>> Signed-off-by: Pavel Hrdina >>> --- >>> savevm.c | 33 +++++++++++---------------------- >>> 1 file changed, 11 insertions(+), 22 deletions(-) >>> >>> diff --git a/savevm.c b/savevm.c >>> index 66753da..bc829a5 100644 >>> --- a/savevm.c >>> +++ b/savevm.c >>> @@ -2195,7 +2195,7 @@ out: >>> } >>> >>> static int bdrv_snapshot_find(BlockDriverState *bs, QEMUSnapshotInfo *sn_info, >>> - const char *name, const char *id, bool old_match) >>> + const char *name, const char *id) >>> { >>> QEMUSnapshotInfo *sn_tab, *sn; >>> int nb_sns, i, found = 0; >>> @@ -2218,20 +2218,10 @@ static int bdrv_snapshot_find(BlockDriverState *bs, QEMUSnapshotInfo *sn_info, >>> break; >>> } >>> } else if (name) { >>> - /* for compatibility for old bdrv_snapshot_find call >>> - * will be removed */ >>> - if (old_match) { >>> - if (!strcmp(sn->id_str, id) || !strcmp(sn->name, name)) { >>> - *sn_info = *sn; >>> - found = 1; >>> - break; >>> - } >>> - } else { >>> - if (!strcmp(sn->name, name)) { >>> - *sn_info = *sn; >>> - found = 1; >>> - break; >>> - } >>> + if (!strcmp(sn->name, name)) { >>> + *sn_info = *sn; >>> + found = 1; >>> + break; >>> } >>> } else if (id) { >>> if (!strcmp(sn->id_str, id)) { >>> @@ -2290,7 +2280,7 @@ SnapshotInfo *qmp_vm_snapshot_save(const char *name, Error **errp) >>> sn->date_nsec = tv.tv_usec * 1000; >>> sn->vm_clock_nsec = qemu_get_clock_ns(vm_clock); >>> >>> - if (bdrv_snapshot_find(bs, old_sn, name, NULL, false)) { >>> + if (bdrv_snapshot_find(bs, old_sn, name, NULL)) { >>> error_setg(errp, "snapshot '%s' exists", name); >>> goto the_end; >>> } else { >>> @@ -2388,7 +2378,7 @@ SnapshotInfo *qmp_vm_snapshot_load(bool has_name, const char *name, >>> } >>> >>> /* Don't even try to load empty VM states */ >>> - if (!bdrv_snapshot_find(bs_vm_state, &sn, name, id, false)) { >>> + if (!bdrv_snapshot_find(bs_vm_state, &sn, name, id)) { >>> return NULL; >>> } >>> >>> @@ -2413,7 +2403,7 @@ SnapshotInfo *qmp_vm_snapshot_load(bool has_name, const char *name, >>> return NULL; >>> } >>> >>> - if (!bdrv_snapshot_find(bs, &sn, name, id, false)) { >>> + if (!bdrv_snapshot_find(bs, &sn, name, id)) { >>> return NULL; >>> } >>> } >>> @@ -2484,7 +2474,7 @@ SnapshotInfo *qmp_vm_snapshot_delete(const bool has_name, const char *name, >>> return NULL; >>> } >>> >>> - if (!bdrv_snapshot_find(bs, &sn, name, id, false)) { >>> + if (!bdrv_snapshot_find(bs, &sn, name, id)) { >>> /* no need to set an error if snapshot doesn't exist */ >>> return NULL; >>> } >>> @@ -2501,7 +2491,7 @@ SnapshotInfo *qmp_vm_snapshot_delete(const bool has_name, const char *name, >>> bs = NULL; >>> while ((bs = bdrv_next(bs))) { >>> if (bdrv_can_snapshot(bs) >>> - && bdrv_snapshot_find(bs, &sn, name, id, false)) { >>> + && bdrv_snapshot_find(bs, &sn, name, id)) { >>> bdrv_snapshot_delete(bs, sn.name, errp); >>> if (error_is_set(errp)) { >>> return NULL; >>> @@ -2549,8 +2539,7 @@ void do_info_snapshots(Monitor *mon, const QDict *qdict) >>> >>> while ((bs1 = bdrv_next(bs1))) { >>> if (bdrv_can_snapshot(bs1) && bs1 != bs) { >>> - if (!bdrv_snapshot_find(bs1, sn_info, sn->name, sn->id_str, >>> - true)) { >>> + if (!bdrv_snapshot_find(bs1, sn_info, sn->name, sn->id_str)) { >>> available = 0; >>> break; >>> } >>> >> >> > > -- Best Regards Wenchao Xia