mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-24 01:09:38 -05:00
Merge branch 'for-4.14' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq
Pull workqueue updates from Tejun Heo: "Nothing major. I introduced a flag collsion bug during v4.13 cycle which is fixed in this pull request. Fortunately, the flag is for debugging / verification and the bug isn't critical" * 'for-4.14' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq: workqueue: Fix flag collision workqueue: Use TASK_IDLE workqueue: fix path to documentation workqueue: doc change for ST behavior on NUMA systems
This commit is contained in:
commit
9954d4892a
3 changed files with 11 additions and 7 deletions
|
@ -243,11 +243,15 @@ throttling the number of active work items, specifying '0' is
|
||||||
recommended.
|
recommended.
|
||||||
|
|
||||||
Some users depend on the strict execution ordering of ST wq. The
|
Some users depend on the strict execution ordering of ST wq. The
|
||||||
combination of ``@max_active`` of 1 and ``WQ_UNBOUND`` is used to
|
combination of ``@max_active`` of 1 and ``WQ_UNBOUND`` used to
|
||||||
achieve this behavior. Work items on such wq are always queued to the
|
achieve this behavior. Work items on such wq were always queued to the
|
||||||
unbound worker-pools and only one work item can be active at any given
|
unbound worker-pools and only one work item could be active at any given
|
||||||
time thus achieving the same ordering property as ST wq.
|
time thus achieving the same ordering property as ST wq.
|
||||||
|
|
||||||
|
In the current implementation the above configuration only guarantees
|
||||||
|
ST behavior within a given NUMA node. Instead alloc_ordered_queue should
|
||||||
|
be used to achieve system wide ST behavior.
|
||||||
|
|
||||||
|
|
||||||
Example Execution Scenarios
|
Example Execution Scenarios
|
||||||
===========================
|
===========================
|
||||||
|
|
|
@ -323,8 +323,8 @@ enum {
|
||||||
|
|
||||||
__WQ_DRAINING = 1 << 16, /* internal: workqueue is draining */
|
__WQ_DRAINING = 1 << 16, /* internal: workqueue is draining */
|
||||||
__WQ_ORDERED = 1 << 17, /* internal: workqueue is ordered */
|
__WQ_ORDERED = 1 << 17, /* internal: workqueue is ordered */
|
||||||
__WQ_ORDERED_EXPLICIT = 1 << 18, /* internal: alloc_ordered_workqueue() */
|
|
||||||
__WQ_LEGACY = 1 << 18, /* internal: create*_workqueue() */
|
__WQ_LEGACY = 1 << 18, /* internal: create*_workqueue() */
|
||||||
|
__WQ_ORDERED_EXPLICIT = 1 << 19, /* internal: alloc_ordered_workqueue() */
|
||||||
|
|
||||||
WQ_MAX_ACTIVE = 512, /* I like 512, better ideas? */
|
WQ_MAX_ACTIVE = 512, /* I like 512, better ideas? */
|
||||||
WQ_MAX_UNBOUND_PER_CPU = 4, /* 4 * #cpus for unbound wq */
|
WQ_MAX_UNBOUND_PER_CPU = 4, /* 4 * #cpus for unbound wq */
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
* pools for workqueues which are not bound to any specific CPU - the
|
* pools for workqueues which are not bound to any specific CPU - the
|
||||||
* number of these backing pools is dynamic.
|
* number of these backing pools is dynamic.
|
||||||
*
|
*
|
||||||
* Please read Documentation/workqueue.txt for details.
|
* Please read Documentation/core-api/workqueue.rst for details.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <linux/export.h>
|
#include <linux/export.h>
|
||||||
|
@ -2269,7 +2269,7 @@ sleep:
|
||||||
* event.
|
* event.
|
||||||
*/
|
*/
|
||||||
worker_enter_idle(worker);
|
worker_enter_idle(worker);
|
||||||
__set_current_state(TASK_INTERRUPTIBLE);
|
__set_current_state(TASK_IDLE);
|
||||||
spin_unlock_irq(&pool->lock);
|
spin_unlock_irq(&pool->lock);
|
||||||
schedule();
|
schedule();
|
||||||
goto woke_up;
|
goto woke_up;
|
||||||
|
@ -2311,7 +2311,7 @@ static int rescuer_thread(void *__rescuer)
|
||||||
*/
|
*/
|
||||||
rescuer->task->flags |= PF_WQ_WORKER;
|
rescuer->task->flags |= PF_WQ_WORKER;
|
||||||
repeat:
|
repeat:
|
||||||
set_current_state(TASK_INTERRUPTIBLE);
|
set_current_state(TASK_IDLE);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* By the time the rescuer is requested to stop, the workqueue
|
* By the time the rescuer is requested to stop, the workqueue
|
||||||
|
|
Loading…
Add table
Reference in a new issue