From nobody Fri May 17 09:18:55 2024 Delivered-To: importer@patchew.org Received-SPF: none (zohomail.com: 8.43.85.245 is neither permitted nor denied by domain of lists.libvirt.org) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; spf=none (zohomail.com: 8.43.85.245 is neither permitted nor denied by domain of lists.libvirt.org) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=fail(p=none dis=none) header.from=redhat.com Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1712917233203664.5199605989482; Fri, 12 Apr 2024 03:20:33 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 996) id 2606017EB; Fri, 12 Apr 2024 06:20:32 -0400 (EDT) Received: from lists.libvirt.org (localhost [IPv6:::1]) by lists.libvirt.org (Postfix) with ESMTP id DAC9E1874; Fri, 12 Apr 2024 06:19:14 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 996) id DE15417D5; Fri, 12 Apr 2024 06:19:09 -0400 (EDT) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id 81673178D for ; Fri, 12 Apr 2024 06:19:09 -0400 (EDT) Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-531-BmUkjumcPBOBdbfX2lQBqw-1; Fri, 12 Apr 2024 06:19:07 -0400 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.rdu2.redhat.com [10.11.54.7]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 5E561804C61 for ; Fri, 12 Apr 2024 10:19:07 +0000 (UTC) Received: from maggie.brq.redhat.com (unknown [10.43.3.102]) by smtp.corp.redhat.com (Postfix) with ESMTP id 09D881C060D0 for ; Fri, 12 Apr 2024 10:19:06 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-0.7 required=5.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H4, RCVD_IN_MSPIKE_WL,SPF_HELO_NONE autolearn=unavailable autolearn_force=no version=3.4.4 X-MC-Unique: BmUkjumcPBOBdbfX2lQBqw-1 From: Michal Privoznik To: devel@lists.libvirt.org Subject: [PATCH 1/5] virnetdevopenvswitch: Fix comment to virNetDevOpenvswitchInterfaceGetMaster() Date: Fri, 12 Apr 2024 12:19:01 +0200 Message-ID: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.11.54.7 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Message-ID-Hash: E3LKZCY4OANA3VVLRARULPKW6VXIDHY5 X-Message-ID-Hash: E3LKZCY4OANA3VVLRARULPKW6VXIDHY5 X-MailFrom: mprivozn@redhat.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-config-1; header-match-config-2; header-match-config-3; header-match-devel.lists.libvirt.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; suspicious-header X-Mailman-Version: 3.2.2 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Post: List-Subscribe: List-Unsubscribe: Content-Type: text/plain; charset="utf-8"; x-default="true" Content-Transfer-Encoding: quoted-printable X-ZM-MESSAGEID: 1712917234371100001 The comment to virNetDevOpenvswitchInterfaceGetMaster() contains wrong function name. Fix this. Signed-off-by: Michal Privoznik Reviewed-by: Peter Krempa --- src/util/virnetdevopenvswitch.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/util/virnetdevopenvswitch.c b/src/util/virnetdevopenvswitc= h.c index d836d05845..7d1cd25171 100644 --- a/src/util/virnetdevopenvswitch.c +++ b/src/util/virnetdevopenvswitch.c @@ -427,7 +427,7 @@ virNetDevOpenvswitchInterfaceStats(const char *ifname, =20 =20 /** - * virNetDeOpenvswitchGetMaster: + * virNetDevOpenvswitchInterfaceGetMaster: * @ifname: name of interface we're interested in * @master: used to return a string containing the name of @ifname's "mast= er" * (this is the bridge or bond device that this device is attache= d to) --=20 2.43.2 _______________________________________________ Devel mailing list -- devel@lists.libvirt.org To unsubscribe send an email to devel-leave@lists.libvirt.org From nobody Fri May 17 09:18:55 2024 Delivered-To: importer@patchew.org Received-SPF: none (zohomail.com: 8.43.85.245 is neither permitted nor denied by domain of lists.libvirt.org) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; spf=none (zohomail.com: 8.43.85.245 is neither permitted nor denied by domain of lists.libvirt.org) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=fail(p=none dis=none) header.from=redhat.com Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1712917350399786.819396568905; Fri, 12 Apr 2024 03:22:30 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 996) id 385A3181A; Fri, 12 Apr 2024 06:22:29 -0400 (EDT) Received: from lists.libvirt.org (localhost [IPv6:::1]) by lists.libvirt.org (Postfix) with ESMTP id A7EAE18E3; Fri, 12 Apr 2024 06:19:23 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 996) id 0DEB617DB; Fri, 12 Apr 2024 06:19:12 -0400 (EDT) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id E30D617D3 for ; Fri, 12 Apr 2024 06:19:10 -0400 (EDT) Received: from mimecast-mx02.redhat.com (mx-ext.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-551-UO70VbFVNyWZkNf3FA0hUw-1; Fri, 12 Apr 2024 06:19:08 -0400 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.rdu2.redhat.com [10.11.54.7]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 0D3302932483 for ; Fri, 12 Apr 2024 10:19:08 +0000 (UTC) Received: from maggie.brq.redhat.com (unknown [10.43.3.102]) by smtp.corp.redhat.com (Postfix) with ESMTP id 91F331C060D1 for ; Fri, 12 Apr 2024 10:19:07 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-0.7 required=5.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H4, RCVD_IN_MSPIKE_WL,SPF_HELO_NONE autolearn=unavailable autolearn_force=no version=3.4.4 X-MC-Unique: UO70VbFVNyWZkNf3FA0hUw-1 From: Michal Privoznik To: devel@lists.libvirt.org Subject: [PATCH 2/5] hypervisor: Introduce and use virDomainInterfaceVportRemove() Date: Fri, 12 Apr 2024 12:19:02 +0200 Message-ID: <1f8779a7aa32189f824a4460d50129bf2dde1e5d.1712917104.git.mprivozn@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.11.54.7 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Message-ID-Hash: NTNQ2NM76UCWF44CWMZFRMGAVJ4JJHDA X-Message-ID-Hash: NTNQ2NM76UCWF44CWMZFRMGAVJ4JJHDA X-MailFrom: mprivozn@redhat.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-config-1; header-match-config-2; header-match-config-3; header-match-devel.lists.libvirt.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; suspicious-header X-Mailman-Version: 3.2.2 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Post: List-Subscribe: List-Unsubscribe: Content-Type: text/plain; charset="utf-8"; x-default="true" Content-Transfer-Encoding: quoted-printable X-ZM-MESSAGEID: 1712917352735100001 Both LXC and QEMU drivers have the same code to remove vport when removing a domain's interface. Instead of repeating the same pattern in both drivers, move the code into hypervisor agnostic location (src/hypervisor/) and switch to calling this new function. Signed-off-by: Michal Privoznik Reviewed-by: Peter Krempa --- src/hypervisor/domain_interface.c | 38 ++++++++++++++++++++++--------- src/hypervisor/domain_interface.h | 1 + src/libvirt_private.syms | 1 + src/lxc/lxc_driver.c | 9 +++----- src/lxc/lxc_process.c | 18 +++++---------- src/qemu/qemu_hotplug.c | 22 ++---------------- 6 files changed, 40 insertions(+), 49 deletions(-) diff --git a/src/hypervisor/domain_interface.c b/src/hypervisor/domain_inte= rface.c index 853814fe78..0003412065 100644 --- a/src/hypervisor/domain_interface.c +++ b/src/hypervisor/domain_interface.c @@ -374,6 +374,32 @@ virDomainInterfaceStopDevices(virDomainDef *def) return 0; } =20 + +/** + * virDomainInterfaceVportRemove: + * @net: a net definition in the VM + * + * Removes vport profile from corresponding bridge. + * NOP if no vport profile is present in @net. + */ +void +virDomainInterfaceVportRemove(virDomainNetDef *net) +{ + const virNetDevVPortProfile *vport =3D virDomainNetGetActualVirtPortPr= ofile(net); + const char *brname; + + if (!vport) + return; + + if (vport->virtPortType =3D=3D VIR_NETDEV_VPORT_PROFILE_MIDONET) { + ignore_value(virNetDevMidonetUnbindPort(vport)); + } else if (vport->virtPortType =3D=3D VIR_NETDEV_VPORT_PROFILE_OPENVSW= ITCH) { + brname =3D virDomainNetGetActualBridgeName(net); + ignore_value(virNetDevOpenvswitchRemovePort(brname, net->ifname)); + } +} + + /** * virDomainInterfaceDeleteDevice: * @def: domain definition @@ -390,10 +416,8 @@ virDomainInterfaceDeleteDevice(virDomainDef *def, bool priv_net_created, char *stateDir) { - const virNetDevVPortProfile *vport =3D NULL; g_autoptr(virConnect) conn =3D NULL; =20 - vport =3D virDomainNetGetActualVirtPortProfile(net); switch (virDomainNetGetActualType(net)) { case VIR_DOMAIN_NET_TYPE_DIRECT: if (priv_net_created) { @@ -435,15 +459,7 @@ virDomainInterfaceDeleteDevice(virDomainDef *def, /* release the physical device (or any other resources used by * this interface in the network driver */ - if (vport) { - if (vport->virtPortType =3D=3D VIR_NETDEV_VPORT_PROFILE_MIDONET) { - ignore_value(virNetDevMidonetUnbindPort(vport)); - } else if (vport->virtPortType =3D=3D VIR_NETDEV_VPORT_PROFILE_OPE= NVSWITCH) { - ignore_value(virNetDevOpenvswitchRemovePort( - virDomainNetGetActualBridgeName(net), - net->ifname)); - } - } + virDomainInterfaceVportRemove(net); =20 /* kick the device out of the hostdev list too */ virDomainNetRemoveHostdev(def, net); diff --git a/src/hypervisor/domain_interface.h b/src/hypervisor/domain_inte= rface.h index 3d15e000cc..8047fdadfa 100644 --- a/src/hypervisor/domain_interface.h +++ b/src/hypervisor/domain_interface.h @@ -39,6 +39,7 @@ int virDomainInterfaceStartDevice(virDomainNetDef *net); int virDomainInterfaceStartDevices(virDomainDef *def); int virDomainInterfaceStopDevice(virDomainNetDef *net); int virDomainInterfaceStopDevices(virDomainDef *def); +void virDomainInterfaceVportRemove(virDomainNetDef *net); void virDomainInterfaceDeleteDevice(virDomainDef *def, virDomainNetDef *net, bool priv_net_created, diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 84e30b711c..8642305a8b 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -1642,6 +1642,7 @@ virDomainInterfaceStartDevice; virDomainInterfaceStartDevices; virDomainInterfaceStopDevice; virDomainInterfaceStopDevices; +virDomainInterfaceVportRemove; =20 =20 # hypervisor/virclosecallbacks.h diff --git a/src/lxc/lxc_driver.c b/src/lxc/lxc_driver.c index 39992bdf96..89ef9416aa 100644 --- a/src/lxc/lxc_driver.c +++ b/src/lxc/lxc_driver.c @@ -70,6 +70,7 @@ #include "virhostdev.h" #include "netdev_bandwidth_conf.h" #include "virutil.h" +#include "domain_interface.h" =20 #define VIR_FROM_THIS VIR_FROM_LXC =20 @@ -4042,7 +4043,6 @@ lxcDomainDetachDeviceNetLive(virDomainObj *vm, int detachidx, ret =3D -1; virDomainNetType actualType; virDomainNetDef *detach =3D NULL; - const virNetDevVPortProfile *vport =3D NULL; virErrorPtr save_err =3D NULL; =20 if ((detachidx =3D virDomainNetFindIdx(vm->def, dev->data.net)) < 0) @@ -4098,11 +4098,8 @@ lxcDomainDetachDeviceNetLive(virDomainObj *vm, =20 virDomainConfNWFilterTeardown(detach); =20 - vport =3D virDomainNetGetActualVirtPortProfile(detach); - if (vport && vport->virtPortType =3D=3D VIR_NETDEV_VPORT_PROFILE_OPENV= SWITCH) - ignore_value(virNetDevOpenvswitchRemovePort( - virDomainNetGetActualBridgeName(detach), - detach->ifname)); + virDomainInterfaceVportRemove(detach); + ret =3D 0; cleanup: if (!ret) { diff --git a/src/lxc/lxc_process.c b/src/lxc/lxc_process.c index bfdcefd01b..30ff4eb3d0 100644 --- a/src/lxc/lxc_process.c +++ b/src/lxc/lxc_process.c @@ -49,6 +49,7 @@ #include "virprocess.h" #include "netdev_bandwidth_conf.h" #include "virutil.h" +#include "domain_interface.h" =20 #define VIR_FROM_THIS VIR_FROM_LXC =20 @@ -149,7 +150,6 @@ static void virLXCProcessCleanup(virLXCDriver *driver, { size_t i; virLXCDomainObjPrivate *priv =3D vm->privateData; - const virNetDevVPortProfile *vport =3D NULL; g_autoptr(virLXCDriverConfig) cfg =3D virLXCDriverGetConfig(driver); g_autoptr(virConnect) conn =3D NULL; =20 @@ -210,13 +210,9 @@ static void virLXCProcessCleanup(virLXCDriver *driver, =20 for (i =3D 0; i < vm->def->nnets; i++) { virDomainNetDef *iface =3D vm->def->nets[i]; - vport =3D virDomainNetGetActualVirtPortProfile(iface); + if (iface->ifname) { - if (vport && - vport->virtPortType =3D=3D VIR_NETDEV_VPORT_PROFILE_OPENVS= WITCH) - ignore_value(virNetDevOpenvswitchRemovePort( - virDomainNetGetActualBridgeName(iface), - iface->ifname)); + virDomainInterfaceVportRemove(iface); ignore_value(virNetDevVethDelete(iface->ifname)); } if (iface->type =3D=3D VIR_DOMAIN_NET_TYPE_NETWORK) { @@ -637,11 +633,9 @@ virLXCProcessSetupInterfaces(virLXCDriver *driver, virErrorPreserveLast(&save_err); for (i =3D 0; i < def->nnets; i++) { virDomainNetDef *iface =3D def->nets[i]; - const virNetDevVPortProfile *vport =3D virDomainNetGetActualVi= rtPortProfile(iface); - if (vport && vport->virtPortType =3D=3D VIR_NETDEV_VPORT_PROFI= LE_OPENVSWITCH) - ignore_value(virNetDevOpenvswitchRemovePort( - virDomainNetGetActualBridgeName(iface), - iface->ifname)); + + virDomainInterfaceVportRemove(iface); + if (iface->type =3D=3D VIR_DOMAIN_NET_TYPE_NETWORK && netconn) virDomainNetReleaseActualDevice(netconn, iface); } diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c index 62dc879ed4..054053729c 100644 --- a/src/qemu/qemu_hotplug.c +++ b/src/qemu/qemu_hotplug.c @@ -1091,24 +1091,6 @@ qemuDomainAttachDeviceDiskLive(virQEMUDriver *driver, } =20 =20 -static void -qemuDomainNetDeviceVportRemove(virDomainNetDef *net) -{ - const virNetDevVPortProfile *vport =3D virDomainNetGetActualVirtPortPr= ofile(net); - const char *brname; - - if (!vport) - return; - - if (vport->virtPortType =3D=3D VIR_NETDEV_VPORT_PROFILE_MIDONET) { - ignore_value(virNetDevMidonetUnbindPort(vport)); - } else if (vport->virtPortType =3D=3D VIR_NETDEV_VPORT_PROFILE_OPENVSW= ITCH) { - brname =3D virDomainNetGetActualBridgeName(net); - ignore_value(virNetDevOpenvswitchRemovePort(brname, net->ifname)); - } -} - - static int qemuDomainAttachNetDevice(virQEMUDriver *driver, virDomainObj *vm, @@ -1414,7 +1396,7 @@ qemuDomainAttachNetDevice(virQEMUDriver *driver, cfg->stateDir); } =20 - qemuDomainNetDeviceVportRemove(net); + virDomainInterfaceVportRemove(net); } =20 if (teardownlabel && @@ -4895,7 +4877,7 @@ qemuDomainRemoveNetDevice(virQEMUDriver *driver, VIR_WARN("Unable to restore security label on vhostuser char d= evice"); } =20 - qemuDomainNetDeviceVportRemove(net); + virDomainInterfaceVportRemove(net); =20 if (net->type =3D=3D VIR_DOMAIN_NET_TYPE_NETWORK) { g_autoptr(virConnect) conn =3D virGetConnectNetwork(); --=20 2.43.2 _______________________________________________ Devel mailing list -- devel@lists.libvirt.org To unsubscribe send an email to devel-leave@lists.libvirt.org From nobody Fri May 17 09:18:55 2024 Delivered-To: importer@patchew.org Received-SPF: none (zohomail.com: 8.43.85.245 is neither permitted nor denied by domain of lists.libvirt.org) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; spf=none (zohomail.com: 8.43.85.245 is neither permitted nor denied by domain of lists.libvirt.org) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=fail(p=none dis=none) header.from=redhat.com Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 171291729339268.48613867000472; Fri, 12 Apr 2024 03:21:33 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 996) id 600C619D6; Fri, 12 Apr 2024 06:21:32 -0400 (EDT) Received: from lists.libvirt.org (localhost [IPv6:::1]) by lists.libvirt.org (Postfix) with ESMTP id B06CA17FA; Fri, 12 Apr 2024 06:19:20 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 996) id D7A69178D; Fri, 12 Apr 2024 06:19:10 -0400 (EDT) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id 5D08117D3 for ; Fri, 12 Apr 2024 06:19:10 -0400 (EDT) Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-590-L8X_5wc2O9egBaqaFjVyBQ-1; Fri, 12 Apr 2024 06:19:08 -0400 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.rdu2.redhat.com [10.11.54.7]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 966178007BA for ; Fri, 12 Apr 2024 10:19:08 +0000 (UTC) Received: from maggie.brq.redhat.com (unknown [10.43.3.102]) by smtp.corp.redhat.com (Postfix) with ESMTP id 4147A1C060D0 for ; Fri, 12 Apr 2024 10:19:08 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-0.7 required=5.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H4, RCVD_IN_MSPIKE_WL,SPF_HELO_NONE autolearn=unavailable autolearn_force=no version=3.4.4 X-MC-Unique: L8X_5wc2O9egBaqaFjVyBQ-1 From: Michal Privoznik To: devel@lists.libvirt.org Subject: [PATCH 3/5] virnetdevopenvswitch: Drop @brname arg from virNetDevOpenvswitchRemovePort() Date: Fri, 12 Apr 2024 12:19:03 +0200 Message-ID: <0d1d9c5ea482888c83d3f95ce702c88cbeb42775.1712917104.git.mprivozn@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.11.54.7 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Message-ID-Hash: UTIAW66JIXMDUYL7WD24JLWNYOP6XYQK X-Message-ID-Hash: UTIAW66JIXMDUYL7WD24JLWNYOP6XYQK X-MailFrom: mprivozn@redhat.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-config-1; header-match-config-2; header-match-config-3; header-match-devel.lists.libvirt.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; suspicious-header X-Mailman-Version: 3.2.2 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Post: List-Subscribe: List-Unsubscribe: Content-Type: text/plain; charset="utf-8"; x-default="true" Content-Transfer-Encoding: quoted-printable X-ZM-MESSAGEID: 1712917294521100001 The @brname argument of virNetDevOpenvswitchRemovePort() is and was unused ever since its introduction in v0.9.11-rc1~257. Just remove it. Signed-off-by: Michal Privoznik Reviewed-by: Peter Krempa --- src/hypervisor/domain_interface.c | 4 +--- src/util/virnetdevopenvswitch.c | 2 +- src/util/virnetdevopenvswitch.h | 4 ++-- src/util/virnetdevtap.c | 2 +- 4 files changed, 5 insertions(+), 7 deletions(-) diff --git a/src/hypervisor/domain_interface.c b/src/hypervisor/domain_inte= rface.c index 0003412065..ccf4cb94bd 100644 --- a/src/hypervisor/domain_interface.c +++ b/src/hypervisor/domain_interface.c @@ -386,7 +386,6 @@ void virDomainInterfaceVportRemove(virDomainNetDef *net) { const virNetDevVPortProfile *vport =3D virDomainNetGetActualVirtPortPr= ofile(net); - const char *brname; =20 if (!vport) return; @@ -394,8 +393,7 @@ virDomainInterfaceVportRemove(virDomainNetDef *net) if (vport->virtPortType =3D=3D VIR_NETDEV_VPORT_PROFILE_MIDONET) { ignore_value(virNetDevMidonetUnbindPort(vport)); } else if (vport->virtPortType =3D=3D VIR_NETDEV_VPORT_PROFILE_OPENVSW= ITCH) { - brname =3D virDomainNetGetActualBridgeName(net); - ignore_value(virNetDevOpenvswitchRemovePort(brname, net->ifname)); + ignore_value(virNetDevOpenvswitchRemovePort(net->ifname)); } } =20 diff --git a/src/util/virnetdevopenvswitch.c b/src/util/virnetdevopenvswitc= h.c index 7d1cd25171..f1765ae1c8 100644 --- a/src/util/virnetdevopenvswitch.c +++ b/src/util/virnetdevopenvswitch.c @@ -206,7 +206,7 @@ int virNetDevOpenvswitchAddPort(const char *brname, con= st char *ifname, * * Returns 0 in case of success or -1 in case of failure. */ -int virNetDevOpenvswitchRemovePort(const char *brname G_GNUC_UNUSED, const= char *ifname) +int virNetDevOpenvswitchRemovePort(const char *ifname) { g_autofree char *errbuf =3D NULL; g_autoptr(virCommand) cmd =3D virNetDevOpenvswitchCreateCmd(&errbuf); diff --git a/src/util/virnetdevopenvswitch.h b/src/util/virnetdevopenvswitc= h.h index e6ee985f17..a20fb5b029 100644 --- a/src/util/virnetdevopenvswitch.h +++ b/src/util/virnetdevopenvswitch.h @@ -38,8 +38,8 @@ int virNetDevOpenvswitchAddPort(const char *brname, ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3) G_GNUC_WARN_UNUSED_RESULT; =20 -int virNetDevOpenvswitchRemovePort(const char *brname, const char *ifname) - ATTRIBUTE_NONNULL(2) G_GNUC_WARN_UNUSED_RESULT; +int virNetDevOpenvswitchRemovePort(const char *ifname) + ATTRIBUTE_NONNULL(1) G_GNUC_WARN_UNUSED_RESULT; =20 int virNetDevOpenvswitchInterfaceGetMaster(const char *ifname, char **mast= er) ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) G_GNUC_WARN_UNUSED_RESULT; diff --git a/src/util/virnetdevtap.c b/src/util/virnetdevtap.c index 3bfd36fc23..9a4866a4e4 100644 --- a/src/util/virnetdevtap.c +++ b/src/util/virnetdevtap.c @@ -543,7 +543,7 @@ virNetDevTapReattachBridge(const char *tapname, int ret; VIR_INFO("Removing %s from %s", tapname, master); if (useOVS) - ret =3D virNetDevOpenvswitchRemovePort(master, tapname); + ret =3D virNetDevOpenvswitchRemovePort(tapname); else ret =3D virNetDevBridgeRemovePort(master, tapname); if (ret < 0) --=20 2.43.2 _______________________________________________ Devel mailing list -- devel@lists.libvirt.org To unsubscribe send an email to devel-leave@lists.libvirt.org From nobody Fri May 17 09:18:55 2024 Delivered-To: importer@patchew.org Received-SPF: none (zohomail.com: 8.43.85.245 is neither permitted nor denied by domain of lists.libvirt.org) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; spf=none (zohomail.com: 8.43.85.245 is neither permitted nor denied by domain of lists.libvirt.org) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=fail(p=none dis=none) header.from=redhat.com Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1712917394676159.75266053019482; Fri, 12 Apr 2024 03:23:14 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 996) id 93E481815; Fri, 12 Apr 2024 06:23:13 -0400 (EDT) Received: from lists.libvirt.org (localhost [IPv6:::1]) by lists.libvirt.org (Postfix) with ESMTP id 10CB5187E; Fri, 12 Apr 2024 06:19:28 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 996) id 463CE17D3; Fri, 12 Apr 2024 06:19:12 -0400 (EDT) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id 2C9AF17D5 for ; Fri, 12 Apr 2024 06:19:11 -0400 (EDT) Received: from mimecast-mx02.redhat.com (mx-ext.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-674-jAMrEUjPPsqbz037T3onrw-1; Fri, 12 Apr 2024 06:19:09 -0400 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.rdu2.redhat.com [10.11.54.7]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 2A6281C07F30 for ; Fri, 12 Apr 2024 10:19:09 +0000 (UTC) Received: from maggie.brq.redhat.com (unknown [10.43.3.102]) by smtp.corp.redhat.com (Postfix) with ESMTP id C966A1C060D1 for ; Fri, 12 Apr 2024 10:19:08 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-0.7 required=5.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H4, RCVD_IN_MSPIKE_WL,SPF_HELO_NONE autolearn=unavailable autolearn_force=no version=3.4.4 X-MC-Unique: jAMrEUjPPsqbz037T3onrw-1 From: Michal Privoznik To: devel@lists.libvirt.org Subject: [PATCH 4/5] conf: Move virDomainClearNetBandwidth() to src/hypervisor/ Date: Fri, 12 Apr 2024 12:19:04 +0200 Message-ID: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.11.54.7 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Message-ID-Hash: NP525HKRECLW4YFY7QY4A5IPISM66KQT X-Message-ID-Hash: NP525HKRECLW4YFY7QY4A5IPISM66KQT X-MailFrom: mprivozn@redhat.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-config-1; header-match-config-2; header-match-config-3; header-match-devel.lists.libvirt.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; suspicious-header X-Mailman-Version: 3.2.2 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Post: List-Subscribe: List-Unsubscribe: Content-Type: text/plain; charset="utf-8"; x-default="true" Content-Transfer-Encoding: quoted-printable X-ZM-MESSAGEID: 1712917394864100001 The reason virDomainClearNetBandwidth() exists in src/conf/ is that at the time its introduction we did not have a better place. But now we do. Firstly, virDomainClearNetBandwidth() is hypervisor agnostic code, but really has nothing to do with domain configuration (it doesn't parse/format XML). Secondly, in near future it'll call another function from src/hypervisor/ and that's not really allowed from src/conf/. Signed-off-by: Michal Privoznik Reviewed-by: Peter Krempa --- src/conf/netdev_bandwidth_conf.c | 14 -------------- src/conf/netdev_bandwidth_conf.h | 3 --- src/hypervisor/domain_interface.c | 16 ++++++++++++++++ src/hypervisor/domain_interface.h | 2 ++ src/libvirt_private.syms | 2 +- 5 files changed, 19 insertions(+), 18 deletions(-) diff --git a/src/conf/netdev_bandwidth_conf.c b/src/conf/netdev_bandwidth_c= onf.c index cdf289270a..9faa46a27f 100644 --- a/src/conf/netdev_bandwidth_conf.c +++ b/src/conf/netdev_bandwidth_conf.c @@ -199,20 +199,6 @@ virNetDevBandwidthFormat(const virNetDevBandwidth *def, return 0; } =20 -void -virDomainClearNetBandwidth(virDomainDef *def) -{ - size_t i; - virDomainNetType type; - - for (i =3D 0; i < def->nnets; i++) { - type =3D virDomainNetGetActualType(def->nets[i]); - if (virDomainNetGetActualBandwidth(def->nets[i]) && - virNetDevSupportsBandwidth(type)) - virNetDevBandwidthClear(def->nets[i]->ifname); - } -} - =20 bool virNetDevSupportsBandwidth(virDomainNetType type) { diff --git a/src/conf/netdev_bandwidth_conf.h b/src/conf/netdev_bandwidth_c= onf.h index c698cc9dbc..b679b0f51f 100644 --- a/src/conf/netdev_bandwidth_conf.h +++ b/src/conf/netdev_bandwidth_conf.h @@ -34,9 +34,6 @@ int virNetDevBandwidthFormat(const virNetDevBandwidth *de= f, unsigned int class_id, virBuffer *buf); =20 -void virDomainClearNetBandwidth(virDomainDef *def) - ATTRIBUTE_NONNULL(1); - bool virNetDevSupportsBandwidth(virDomainNetType type); bool virNetDevBandwidthHasFloor(const virNetDevBandwidth *b); bool virNetDevBandwidthSupportsFloor(virNetworkForwardType type); diff --git a/src/hypervisor/domain_interface.c b/src/hypervisor/domain_inte= rface.c index ccf4cb94bd..0a9cad8011 100644 --- a/src/hypervisor/domain_interface.c +++ b/src/hypervisor/domain_interface.c @@ -27,6 +27,7 @@ #include "domain_driver.h" #include "domain_interface.h" #include "domain_nwfilter.h" +#include "netdev_bandwidth_conf.h" #include "network_conf.h" #include "viralloc.h" #include "virconftypes.h" @@ -469,3 +470,18 @@ virDomainInterfaceDeleteDevice(virDomainDef *def, } =20 } + + +void +virDomainClearNetBandwidth(virDomainDef *def) +{ + size_t i; + virDomainNetType type; + + for (i =3D 0; i < def->nnets; i++) { + type =3D virDomainNetGetActualType(def->nets[i]); + if (virDomainNetGetActualBandwidth(def->nets[i]) && + virNetDevSupportsBandwidth(type)) + virNetDevBandwidthClear(def->nets[i]->ifname); + } +} diff --git a/src/hypervisor/domain_interface.h b/src/hypervisor/domain_inte= rface.h index 8047fdadfa..bb212cf3b8 100644 --- a/src/hypervisor/domain_interface.h +++ b/src/hypervisor/domain_interface.h @@ -44,3 +44,5 @@ void virDomainInterfaceDeleteDevice(virDomainDef *def, virDomainNetDef *net, bool priv_net_created, char *stateDir); +void virDomainClearNetBandwidth(virDomainDef *def) + ATTRIBUTE_NONNULL(1); diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 8642305a8b..328f5b347b 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -813,7 +813,6 @@ virDomainMomentDefPostParse; =20 =20 # conf/netdev_bandwidth_conf.h -virDomainClearNetBandwidth; virNetDevBandwidthFormat; virNetDevBandwidthHasFloor; virNetDevBandwidthParse; @@ -1635,6 +1634,7 @@ virDomainDriverParseBlkioDeviceStr; virDomainDriverSetupPersistentDefBlkioParams; =20 # hypervisor/domain_interface.h +virDomainClearNetBandwidth; virDomainInterfaceDeleteDevice; virDomainInterfaceEthernetConnect; virDomainInterfaceIsVnetCompatModel; --=20 2.43.2 _______________________________________________ Devel mailing list -- devel@lists.libvirt.org To unsubscribe send an email to devel-leave@lists.libvirt.org From nobody Fri May 17 09:18:55 2024 Delivered-To: importer@patchew.org Received-SPF: none (zohomail.com: 8.43.85.245 is neither permitted nor denied by domain of lists.libvirt.org) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; spf=none (zohomail.com: 8.43.85.245 is neither permitted nor denied by domain of lists.libvirt.org) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=fail(p=none dis=none) header.from=redhat.com Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1712917439328472.4215628110551; Fri, 12 Apr 2024 03:23:59 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 996) id 3F63D180B; Fri, 12 Apr 2024 06:23:58 -0400 (EDT) Received: from lists.libvirt.org (localhost [IPv6:::1]) by lists.libvirt.org (Postfix) with ESMTP id 1A65A17DA; Fri, 12 Apr 2024 06:19:32 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 996) id 40A9D17FC; Fri, 12 Apr 2024 06:19:13 -0400 (EDT) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id AAC0C17D6 for ; Fri, 12 Apr 2024 06:19:11 -0400 (EDT) Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-573-5ScxUxbGNGOoDb5ycUONCg-1; Fri, 12 Apr 2024 06:19:09 -0400 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.rdu2.redhat.com [10.11.54.7]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id B1F9D881E63 for ; Fri, 12 Apr 2024 10:19:09 +0000 (UTC) Received: from maggie.brq.redhat.com (unknown [10.43.3.102]) by smtp.corp.redhat.com (Postfix) with ESMTP id 5D7D91C0666A for ; Fri, 12 Apr 2024 10:19:09 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-0.7 required=5.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H4, RCVD_IN_MSPIKE_WL,SPF_HELO_NONE autolearn=unavailable autolearn_force=no version=3.4.4 X-MC-Unique: 5ScxUxbGNGOoDb5ycUONCg-1 From: Michal Privoznik To: devel@lists.libvirt.org Subject: [PATCH 5/5] domain_interface: Introduce and use virDomainInterfaceClearQoS() Date: Fri, 12 Apr 2024 12:19:05 +0200 Message-ID: <83113a503aab695da671ed93e8d58c7eb55cfbd6.1712917104.git.mprivozn@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.11.54.7 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Message-ID-Hash: V54BN2LDJIR2RRQUMFBITGSU32B2Z3R7 X-Message-ID-Hash: V54BN2LDJIR2RRQUMFBITGSU32B2Z3R7 X-MailFrom: mprivozn@redhat.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-config-1; header-match-config-2; header-match-config-3; header-match-devel.lists.libvirt.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; suspicious-header X-Mailman-Version: 3.2.2 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Post: List-Subscribe: List-Unsubscribe: Content-Type: text/plain; charset="utf-8"; x-default="true" Content-Transfer-Encoding: quoted-printable X-ZM-MESSAGEID: 1712917441010100001 In QEMU and LXC drivers in a few places just virNetDevBandwidthClear() is called. This means that if an interface is of openvswitch vport profile, its QoS is not removed. And to make matters worse - OVS is designed to remember state even when corresponding interface is gone. This leads to stale QoS settings piling up in OVS database. To resolve this, introduce virDomainInterfaceClearQoS() which looks at given interface and calls corresponding QoS clear function. Then, basically replace virNetDevBandwidthClear() calls in those hypervisor drivers with this new function. Resolves: https://issues.redhat.com/browse/RHEL-30373 Signed-off-by: Michal Privoznik --- src/hypervisor/domain_interface.c | 36 ++++++++++++++++++++++++++----- src/hypervisor/domain_interface.h | 2 ++ src/libvirt_private.syms | 1 + src/lxc/lxc_driver.c | 5 +---- src/qemu/qemu_hotplug.c | 18 +++------------- 5 files changed, 38 insertions(+), 24 deletions(-) diff --git a/src/hypervisor/domain_interface.c b/src/hypervisor/domain_inte= rface.c index 0a9cad8011..cc6aa8551a 100644 --- a/src/hypervisor/domain_interface.c +++ b/src/hypervisor/domain_interface.c @@ -472,16 +472,42 @@ virDomainInterfaceDeleteDevice(virDomainDef *def, } =20 =20 +/** + * virDomainInterfaceClearQoS + * @def: domain definition + * @net: a net definition in the VM + * + * For given interface @net clear its QoS settings in the + * host. NOP if @net has no QoS or is of a type that doesn't + * support QoS. + * + * Returns: 0 on success, + * -1 otherwise (with appropriate error reported) + */ +int +virDomainInterfaceClearQoS(virDomainDef *def, + virDomainNetDef *net) +{ + if (!virDomainNetGetActualBandwidth(net)) + return 0; + + if (!virNetDevSupportsBandwidth(virDomainNetGetActualType(net))) + return 0; + + if (virDomainNetDefIsOvsport(net)) { + return virNetDevOpenvswitchInterfaceClearQos(net->ifname, def->uui= d); + } + + return virNetDevBandwidthClear(net->ifname); +} + + void virDomainClearNetBandwidth(virDomainDef *def) { size_t i; - virDomainNetType type; =20 for (i =3D 0; i < def->nnets; i++) { - type =3D virDomainNetGetActualType(def->nets[i]); - if (virDomainNetGetActualBandwidth(def->nets[i]) && - virNetDevSupportsBandwidth(type)) - virNetDevBandwidthClear(def->nets[i]->ifname); + virDomainInterfaceClearQoS(def, def->nets[i]); } } diff --git a/src/hypervisor/domain_interface.h b/src/hypervisor/domain_inte= rface.h index bb212cf3b8..572b4dd8c5 100644 --- a/src/hypervisor/domain_interface.h +++ b/src/hypervisor/domain_interface.h @@ -44,5 +44,7 @@ void virDomainInterfaceDeleteDevice(virDomainDef *def, virDomainNetDef *net, bool priv_net_created, char *stateDir); +int virDomainInterfaceClearQoS(virDomainDef *def, + virDomainNetDef *net); void virDomainClearNetBandwidth(virDomainDef *def) ATTRIBUTE_NONNULL(1); diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 328f5b347b..839fe4f545 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -1635,6 +1635,7 @@ virDomainDriverSetupPersistentDefBlkioParams; =20 # hypervisor/domain_interface.h virDomainClearNetBandwidth; +virDomainInterfaceClearQoS; virDomainInterfaceDeleteDevice; virDomainInterfaceEthernetConnect; virDomainInterfaceIsVnetCompatModel; diff --git a/src/lxc/lxc_driver.c b/src/lxc/lxc_driver.c index 89ef9416aa..1842ae8f0e 100644 --- a/src/lxc/lxc_driver.c +++ b/src/lxc/lxc_driver.c @@ -4052,10 +4052,7 @@ lxcDomainDetachDeviceNetLive(virDomainObj *vm, actualType =3D virDomainNetGetActualType(detach); =20 /* clear network bandwidth */ - if (virDomainNetGetActualBandwidth(detach) && - virNetDevSupportsBandwidth(actualType) && - virNetDevBandwidthClear(detach->ifname)) - goto cleanup; + virDomainInterfaceClearQoS(vm->def, detach); =20 switch (actualType) { case VIR_DOMAIN_NET_TYPE_BRIDGE: diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c index 054053729c..774962b0df 100644 --- a/src/qemu/qemu_hotplug.c +++ b/src/qemu/qemu_hotplug.c @@ -4059,11 +4059,8 @@ qemuDomainChangeNet(virQEMUDriver *driver, goto cleanup; } } else { - /* - * virNetDevBandwidthSet() doesn't clear any existing - * setting unless something new is being set. - */ - virNetDevBandwidthClear(newdev->ifname); + if (virDomainInterfaceClearQoS(vm->def, newdev) < 0) + goto cleanup; } =20 /* If the old bandwidth was cleared out, restore qdisc. */ @@ -4800,16 +4797,7 @@ qemuDomainRemoveNetDevice(virQEMUDriver *driver, if (!(charDevAlias =3D qemuAliasChardevFromDevAlias(net->info.alias))) return -1; =20 - if (virNetDevSupportsBandwidth(virDomainNetGetActualType(net))) { - if (virDomainNetDefIsOvsport(net)) { - if (virNetDevOpenvswitchInterfaceClearQos(net->ifname, vm->def= ->uuid) < 0) - VIR_WARN("cannot clear bandwidth setting for ovs device : = %s", - net->ifname); - } else if (virNetDevBandwidthClear(net->ifname) < 0) { - VIR_WARN("cannot clear bandwidth setting for device : %s", - net->ifname); - } - } + virDomainInterfaceClearQoS(vm->def, net); =20 /* deactivate the tap/macvtap device on the host, which could also * affect the parent device (e.g. macvtap passthrough mode sets --=20 2.43.2 _______________________________________________ Devel mailing list -- devel@lists.libvirt.org To unsubscribe send an email to devel-leave@lists.libvirt.org