diff options
Diffstat (limited to 'drivers/scsi/scsi_lib.c')
-rw-r--r-- | drivers/scsi/scsi_lib.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c index 28d9c9d6b4b..f97acffdddc 100644 --- a/drivers/scsi/scsi_lib.c +++ b/drivers/scsi/scsi_lib.c | |||
@@ -1697,6 +1697,15 @@ struct request_queue *scsi_alloc_queue(struct scsi_device *sdev) | |||
1697 | 1697 | ||
1698 | void scsi_free_queue(struct request_queue *q) | 1698 | void scsi_free_queue(struct request_queue *q) |
1699 | { | 1699 | { |
1700 | unsigned long flags; | ||
1701 | |||
1702 | WARN_ON(q->queuedata); | ||
1703 | |||
1704 | /* cause scsi_request_fn() to kill all non-finished requests */ | ||
1705 | spin_lock_irqsave(q->queue_lock, flags); | ||
1706 | q->request_fn(q); | ||
1707 | spin_unlock_irqrestore(q->queue_lock, flags); | ||
1708 | |||
1700 | blk_cleanup_queue(q); | 1709 | blk_cleanup_queue(q); |
1701 | } | 1710 | } |
1702 | 1711 | ||