Blame SOURCES/libvirt-util-vircgroup-move-virCgroupGetValueStr-out-of-virCgroupGetValueForBlkDev.patch

c313de
From 10bd6c74aa383403fae5ef7f4aec98d28246d972 Mon Sep 17 00:00:00 2001
c313de
Message-Id: <10bd6c74aa383403fae5ef7f4aec98d28246d972@dist-git>
c313de
From: Pavel Hrdina <phrdina@redhat.com>
c313de
Date: Tue, 2 Jul 2019 15:13:25 +0200
c313de
Subject: [PATCH] util: vircgroup: move virCgroupGetValueStr out of
c313de
 virCgroupGetValueForBlkDev
c313de
MIME-Version: 1.0
c313de
Content-Type: text/plain; charset=UTF-8
c313de
Content-Transfer-Encoding: 8bit
c313de
c313de
If we need to get a path of specific file and we need to check its
c313de
existence before we use it then we can reuse that path to get value
c313de
for specific device.  This way we will not build the path again in
c313de
virCgroupGetValueForBlkDev.
c313de
c313de
Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
c313de
Reviewed-by: Ján Tomko <jtomko@redhat.com>
c313de
(cherry picked from commit c23829f18a9b104466af88eb909a3fd9660b9cbe)
c313de
c313de
Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1658890
c313de
c313de
Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
c313de
Message-Id: <72fe6534d0e19e271bac2aeb35bac028e67cfac2.1562073117.git.phrdina@redhat.com>
c313de
Reviewed-by: Ján Tomko <jtomko@redhat.com>
c313de
---
c313de
 src/util/vircgroup.c     |  8 +----
c313de
 src/util/vircgrouppriv.h |  6 ++--
c313de
 src/util/vircgroupv1.c   | 70 ++++++++++++++++++++++++++--------------
c313de
 src/util/vircgroupv2.c   | 65 +++++++++++++++++++++++--------------
c313de
 4 files changed, 88 insertions(+), 61 deletions(-)
