Messages in this thread Patch in this message | | | From | Jiri Slaby <> | Subject | [PATCH 14/21] kgr: add procfs interface for per-process 'kgr_in_progress' | Date | Mon, 23 Jun 2014 15:29:28 +0200 |
| |
From: Jiri Kosina <jkosina@suse.cz>
Instead of flooding dmesg with data about tasks which haven't yet been migrated to the "new universe", create a 'kgr_in_progress' in /proc/<pid>/ so that it's possible to easily script the checks/actions in userspace.
js: use the kgr helper
Signed-off-by: Jiri Kosina <jkosina@suse.cz> Signed-off-by: Jiri Slaby <jslaby@suse.cz> [simplification] Cc: Steven Rostedt <rostedt@goodmis.org> Cc: Frederic Weisbecker <fweisbec@gmail.com> Cc: Ingo Molnar <mingo@redhat.com> --- fs/proc/base.c | 11 +++++++++++ kernel/kgraft.c | 3 +-- 2 files changed, 12 insertions(+), 2 deletions(-)
diff --git a/fs/proc/base.c b/fs/proc/base.c index 2d696b0c93bf..60f7b1ce5d1c 100644 --- a/fs/proc/base.c +++ b/fs/proc/base.c @@ -87,6 +87,7 @@ #include <linux/slab.h> #include <linux/flex_array.h> #include <linux/posix-timers.h> +#include <linux/kgraft.h> #ifdef CONFIG_HARDWALL #include <asm/hardwall.h> #endif @@ -2106,6 +2107,13 @@ static const struct file_operations proc_timers_operations = { }; #endif /* CONFIG_CHECKPOINT_RESTORE */ +#if IS_ENABLED(CONFIG_KGRAFT) +static int proc_pid_kgr_in_progress(struct task_struct *task, char *buffer) +{ + return sprintf(buffer, "%d\n", kgr_task_in_progress(task)); +} +#endif /* IS_ENABLED(CONFIG_KGRAFT) */ + static int proc_pident_instantiate(struct inode *dir, struct dentry *dentry, struct task_struct *task, const void *ptr) { @@ -2638,6 +2646,9 @@ static const struct pid_entry tgid_base_stuff[] = { #ifdef CONFIG_CHECKPOINT_RESTORE REG("timers", S_IRUGO, proc_timers_operations), #endif +#if IS_ENABLED(CONFIG_KGRAFT) + INF("kgr_in_progress", S_IRUSR, proc_pid_kgr_in_progress), +#endif }; static int proc_tgid_base_readdir(struct file *file, struct dir_context *ctx) diff --git a/kernel/kgraft.c b/kernel/kgraft.c index ce733f3f2640..0d04f1cbcd4a 100644 --- a/kernel/kgraft.c +++ b/kernel/kgraft.c @@ -77,9 +77,8 @@ static bool kgr_still_patching(void) read_lock(&tasklist_lock); for_each_process(p) { if (kgr_task_in_progress(p)) { - pr_info("pid %d (%s) still in kernel after timeout\n", - p->pid, p->comm); failed = true; + break; } } read_unlock(&tasklist_lock); -- 2.0.0
| |