From nobody Thu May 2 02:51:35 2024 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; dkim=fail; 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 1513773334417625.669312295087; Wed, 20 Dec 2017 04:35:34 -0800 (PST) Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 3327F80B22; Wed, 20 Dec 2017 12:35:32 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 4EDAA19F0A; Wed, 20 Dec 2017 12:35:31 +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 63BA14BB79; Wed, 20 Dec 2017 12:35: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 vBKCZTq2020678 for ; Wed, 20 Dec 2017 07:35:29 -0500 Received: by smtp.corp.redhat.com (Postfix) id 19B4418E51; Wed, 20 Dec 2017 12:35:29 +0000 (UTC) Received: from mx1.redhat.com (ext-mx05.extmail.prod.ext.phx2.redhat.com [10.5.110.29]) by smtp.corp.redhat.com (Postfix) with ESMTPS id AF5F718E47; Wed, 20 Dec 2017 12:35:27 +0000 (UTC) Received: from m15-111.126.com (m15-111.126.com [220.181.15.111]) by mx1.redhat.com (Postfix) with ESMTP id 1CD52461DC; Wed, 20 Dec 2017 12:35:23 +0000 (UTC) Received: from localhost.localdomain (unknown [58.213.111.46]) by smtp1 (Coremail) with SMTP id C8mowABnZOHvLTpa15rBCg--.121S2; Wed, 20 Dec 2017 17:31:47 +0800 (CST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=126.com; s=s110527; h=From:Subject:Date:Message-Id; bh=+Nf8BwGngmlxphoZJH WQhCjeK9hFaDb1qeNJDlLpHgc=; b=HZgzXDrgCKflItW+JQfS43d77hwz/ykfNK hMzEY3gmgwvzk6VfIpuLKO+WC/B+I+QBzr5IHauCe50SDYd8eskRLPYpVVUfq95a +iIB/OyrQ0OnArTzdJLm8WlN6mXRWufy8zh2sWUC2+DMtj2nnm5DYjcd+hKeinDw 6yYIjxZZI= From: Chen Hanxiao To: libvir-list@redhat.com Date: Wed, 20 Dec 2017 17:29:46 +0800 Message-Id: <20171220092946.14260-1-chen_han_xiao@126.com> X-CM-TRANSID: C8mowABnZOHvLTpa15rBCg--.121S2 X-Coremail-Antispam: 1Uf129KBjvJXoWxuFWkZFWxZFWxuF1DGw1UAwb_yoWxZry8pF 18Xa95tr4jqr47J393Ka4kZ3WUXas7WryrJr1fWrnFgF1fG3yDCrn3ur1xuFWUtrsrAa1S 9Fy7XFW8uF1DKaDanT9S1TB71UUUUUUqnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDUYxBIdaVFxhVjvjDU0xZFpf9x07UCFAJUUUUU= X-Originating-IP: [58.213.111.46] X-CM-SenderInfo: xfkh0spkdqs5xldrqiyswou0bp/1tbiaB60rlQ9ENXfMgAAst X-Greylist: Delayed for 03:03:35 by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.29]); Wed, 20 Dec 2017 12:35:25 +0000 (UTC) X-Greylist: inspected by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.29]); Wed, 20 Dec 2017 12:35:25 +0000 (UTC) for IP:'220.181.15.111' DOMAIN:'m15-111.126.com' HELO:'m15-111.126.com' FROM:'chen_han_xiao@126.com' RCPT:'' X-RedHat-Blacklist-Warning: Relay 220.181.15.111 is blacklisted by a RBL system X-RedHat-Spam-Score: 1.999 * (DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, FREEMAIL_FROM, RCVD_IN_MSPIKE_H2, RCVD_IN_PSBL, RCVD_IN_SBL_CSS, SPF_PASS, T_RP_MATCHES_RCVD) 220.181.15.111 m15-111.126.com 220.181.15.111 m15-111.126.com X-Scanned-By: MIMEDefang 2.78 on 10.5.110.29 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 X-loop: libvir-list@redhat.com Cc: Chen Hanxiao Subject: [libvirt] [PATCH] qemu_hotplug: use VIR_ERR_NO_DEVICE when target detaching device is not found 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.11 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.28]); Wed, 20 Dec 2017 12:35:32 +0000 (UTC) X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" From: Chen Hanxiao We used VIR_ERR_OPERATION_FAILED when target detaching device is not found. That error code VIR_ERR_OPERATION_FAILED is widely used, so the tools powered by libvirt, such as nova, can't catch the exact errors from libvirt. This patch uses VIR_ERR_NO_DEVICE instead. Signed-off-by: Chen Hanxiao --- src/libvirt_private.syms | 2 ++ src/qemu/qemu_hotplug.c | 51 +++++++++++++++++++++++++++++++-------------= ---- 2 files changed, 35 insertions(+), 18 deletions(-) diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index d5c3b9abb..31e83f152 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -203,6 +203,7 @@ virDomainChrConsoleTargetTypeToString; virDomainChrDefForeach; virDomainChrDefFree; virDomainChrDefNew; +virDomainChrDeviceTypeToString; virDomainChrEquals; virDomainChrFind; virDomainChrGetDomainPtrs; @@ -427,6 +428,7 @@ virDomainMemoryDefFree; virDomainMemoryFindByDef; virDomainMemoryFindInactiveByDef; virDomainMemoryInsert; +virDomainMemoryModelTypeToString; virDomainMemoryRemove; virDomainMemorySourceTypeFromString; virDomainMemorySourceTypeToString; diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c index 7de04c85a..0fa3c54c0 100644 --- a/src/qemu/qemu_hotplug.c +++ b/src/qemu/qemu_hotplug.c @@ -3454,7 +3454,7 @@ qemuDomainChangeGraphics(virQEMUDriverPtr driver, int ret =3D -1; =20 if (!olddev) { - virReportError(VIR_ERR_INTERNAL_ERROR, "%s", + virReportError(VIR_ERR_NO_DEVICE, "%s", _("cannot find existing graphics device to modify")= ); goto cleanup; } @@ -4743,7 +4743,7 @@ int qemuDomainDetachControllerDevice(virQEMUDriverPtr= driver, if ((idx =3D virDomainControllerFind(vm->def, dev->data.controller->type, dev->data.controller->idx)) < 0) { - virReportError(VIR_ERR_OPERATION_FAILED, + virReportError(VIR_ERR_NO_DEVICE, _("controller %s:%d not found"), virDomainControllerTypeToString(dev->data.controlle= r->type), dev->data.controller->idx); @@ -4972,18 +4972,18 @@ int qemuDomainDetachHostDevice(virQEMUDriverPtr dri= ver, if (idx < 0) { switch (subsys->type) { case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_PCI: - virReportError(VIR_ERR_OPERATION_FAILED, + virReportError(VIR_ERR_NO_DEVICE, _("host pci device %.4x:%.2x:%.2x.%.1x not foun= d"), pcisrc->addr.domain, pcisrc->addr.bus, pcisrc->addr.slot, pcisrc->addr.function); break; case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_USB: if (usbsrc->bus && usbsrc->device) { - virReportError(VIR_ERR_OPERATION_FAILED, + virReportError(VIR_ERR_NO_DEVICE, _("host usb device %03d.%03d not found"), usbsrc->bus, usbsrc->device); } else { - virReportError(VIR_ERR_OPERATION_FAILED, + virReportError(VIR_ERR_NO_DEVICE, _("host usb device vendor=3D0x%.4x product= =3D0x%.4x not found"), usbsrc->vendor, usbsrc->product); } @@ -4992,13 +4992,13 @@ int qemuDomainDetachHostDevice(virQEMUDriverPtr dri= ver, if (scsisrc->protocol =3D=3D VIR_DOMAIN_HOSTDEV_SCSI_PROTOCOL_TYPE_ISCSI) { virDomainHostdevSubsysSCSIiSCSIPtr iscsisrc =3D &scsisrc->= u.iscsi; - virReportError(VIR_ERR_OPERATION_FAILED, + virReportError(VIR_ERR_NO_DEVICE, _("host scsi iSCSI path %s not found"), iscsisrc->src->path); } else { virDomainHostdevSubsysSCSIHostPtr scsihostsrc =3D &scsisrc->u.host; - virReportError(VIR_ERR_OPERATION_FAILED, + virReportError(VIR_ERR_NO_DEVICE, _("host scsi device %s:%u:%u.%llu not foun= d"), scsihostsrc->adapter, scsihostsrc->bus, scsihostsrc->target, scsihostsrc->unit); @@ -5036,8 +5036,10 @@ qemuDomainDetachShmemDevice(virQEMUDriverPtr driver, qemuDomainObjPrivatePtr priv =3D vm->privateData; =20 if ((idx =3D virDomainShmemDefFind(vm->def, dev)) < 0) { - virReportError(VIR_ERR_OPERATION_INVALID, "%s", - _("device not present in domain configuration")); + virReportError(VIR_ERR_NO_DEVICE, + _("Shmem device of model '%s' not found " + "in domain configuration"), + virDomainShmemModelTypeToString(dev->model)); return -1; } =20 @@ -5093,8 +5095,10 @@ qemuDomainDetachWatchdog(virQEMUDriverPtr driver, watchdog->model =3D=3D dev->model && watchdog->action =3D=3D dev->action && virDomainDeviceInfoAddressIsEqual(&dev->info, &watchdog->info)))= { - virReportError(VIR_ERR_OPERATION_INVALID, "%s", - _("watchdog device not present in domain configurat= ion")); + virReportError(VIR_ERR_NO_DEVICE, + _("watchdog device of model '%s' is not " + "found in domain configuration"), + virDomainWatchdogModelTypeToString(watchdog->model)= ); return -1; } =20 @@ -5134,8 +5138,13 @@ qemuDomainDetachNetDevice(virQEMUDriverPtr driver, virDomainNetDefPtr detach =3D NULL; qemuDomainObjPrivatePtr priv =3D vm->privateData; =20 - if ((detachidx =3D virDomainNetFindIdx(vm->def, dev->data.net)) < 0) + if ((detachidx =3D virDomainNetFindIdx(vm->def, dev->data.net)) < 0) { + char mac[VIR_MAC_STRING_BUFLEN]; + virReportError(VIR_ERR_NO_DEVICE, + _("netdev '%s' not found in domain configuration"), + virMacAddrFormat(&dev->data.net->mac, mac)); goto cleanup; + } =20 detach =3D vm->def->nets[detachidx]; =20 @@ -5321,8 +5330,10 @@ int qemuDomainDetachChrDevice(virQEMUDriverPtr drive= r, char *devstr =3D NULL; =20 if (!(tmpChr =3D virDomainChrFind(vmdef, chr))) { - virReportError(VIR_ERR_OPERATION_INVALID, "%s", - _("device not present in domain configuration")); + virReportError(VIR_ERR_NO_DEVICE, + _("Chr device of type '%s' not found " + "in domain configuration"), + virDomainChrDeviceTypeToString(chr->deviceType)); goto cleanup; } =20 @@ -5368,8 +5379,10 @@ qemuDomainDetachRNGDevice(virQEMUDriverPtr driver, int ret =3D -1; =20 if ((idx =3D virDomainRNGFind(vm->def, rng)) < 0) { - virReportError(VIR_ERR_OPERATION_INVALID, "%s", - _("device not present in domain configuration")); + virReportError(VIR_ERR_NO_DEVICE, + _("RNG device of model '%s' not found " + "in domain configuration"), + virDomainRNGBackendTypeToString(rng->model)); return -1; } =20 @@ -5411,8 +5424,10 @@ qemuDomainDetachMemoryDevice(virQEMUDriverPtr driver, qemuDomainMemoryDeviceAlignSize(vm->def, memdef); =20 if ((idx =3D virDomainMemoryFindByDef(vm->def, memdef)) < 0) { - virReportError(VIR_ERR_OPERATION_INVALID, "%s", - _("device not present in domain configuration")); + virReportError(VIR_ERR_NO_DEVICE, + _("memory device of model '%s' not found " + "in domain configuration"), + virDomainMemoryModelTypeToString(memdef->model)); return -1; } =20 --=20 2.14.3 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list