c313de
c313de
diff --git a/src/util/vircgroup.c b/src/util/vircgroup.c
c313de
index 769e23a523..37f6def08d 100644
c313de
--- a/src/util/vircgroup.c
c313de
+++ b/src/util/vircgroup.c
c313de
@@ -538,20 +538,14 @@ virCgroupGetValueStr(virCgroupPtr group,
c313de
 
c313de
 
c313de
 int
c313de
-virCgroupGetValueForBlkDev(virCgroupPtr group,
c313de
-                           int controller,
c313de
-                           const char *key,
c313de
+virCgroupGetValueForBlkDev(const char *str,
c313de
                            const char *path,
c313de
                            char **value)
c313de
 {
c313de
     VIR_AUTOFREE(char *) prefix = NULL;
c313de
-    VIR_AUTOFREE(char *) str = NULL;
c313de
     char **lines = NULL;
c313de
     int ret = -1;
c313de
 
c313de
-    if (virCgroupGetValueStr(group, controller, key, &str) < 0)
c313de
-        goto error;
c313de
-
c313de
     if (!(prefix = virCgroupGetBlockDevString(path)))
c313de
         goto error;
c313de
 
c313de
diff --git a/src/util/vircgrouppriv.h b/src/util/vircgrouppriv.h
c313de
index bdb3d493b1..aec38e2ac5 100644
c313de
--- a/src/util/vircgrouppriv.h
c313de
+++ b/src/util/vircgrouppriv.h
c313de
@@ -102,10 +102,8 @@ int virCgroupPartitionEscape(char **path);
c313de
 
c313de
 char *virCgroupGetBlockDevString(const char *path);
c313de
 
c313de
-int virCgroupGetValueForBlkDev(virCgroupPtr group,
c313de
-                               int controller,
c313de
-                               const char *key,
c313de
-                               const char *path,
c313de
+int virCgroupGetValueForBlkDev(const char *str,
c313de
+                               const char *devPath,
c313de
                                char **value);
c313de
 
c313de
 int virCgroupNew(pid_t pid,
c313de
diff --git a/src/util/vircgroupv1.c b/src/util/vircgroupv1.c
c313de
index 58bd20d636..e51db6ee1f 100644
c313de
--- a/src/util/vircgroupv1.c
c313de
+++ b/src/util/vircgroupv1.c
c313de
@@ -1181,12 +1181,16 @@ virCgroupV1GetBlkioDeviceWeight(virCgroupPtr group,
c313de
                                 unsigned int *weight)
c313de
 {
c313de
     VIR_AUTOFREE(char *) str = NULL;
c313de
+    VIR_AUTOFREE(char *) value = NULL;
c313de
 
c313de
-    if (virCgroupGetValueForBlkDev(group,
c313de
-                                   VIR_CGROUP_CONTROLLER_BLKIO,
c313de
-                                   "blkio.weight_device",
c313de
-                                   path,
c313de
-                                   &str) < 0)
c313de
+    if (virCgroupGetValueStr(group,
c313de
+                             VIR_CGROUP_CONTROLLER_BLKIO,
c313de
+                             "blkio.weight_device",
c313de
+                             &value) < 0) {
c313de
+        return -1;
c313de
+    }
c313de
+
c313de
+    if (virCgroupGetValueForBlkDev(value, path, &str) < 0)
c313de
         return -1;
c313de
 
c313de
     if (!str) {
c313de
@@ -1229,12 +1233,16 @@ virCgroupV1GetBlkioDeviceReadIops(virCgroupPtr group,
c313de
                                   unsigned int *riops)
c313de
 {
c313de
     VIR_AUTOFREE(char *) str = NULL;
c313de
+    VIR_AUTOFREE(char *) value = NULL;
c313de
 
c313de
-    if (virCgroupGetValueForBlkDev(group,
c313de
-                                   VIR_CGROUP_CONTROLLER_BLKIO,
c313de
-                                   "blkio.throttle.read_iops_device",
c313de
-                                   path,
c313de
-                                   &str) < 0)
c313de
+    if (virCgroupGetValueStr(group,
c313de
+                             VIR_CGROUP_CONTROLLER_BLKIO,
c313de
+                             "blkio.throttle.read_iops_device",
c313de
+                             &value) < 0) {
c313de
+        return -1;
c313de
+    }
c313de
+
c313de
+    if (virCgroupGetValueForBlkDev(value, path, &str) < 0)
c313de
         return -1;
c313de
 
c313de
     if (!str) {
c313de
@@ -1277,12 +1285,16 @@ virCgroupV1GetBlkioDeviceWriteIops(virCgroupPtr group,
c313de
                                    unsigned int *wiops)
c313de
 {
c313de
     VIR_AUTOFREE(char *) str = NULL;
c313de
+    VIR_AUTOFREE(char *) value = NULL;
c313de
 
c313de
-    if (virCgroupGetValueForBlkDev(group,
c313de
-                                   VIR_CGROUP_CONTROLLER_BLKIO,
c313de
-                                   "blkio.throttle.write_iops_device",
c313de
-                                   path,
c313de
-                                   &str) < 0)
c313de
+    if (virCgroupGetValueStr(group,
c313de
+                             VIR_CGROUP_CONTROLLER_BLKIO,
c313de
+                             "blkio.throttle.write_iops_device",
c313de
+                             &value) < 0) {
c313de
+        return -1;
c313de
+    }
c313de
+
c313de
+    if (virCgroupGetValueForBlkDev(value, path, &str) < 0)
c313de
         return -1;
c313de
 
c313de
     if (!str) {
c313de
@@ -1325,12 +1337,16 @@ virCgroupV1GetBlkioDeviceReadBps(virCgroupPtr group,
c313de
                                  unsigned long long *rbps)
c313de
 {
c313de
     VIR_AUTOFREE(char *) str = NULL;
c313de
+    VIR_AUTOFREE(char *) value = NULL;
c313de
 
c313de
-    if (virCgroupGetValueForBlkDev(group,
c313de
-                                   VIR_CGROUP_CONTROLLER_BLKIO,
c313de
-                                   "blkio.throttle.read_bps_device",
c313de
-                                   path,
c313de
-                                   &str) < 0)
c313de
+    if (virCgroupGetValueStr(group,
c313de
+                             VIR_CGROUP_CONTROLLER_BLKIO,
c313de
+                             "blkio.throttle.read_bps_device",
c313de
+                             &value) < 0) {
c313de
+        return -1;
c313de
+    }
c313de
+
c313de
+    if (virCgroupGetValueForBlkDev(value, path, &str) < 0)
c313de
         return -1;
c313de
 
c313de
     if (!str) {
c313de
@@ -1373,12 +1389,16 @@ virCgroupV1GetBlkioDeviceWriteBps(virCgroupPtr group,
c313de
                                   unsigned long long *wbps)
c313de
 {
c313de
     VIR_AUTOFREE(char *) str = NULL;
c313de
+    VIR_AUTOFREE(char *) value = NULL;
c313de
 
c313de
-    if (virCgroupGetValueForBlkDev(group,
c313de
-                                   VIR_CGROUP_CONTROLLER_BLKIO,
c313de
-                                   "blkio.throttle.write_bps_device",
c313de
-                                   path,
c313de
-                                   &str) < 0)
c313de
+    if (virCgroupGetValueStr(group,
c313de
+                             VIR_CGROUP_CONTROLLER_BLKIO,
c313de
+                             "blkio.throttle.write_bps_device",
c313de
+                             &value) < 0) {
c313de
+        return -1;
c313de
+    }
c313de
+
c313de
+    if (virCgroupGetValueForBlkDev(value, path, &str) < 0)
c313de
         return -1;
c313de
 
c313de
     if (!str) {
c313de
diff --git a/src/util/vircgroupv2.c b/src/util/vircgroupv2.c
c313de
index 749efa199b..e9bb331dd4 100644
c313de
--- a/src/util/vircgroupv2.c
c313de
+++ b/src/util/vircgroupv2.c
c313de
@@ -787,15 +787,18 @@ virCgroupV2GetBlkioDeviceWeight(virCgroupPtr group,
c313de
                                 unsigned int *weight)
c313de
 {
c313de
     VIR_AUTOFREE(char *) str = NULL;
c313de
+    VIR_AUTOFREE(char *) value = NULL;
c313de
 
c313de
-    if (virCgroupGetValueForBlkDev(group,
c313de
-                                   VIR_CGROUP_CONTROLLER_BLKIO,
c313de
-                                   "io.weight",
c313de
-                                   path,
c313de
-                                   &str) < 0) {
c313de
+    if (virCgroupGetValueStr(group,
c313de
+                             VIR_CGROUP_CONTROLLER_BLKIO,
c313de
+                             "io.weight",
c313de
+                             &value) < 0) {
c313de
         return -1;
c313de
     }
c313de
 
c313de
+    if (virCgroupGetValueForBlkDev(value, path, &str) < 0)
c313de
+        return -1;
c313de
+
c313de
     if (!str) {
c313de
         *weight = 0;
c313de
     } else if (virStrToLong_ui(str, NULL, 10, weight) < 0) {
c313de
@@ -841,17 +844,20 @@ virCgroupV2GetBlkioDeviceReadIops(virCgroupPtr group,
c313de
                                   unsigned int *riops)
c313de
 {
c313de
     VIR_AUTOFREE(char *) str = NULL;
c313de
+    VIR_AUTOFREE(char *) value = NULL;
c313de
     const char *name = "riops=";
c313de
     char *tmp;
c313de
 
c313de
-    if (virCgroupGetValueForBlkDev(group,
c313de
-                                   VIR_CGROUP_CONTROLLER_BLKIO,
c313de
-                                   "io.max",
c313de
-                                   path,
c313de
-                                   &str) < 0) {
c313de
+    if (virCgroupGetValueStr(group,
c313de
+                             VIR_CGROUP_CONTROLLER_BLKIO,
c313de
+                             "io.max",
c313de
+                             &value) < 0) {
c313de
         return -1;
c313de
     }
c313de
 
c313de
+    if (virCgroupGetValueForBlkDev(value, path, &str) < 0)
c313de
+        return -1;
c313de
+
c313de
     if (!str) {
c313de
         *riops = 0;
c313de
     } else {
c313de
@@ -909,17 +915,20 @@ virCgroupV2GetBlkioDeviceWriteIops(virCgroupPtr group,
c313de
                                    unsigned int *wiops)
c313de
 {
c313de
     VIR_AUTOFREE(char *) str = NULL;
c313de
+    VIR_AUTOFREE(char *) value = NULL;
c313de
     const char *name = "wiops=";
c313de
     char *tmp;
c313de
 
c313de
-    if (virCgroupGetValueForBlkDev(group,
c313de
-                                   VIR_CGROUP_CONTROLLER_BLKIO,
c313de
-                                   "io.max",
c313de
-                                   path,
c313de
-                                   &str) < 0) {
c313de
+    if (virCgroupGetValueStr(group,
c313de
+                             VIR_CGROUP_CONTROLLER_BLKIO,
c313de
+                             "io.max",
c313de
+                             &value) < 0) {
c313de
         return -1;
c313de
     }
c313de
 
c313de
+    if (virCgroupGetValueForBlkDev(value, path, &str) < 0)
c313de
+        return -1;
c313de
+
c313de
     if (!str) {
c313de
         *wiops = 0;
c313de
     } else {
c313de
@@ -977,17 +986,20 @@ virCgroupV2GetBlkioDeviceReadBps(virCgroupPtr group,
c313de
                                  unsigned long long *rbps)
c313de
 {
c313de
     VIR_AUTOFREE(char *) str = NULL;
c313de
+    VIR_AUTOFREE(char *) value = NULL;
c313de
     const char *name = "rbps=";
c313de
     char *tmp;
c313de
 
c313de
-    if (virCgroupGetValueForBlkDev(group,
c313de
-                                   VIR_CGROUP_CONTROLLER_BLKIO,
c313de
-                                   "io.max",
c313de
-                                   path,
c313de
-                                   &str) < 0) {
c313de
+    if (virCgroupGetValueStr(group,
c313de
+                             VIR_CGROUP_CONTROLLER_BLKIO,
c313de
+                             "io.max",
c313de
+                             &value) < 0) {
c313de
         return -1;
c313de
     }
c313de
 
c313de
+    if (virCgroupGetValueForBlkDev(value, path, &str) < 0)
c313de
+        return -1;
c313de
+
c313de
     if (!str) {
c313de
         *rbps = 0;
c313de
     } else {
c313de
@@ -1045,17 +1057,20 @@ virCgroupV2GetBlkioDeviceWriteBps(virCgroupPtr group,
c313de
                                   unsigned long long *wbps)
c313de
 {
c313de
     VIR_AUTOFREE(char *) str = NULL;
c313de
+    VIR_AUTOFREE(char *) value = NULL;
c313de
     const char *name = "wbps=";
c313de
     char *tmp;
c313de
 
c313de
-    if (virCgroupGetValueForBlkDev(group,
c313de
-                                   VIR_CGROUP_CONTROLLER_BLKIO,
c313de
-                                   "io.max",
c313de
-                                   path,
c313de
-                                   &str) < 0) {
c313de
+    if (virCgroupGetValueStr(group,
c313de
+                             VIR_CGROUP_CONTROLLER_BLKIO,
c313de
+                             "io.max",
c313de
+                             &value) < 0) {
c313de
         return -1;
c313de
     }
c313de
 
c313de
+    if (virCgroupGetValueForBlkDev(value, path, &str) < 0)
c313de
+        return -1;
c313de
+
c313de
     if (!str) {
c313de
         *wbps = 0;
c313de
     } else {
c313de
-- 
c313de
2.22.0
c313de