public inbox for pve-devel@lists.proxmox.com
 help / color / mirror / Atom feed
* [pve-devel] [PATCH v2 qemu-server 1/4] qmeventd: improve getting VMID from PID in presence of legacy cgroup entries
@ 2023-07-10  8:52 Fiona Ebner
  2023-07-10  8:53 ` [pve-devel] [PATCH v2 qemu-server 2/4] qmeventd: further improve getting VMID from PID Fiona Ebner
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: Fiona Ebner @ 2023-07-10  8:52 UTC (permalink / raw)
  To: pve-devel

On a hybrid cgroup system, the /proc/<PID>/cgroup file looks like

> 13:pids:/qemu.slice/110.scope
> 12:perf_event:/
> 11:devices:/qemu.slice
> 10:misc:/
> 9:hugetlb:/
> 8:freezer:/
> 7:cpu,cpuacct:/qemu.slice/110.scope
> 6:memory:/qemu.slice/110.scope
> 5:rdma:/
> 4:cpuset:/
> 3:blkio:/qemu.slice
> 2:net_cls,net_prio:/
> 1:name=systemd:/qemu.slice/110.scope
> 0::/qemu.slice/110.scope

but the order doesn't seem to be deterministic, so it can happen that
an entry like '11:devices:/qemu.slice' is the first to match the
'/qemu.slice' part, which previously made the code expect to find the
VMID.

To improve detection, as a first step, match the trailing slash too.

Reported in the community forum:
https://forum.proxmox.com/threads/129320/post-571654

Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
---

Changes in v2:
    * Improve commit message, seems like the order is not the same on
      every boot.

 qmeventd/qmeventd.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/qmeventd/qmeventd.c b/qmeventd/qmeventd.c
index 921c0dca..503bce69 100644
--- a/qmeventd/qmeventd.c
+++ b/qmeventd/qmeventd.c
@@ -109,7 +109,7 @@ get_vmid_from_pid(pid_t pid)
 	}
 	cgroup_path++;
 
-	if (strncmp(cgroup_path, "/qemu.slice", 11)) {
+	if (strncmp(cgroup_path, "/qemu.slice/", 12)) {
 	    continue;
 	}
 
@@ -142,7 +142,7 @@ get_vmid_from_pid(pid_t pid)
     if (errno) {
 	fprintf(stderr, "error parsing vmid for %d: %s\n", pid, strerror(errno));
     } else {
-	fprintf(stderr, "error parsing vmid for %d: no qemu.slice cgroup entry\n", pid);
+	fprintf(stderr, "error parsing vmid for %d: no matching qemu.slice cgroup entry\n", pid);
     }
 
 ret:
-- 
2.39.2





^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2023-07-17  9:40 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-07-10  8:52 [pve-devel] [PATCH v2 qemu-server 1/4] qmeventd: improve getting VMID from PID in presence of legacy cgroup entries Fiona Ebner
2023-07-10  8:53 ` [pve-devel] [PATCH v2 qemu-server 2/4] qmeventd: further improve getting VMID from PID Fiona Ebner
2023-07-10  8:53 ` [pve-devel] [PATCH v2 qemu-server 3/4] qmeventd: VMID from PID: don't fail immediately when encountering unexpected entry Fiona Ebner
2023-07-10  8:53 ` [pve-devel] [PATCH v2 qemu-server 4/4] qmeventd: VMID from PID: avoid goto Fiona Ebner
2023-07-17  9:40 ` [pve-devel] applied-series: [PATCH v2 qemu-server 1/4] qmeventd: improve getting VMID from PID in presence of legacy cgroup entries Wolfgang Bumiller

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal