From: Tejun Heo <tj@kernel.org> To: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com> Cc: Prateek Sood <prsood@codeaurora.org>, Peter Zijlstra <peterz@infradead.org>, avagin@gmail.com, mingo@kernel.org, linux-kernel@vger.kernel.org, cgroups@vger.kernel.org, sramana@codeaurora.org Subject: [PATCH wq/for-4.16 1/2] workqueue: separate out init_rescuer() Date: Mon, 8 Jan 2018 05:47:20 -0800 [thread overview] Message-ID: <20180108134720.GN3668920@devbig577.frc2.facebook.com> (raw) In-Reply-To: <20180108122823.GL3668920@devbig577.frc2.facebook.com> Hello, Paul. Applied the following two patches to allow early init of WQ_MEM_RECLAIM workqueues to the following git branch. git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq.git for-4.16 The branch won't be rebased and currently only contains these two patches. Please feel free to pull and put further RCU changes on top. Thanks. ------ 8< ------ >From 983c751532738b83c4c5b51192ebc6fbfe9330f7 Mon Sep 17 00:00:00 2001 From: Tejun Heo <tj@kernel.org> Date: Mon, 8 Jan 2018 05:38:32 -0800 Separate out init_rescuer() from __alloc_workqueue_key() to prepare for early init support for WQ_MEM_RECLAIM. This patch doesn't introduce any functional changes. Signed-off-by: Tejun Heo <tj@kernel.org> Cc: Paul McKenney <paulmck@linux.vnet.ibm.com> --- kernel/workqueue.c | 56 ++++++++++++++++++++++++++++++++---------------------- 1 file changed, 33 insertions(+), 23 deletions(-) diff --git a/kernel/workqueue.c b/kernel/workqueue.c index 43d18cb..5baac7c 100644 --- a/kernel/workqueue.c +++ b/kernel/workqueue.c @@ -3939,6 +3939,37 @@ static int wq_clamp_max_active(int max_active, unsigned int flags, return clamp_val(max_active, 1, lim); } +/* + * Workqueues which may be used during memory reclaim should have a rescuer + * to guarantee forward progress. + */ +static int init_rescuer(struct workqueue_struct *wq) +{ + struct worker *rescuer; + int ret; + + if (!(wq->flags & WQ_MEM_RECLAIM)) + return 0; + + rescuer = alloc_worker(NUMA_NO_NODE); + if (!rescuer) + return -ENOMEM; + + rescuer->rescue_wq = wq; + rescuer->task = kthread_create(rescuer_thread, rescuer, "%s", wq->name); + ret = PTR_ERR_OR_ZERO(rescuer->task); + if (ret) { + kfree(rescuer); + return ret; + } + + wq->rescuer = rescuer; + kthread_bind_mask(rescuer->task, cpu_possible_mask); + wake_up_process(rescuer->task); + + return 0; +} + struct workqueue_struct *__alloc_workqueue_key(const char *fmt, unsigned int flags, int max_active, @@ -4001,29 +4032,8 @@ struct workqueue_struct *__alloc_workqueue_key(const char *fmt, if (alloc_and_link_pwqs(wq) < 0) goto err_free_wq; - /* - * Workqueues which may be used during memory reclaim should - * have a rescuer to guarantee forward progress. - */ - if (flags & WQ_MEM_RECLAIM) { - struct worker *rescuer; - - rescuer = alloc_worker(NUMA_NO_NODE); - if (!rescuer) - goto err_destroy; - - rescuer->rescue_wq = wq; - rescuer->task = kthread_create(rescuer_thread, rescuer, "%s", - wq->name); - if (IS_ERR(rescuer->task)) { - kfree(rescuer); - goto err_destroy; - } - - wq->rescuer = rescuer; - kthread_bind_mask(rescuer->task, cpu_possible_mask); - wake_up_process(rescuer->task); - } + if (init_rescuer(wq) < 0) + goto err_destroy; if ((wq->flags & WQ_SYSFS) && workqueue_sysfs_register(wq)) goto err_destroy; -- 2.9.5
WARNING: multiple messages have this Message-ID (diff)
From: Tejun Heo <tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org> To: "Paul E. McKenney" <paulmck-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org> Cc: Prateek Sood <prsood-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>, Peter Zijlstra <peterz-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>, avagin-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org, mingo-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org, linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, cgroups-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, sramana-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org Subject: [PATCH wq/for-4.16 1/2] workqueue: separate out init_rescuer() Date: Mon, 8 Jan 2018 05:47:20 -0800 [thread overview] Message-ID: <20180108134720.GN3668920@devbig577.frc2.facebook.com> (raw) In-Reply-To: <20180108122823.GL3668920-4dN5La/x3IkLX0oZNxdnEQ2O0Ztt9esIQQ4Iyu8u01E@public.gmane.org> Hello, Paul. Applied the following two patches to allow early init of WQ_MEM_RECLAIM workqueues to the following git branch. git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq.git for-4.16 The branch won't be rebased and currently only contains these two patches. Please feel free to pull and put further RCU changes on top. Thanks. ------ 8< ------ From 983c751532738b83c4c5b51192ebc6fbfe9330f7 Mon Sep 17 00:00:00 2001 From: Tejun Heo <tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org> Date: Mon, 8 Jan 2018 05:38:32 -0800 Separate out init_rescuer() from __alloc_workqueue_key() to prepare for early init support for WQ_MEM_RECLAIM. This patch doesn't introduce any functional changes. Signed-off-by: Tejun Heo <tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org> Cc: Paul McKenney <paulmck-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org> --- kernel/workqueue.c | 56 ++++++++++++++++++++++++++++++++---------------------- 1 file changed, 33 insertions(+), 23 deletions(-) diff --git a/kernel/workqueue.c b/kernel/workqueue.c index 43d18cb..5baac7c 100644 --- a/kernel/workqueue.c +++ b/kernel/workqueue.c @@ -3939,6 +3939,37 @@ static int wq_clamp_max_active(int max_active, unsigned int flags, return clamp_val(max_active, 1, lim); } +/* + * Workqueues which may be used during memory reclaim should have a rescuer + * to guarantee forward progress. + */ +static int init_rescuer(struct workqueue_struct *wq) +{ + struct worker *rescuer; + int ret; + + if (!(wq->flags & WQ_MEM_RECLAIM)) + return 0; + + rescuer = alloc_worker(NUMA_NO_NODE); + if (!rescuer) + return -ENOMEM; + + rescuer->rescue_wq = wq; + rescuer->task = kthread_create(rescuer_thread, rescuer, "%s", wq->name); + ret = PTR_ERR_OR_ZERO(rescuer->task); + if (ret) { + kfree(rescuer); + return ret; + } + + wq->rescuer = rescuer; + kthread_bind_mask(rescuer->task, cpu_possible_mask); + wake_up_process(rescuer->task); + + return 0; +} + struct workqueue_struct *__alloc_workqueue_key(const char *fmt, unsigned int flags, int max_active, @@ -4001,29 +4032,8 @@ struct workqueue_struct *__alloc_workqueue_key(const char *fmt, if (alloc_and_link_pwqs(wq) < 0) goto err_free_wq; - /* - * Workqueues which may be used during memory reclaim should - * have a rescuer to guarantee forward progress. - */ - if (flags & WQ_MEM_RECLAIM) { - struct worker *rescuer; - - rescuer = alloc_worker(NUMA_NO_NODE); - if (!rescuer) - goto err_destroy; - - rescuer->rescue_wq = wq; - rescuer->task = kthread_create(rescuer_thread, rescuer, "%s", - wq->name); - if (IS_ERR(rescuer->task)) { - kfree(rescuer); - goto err_destroy; - } - - wq->rescuer = rescuer; - kthread_bind_mask(rescuer->task, cpu_possible_mask); - wake_up_process(rescuer->task); - } + if (init_rescuer(wq) < 0) + goto err_destroy; if ((wq->flags & WQ_SYSFS) && workqueue_sysfs_register(wq)) goto err_destroy; -- 2.9.5
next prev parent reply other threads:[~2018-01-08 13:47 UTC|newest] Thread overview: 62+ messages / expand[flat|nested] mbox.gz Atom feed top 2017-11-28 1:22 cgroup/for-next: WARNING: possible circular locking dependency detected in cpuset_write_resmask Andrei Vagin 2017-11-28 11:35 ` [PATCH] cgroup/cpuset: fix circular locking dependency Prateek Sood 2017-12-04 5:14 ` Prateek Sood 2017-12-04 5:14 ` Prateek Sood 2017-12-04 20:22 ` Tejun Heo 2017-12-04 20:22 ` Tejun Heo 2017-12-04 22:58 ` Tejun Heo 2017-12-04 23:01 ` Peter Zijlstra 2017-12-04 23:01 ` Peter Zijlstra 2017-12-08 9:40 ` Prateek Sood 2017-12-08 11:45 ` Prateek Sood 2017-12-08 11:45 ` Prateek Sood 2017-12-11 15:32 ` Tejun Heo 2017-12-11 15:32 ` Tejun Heo 2017-12-13 14:28 ` Prateek Sood 2017-12-13 15:40 ` Tejun Heo 2017-12-15 8:54 ` Prateek Sood 2017-12-15 8:54 ` Prateek Sood 2017-12-15 13:22 ` Tejun Heo 2017-12-15 19:06 ` Prateek Sood 2017-12-19 7:26 ` [PATCH] cgroup: Fix deadlock in cpu hotplug path Prateek Sood 2017-12-19 7:26 ` Prateek Sood 2017-12-19 13:39 ` Tejun Heo 2017-12-11 15:20 ` [PATCH] cgroup/cpuset: fix circular locking dependency Tejun Heo 2017-12-11 15:20 ` Tejun Heo 2017-12-13 7:50 ` Prateek Sood 2017-12-13 7:50 ` Prateek Sood 2017-12-13 16:06 ` Tejun Heo 2017-12-15 19:04 ` Prateek Sood 2017-12-15 19:04 ` Prateek Sood 2017-12-28 20:37 ` Prateek Sood 2017-12-28 20:37 ` Prateek Sood 2018-01-02 16:16 ` Tejun Heo 2018-01-02 17:44 ` Paul E. McKenney 2018-01-02 17:44 ` Paul E. McKenney 2018-01-02 18:01 ` Paul E. McKenney 2018-01-08 12:28 ` Tejun Heo 2018-01-08 12:28 ` Tejun Heo 2018-01-08 13:47 ` Tejun Heo [this message] 2018-01-08 13:47 ` [PATCH wq/for-4.16 1/2] workqueue: separate out init_rescuer() Tejun Heo 2018-01-08 13:47 ` [PATCH wq/for-4.16 2/2] workqueue: allow WQ_MEM_RECLAIM on early init workqueues Tejun Heo 2018-01-08 13:47 ` Tejun Heo 2018-01-08 22:52 ` [PATCH] cgroup/cpuset: fix circular locking dependency Paul E. McKenney 2018-01-08 22:52 ` Paul E. McKenney 2018-01-09 0:31 ` Paul E. McKenney 2018-01-09 3:42 ` Tejun Heo 2018-01-09 3:42 ` Tejun Heo 2018-01-09 4:20 ` Paul E. McKenney 2018-01-09 13:44 ` Tejun Heo 2018-01-09 15:21 ` Paul E. McKenney 2018-01-09 15:21 ` Paul E. McKenney 2018-01-09 15:37 ` Tejun Heo 2018-01-09 16:00 ` Paul E. McKenney 2018-01-09 16:00 ` Paul E. McKenney 2018-01-10 20:08 ` Paul E. McKenney 2018-01-10 21:41 ` Tejun Heo 2018-01-10 21:41 ` Tejun Heo 2018-01-10 22:10 ` Paul E. McKenney 2018-01-10 22:10 ` Paul E. McKenney 2018-01-15 12:02 ` Prateek Sood 2018-01-15 12:02 ` Prateek Sood 2018-01-16 16:27 ` Tejun Heo
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20180108134720.GN3668920@devbig577.frc2.facebook.com \ --to=tj@kernel.org \ --cc=avagin@gmail.com \ --cc=cgroups@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=mingo@kernel.org \ --cc=paulmck@linux.vnet.ibm.com \ --cc=peterz@infradead.org \ --cc=prsood@codeaurora.org \ --cc=sramana@codeaurora.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.