Files
mirror_zfs/include/sys
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
..
2013-03-04 19:09:34 -08:00
2013-03-04 19:09:34 -08:00
2014-10-17 15:11:50 -07:00
2013-03-04 19:09:34 -08:00
2013-03-04 19:09:34 -08:00
2013-03-04 19:09:34 -08:00
2013-03-04 19:09:34 -08:00
2013-03-04 19:09:34 -08:00
2013-03-04 19:09:34 -08:00
2013-03-04 19:09:34 -08:00
2013-03-04 19:09:34 -08:00
2013-03-04 19:09:34 -08:00
2013-03-04 19:09:34 -08:00
2013-03-04 19:09:34 -08:00
2013-03-04 19:09:34 -08:00
2013-03-04 19:09:34 -08:00
2013-03-04 19:09:34 -08:00
2014-10-17 15:11:51 -07:00
2013-03-04 19:09:34 -08:00
2013-03-04 19:09:34 -08:00
2015-06-24 14:44:47 -07:00
2013-03-04 19:09:34 -08:00
2013-10-09 13:52:55 -07:00
2013-03-04 19:09:34 -08:00
2013-03-04 19:09:34 -08:00
2013-03-04 19:09:34 -08:00
2013-03-04 19:09:34 -08:00
2013-03-04 19:09:34 -08:00
2013-03-04 19:09:34 -08:00
2013-03-04 19:09:34 -08:00
2013-03-04 19:09:34 -08:00
2013-03-04 19:09:34 -08:00
2013-03-04 19:09:34 -08:00
2013-03-04 19:09:34 -08:00
2013-03-04 19:09:34 -08:00
2015-10-13 09:50:40 -07:00
2015-01-16 13:55:09 -08:00
2013-03-04 19:09:34 -08:00
2013-10-25 13:41:52 -07:00
2013-03-04 19:09:34 -08:00
2013-03-04 19:09:34 -08:00
2013-03-04 19:09:34 -08:00
2013-03-04 19:09:34 -08:00
2013-03-04 19:09:34 -08:00
2013-03-04 19:09:34 -08:00
2013-03-04 19:09:34 -08:00
2013-03-04 19:09:34 -08:00
2013-03-04 19:09:34 -08:00
2013-03-04 19:09:34 -08:00
2013-03-04 19:09:34 -08:00
2013-03-04 19:09:34 -08:00
2013-03-04 19:09:34 -08:00
2013-03-04 19:09:34 -08:00
2013-03-04 19:09:34 -08:00
2013-03-04 19:09:34 -08:00
2013-03-04 19:09:34 -08:00
2013-03-04 19:09:34 -08:00
2013-03-04 19:09:34 -08:00
2013-10-09 14:20:46 -07:00
2013-03-04 19:09:34 -08:00
2013-03-04 19:09:34 -08:00
2013-03-04 19:09:34 -08:00
2013-03-04 19:09:34 -08:00
2013-03-04 19:09:34 -08:00
2013-03-04 19:09:34 -08:00
2013-03-04 19:09:34 -08:00
2014-04-14 09:04:41 -07:00
2013-03-04 19:09:34 -08:00
2013-03-04 19:09:34 -08:00
2014-04-09 19:17:12 -07:00
2014-04-14 09:32:01 -07:00
2013-03-04 19:09:34 -08:00
2013-03-04 19:09:34 -08:00
2015-01-16 13:55:08 -08:00
2013-03-04 19:09:34 -08:00
2015-08-24 10:10:21 -07:00
2013-03-04 19:09:34 -08:00
2015-12-03 15:44:47 -08:00
2013-03-04 19:09:34 -08:00
2013-03-04 19:09:34 -08:00
2013-03-04 19:09:34 -08:00
2013-03-04 19:09:34 -08:00
2015-06-29 09:26:29 -07:00
2015-04-24 13:02:37 -07:00
2013-03-04 19:09:34 -08:00
2015-04-02 09:49:55 -07:00