File 94714594-qemu-Reset-the-maximum-locked-memory-on-hotplug-fail.patch of Package libvirt.22292
commit 94714594c5a868ba9739a7d5bd1d7d7771f730b3
Author: Eric Farman <farman@linux.ibm.com>
Date: Tue Sep 3 22:09:47 2019 +0200
qemu: Reset the maximum locked memory on hotplug fail
If attaching a PCI hostdev fails, there are several things that
need to be un-done as part of the cleanup. One thing that is
not done is re-calculating/re-setting the maximum amount of locked
memory for the domain, since we may have changed that.
Let's fix that, just to ensure everything is back the way it was.
Signed-off-by: Eric Farman <farman@linux.ibm.com>
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
Index: libvirt-5.1.0/src/qemu/qemu_hotplug.c
===================================================================
--- libvirt-5.1.0.orig/src/qemu/qemu_hotplug.c
+++ libvirt-5.1.0/src/qemu/qemu_hotplug.c
@@ -1686,6 +1686,7 @@ qemuDomainAttachHostPCIDevice(virQEMUDri
bool teardowncgroup = false;
bool teardownlabel = false;
bool teardowndevice = false;
+ bool teardownmemlock = false;
int backend;
virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver);
unsigned int flags = 0;
@@ -1727,6 +1728,7 @@ qemuDomainAttachHostPCIDevice(virQEMUDri
if (qemuDomainAdjustMaxMemLockHostdev(vm, hostdev) < 0)
goto error;
+ teardownmemlock = true;
if (qemuDomainNamespaceSetupHostdev(vm, hostdev) < 0)
goto error;
@@ -1807,6 +1809,8 @@ qemuDomainAttachHostPCIDevice(virQEMUDri
if (teardowndevice &&
qemuDomainNamespaceTeardownHostdev(vm, hostdev) < 0)
VIR_WARN("Unable to remove host device from /dev");
+ if (teardownmemlock && qemuDomainAdjustMaxMemLock(vm) < 0)
+ VIR_WARN("Unable to reset maximum locked memory on hotplug fail");
if (releaseaddr)
qemuDomainReleaseDeviceAddress(vm, info, NULL);