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 fc3f168decb4..b4d43ae76132 100644 --- a/drivers/scsi/scsi_lib.c +++ b/drivers/scsi/scsi_lib.c | |||
| @@ -1698,6 +1698,15 @@ struct request_queue *scsi_alloc_queue(struct scsi_device *sdev) | |||
| 1698 | 1698 | ||
| 1699 | void scsi_free_queue(struct request_queue *q) | 1699 | void scsi_free_queue(struct request_queue *q) |
| 1700 | { | 1700 | { |
| 1701 | unsigned long flags; | ||
| 1702 | |||
| 1703 | WARN_ON(q->queuedata); | ||
| 1704 | |||
| 1705 | /* cause scsi_request_fn() to kill all non-finished requests */ | ||
| 1706 | spin_lock_irqsave(q->queue_lock, flags); | ||
| 1707 | q->request_fn(q); | ||
| 1708 | spin_unlock_irqrestore(q->queue_lock, flags); | ||
| 1709 | |||
| 1701 | blk_cleanup_queue(q); | 1710 | blk_cleanup_queue(q); |
| 1702 | } | 1711 | } |
| 1703 | 1712 | ||
