* [pve-devel] [PATCH qemu-server 1/2] qmeventd: improve getting vmid from PID in presence of legacy cgroup entries
@ 2023-07-10 7:58 Fiona Ebner
2023-07-10 7:58 ` [pve-devel] [PATCH qemu-server 2/2] qmeventd: further improve getting vmid from PID Fiona Ebner
2023-07-10 8:20 ` [pve-devel] [PATCH qemu-server 1/2] qmeventd: improve getting vmid from PID in presence of legacy cgroup entries Fiona Ebner
0 siblings, 2 replies; 3+ messages in thread
From: Fiona Ebner @ 2023-07-10 7:58 UTC (permalink / raw)
To: pve-devel
On a hybrid cgroup system, the /proc/<PID>/cgroup file usually 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 after 'umount /sys/fs/cgroup/pids' or for other reasons, it could
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>
---
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] 3+ messages in thread
* [pve-devel] [PATCH qemu-server 2/2] qmeventd: further improve getting vmid from PID
2023-07-10 7:58 [pve-devel] [PATCH qemu-server 1/2] qmeventd: improve getting vmid from PID in presence of legacy cgroup entries Fiona Ebner
@ 2023-07-10 7:58 ` Fiona Ebner
2023-07-10 8:20 ` [pve-devel] [PATCH qemu-server 1/2] qmeventd: improve getting vmid from PID in presence of legacy cgroup entries Fiona Ebner
1 sibling, 0 replies; 3+ messages in thread
From: Fiona Ebner @ 2023-07-10 7:58 UTC (permalink / raw)
To: pve-devel
by also expecting the ".scope" part and trying the next entry if it is
not present instead of immediately failing.
Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
---
qmeventd/qmeventd.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/qmeventd/qmeventd.c b/qmeventd/qmeventd.c
index 503bce69..7e9b2354 100644
--- a/qmeventd/qmeventd.c
+++ b/qmeventd/qmeventd.c
@@ -128,12 +128,12 @@ get_vmid_from_pid(pid_t pid)
errno = 0;
char *endptr = NULL;
vmid = strtoul(vmid_start, &endptr, 10);
+ if (!endptr || strncmp(endptr, ".scope", 6)) {
+ continue;
+ }
if (errno != 0) {
fprintf(stderr, "error parsing vmid for %d: %s\n", pid, strerror(errno));
vmid = 0;
- } else if (*endptr != '.') {
- fprintf(stderr, "unexpected cgroup entry %s\n", buf);
- vmid = 0;
}
goto ret;
--
2.39.2
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [pve-devel] [PATCH qemu-server 1/2] qmeventd: improve getting vmid from PID in presence of legacy cgroup entries
2023-07-10 7:58 [pve-devel] [PATCH qemu-server 1/2] qmeventd: improve getting vmid from PID in presence of legacy cgroup entries Fiona Ebner
2023-07-10 7:58 ` [pve-devel] [PATCH qemu-server 2/2] qmeventd: further improve getting vmid from PID Fiona Ebner
@ 2023-07-10 8:20 ` Fiona Ebner
1 sibling, 0 replies; 3+ messages in thread
From: Fiona Ebner @ 2023-07-10 8:20 UTC (permalink / raw)
To: pve-devel
Am 10.07.23 um 09:58 schrieb Fiona Ebner:
> On a hybrid cgroup system, the /proc/<PID>/cgroup file usually 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 after 'umount /sys/fs/cgroup/pids' or for other reasons, it could
> 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>
I'll send a v2 with a bit more. Sorry for the noise.
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2023-07-10 8:20 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-07-10 7:58 [pve-devel] [PATCH qemu-server 1/2] qmeventd: improve getting vmid from PID in presence of legacy cgroup entries Fiona Ebner
2023-07-10 7:58 ` [pve-devel] [PATCH qemu-server 2/2] qmeventd: further improve getting vmid from PID Fiona Ebner
2023-07-10 8:20 ` [pve-devel] [PATCH qemu-server 1/2] qmeventd: improve getting vmid from PID in presence of legacy cgroup entries Fiona Ebner
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox