|
@@ -400,10 +400,15 @@ static inline int scsi_host_is_busy(struct Scsi_Host *shost)
|
|
static void scsi_run_queue(struct request_queue *q)
|
|
static void scsi_run_queue(struct request_queue *q)
|
|
{
|
|
{
|
|
struct scsi_device *sdev = q->queuedata;
|
|
struct scsi_device *sdev = q->queuedata;
|
|
- struct Scsi_Host *shost = sdev->host;
|
|
|
|
|
|
+ struct Scsi_Host *shost;
|
|
LIST_HEAD(starved_list);
|
|
LIST_HEAD(starved_list);
|
|
unsigned long flags;
|
|
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)
|
|
if (scsi_target(sdev)->single_lun)
|
|
scsi_single_lun_run(sdev);
|
|
scsi_single_lun_run(sdev);
|
|
|
|
|