+++ /dev/null
-Subject: block: blk_cleanup_queue() should call blk_sync_queue()
-From: Jens Axboe <jens.axboe@oracle.com>
-Date: Thu Oct 9 08:56:18 2008 +0200:
-Git: e3335de94067dbebe22e3962632ead34e832cb60
-
-When a driver calls blk_cleanup_queue(), the device should be fully idle.
-However, the block layer may have pending plugging timers and the IO
-schedulers may have pending work in the work queues. So quisce the device
-by waiting for the timer and flushing the work queues.
-
-Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
-Signed-off-by: Hannes Reinecke <hare@suse.de>
-
----
- block/blk-core.c | 8 ++++++++
- 1 file changed, 8 insertions(+)
-
---- a/block/blk-core.c
-+++ b/block/blk-core.c
-@@ -435,6 +435,14 @@ void blk_put_queue(struct request_queue
-
- void blk_cleanup_queue(struct request_queue *q)
- {
-+ /*
-+ * We know we have process context here, so we can be a little
-+ * cautious and ensure that pending block actions on this device
-+ * are done before moving on. Going into this function, we should
-+ * not have processes doing IO to this device.
-+ */
-+ blk_sync_queue(q);
-+
- mutex_lock(&q->sysfs_lock);
- queue_flag_set_unlocked(QUEUE_FLAG_DEAD, q);
- mutex_unlock(&q->sysfs_lock);