Hello, all.
This is the fifth take of cmwq (concurrency managed workqueue)
patchset. It's on top of v2.6.35-rc3 + sched/core patches. Git tree
is available at
git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq.git review-cmwq
Changes from the last take[L] are...
* fscache patches are omitted for now.
* The patchset is rebased on cpu_stop + sched/core, which now includes
all the necessary scheduler patches. cpu_stop already reimplements
stop_machine so that it doesn't use RT workqueue, so this patchset
simply drops RT wq support.
* __set_cpus_allowed() was determined to be unnecessary with recent
scheduler changes. On cpu re-onlining, cmwq now kills all idle
workers and tells busy ones to rebind after finishing the current
work by scheduling a dedicated work. This allows managing proper
cpu binding without adding overhead to hotpath.
* Oleg's clear work->data patch moved at the head of the queue and now
lives in the for-next branch which will be pushed to mainline on the
next merge window.
* Applied Oleg's review.
* Comments updated as suggested.
* work_flags_to_color() replaced w/ get_work_color()
* nr_cwqs_to_flush bug which could cause premature flush completion
fixed.
* Replace rewind + list_for_each_entry_safe_continue() w/
list_for_each_entry_safe_from().
* Don't directly write to *work_data_bits() but use __set_bit()
instead.
* Fixed cpu hotplug exclusion bug.
* Other misc tweaks.
Now that all scheduler bits are in place, I'll keep the tree stable
and publish it to linux-next soonish, so this hopefully is the last of
exhausting massive postings of this patchset.
Jeff, Arjan, I think it'll be best to route the libata and async
patches through wq tree. Would that be okay?