From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from [140.186.70.92] (port=51014 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1PF4As-000196-So for qemu-devel@nongnu.org; Sun, 07 Nov 2010 07:16:43 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1PF4Ar-0004lf-Mg for qemu-devel@nongnu.org; Sun, 07 Nov 2010 07:16:42 -0500 Received: from mx1.redhat.com ([209.132.183.28]:39842) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1PF4Ar-0004lT-F7 for qemu-devel@nongnu.org; Sun, 07 Nov 2010 07:16:41 -0500 Received: from int-mx01.intmail.prod.int.phx2.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by mx1.redhat.com (8.13.8/8.13.8) with ESMTP id oA7CGdpB008002 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Sun, 7 Nov 2010 07:16:40 -0500 Date: Sun, 7 Nov 2010 14:16:38 +0200 From: Gleb Natapov Message-ID: <20101107121638.GD30855@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Subject: [Qemu-devel] [PATCH] Remove code duplication from savevm instance_id creation code. List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: alex.williamson@redhat.com, quintela@redhat.com Code in register_savevm_live() and vmstate_register_with_alias_id() looks identical except idstr used. Move into separate function. Signed-off-by: Gleb Natapov diff --git a/savevm.c b/savevm.c index cf56121..6ca6920 100644 --- a/savevm.c +++ b/savevm.c @@ -1080,6 +1080,33 @@ static int calculate_compat_instance_id(const char *idstr) return instance_id; } +static void setup_instance_id(DeviceState *dev, const char *idstr, + int instance_id, SaveStateEntry *se) +{ + if (dev && dev->parent_bus && dev->parent_bus->info->get_dev_path) { + char *id = dev->parent_bus->info->get_dev_path(dev); + if (id) { + pstrcpy(se->idstr, sizeof(se->idstr), id); + pstrcat(se->idstr, sizeof(se->idstr), "/"); + qemu_free(id); + + se->compat = qemu_mallocz(sizeof(CompatEntry)); + pstrcpy(se->compat->idstr, sizeof(se->compat->idstr), idstr); + se->compat->instance_id = instance_id == -1 ? + calculate_compat_instance_id(idstr) : instance_id; + instance_id = -1; + } + } + pstrcat(se->idstr, sizeof(se->idstr), idstr); + + if (instance_id == -1) { + se->instance_id = calculate_new_instance_id(se->idstr); + } else { + se->instance_id = instance_id; + } + assert(!se->compat || se->instance_id == 0); +} + /* TODO: Individual devices generally have very little idea about the rest of the system, so instance_id should be removed/replaced. Meanwhile pass -1 as instance_id if you do not already have a clearly @@ -1107,28 +1134,8 @@ int register_savevm_live(DeviceState *dev, se->vmsd = NULL; se->no_migrate = 0; - if (dev && dev->parent_bus && dev->parent_bus->info->get_dev_path) { - char *id = dev->parent_bus->info->get_dev_path(dev); - if (id) { - pstrcpy(se->idstr, sizeof(se->idstr), id); - pstrcat(se->idstr, sizeof(se->idstr), "/"); - qemu_free(id); - - se->compat = qemu_mallocz(sizeof(CompatEntry)); - pstrcpy(se->compat->idstr, sizeof(se->compat->idstr), idstr); - se->compat->instance_id = instance_id == -1 ? - calculate_compat_instance_id(idstr) : instance_id; - instance_id = -1; - } - } - pstrcat(se->idstr, sizeof(se->idstr), idstr); + setup_instance_id(dev, idstr, instance_id, se); - if (instance_id == -1) { - se->instance_id = calculate_new_instance_id(se->idstr); - } else { - se->instance_id = instance_id; - } - assert(!se->compat || se->instance_id == 0); /* add at the end of list */ QTAILQ_INSERT_TAIL(&savevm_handlers, se, entry); return 0; @@ -1217,28 +1224,8 @@ int vmstate_register_with_alias_id(DeviceState *dev, int instance_id, se->vmsd = vmsd; se->alias_id = alias_id; - if (dev && dev->parent_bus && dev->parent_bus->info->get_dev_path) { - char *id = dev->parent_bus->info->get_dev_path(dev); - if (id) { - pstrcpy(se->idstr, sizeof(se->idstr), id); - pstrcat(se->idstr, sizeof(se->idstr), "/"); - qemu_free(id); - - se->compat = qemu_mallocz(sizeof(CompatEntry)); - pstrcpy(se->compat->idstr, sizeof(se->compat->idstr), vmsd->name); - se->compat->instance_id = instance_id == -1 ? - calculate_compat_instance_id(vmsd->name) : instance_id; - instance_id = -1; - } - } - pstrcat(se->idstr, sizeof(se->idstr), vmsd->name); + setup_instance_id(dev, vmsd->name, instance_id, se); - if (instance_id == -1) { - se->instance_id = calculate_new_instance_id(se->idstr); - } else { - se->instance_id = instance_id; - } - assert(!se->compat || se->instance_id == 0); /* add at the end of list */ QTAILQ_INSERT_TAIL(&savevm_handlers, se, entry); return 0; -- Gleb.