[libvirt PATCH v2 3/4] qemu: Refactor qemuDomainAdjustMaxMemLock()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Store the current memory locking limit and the desired one
separately, which will help with later changes.

Signed-off-by: Andrea Bolognani <abologna@xxxxxxxxxx>
Reviewed-by: Michal Privoznik <mprivozn@xxxxxxxxxx>
---
 src/qemu/qemu_domain.c | 20 +++++++++++---------
 1 file changed, 11 insertions(+), 9 deletions(-)

diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
index 1e9178764b..f8b0e1a62a 100644
--- a/src/qemu/qemu_domain.c
+++ b/src/qemu/qemu_domain.c
@@ -9239,27 +9239,29 @@ int
 qemuDomainAdjustMaxMemLock(virDomainObjPtr vm,
                            bool forceVFIO)
 {
-    unsigned long long bytes = 0;
+    unsigned long long currentMemLock = 0;
+    unsigned long long desiredMemLock = 0;
 
-    bytes = qemuDomainGetMemLockLimitBytes(vm->def, forceVFIO);
+    desiredMemLock = qemuDomainGetMemLockLimitBytes(vm->def, forceVFIO);
+    if (virProcessGetMaxMemLock(vm->pid, &currentMemLock) < 0)
+        return -1;
 
-    if (bytes) {
+    if (desiredMemLock > 0) {
         /* If this is the first time adjusting the limit, save the current
          * value so that we can restore it once memory locking is no longer
          * required */
-        if (!vm->originalMemlock) {
-            if (virProcessGetMaxMemLock(vm->pid, &(vm->originalMemlock)) < 0)
-                return -1;
+        if (vm->originalMemlock == 0) {
+            vm->originalMemlock = currentMemLock;
         }
     } else {
         /* Once memory locking is no longer required, we can restore the
          * original, usually very low, limit */
-        bytes = vm->originalMemlock;
+        desiredMemLock = vm->originalMemlock;
         vm->originalMemlock = 0;
     }
 
-    if (bytes > 0 &&
-        virProcessSetMaxMemLock(vm->pid, bytes) < 0) {
+    if (desiredMemLock > 0 &&
+        virProcessSetMaxMemLock(vm->pid, desiredMemLock) < 0) {
         return -1;
     }
 
-- 
2.26.2




[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]

  Powered by Linux