zfs/include
Olaf Faaland 326172d854 Subclass tq_lock to eliminate a lockdep warning
When taskq_dispatch() calls taskq_thread_spawn() to create a new thread
for a taskq, linux lockdep warns of possible recursive locking.  This is
a false positive.

One such call chain is as follows, when a taskq needs more threads:
	taskq_dispatch->taskq_thread_spawn->taskq_dispatch

The initial taskq_dispatch() holds tq_lock on the taskq that needed more
worker threads.  The later call into taskq_dispatch() takes
dynamic_taskq->tq_lock.  Without subclassing, lockdep believes these
could potentially be the same lock and complains.  A similar case occurs
when taskq_dispatch() then calls task_alloc().

This patch uses spin_lock_irqsave_nested() when taking tq_lock, with one
of two new lock subclasses:

subclass              taskq
TQ_LOCK_DYNAMIC       dynamic_taskq
TQ_LOCK_GENERAL       any other

Signed-off-by: Olaf Faaland <faaland1@llnl.gov>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Issue #480
2015-12-11 16:19:56 -08:00
..
fs Kernel header installation should respect --prefix 2014-10-28 09:31:48 -07:00
linux Fix lockdep warning in spl_inode_{lock,unlock} 2015-12-11 16:19:47 -08:00
rpc Kernel header installation should respect --prefix 2014-10-28 09:31:48 -07:00
sharefs Kernel header installation should respect --prefix 2014-10-28 09:31:48 -07:00
sys Subclass tq_lock to eliminate a lockdep warning 2015-12-11 16:19:56 -08:00
util Support parallel build trees (VPATH builds) 2015-07-17 12:53:11 -07:00
vm Kernel header installation should respect --prefix 2014-10-28 09:31:48 -07:00
Makefile.am Retire legacy debugging infrastructure 2014-11-19 10:35:07 -08:00
spl-ctl.h Refresh links to web site 2013-03-04 19:09:34 -08:00
splat-ctl.h Update code to use misc_register()/misc_deregister() 2014-10-17 15:07:28 -07:00
strings.h Refresh links to web site 2013-03-04 19:09:34 -08:00
unistd.h Refresh links to web site 2013-03-04 19:09:34 -08:00