On Sun, Oct 06 2013, Christoph Hellwig wrote: > The only caller of blk_mq_start_stopped_hw_queues is in irq context, > leading to lockdep splat when it actually gets called. Fix this by > deferring the hw queue run to workqueue context. > > Signed-off-by: Christoph Hellwig <[email protected]> > > diff --git a/block/blk-mq.c b/block/blk-mq.c > index 2b85029..923e9e1 100644 > --- a/block/blk-mq.c > +++ b/block/blk-mq.c > @@ -686,7 +686,8 @@ void blk_mq_start_stopped_hw_queues(struct request_queue > *q) > if (!test_bit(BLK_MQ_S_STOPPED, &hctx->state)) > continue; > > - blk_mq_start_hw_queue(hctx); > + clear_bit(BLK_MQ_S_STOPPED, &hctx->state); > + blk_mq_run_hw_queue(hctx, true); > } > } > EXPORT_SYMBOL(blk_mq_start_stopped_hw_queues);
Thanks, applied. Might not be a bad idea to just mimic the run queue API, and provide a blk_mq_start_hw_queue(hctx, is_async) instead. -- Jens Axboe -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/

