mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2025-01-22 22:04:47 +08:00
workqueue: Interrupted create_worker() is not a repeated event
kthread_create_on_node() might get interrupted(). It is rare but realistic. For example, when an unbound workqueue is allocated in module_init() callback. It is done in the context of the "modprobe" process. And, for example, systemd might kill pending processes when switching root from initrd to the booted system. The interrupt is a one-off event and the race might be hard to reproduce. It is always worth printing. Signed-off-by: Petr Mladek <pmladek@suse.com> Signed-off-by: Tejun Heo <tj@kernel.org>
This commit is contained in:
parent
3f0ea0b864
commit
60f540389a
@ -1959,8 +1959,13 @@ static struct worker *create_worker(struct worker_pool *pool)
|
||||
worker->task = kthread_create_on_node(worker_thread, worker, pool->node,
|
||||
"kworker/%s", id_buf);
|
||||
if (IS_ERR(worker->task)) {
|
||||
if (PTR_ERR(worker->task) == -EINTR) {
|
||||
pr_err("workqueue: Interrupted when creating a worker thread \"kworker/%s\"\n",
|
||||
id_buf);
|
||||
} else {
|
||||
pr_err_once("workqueue: Failed to create a worker thread: %pe",
|
||||
worker->task);
|
||||
}
|
||||
goto fail;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user