From nobody Thu May 15 13:35:52 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1508400752115356.9279334666069; Thu, 19 Oct 2017 01:12:32 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id D2DB93E2D1; Thu, 19 Oct 2017 08:12:30 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id AA77D693C0; Thu, 19 Oct 2017 08:12:30 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 59C771800C91; Thu, 19 Oct 2017 08:12:30 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id v9J8BX5f007375 for ; Thu, 19 Oct 2017 04:11:33 -0400 Received: by smtp.corp.redhat.com (Postfix) id F39E09AA4B; Thu, 19 Oct 2017 08:11:32 +0000 (UTC) Received: from moe.brq.redhat.com (unknown [10.43.2.192]) by smtp.corp.redhat.com (Postfix) with ESMTP id 7C08DA42EE for ; Thu, 19 Oct 2017 08:11:32 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com D2DB93E2D1 Authentication-Results: ext-mx06.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx06.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=libvir-list-bounces@redhat.com From: Michal Privoznik To: libvir-list@redhat.com Date: Thu, 19 Oct 2017 10:11:00 +0200 Message-Id: In-Reply-To: References: In-Reply-To: References: X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH v1 05/14] qemu: Be tolerant to preexisting aliases X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.30]); Thu, 19 Oct 2017 08:12:31 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" In the future, some aliases might be already parsed therefore we should avoid overwriting them. Signed-off-by: Michal Privoznik --- src/qemu/qemu_alias.c | 57 +++++++++++++++++++++++++++++++++++++++++++++= ++-- src/qemu/qemu_hotplug.c | 6 ++---- 2 files changed, 57 insertions(+), 6 deletions(-) diff --git a/src/qemu/qemu_alias.c b/src/qemu/qemu_alias.c index 33bd4c10d..7a3983afa 100644 --- a/src/qemu/qemu_alias.c +++ b/src/qemu/qemu_alias.c @@ -93,6 +93,9 @@ qemuAssignDeviceChrAlias(virDomainDefPtr def, { const char *prefix =3D NULL; =20 + if (chr->info.alias) + return 0; + switch ((virDomainChrDeviceType) chr->deviceType) { case VIR_DOMAIN_CHR_DEVICE_TYPE_PARALLEL: prefix =3D "parallel"; @@ -128,6 +131,9 @@ qemuAssignDeviceControllerAlias(virDomainDefPtr domainD= ef, { const char *prefix =3D virDomainControllerTypeToString(controller->typ= e); =20 + if (controller->info.alias) + return 0; + if (controller->type =3D=3D VIR_DOMAIN_CONTROLLER_TYPE_PCI) { if (!virQEMUCapsHasPCIMultiBus(qemuCaps, domainDef)) { /* qemus that don't support multiple PCI buses have @@ -182,6 +188,9 @@ qemuAssignDeviceDiskAlias(virDomainDefPtr def, const char *prefix =3D virDomainDiskBusTypeToString(disk->bus); int controllerModel =3D -1; =20 + if (disk->info.alias) + return 0; + if (disk->info.type =3D=3D VIR_DOMAIN_DEVICE_ADDRESS_TYPE_DRIVE) { if (disk->bus =3D=3D VIR_DOMAIN_DISK_BUS_SCSI) { controllerModel =3D @@ -223,6 +232,9 @@ qemuAssignDeviceHostdevAlias(virDomainDefPtr def, char **alias, int idx) { + if (*alias) + return 0; + if (idx =3D=3D -1) { size_t i; =20 @@ -259,6 +271,9 @@ qemuAssignDeviceNetAlias(virDomainDefPtr def, int idx) { =20 + if (net->info.alias) + return 0; + /* uses "hostdevN" as the alias * We must use "-1" as the index because the caller doesn't know * that we're now looking for a unique hostdevN rather than netN @@ -290,6 +305,9 @@ static int qemuAssignDeviceFSAlias(virDomainFSDefPtr fss, int idx) { + if (fss->info.alias) + return 0; + return virAsprintf(&fss->info.alias, "fs%d", idx); } =20 @@ -298,6 +316,9 @@ static int qemuAssignDeviceSoundAlias(virDomainSoundDefPtr sound, int idx) { + if (sound->info.alias) + return 0; + return virAsprintf(&sound->info.alias, "sound%d", idx); } =20 @@ -306,6 +327,9 @@ static int qemuAssignDeviceVideoAlias(virDomainVideoDefPtr video, int idx) { + if (video->info.alias) + return 0; + return virAsprintf(&video->info.alias, "video%d", idx); } =20 @@ -314,6 +338,9 @@ static int qemuAssignDeviceInputAlias(virDomainInputDefPtr input, int idx) { + if (input->info.alias) + return 0; + return virAsprintf(&input->info.alias, "input%d", idx); } =20 @@ -322,6 +349,9 @@ static int qemuAssignDeviceHubAlias(virDomainHubDefPtr hub, int idx) { + if (hub->info.alias) + return 0; + return virAsprintf(&hub->info.alias, "hub%d", idx); } =20 @@ -330,6 +360,9 @@ static int qemuAssignDeviceSmartcardAlias(virDomainSmartcardDefPtr smartcard, int idx) { + if (smartcard->info.alias) + return 0; + return virAsprintf(&smartcard->info.alias, "smartcard%d", idx); } =20 @@ -338,6 +371,9 @@ static int qemuAssingDeviceMemballoonAlias(virDomainMemballoonDefPtr memballoon, int idx) { + if (memballoon->info.alias) + return 0; + return virAsprintf(&memballoon->info.alias, "balloon%d", idx); } =20 @@ -346,6 +382,9 @@ static int qemuAssignDeviceTPMAlias(virDomainTPMDefPtr tpm, int idx) { + if (tpm->info.alias) + return 0; + return virAsprintf(&tpm->info.alias, "tpm%d", idx); } =20 @@ -355,6 +394,9 @@ qemuAssignDeviceRedirdevAlias(virDomainDefPtr def, virDomainRedirdevDefPtr redirdev, int idx) { + if (redirdev->info.alias) + return 0; + if (idx =3D=3D -1) { size_t i; idx =3D 0; @@ -384,6 +426,9 @@ qemuAssignDeviceRNGAlias(virDomainDefPtr def, int maxidx =3D 0; int idx; =20 + if (rng->info.alias) + return 0; + for (i =3D 0; i < def->nrngs; i++) { if ((idx =3D qemuDomainDeviceAliasIndex(&def->rngs[i]->info, "rng"= )) >=3D maxidx) maxidx =3D idx + 1; @@ -418,6 +463,9 @@ qemuAssignDeviceMemoryAlias(virDomainDefPtr def, int idx; const char *prefix; =20 + if (mem->info.alias) + return 0; + if (mem->model =3D=3D VIR_DOMAIN_MEMORY_MODEL_DIMM) prefix =3D "dimm"; else @@ -444,6 +492,9 @@ qemuAssignDeviceShmemAlias(virDomainDefPtr def, virDomainShmemDefPtr shmem, int idx) { + if (shmem->info.alias) + return 0; + if (idx =3D=3D -1) { size_t i; idx =3D 0; @@ -474,6 +525,9 @@ qemuAssignDeviceWatchdogAlias(virDomainWatchdogDefPtr w= atchdog) { /* Currently, there's just one watchdog per domain */ =20 + if (watchdog->info.alias) + return 0; + if (VIR_STRDUP(watchdog->info.alias, "watchdog0") < 0) return -1; return 0; @@ -508,8 +562,7 @@ qemuAssignDeviceAliases(virDomainDefPtr def, virQEMUCap= sPtr qemuCaps) * linked to a NetDef, they will share an info and the alias * will already be set, so don't try to set it again. */ - if (!def->hostdevs[i]->info->alias && - qemuAssignDeviceHostdevAlias(def, &def->hostdevs[i]->info->ali= as, -1) < 0) + if (qemuAssignDeviceHostdevAlias(def, &def->hostdevs[i]->info->ali= as, -1) < 0) return -1; } for (i =3D 0; i < def->nredirdevs; i++) { diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c index 0288986d8..d556c9be0 100644 --- a/src/qemu/qemu_hotplug.c +++ b/src/qemu/qemu_hotplug.c @@ -4980,10 +4980,8 @@ qemuDomainDetachThisHostDevice(virQEMUDriverPtr driv= er, { int ret =3D -1; =20 - if (!detach->info->alias) { - if (qemuAssignDeviceHostdevAlias(vm->def, &detach->info->alias, -1= ) < 0) - return -1; - } + if (qemuAssignDeviceHostdevAlias(vm->def, &detach->info->alias, -1) < = 0) + return -1; =20 switch (detach->source.subsys.type) { case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_PCI: --=20 2.13.6 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list