[Devel] [PATCH RHEL COMMIT] ve/proc: print VE id and virtual pid in process status
Konstantin Khorenko
khorenko at virtuozzo.com
Tue Sep 28 19:31:12 MSK 2021
The commit is pushed to "branch-rh9-5.14.vz9.1.x-ovz" and will appear at https://src.openvz.org/scm/ovz/vzkernel.git
after ark-5.14
------>
commit 66ed840faa379b65da372d1e50e0b4079b221297
Author: Stanislav Kinsburskiy <skinsbursky at virtuozzo.com>
Date: Tue Sep 28 19:31:12 2021 +0300
ve/proc: print VE id and virtual pid in process status
Signed-off-by: Stanislav Kinsburskiy <skinsbursky at virtuozzo.com>
(cherry picked from vz8 commit 0ee34d1e220c125e2fae8496e358ff36c99921ba)
Signed-off-by: Pavel Tikhomirov <ptikhomirov at virtuozzo.com>
---
fs/proc/array.c | 21 ++++++++++++++++++++-
1 file changed, 20 insertions(+), 1 deletion(-)
diff --git a/fs/proc/array.c b/fs/proc/array.c
index d726b2836c48..481139b434c5 100644
--- a/fs/proc/array.c
+++ b/fs/proc/array.c
@@ -150,6 +150,18 @@ static inline const char *get_task_state(struct task_struct *tsk)
return task_state_array[task_state_index(tsk)];
}
+static int task_virtual_pid(struct task_struct *t)
+{
+ struct pid *pid;
+
+ pid = task_pid(t);
+ /*
+ * this will give wrong result for tasks,
+ * that failed to enter VE, but that's OK
+ */
+ return pid ? pid->numbers[pid->level].nr : 0;
+}
+
static inline void task_state(struct seq_file *m, struct pid_namespace *ns,
struct pid *pid, struct task_struct *p)
{
@@ -158,7 +170,7 @@ static inline void task_state(struct seq_file *m, struct pid_namespace *ns,
int g, umask = -1;
struct task_struct *tracer;
const struct cred *cred;
- pid_t ppid, tpid = 0, tgid, ngid;
+ pid_t ppid, tpid = 0, tgid, ngid, vpid;
unsigned int max_fds = 0;
rcu_read_lock();
@@ -171,6 +183,7 @@ static inline void task_state(struct seq_file *m, struct pid_namespace *ns,
tgid = task_tgid_nr_ns(p, ns);
ngid = task_numa_group_id(p);
+ vpid = task_virtual_pid(p);
cred = get_task_cred(p);
task_lock(p);
@@ -225,6 +238,12 @@ static inline void task_state(struct seq_file *m, struct pid_namespace *ns,
seq_put_decimal_ull(m, "\t", task_session_nr_ns(p, pid->numbers[g].ns));
#endif
seq_putc(m, '\n');
+#ifdef CONFIG_VE
+ rcu_read_lock();
+ seq_printf(m, "envID:\t%s\nVPid:\t%d\n",
+ task_ve_name(p), vpid);
+ rcu_read_unlock();
+#endif
}
void render_sigset_t(struct seq_file *m, const char *header,
More information about the Devel
mailing list