<div dir="ltr"><div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Sep 18, 2018 at 2:17 PM, Pavel Hrdina <span dir="ltr"><<a href="mailto:phrdina@redhat.com" target="_blank">phrdina@redhat.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Once we introduce cgroup v2 support we need to handle processes and<br>
threads differently.<br>
<br>
Signed-off-by: Pavel Hrdina <<a href="mailto:phrdina@redhat.com" target="_blank">phrdina@redhat.com</a>><br></blockquote><div><br></div><div>Reviewed-by: Fabiano Fidêncio <<a href="mailto:fidencio@redhat.com" target="_blank">fidencio@redhat.com</a>><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
---<br>
 src/libvirt_private.syms |  1 +<br>
 src/qemu/qemu_process.c  |  2 +-<br>
 src/util/vircgroup.c     | 29 +++++++++++++++++++++++++++++<br>
 src/util/vircgroup.h     |  1 +<br>
 4 files changed, 32 insertions(+), 1 deletion(-)<br>
<br>
diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms<br>
index eac66b0174..ad7ce57b65 100644<br>
--- a/src/libvirt_private.syms<br>
+++ b/src/libvirt_private.syms<br>
@@ -1500,6 +1500,7 @@ virBufferVasprintf;<br>
 # util/vircgroup.h<br>
 virCgroupAddMachineProcess;<br>
 virCgroupAddProcess;<br>
+virCgroupAddThread;<br>
 virCgroupAllowAllDevices;<br>
 virCgroupAllowDevice;<br>
 virCgroupAllowDevicePath;<br>
diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c<br>
index 249dac39f2..00dcd5b580 100644<br>
--- a/src/qemu/qemu_process.c<br>
+++ b/src/qemu/qemu_process.c<br>
@@ -2549,7 +2549,7 @@ qemuProcessSetupPid(virDomainO<wbr>bjPtr vm,<br>
             goto cleanup;<br>
<br>
         /* Move the thread to the sub dir */<br>
-        if (virCgroupAddProcess(cgroup, pid) < 0)<br>
+        if (virCgroupAddThread(cgroup, pid) < 0)<br></blockquote><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
             goto cleanup;<br>
<br>
     }<br>
diff --git a/src/util/vircgroup.c b/src/util/vircgroup.c<br>
index 1d361762c5..3211f63cb1 100644<br>
--- a/src/util/vircgroup.c<br>
+++ b/src/util/vircgroup.c<br>
@@ -1159,6 +1159,7 @@ virCgroupNew(pid_t pid,<br>
 typedef enum {<br>
     VIR_CGROUP_TASK_PROCESS = 0,<br>
     VIR_CGROUP_TASK_SYSTEMD = 1 << 0,<br>
+    VIR_CGROUP_TASK_THREAD = 1 << 1,<br>
 } virCgroupTaskFlags;<br>
<br>
<br>
@@ -1227,6 +1228,24 @@ virCgroupAddMachineProcess(vir<wbr>CgroupPtr group, pid_t pid)<br>
                                     VIR_CGROUP_TASK_SYSTEMD);<br>
 }<br>
<br>
+/**<br>
+ * virCgroupAddThread:<br>
+ *<br>
+ * @group: The cgroup to add a thread to<br>
+ * @pid: The pid of the thread to add<br>
+ *<br>
+ * Will add the thread to all controllers, except the<br>
+ * systemd unit controller.<br>
+ *<br>
+ * Returns: 0 on success, -1 on error<br>
+ */<br>
+int<br>
+virCgroupAddThread(virCgroupP<wbr>tr group,<br>
+                   pid_t pid)<br>
+{<br>
+    return virCgroupAddTaskInternal(group<wbr>, pid, VIR_CGROUP_TASK_THREAD);<br>
+}<br>
+<br>
<br>
 static int<br>
 virCgroupSetPartitionSuffix(c<wbr>onst char *path, char **res)<br>
@@ -4228,6 +4247,16 @@ virCgroupAddMachineProcess(vir<wbr>CgroupPtr group ATTRIBUTE_UNUSED,<br>
 }<br>
<br>
<br>
+int<br>
+virCgroupAddThread(virCgroupP<wbr>tr group ATTRIBUTE_UNUSED,<br>
+                   pid_t pid ATTRIBUTE_UNUSED)<br>
+{<br>
+    virReportSystemError(ENXIO, "%s",<br>
+                         _("Control groups not supported on this platform"));<br>
+    return -1;<br>
+}<br>
+<br>
+<br>
 int<br>
 virCgroupGetBlkioIoServiced(v<wbr>irCgroupPtr group ATTRIBUTE_UNUSED,<br>
                             long long *bytes_read ATTRIBUTE_UNUSED,<br>
diff --git a/src/util/vircgroup.h b/src/util/vircgroup.h<br>
index bbd4c2ed57..1f676f21c3 100644<br>
--- a/src/util/vircgroup.h<br>
+++ b/src/util/vircgroup.h<br>
@@ -120,6 +120,7 @@ int virCgroupPathOfController(virC<wbr>groupPtr group,<br>
<br>
 int virCgroupAddProcess(virCgroupP<wbr>tr group, pid_t pid);<br>
 int virCgroupAddMachineProcess(vir<wbr>CgroupPtr group, pid_t pid);<br>
+int virCgroupAddThread(virCgroupPt<wbr>r group, pid_t pid);<br>
<br>
 int virCgroupSetBlkioWeight(virCgr<wbr>oupPtr group, unsigned int weight);<br>
 int virCgroupGetBlkioWeight(virCgr<wbr>oupPtr group, unsigned int *weight);<br>
<span class="m_4524788077513524539gmail-HOEnZb"><font color="#888888">-- <br>
2.17.1<br>
<br>
--<br>
libvir-list mailing list<br>
<a href="mailto:libvir-list@redhat.com" target="_blank">libvir-list@redhat.com</a><br>
<a href="https://www.redhat.com/mailman/listinfo/libvir-list" rel="noreferrer" target="_blank">https://www.redhat.com/mailman<wbr>/listinfo/libvir-list</a><br>
</font></span></blockquote></div><br></div></div></div>