[Devel] [PATCH vz10 v4 1/2] ve: introduce task_pid_ve_nr

Aleksei Oladko aleksey.oladko at virtuozzo.com
Tue Dec 2 23:12:15 MSK 2025


The new helper returns pid in root pidns of VE

https://virtuozzo.atlassian.net/browse/VSTOR-119875
Signed-off-by: Aleksei Oladko <aleksey.oladko at virtuozzo.com>

v4: used task_ve guard helpers
---
 include/linux/ve.h | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

diff --git a/include/linux/ve.h b/include/linux/ve.h
index 0fbc4c45525f..f65f0a49e646 100644
--- a/include/linux/ve.h
+++ b/include/linux/ve.h
@@ -21,6 +21,7 @@
 #include <asm/vdso.h>
 #include <linux/time_namespace.h>
 #include <linux/binfmts.h>
+#include <linux/pid.h>
 
 struct nsproxy;
 struct user_namespace;
@@ -202,6 +203,24 @@ static inline struct ve_struct *css_to_ve(struct cgroup_subsys_state *css)
 
 extern struct cgroup_subsys_state *ve_get_init_css(struct ve_struct *ve, int subsys_id);
 
+static inline pid_t task_pid_ve_nr(struct task_struct *tsk)
+{
+	struct nsproxy *ve_ns;
+	struct ve_struct *ve = get_task_ve(tsk);
+	pid_t pid;
+
+	rcu_read_lock();
+	ve_ns = rcu_dereference(ve->ve_nsproxy);
+	if (ve_ns)
+		pid = task_pid_nr_ns(tsk, ve_ns->pid_ns_for_children);
+	else
+		pid = task_pid_nr(tsk);
+	rcu_read_unlock();
+	put_ve(ve);
+
+	return pid;
+}
+
 static inline struct time_namespace *ve_get_time_ns(struct ve_struct *ve)
 {
 	struct nsproxy *ve_nsproxy;
-- 
2.43.0



More information about the Devel mailing list