freebsd-nq/module/spl
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
..
Makefile.in Support parallel build trees (VPATH builds) 2015-07-17 12:53:11 -07:00
spl-atomic.c Refresh links to web site 2013-03-04 19:09:34 -08:00
spl-condvar.c Rename cv_wait_interruptible() to cv_wait_sig() 2015-06-10 16:36:12 -07:00
spl-cred.c Remove credential configure checks. 2014-10-17 15:11:51 -07:00
spl-err.c Retire legacy debugging infrastructure 2014-11-19 10:35:07 -08:00
spl-generic.c Retire spl_module_init()/spl_module_fini() 2015-02-27 13:43:39 -08:00
spl-kmem-cache.c spl-kmem-cache: include linux/prefetch.h for prefetchw() 2015-12-02 12:45:06 -08:00
spl-kmem.c Optimize vmem_alloc() retry path 2015-02-02 10:57:56 -08:00
spl-kobj.c Fix GFP_KERNEL allocations flags 2015-01-21 15:25:19 -08:00
spl-kstat.c Refactor existing code 2015-01-16 13:55:08 -08:00
spl-mutex.c Remove adaptive mutex implementation 2014-10-17 15:07:28 -07:00
spl-proc.c Default to --disable-debug-kmem 2015-07-21 11:47:10 -07:00
spl-rwlock.c Refresh links to web site 2013-03-04 19:09:34 -08:00
spl-taskq.c Subclass tq_lock to eliminate a lockdep warning 2015-12-11 16:19:56 -08:00
spl-thread.c Retire legacy debugging infrastructure 2014-11-19 10:35:07 -08:00
spl-tsd.c Fix cstyle issues in spl-tsd.c 2015-04-24 14:23:07 -07:00
spl-vmem.c Add hooks for disabling direct reclaim 2015-01-16 13:55:09 -08:00
spl-vnode.c Fix race between getf() and areleasef() 2015-12-03 15:44:47 -08:00
spl-xdr.c Retire legacy debugging infrastructure 2014-11-19 10:35:07 -08:00
spl-zlib.c Refactor existing code 2015-01-16 13:55:08 -08:00