diff options
Diffstat (limited to 'drivers/scsi/scsi_lib.c')
-rw-r--r-- | drivers/scsi/scsi_lib.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c index fc3f168decb4..f85cfa6c47b5 100644 --- a/drivers/scsi/scsi_lib.c +++ b/drivers/scsi/scsi_lib.c | |||
@@ -12,6 +12,7 @@ | |||
12 | #include <linux/blkdev.h> | 12 | #include <linux/blkdev.h> |
13 | #include <linux/completion.h> | 13 | #include <linux/completion.h> |
14 | #include <linux/kernel.h> | 14 | #include <linux/kernel.h> |
15 | #include <linux/export.h> | ||
15 | #include <linux/mempool.h> | 16 | #include <linux/mempool.h> |
16 | #include <linux/slab.h> | 17 | #include <linux/slab.h> |
17 | #include <linux/init.h> | 18 | #include <linux/init.h> |
@@ -1408,6 +1409,8 @@ static void scsi_kill_request(struct request *req, struct request_queue *q) | |||
1408 | 1409 | ||
1409 | blk_start_request(req); | 1410 | blk_start_request(req); |
1410 | 1411 | ||
1412 | scmd_printk(KERN_INFO, cmd, "killing request\n"); | ||
1413 | |||
1411 | sdev = cmd->device; | 1414 | sdev = cmd->device; |
1412 | starget = scsi_target(sdev); | 1415 | starget = scsi_target(sdev); |
1413 | shost = sdev->host; | 1416 | shost = sdev->host; |
@@ -1489,7 +1492,6 @@ static void scsi_request_fn(struct request_queue *q) | |||
1489 | struct request *req; | 1492 | struct request *req; |
1490 | 1493 | ||
1491 | if (!sdev) { | 1494 | if (!sdev) { |
1492 | printk("scsi: killing requests for dead queue\n"); | ||
1493 | while ((req = blk_peek_request(q)) != NULL) | 1495 | while ((req = blk_peek_request(q)) != NULL) |
1494 | scsi_kill_request(req, q); | 1496 | scsi_kill_request(req, q); |
1495 | return; | 1497 | return; |
@@ -1698,6 +1700,15 @@ struct request_queue *scsi_alloc_queue(struct scsi_device *sdev) | |||
1698 | 1700 | ||
1699 | void scsi_free_queue(struct request_queue *q) | 1701 | void scsi_free_queue(struct request_queue *q) |
1700 | { | 1702 | { |
1703 | unsigned long flags; | ||
1704 | |||
1705 | WARN_ON(q->queuedata); | ||
1706 | |||
1707 | /* cause scsi_request_fn() to kill all non-finished requests */ | ||
1708 | spin_lock_irqsave(q->queue_lock, flags); | ||
1709 | q->request_fn(q); | ||
1710 | spin_unlock_irqrestore(q->queue_lock, flags); | ||
1711 | |||
1701 | blk_cleanup_queue(q); | 1712 | blk_cleanup_queue(q); |
1702 | } | 1713 | } |
1703 | 1714 | ||