[SCSI] ipr: Fix ipr PCI hotplug hang with CDROM attach
authorbrking@us.ibm.com <brking@us.ibm.com>
Tue, 3 May 2005 00:50:47 +0000 (19:50 -0500)
committerJames Bottomley <jejb@mulgrave.(none)>
Fri, 20 May 2005 17:53:48 +0000 (12:53 -0500)
Currently, during PCI hotplug remove, if the upper layer
drivers of the attached devices send commands down as part
of the remove action, like a CDROM, the hotplug action
will hang forever due to the ipr driver returning
SCSI_MLQUEUE_HOST_BUSY. Patch fixes this.

Signed-off-by: Brian King <brking@us.ibm.com>
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
drivers/scsi/ipr.c

index 4ba9e886346dc811e3120706b088fe9ec2009751..a3d9cf675681f4745ff78a03223d66f15d00ab99 100644 (file)
@@ -5886,6 +5886,7 @@ static void __ipr_remove(struct pci_dev *pdev)
 
        spin_unlock_irqrestore(ioa_cfg->host->host_lock, host_lock_flags);
        wait_event(ioa_cfg->reset_wait_q, !ioa_cfg->in_reset_reload);
+       flush_scheduled_work();
        spin_lock_irqsave(ioa_cfg->host->host_lock, host_lock_flags);
 
        spin_lock(&ipr_driver_lock);
@@ -5916,8 +5917,6 @@ static void ipr_remove(struct pci_dev *pdev)
 
        ENTER;
 
-       ioa_cfg->allow_cmds = 0;
-       flush_scheduled_work();
        ipr_remove_trace_file(&ioa_cfg->host->shost_classdev.kobj,
                              &ipr_trace_attr);
        ipr_remove_dump_file(&ioa_cfg->host->shost_classdev.kobj,