From: Jiri Kosina <jkos...@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 <jkos...@suse.cz> Signed-off-by: Jiri Slaby <jsl...@suse.cz> [simplification] Cc: Steven Rostedt <rost...@goodmis.org> Cc: Frederic Weisbecker <fweis...@gmail.com> Cc: Ingo Molnar <mi...@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 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/