diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2010-08-07 15:42:58 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2010-08-07 15:42:58 -0400 |
| commit | 3b7433b8a8a83c87972065b1852b7dcae691e464 (patch) | |
| tree | 93fa2c003f8baef5ab0733b53bac77961ed5240c | |
| parent | 4a386c3e177ca2fbc70c9283d0b46537844763a0 (diff) | |
| parent | 6ee0578b4daaea01c96b172c6aacca43fd9807a6 (diff) | |
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq: (55 commits)
workqueue: mark init_workqueues() as early_initcall()
workqueue: explain for_each_*cwq_cpu() iterators
fscache: fix build on !CONFIG_SYSCTL
slow-work: kill it
gfs2: use workqueue instead of slow-work
drm: use workqueue instead of slow-work
cifs: use workqueue instead of slow-work
fscache: drop references to slow-work
fscache: convert operation to use workqueue instead of slow-work
fscache: convert object to use workqueue instead of slow-work
workqueue: fix how cpu number is stored in work->data
workqueue: fix mayday_mask handling on UP
workqueue: fix build problem on !CONFIG_SMP
workqueue: fix locking in retry path of maybe_create_worker()
async: use workqueue for worker pool
workqueue: remove WQ_SINGLE_CPU and use WQ_UNBOUND instead
workqueue: implement unbound workqueue
workqueue: prepare for WQ_UNBOUND implementation
libata: take advantage of cmwq and remove concurrency limitations
workqueue: fix worker management invocation without pending works
...
Fixed up conflicts in fs/cifs/* as per Tejun. Other trivial conflicts in
include/linux/workqueue.h, kernel/trace/Kconfig and kernel/workqueue.c
58 files changed, 3506 insertions, 2941 deletions
diff --git a/Documentation/filesystems/caching/fscache.txt b/Documentation/filesystems/caching/fscache.txt index a91e2e2095b0..770267af5b3e 100644 --- a/Documentation/filesystems/caching/fscache.txt +++ b/Documentation/filesystems/caching/fscache.txt | |||
| @@ -343,8 +343,8 @@ This will look something like: | |||
| 343 | [root@andromeda ~]# head /proc/fs/fscache/objects | 343 | [root@andromeda ~]# head /proc/fs/fscache/objects |
| 344 | OBJECT PARENT STAT CHLDN OPS OOP IPR EX READS EM EV F S | NETFS_COOKIE_DEF TY FL NETFS_DATA OBJECT_KEY, AUX_DATA | 344 | OBJECT PARENT STAT CHLDN OPS OOP IPR EX READS EM EV F S | NETFS_COOKIE_DEF TY FL NETFS_DATA OBJECT_KEY, AUX_DATA |
| 345 | ======== ======== ==== ===== === === === == ===== == == = = | ================ == == ================ ================ | 345 | ======== ======== ==== ===== === === === == ===== == == = = | ================ == == ================ ================ |
| 346 | 17e4b 2 ACTV 0 0 0 0 0 0 7b 4 0 8 | NFS.fh DT 0 ffff88001dd82820 010006017edcf8bbc93b43298fdfbe71e50b57b13a172c0117f38472, e567634700000000000000000000000063f2404a000000000000000000000000c9030000000000000000000063f2404a | 346 | 17e4b 2 ACTV 0 0 0 0 0 0 7b 4 0 0 | NFS.fh DT 0 ffff88001dd82820 010006017edcf8bbc93b43298fdfbe71e50b57b13a172c0117f38472, e567634700000000000000000000000063f2404a000000000000000000000000c9030000000000000000000063f2404a |
| 347 | 1693a 2 ACTV 0 0 0 0 0 0 7b 4 0 8 | NFS.fh DT 0 ffff88002db23380 010006017edcf8bbc93b43298fdfbe71e50b57b1e0162c01a2df0ea6, 420ebc4a000000000000000000000000420ebc4a0000000000000000000000000e1801000000000000000000420ebc4a | 347 | 1693a 2 ACTV 0 0 0 0 0 0 7b 4 0 0 | NFS.fh DT 0 ffff88002db23380 010006017edcf8bbc93b43298fdfbe71e50b57b1e0162c01a2df0ea6, 420ebc4a000000000000000000000000420ebc4a0000000000000000000000000e1801000000000000000000420ebc4a |
| 348 | 348 | ||
| 349 | where the first set of columns before the '|' describe the object: | 349 | where the first set of columns before the '|' describe the object: |
| 350 | 350 | ||
| @@ -362,7 +362,7 @@ where the first set of columns before the '|' describe the object: | |||
| 362 | EM Object's event mask | 362 | EM Object's event mask |
| 363 | EV Events raised on this object | 363 | EV Events raised on this object |
| 364 | F Object flags | 364 | F Object flags |
| 365 | S Object slow-work work item flags | 365 | S Object work item busy state mask (1:pending 2:running) |
| 366 | 366 | ||
| 367 | and the second set of columns describe the object's cookie, if present: | 367 | and the second set of columns describe the object's cookie, if present: |
| 368 | 368 | ||
| @@ -395,8 +395,8 @@ and the following paired letters: | |||
| 395 | w Show objects that don't have pending writes | 395 | w Show objects that don't have pending writes |
| 396 | R Show objects that have outstanding reads | 396 | R Show objects that have outstanding reads |
| 397 | r Show objects that don't have outstanding reads | 397 | r Show objects that don't have outstanding reads |
| 398 | S Show objects that have slow work queued | 398 | S Show objects that have work queued |
| 399 | s Show objects that don't have slow work queued | 399 | s Show objects that don't have work queued |
| 400 | 400 | ||
| 401 | If neither side of a letter pair is given, then both are implied. For example: | 401 | If neither side of a letter pair is given, then both are implied. For example: |
| 402 | 402 | ||
diff --git a/Documentation/slow-work.txt b/Documentation/slow-work.txt deleted file mode 100644 index 9dbf4470c7e1..000000000000 --- a/Documentation/slow-work.txt +++ /dev/null | |||
| @@ -1,322 +0,0 @@ | |||
| 1 | ==================================== | ||
| 2 | SLOW WORK ITEM EXECUTION THREAD POOL | ||
| 3 | ==================================== | ||
| 4 | |||
| 5 | By: David Howells <dhowells@redhat.com> | ||
| 6 | |||
| 7 | The slow work item execution thread pool is a pool of threads for performing | ||
| 8 | things that take a relatively long time, such as making mkdir calls. | ||
| 9 | Typically, when processing something, these items will spend a lot of time | ||
| 10 | blocking a thread on I/O, thus making that thread unavailable for doing other | ||
| 11 | work. | ||
| 12 | |||
| 13 | The standard workqueue model is unsuitable for this class of work item as that | ||
| 14 | limits the owner to a single thread or a single thread per CPU. For some | ||
| 15 | tasks, however, more threads - or fewer - are required. | ||
| 16 | |||
| 17 | There is just one pool per system. It contains no threads unless something | ||
| 18 | wants to use it - and that something must register its interest first. When | ||
| 19 | the pool is active, the number of threads it contains is dynamic, varying | ||
| 20 | between a maximum and minimum setting, depending on the load. | ||
| 21 | |||
| 22 | |||
| 23 | ==================== | ||
| 24 | CLASSES OF WORK ITEM | ||
| 25 | ==================== | ||
| 26 | |||
| 27 | This pool support two classes of work items: | ||
| 28 | |||
| 29 | (*) Slow work items. | ||
| 30 | |||
| 31 | (*) Very slow work items. | ||
| 32 | |||
| 33 | The former are expected to finish much quicker than the latter. | ||
| 34 | |||
| 35 | An operation of the very slow class may do a batch combination of several | ||
| 36 | lookups, mkdirs, and a create for instance. | ||
| 37 | |||
| 38 | An operation of the ordinarily slow class may, for example, write stuff or | ||
| 39 | expand files, provided the time taken to do so isn't too long. | ||
| 40 | |||
| 41 | Operations of both types may sleep during execution, thus tying up the thread | ||
| 42 | loaned to it. | ||
| 43 | |||
| 44 | A further class of work item is available, based on the slow work item class: | ||
| 45 | |||
| 46 | (*) Delayed slow work items. | ||
| 47 | |||
| 48 | These are slow work items that have a timer to defer queueing of the item for | ||
| 49 | a while. | ||
| 50 | |||
| 51 | |||
