From: Tejun Heo <tj@kernel.org>
To: axboe@kernel.dk, laijs@cn.fujitsu.com, fengguang.wu@intel.com
Cc: linux-kernel@vger.kernel.org, jmoyer@redhat.com,
Tejun Heo <tj@kernel.org>
Subject: [PATCH 1/4] implement current_is_workqueue_rescuer()
Date: Thu, 7 Mar 2013 13:44:06 -0800 [thread overview]
Message-ID: <1362692649-25570-2-git-send-email-tj@kernel.org> (raw)
In-Reply-To: <1362692649-25570-1-git-send-email-tj@kernel.org>
Implement a function which queries whether it currently is running off
a workqueue rescuer. This will be used to convert writeback to
workqueue.
Signed-off-by: Tejun Heo <tj@kernel.org>
---
include/linux/workqueue.h | 1 +
kernel/workqueue.c | 13 +++++++++++++
2 files changed, 14 insertions(+)
diff --git a/include/linux/workqueue.h b/include/linux/workqueue.h
index 7f6d29a..df30763 100644
--- a/include/linux/workqueue.h
+++ b/include/linux/workqueue.h
@@ -451,6 +451,7 @@ extern bool cancel_delayed_work_sync(struct delayed_work *dwork);
extern void workqueue_set_max_active(struct workqueue_struct *wq,
int max_active);
+extern bool current_is_workqueue_rescuer(void);
extern bool workqueue_congested(int cpu, struct workqueue_struct *wq);
extern unsigned int work_busy(struct work_struct *work);
diff --git a/kernel/workqueue.c b/kernel/workqueue.c
index 904a901..af79dd8 100644
--- a/kernel/workqueue.c
+++ b/kernel/workqueue.c
@@ -4062,6 +4062,19 @@ void workqueue_set_max_active(struct workqueue_struct *wq, int max_active)
EXPORT_SYMBOL_GPL(workqueue_set_max_active);
/**
+ * current_is_workqueue_rescuer - is %current workqueue rescuer?
+ *
+ * Determine whether %current is a workqueue rescuer. Can be used from
+ * work functions to determine whether it's being run off the rescuer task.
+ */
+bool current_is_workqueue_rescuer(void)
+{
+ struct worker *worker = current_wq_worker();
+
+ return worker && worker == worker->current_pwq->wq->rescuer;
+}
+
+/**
* workqueue_congested - test whether a workqueue is congested
* @cpu: CPU in question
* @wq: target workqueue
--
1.8.1.4
next prev parent reply other threads:[~2013-03-07 21:44 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-03-07 21:44 [PATCHSET] writeback: convert writeback to unbound workqueue Tejun Heo
2013-03-07 21:44 ` Tejun Heo [this message]
2013-03-13 0:42 ` [PATCH 1/4] implement current_is_workqueue_rescuer() Tejun Heo
2013-03-07 21:44 ` [PATCH 2/4] writeback: remove unused bdi_pending_list Tejun Heo
2013-03-12 12:02 ` Jan Kara
2013-03-07 21:44 ` [PATCH 3/4] writeback: replace custom worker pool implementation with unbound workqueue Tejun Heo
2013-03-12 15:05 ` Jan Kara
2013-03-18 22:32 ` Jan Kara
2013-03-18 22:35 ` Tejun Heo
2013-03-19 15:46 ` Jan Kara
2013-03-19 17:28 ` Tejun Heo
2013-03-21 1:57 ` Dave Chinner
2013-03-21 5:07 ` Tejun Heo
2013-03-21 11:32 ` Jan Kara
2013-03-21 13:08 ` Christoph Hellwig
2013-03-21 18:37 ` Tejun Heo
2013-03-07 21:44 ` [PATCH 4/4] writeback: expose the bdi_wq workqueue Tejun Heo
2013-03-12 15:06 ` [PATCHSET] writeback: convert writeback to unbound workqueue Jens Axboe
2013-03-12 17:10 ` 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=1362692649-25570-2-git-send-email-tj@kernel.org \
--to=tj@kernel.org \
--cc=axboe@kernel.dk \
--cc=fengguang.wu@intel.com \
--cc=jmoyer@redhat.com \
--cc=laijs@cn.fujitsu.com \
--cc=linux-kernel@vger.kernel.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: link
Be 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.