[GIT PULL] workqueue for v2.6.37-rc1

From: Tejun Heo
Date: Fri Oct 22 2010 - 04:56:21 EST


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
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/