]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
lxc: fuse: Fill in MemAvailable for /proc/meminfo
authorCole Robinson <crobinso@redhat.com>
Thu, 21 Jan 2016 18:18:04 +0000 (13:18 -0500)
committerCole Robinson <crobinso@redhat.com>
Thu, 17 Mar 2016 19:58:49 +0000 (15:58 -0400)
'free' on Fedora 23 will use MemAvailable to calculate its 'available'
field, but we are passing through the host's value. Set it to match
MemFree, which is what 'free' will do for older linux that don't have
MemAvailable

https://bugzilla.redhat.com/show_bug.cgi?id=1300781
(cherry picked from commit c7be484d1136834614089c9a74a3818594852f24)

src/lxc/lxc_fuse.c

index e6369f8ffc8e5509b58d0fbcf4c3a40a7d876db4..691ddee9eb660e022e491e2bf2dda14665c70805 100644 (file)
@@ -174,6 +174,14 @@ static int lxcProcReadMeminfo(char *hostpath, virDomainDefPtr def,
                     virDomainDefGetMemoryActual(def))) {
             virBufferAsprintf(new_meminfo, "MemFree:        %8llu kB\n",
                               (meminfo.memtotal - meminfo.memusage));
+        } else if (STREQ(line, "MemAvailable") &&
+                   (virMemoryLimitIsSet(def->mem.hard_limit) ||
+                    virDomainDefGetMemoryActual(def))) {
+            /* MemAvailable is actually MemFree + SRReclaimable +
+               some other bits, but MemFree is the closest approximation
+               we have */
+            virBufferAsprintf(new_meminfo, "MemAvailable:   %8llu kB\n",
+                              (meminfo.memtotal - meminfo.memusage));
         } else if (STREQ(line, "Buffers")) {
             virBufferAsprintf(new_meminfo, "Buffers:        %8d kB\n", 0);
         } else if (STREQ(line, "Cached")) {