|
@@ -406,10 +406,6 @@ static void scsi_run_queue(struct request_queue *q)
|
|
|
LIST_HEAD(starved_list);
|
|
|
unsigned long flags;
|
|
|
|
|
|
- /* if the device is dead, sdev will be NULL, so no queue to run */
|
|
|
- if (!sdev)
|
|
|
- return;
|
|
|
-
|
|
|
shost = sdev->host;
|
|
|
if (scsi_target(sdev)->single_lun)
|
|
|
scsi_single_lun_run(sdev);
|
|
@@ -1371,16 +1367,16 @@ static inline int scsi_host_queue_ready(struct request_queue *q,
|
|
|
* may be changed after request stacking drivers call the function,
|
|
|
* regardless of taking lock or not.
|
|
|
*
|
|
|
- * When scsi can't dispatch I/Os anymore and needs to kill I/Os
|
|
|
- * (e.g. !sdev), scsi needs to return 'not busy'.
|
|
|
- * Otherwise, request stacking drivers may hold requests forever.
|
|
|
+ * When scsi can't dispatch I/Os anymore and needs to kill I/Os scsi
|
|
|
+ * needs to return 'not busy'. Otherwise, request stacking drivers
|
|
|
+ * may hold requests forever.
|
|
|
*/
|
|
|
static int scsi_lld_busy(struct request_queue *q)
|
|
|
{
|
|
|
struct scsi_device *sdev = q->queuedata;
|
|
|
struct Scsi_Host *shost;
|
|
|
|
|
|
- if (!sdev)
|
|
|
+ if (blk_queue_dead(q))
|
|
|
return 0;
|
|
|
|
|
|
shost = sdev->host;
|
|
@@ -1491,12 +1487,6 @@ static void scsi_request_fn(struct request_queue *q)
|
|
|
struct scsi_cmnd *cmd;
|
|
|
struct request *req;
|
|
|
|
|
|
- if (!sdev) {
|
|
|
- while ((req = blk_peek_request(q)) != NULL)
|
|
|
- scsi_kill_request(req, q);
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
if(!get_device(&sdev->sdev_gendev))
|
|
|
/* We must be tearing the block queue down already */
|
|
|
return;
|
|
@@ -1698,20 +1688,6 @@ struct request_queue *scsi_alloc_queue(struct scsi_device *sdev)
|
|
|
return q;
|
|
|
}
|
|
|
|
|
|
-void scsi_free_queue(struct request_queue *q)
|
|
|
-{
|
|
|
- unsigned long flags;
|
|
|
-
|
|
|
- WARN_ON(q->queuedata);
|
|
|
-
|
|
|
- /* cause scsi_request_fn() to kill all non-finished requests */
|
|
|
- spin_lock_irqsave(q->queue_lock, flags);
|
|
|
- q->request_fn(q);
|
|
|
- spin_unlock_irqrestore(q->queue_lock, flags);
|
|
|
-
|
|
|
- blk_cleanup_queue(q);
|
|
|
-}
|
|
|
-
|
|
|
/*
|
|
|
* Function: scsi_block_requests()
|
|
|
*
|