mirror_zfs/module/splat
Ricardo M. Correia 26f7245c7c Fix taskq code to not drop tasks when TQ_SLEEP is used.
When TQ_SLEEP is used, taskq_dispatch() should always succeed even if the
number of pending tasks is above tq->tq_maxalloc. This semantic is similar
to KM_SLEEP in kmem allocations, which also always succeed.

However, we cannot block forever otherwise there is a risk of deadlock.
Therefore, we still allow the number of pending tasks to go above
tq->tq_maxalloc with TQ_SLEEP, but we may sleep up to 1 second per task
dispatch, thereby throttling the task dispatch rate.

One of the existing splat tests was also augmented to test for this scenario.
The test would fail with the previous implementation but now it succeeds.

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
2010-08-02 11:20:31 -07:00
..
.gitignore sun-misc-gitignore 2010-01-08 09:37:54 -08:00
Makefile.in Add basic credential support and splat tests. 2009-07-27 17:18:59 -07:00
splat-atomic.c Split <sys/debug.h> header 2010-07-20 13:29:35 -07:00
splat-condvar.c Public Release Prep 2010-05-17 15:18:00 -07:00
splat-cred.c Public Release Prep 2010-05-17 15:18:00 -07:00
splat-ctl.c Initialize the /dev/splatctl device buffer 2010-07-01 10:59:46 -07:00
splat-generic.c Add __divdi3(), remove __udivdi3() kernel dependency 2010-07-13 16:44:02 -07:00
splat-internal.h Split <sys/debug.h> header 2010-07-20 13:29:35 -07:00
splat-kmem.c Use KM_NODEBUG macro in preference to __GFP_NOWARN. 2010-05-20 14:16:59 -07:00
splat-kobj.c Public Release Prep 2010-05-17 15:18:00 -07:00
splat-list.c Public Release Prep 2010-05-17 15:18:00 -07:00
splat-mutex.c Treat mutex->owner as volatile 2010-06-28 16:02:57 -07:00
splat-random.c Public Release Prep 2010-05-17 15:18:00 -07:00
splat-rwlock.c Simplify rwlock implementation. 2010-05-20 14:20:34 -07:00
splat-taskq.c Fix taskq code to not drop tasks when TQ_SLEEP is used. 2010-08-02 11:20:31 -07:00
splat-thread.c Fix subtle race in threads test case 2010-06-28 12:34:20 -07:00
splat-time.c Public Release Prep 2010-05-17 15:18:00 -07:00
splat-vnode.c Public Release Prep 2010-05-17 15:18:00 -07:00