Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
SUSE:SLE-15-SP3:Update
libvirt.22881
18ec405a-libxl-release-graphics-ports.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 18ec405a-libxl-release-graphics-ports.patch of Package libvirt.22881
commit 18ec405a36e24c86abe1104699c0bffdc91d5169 Author: Jim Fehlig <jfehlig@suse.com> Date: Mon Feb 7 13:57:07 2022 -0700 libxl: Release auto-allocated spice ports While VNC ports auto-allocated by the libxl driver are released in libxlDomainCleanup, spice ports are overlooked. Rework the existing logic to release any auto-allocated graphics ports, not just the VNC port of the first graphics device. Signed-off-by: Jim Fehlig <jfehlig@suse.com> Reviewed-by: Ján Tomko <jtomko@redhat.com> Index: libvirt-7.1.0/src/libxl/libxl_domain.c =================================================================== --- libvirt-7.1.0.orig/src/libxl/libxl_domain.c +++ libvirt-7.1.0/src/libxl/libxl_domain.c @@ -860,11 +860,11 @@ libxlDomainCleanup(libxlDriverPrivatePtr { libxlDomainObjPrivatePtr priv = vm->privateData; g_autoptr(libxlDriverConfig) cfg = libxlDriverConfigGet(driver); - int vnc_port; char *file; virHostdevManagerPtr hostdev_mgr = driver->hostdevMgr; unsigned int hostdev_flags = VIR_HOSTDEV_SP_PCI; g_autoptr(virConnect) conn = NULL; + size_t i; VIR_DEBUG("Cleaning up domain with id '%d' and name '%s'", vm->def->id, vm->def->name); @@ -907,19 +907,35 @@ libxlDomainCleanup(libxlDriverPrivatePtr if (!!g_atomic_int_dec_and_test(&driver->nactive) && driver->inhibitCallback) driver->inhibitCallback(false, driver->inhibitOpaque); - if ((vm->def->ngraphics == 1) && - vm->def->graphics[0]->type == VIR_DOMAIN_GRAPHICS_TYPE_VNC && - vm->def->graphics[0]->data.vnc.autoport) { - vnc_port = vm->def->graphics[0]->data.vnc.port; - if (vnc_port >= LIBXL_VNC_PORT_MIN) { - if (virPortAllocatorRelease(vnc_port) < 0) - VIR_DEBUG("Could not mark port %d as unused", vnc_port); + /* Release auto-allocated graphics ports */ + for (i = 0; i < vm->def->ngraphics; i++) { + virDomainGraphicsDefPtr graphics = vm->def->graphics[i]; + int gport = -1; + + switch (graphics->type) { + case VIR_DOMAIN_GRAPHICS_TYPE_VNC: + if (graphics->data.vnc.autoport && + graphics->data.vnc.port >= LIBXL_VNC_PORT_MIN) + gport = graphics->data.vnc.port; + break; + case VIR_DOMAIN_GRAPHICS_TYPE_SPICE: + if (graphics->data.spice.autoport) + gport = graphics->data.spice.port; + break; + case VIR_DOMAIN_GRAPHICS_TYPE_SDL: + case VIR_DOMAIN_GRAPHICS_TYPE_RDP: + case VIR_DOMAIN_GRAPHICS_TYPE_DESKTOP: + case VIR_DOMAIN_GRAPHICS_TYPE_EGL_HEADLESS: + case VIR_DOMAIN_GRAPHICS_TYPE_LAST: + break; + } + if (gport != -1) { + if (virPortAllocatorRelease(gport) < 0) + VIR_DEBUG("Could not mark port %d as unused", gport); } } if ((vm->def->nnets)) { - size_t i; - for (i = 0; i < vm->def->nnets; i++) { virDomainNetDefPtr net = vm->def->nets[i];
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor