linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* block: check for dying queue in generic_make_request()
@ 2014-04-17  3:31 Asai Thambi S P
  0 siblings, 0 replies; only message in thread
From: Asai Thambi S P @ 2014-04-17  3:31 UTC (permalink / raw)
  To: Jens Axboe; +Cc: linux-kernel, Sam Bradshaw


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@micron.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


^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2014-04-17  3:32 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-04-17  3:31 block: check for dying queue in generic_make_request() Asai Thambi S P

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).