File libvirt-cgroup-Add-accessors-for-cpuset.memory_migrate.patch of Package libvirt

From 4a74c223d5bb454d201e3e45b2d997d50d9926dd Mon Sep 17 00:00:00 2001
Message-Id: <4a74c223d5bb454d201e3e45b2d997d50d9926dd@dist-git>
From: Martin Kletzander <mkletzan@redhat.com>
Date: Fri, 3 Apr 2015 18:50:10 +0200
Subject: [PATCH] cgroup: Add accessors for cpuset.memory_migrate

https://bugzilla.redhat.com/show_bug.cgi?id=1198497

Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
(cherry picked from commit ba1dfc5b6a65914ec8ceadbcfbe16c17e83cc760)
Signed-off-by: Martin Kletzander <mkletzan@redhat.com>

 Conflicts:
	src/libvirt_private.syms -- cgroup -> vircgroup rename
	src/util/vircgroup.c     --        ditto
	src/util/vircgroup.h     --        ditto

Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
---
 src/libvirt_private.syms |  2 ++
 src/util/cgroup.c        | 38 ++++++++++++++++++++++++++++++++++++++
 src/util/cgroup.h        |  3 +++
 3 files changed, 43 insertions(+)

diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
index 640bd99..927d155 100644
--- a/src/libvirt_private.syms
+++ b/src/libvirt_private.syms
@@ -98,6 +98,7 @@ virCgroupGetCpuacctPercpuUsage;
 virCgroupGetCpuacctStat;
 virCgroupGetCpuacctUsage;
 virCgroupGetCpusetCpus;
+virCgroupGetCpusetMemoryMigrate;
 virCgroupGetCpusetMems;
 virCgroupGetFreezerState;
 virCgroupGetMemSwapHardLimit;
@@ -117,6 +118,7 @@ virCgroupSetCpuCfsPeriod;
 virCgroupSetCpuCfsQuota;
 virCgroupSetCpuShares;
 virCgroupSetCpusetCpus;
+virCgroupSetCpusetMemoryMigrate;
 virCgroupSetCpusetMems;
 virCgroupSetFreezerState;
 virCgroupSetMemSwapHardLimit;
diff --git a/src/util/cgroup.c b/src/util/cgroup.c
index 69e581f..e7775b3 100644
--- a/src/util/cgroup.c
+++ b/src/util/cgroup.c
@@ -464,6 +464,7 @@ static int virCgroupCpuSetInherit(virCgroupPtr parent, virCgroupPtr group)
     const char *inherit_values[] = {
         "cpuset.cpus",
         "cpuset.mems",
+        "cpuset.memory_migrate",
     };
 
     VIR_DEBUG("Setting up inheritance %s -> %s", parent->path, group->path);
@@ -1403,6 +1404,43 @@ int virCgroupGetCpusetMems(virCgroupPtr group, char **mems)
 }
 
 /**
+ * virCgroupSetCpusetMemoryMigrate:
+ *
+ * @group: The cgroup to set cpuset.memory_migrate for
+ * @migrate: Whether to migrate the memory on change or not
+ *
+ * Returns: 0 on success
+ */
+int
+virCgroupSetCpusetMemoryMigrate(virCgroupPtr group, bool migrate)
+{
+    return virCgroupSetValueStr(group,
+                                VIR_CGROUP_CONTROLLER_CPUSET,
+                                "cpuset.memory_migrate",
+                                migrate ? "1" : "0");
+}
+
+/**
+ * virCgroupGetCpusetMemoryMigrate:
+ *
+ * @group: The cgroup to get cpuset.memory_migrate for
+ * @migrate: Migration setting
+ *
+ * Returns: 0 on success
+ */
+int
+virCgroupGetCpusetMemoryMigrate(virCgroupPtr group, bool *migrate)
+{
+    unsigned long long value = 0;
+    int ret = virCgroupGetValueU64(group,
+                                   VIR_CGROUP_CONTROLLER_CPUSET,
+                                   "cpuset.memory_migrate",
+                                   &value);
+    *migrate = !!value;
+    return ret;
+}
+
+/**
  * virCgroupSetCpusetCpus:
  *
  * @group: The cgroup to set cpuset.cpus for
diff --git a/src/util/cgroup.h b/src/util/cgroup.h
index 38fa4b7..d9c3abf 100644
--- a/src/util/cgroup.h
+++ b/src/util/cgroup.h
@@ -149,6 +149,9 @@ int virCgroupGetFreezerState(virCgroupPtr group, char **state);
 int virCgroupSetCpusetMems(virCgroupPtr group, const char *mems);
 int virCgroupGetCpusetMems(virCgroupPtr group, char **mems);
 
+int virCgroupSetCpusetMemoryMigrate(virCgroupPtr group, bool migrate);
+int virCgroupGetCpusetMemoryMigrate(virCgroupPtr group, bool *migrate);
+
 int virCgroupSetCpusetCpus(virCgroupPtr group, const char *cpus);
 int virCgroupGetCpusetCpus(virCgroupPtr group, char **cpus);
 
-- 
2.3.5

openSUSE Build Service is sponsored by