]> granicus.if.org Git - zfs/commitdiff
Never sleep under taskq_dispatch()
authorBrian Behlendorf <behlendorf1@llnl.gov>
Mon, 28 Jun 2010 17:11:12 +0000 (10:11 -0700)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Mon, 28 Jun 2010 17:11:12 +0000 (10:11 -0700)
There are cases where under Linux it is not safe to sleep in
taskq_dispatch().  Rather than adding Linux specific code to
detect these cases I opted to keep it simple and just never
allow a sleep here.  The impact of this should be minimal.

module/zfs/zio.c

index db9bb65fddef052c5c6757c6309dd87646c18f1a..341f00306a0ee061be58a0e25f4ef933d66f0c0f 100644 (file)
@@ -1048,10 +1048,7 @@ zio_taskq_dispatch(zio_t *zio, enum zio_taskq_type q, boolean_t cutinline)
 {
        spa_t *spa = zio->io_spa;
        zio_type_t t = zio->io_type;
-       int flags;
-
-       flags  = (cutinline ? TQ_FRONT : 0);
-       flags |= ((q == ZIO_TASKQ_INTERRUPT) ? TQ_NOSLEEP : TQ_SLEEP);
+       int flags = TQ_NOSLEEP | (cutinline ? TQ_FRONT : 0);
 
        /*
         * If we're a config writer or a probe, the normal issue and