Messages in this thread | | | Date | Fri, 22 Oct 2010 10:55:43 +0200 | From | Tejun Heo <> | Subject | [GIT PULL] workqueue for v2.6.37-rc1 |
| |
Hello, Linus.
Please pull from the following branch to receive workqueue changes for v2.6.37-rc1.
git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq.git for-linus
The branch contains the following notable changes.
* Fix for a subtle bug in HIGHPRI work handling where a HIGHPRI work can be delayed by already executing non-HIGHPRI works.
* Addition of flush[_delayed]_work_sync(), which are equivalent to cancel[_delayed]_work_sync() and make sure that the flushed work has finished execution on all CPUs on return. This will be primarily used to remove flush_scheduled_work() and other workqueue flushes with work-specific flushes.
* Several patches removing the use of flush_scheduled_work(). There are also multiple patches being routed through other subsystem trees. Once the syncing variants of flush_work are available in mainline, more will follow. The goal is to mark flush_scheduled_work() deprecated in the next merge window and remove it and trigger WARN_ON_ONCE() on all system workqueue flushes in the one after that.
Pulling into the current mainline (d4429f60) generates the following conflict in fs/gfs2/main.c. The resolution is WQ_MEM_RECLAIM | WQ_FREEZEABLE.
@@@ -139,9 -143,9 +143,9 @@@ static int __init init_gfs2_fs(void goto fail_unregister;
error = -ENOMEM; gfs_recovery_wq = alloc_workqueue("gfs_recovery", - WQ_NON_REENTRANT | WQ_MEM_RECLAIM, 0); - WQ_RESCUER | WQ_FREEZEABLE, 0); ++ WQ_MEM_RECLAIM | WQ_FREEZEABLE, 0); if (!gfs_recovery_wq) goto fail_wq;
gfs2_register_debugfs();
Just in case, the merged branch is available in the following branch.
git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq.git merged
Thanks.
Tejun Heo (14): workqueue: implement alloc_ordered_workqueue() workqueue: cleanup flush/cancel functions workqueue: factor out start_flush_work() workqueue: implement flush[_delayed]_work_sync() workqueue: prepare for more tracepoints workqueue: add queue_work and activate_work trace points workqueue: fix HIGHPRI handling in keep_working() workqueue: add and use WQ_MEM_RECLAIM flag isdn/eicon: don't call flush_scheduled_work() from diva_os_remove_soft_isr() pciehp: update workqueue usage shpchp: update workqueue usage memory_hotplug: drop spurious calls to flush_scheduled_work() workqueue: Clarify that schedule_on_each_cpu is synchronous workqueue: remove in_workqueue_context()
Documentation/workqueue.txt | 29 ++-- drivers/ata/libata-sff.c | 2 +- drivers/isdn/hardware/eicon/divasmain.c | 2 - drivers/pci/hotplug/pciehp.h | 2 + drivers/pci/hotplug/pciehp_core.c | 18 ++- drivers/pci/hotplug/pciehp_ctrl.c | 9 +- drivers/pci/hotplug/pciehp_hpc.c | 20 +-- drivers/pci/hotplug/shpchp.h | 2 + drivers/pci/hotplug/shpchp_core.c | 20 ++- drivers/pci/hotplug/shpchp_ctrl.c | 7 +- drivers/pci/hotplug/shpchp_hpc.c | 26 +--- fs/gfs2/main.c | 2 +- fs/xfs/linux-2.6/xfs_buf.c | 2 +- include/linux/workqueue.h | 51 ++++-- include/trace/events/workqueue.h | 77 +++++++- kernel/workqueue.c | 310 +++++++++++++++++++------------ mm/memory_hotplug.c | 2 - 17 files changed, 363 insertions(+), 218 deletions(-)
-- tejun
| |