blk-mq: add helper to insert requests from irq context
authorChristoph Hellwig <hch@lst.de>
Wed, 28 May 2014 14:08:02 +0000 (08:08 -0600)
committerJens Axboe <axboe@fb.com>
Wed, 28 May 2014 14:08:02 +0000 (08:08 -0600)
commit6fca6a611c27f1f0d90fbe1cc3c229dbf8c09e48
treed3348f3ab1169db9b5a1fca67a8fd2164152530c
parent7738dac4f697ffbd0ed4c4aeb69a714ef9d876da
blk-mq: add helper to insert requests from irq context

Both the cache flush state machine and the SCSI midlayer want to submit
requests from irq context, and the current per-request requeue_work
unfortunately causes corruption due to sharing with the csd field for
flushes.  Replace them with a per-request_queue list of requests to
be requeued.

Based on an earlier test by Ming Lei.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reported-by: Ming Lei <tom.leiming@gmail.com>
Tested-by: Ming Lei <tom.leiming@gmail.com>
Signed-off-by: Jens Axboe <axboe@fb.com>
block/blk-flush.c
block/blk-mq.c
include/linux/blk-mq.h
include/linux/blkdev.h