[<prev] [next>] [day] [month] [year] [list]
Message-ID: <534F4B2D.3060302@micron.com>
Date: Wed, 16 Apr 2014 20:31:57 -0700
From: Asai Thambi S P <asamymuthupa@...ron.com>
To: Jens Axboe <axboe@...nel.dk>
CC: linux-kernel <linux-kernel@...r.kernel.org>,
Sam Bradshaw <sbradshaw@...ron.com>
Subject: block: check for dying queue in generic_make_request()
Check for dying queue is in request queue interface, but not for direct use
of make_request().
When a mounted device is surprise removed, block drivers delete gendisk and
cleanup request queue. As the reference count is non-zero, these structures
continue to exist and any further I/O request is passed on to block drivers.
With respect to the block driver, the device is removed and cleaned up the
data structures. This check will stop I/O to a non-existent device at the
block layer.
Signed-off-by: Asai Thambi S P <asamymuthupa@...ron.com>
---
block/blk-core.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/block/blk-core.c b/block/blk-core.c
index e45b321..cec6bf4 100644
--- a/block/blk-core.c
+++ b/block/blk-core.c
@@ -1713,7 +1713,7 @@ generic_make_request_checks(struct bio *bio)
goto end_io;
q = bdev_get_queue(bio->bi_bdev);
- if (unlikely(!q)) {
+ if (unlikely(!q || blk_queue_dying(q))) {
printk(KERN_ERR
"generic_make_request: Trying to access "
"nonexistent block-device %s (%Lu)\n",
--
1.7.1
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists