]> err.no Git - linux-2.6/blobdiff - drivers/scsi/qla1280.c
[PATCH] Clean up struct flock64 definitions
[linux-2.6] / drivers / scsi / qla1280.c
index 907a1e8cc880230ec34ec43dfd647cd241390ef2..b993652bfa25d3acaaa7332b3ade101a8bd9310f 100644 (file)
@@ -1130,7 +1130,13 @@ qla1280_eh_device_reset(struct scsi_cmnd *cmd)
 static int
 qla1280_eh_bus_reset(struct scsi_cmnd *cmd)
 {
-       return qla1280_error_action(cmd, BUS_RESET);
+       int rc;
+
+       spin_lock_irq(cmd->device->host->host_lock);
+       rc = qla1280_error_action(cmd, BUS_RESET);
+       spin_unlock_irq(cmd->device->host->host_lock);
+
+       return rc;
 }
 
 /**************************************************************************
@@ -1140,7 +1146,13 @@ qla1280_eh_bus_reset(struct scsi_cmnd *cmd)
 static int
 qla1280_eh_adapter_reset(struct scsi_cmnd *cmd)
 {
-       return qla1280_error_action(cmd, ADAPTER_RESET);
+       int rc;
+
+       spin_lock_irq(cmd->device->host->host_lock);
+       rc = qla1280_error_action(cmd, ADAPTER_RESET);
+       spin_unlock_irq(cmd->device->host->host_lock);
+
+       return rc;
 }
 
 static int
@@ -2841,7 +2853,7 @@ qla1280_bus_reset(struct scsi_qla_host *ha, int bus)
                ha->bus_settings[bus].failed_reset_count++;
        } else {
                spin_unlock_irq(HOST_LOCK);
-               schedule_timeout(reset_delay * HZ);
+               ssleep(reset_delay);
                spin_lock_irq(HOST_LOCK);
 
                ha->bus_settings[bus].scsi_bus_dead = 0;