diff options
author | Andrew Vasquez <andrew.vasquez@qlogic.com> | 2008-01-17 12:02:12 -0500 |
---|---|---|
committer | James Bottomley <James.Bottomley@HansenPartnership.com> | 2008-01-23 12:29:31 -0500 |
commit | a4722cf24d7a0dfa0874d49f61b053a6459761bf (patch) | |
tree | d4815ab306975e9604805fab5b4a2a14b55c793c /drivers | |
parent | da7429f9ab5ba939cec37d07ef7f6a630fe48421 (diff) |
[SCSI] qla2xxx: Don't schedule the DPC routine to perform an issue-lip request.
As the driver depends on the DPC routine to handle bottom-half
loop resynchronization in order to recover from the issue-lip
request. The issue_lip call is sleeping context capable, so just
issue the reset function there.
Signed-off-by: Andrew Vasquez <andrew.vasquez@qlogic.com>
Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/scsi/qla2xxx/qla_attr.c | 2 | ||||
-rw-r--r-- | drivers/scsi/qla2xxx/qla_gbl.h | 2 | ||||
-rw-r--r-- | drivers/scsi/qla2xxx/qla_os.c | 3 |
3 files changed, 4 insertions, 3 deletions
diff --git a/drivers/scsi/qla2xxx/qla_attr.c b/drivers/scsi/qla2xxx/qla_attr.c index e3bda8f7668c..22b3868e7a1f 100644 --- a/drivers/scsi/qla2xxx/qla_attr.c +++ b/drivers/scsi/qla2xxx/qla_attr.c | |||
@@ -958,7 +958,7 @@ qla2x00_issue_lip(struct Scsi_Host *shost) | |||
958 | { | 958 | { |
959 | scsi_qla_host_t *ha = shost_priv(shost); | 959 | scsi_qla_host_t *ha = shost_priv(shost); |
960 | 960 | ||
961 | set_bit(LOOP_RESET_NEEDED, &ha->dpc_flags); | 961 | qla2x00_loop_reset(ha); |
962 | return 0; | 962 | return 0; |
963 | } | 963 | } |
964 | 964 | ||
diff --git a/drivers/scsi/qla2xxx/qla_gbl.h b/drivers/scsi/qla2xxx/qla_gbl.h index 5b381dc8d749..f6917b94701e 100644 --- a/drivers/scsi/qla2xxx/qla_gbl.h +++ b/drivers/scsi/qla2xxx/qla_gbl.h | |||
@@ -65,6 +65,8 @@ extern int ql2xextended_error_logging; | |||
65 | extern int ql2xqfullrampup; | 65 | extern int ql2xqfullrampup; |
66 | extern int num_hosts; | 66 | extern int num_hosts; |
67 | 67 | ||
68 | extern int qla2x00_loop_reset(scsi_qla_host_t *); | ||
69 | |||
68 | /* | 70 | /* |
69 | * Global Functions in qla_mid.c source file. | 71 | * Global Functions in qla_mid.c source file. |
70 | */ | 72 | */ |
diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c index df1694a2f875..0a414c0dd580 100644 --- a/drivers/scsi/qla2xxx/qla_os.c +++ b/drivers/scsi/qla2xxx/qla_os.c | |||
@@ -105,7 +105,6 @@ static int qla2xxx_eh_abort(struct scsi_cmnd *); | |||
105 | static int qla2xxx_eh_device_reset(struct scsi_cmnd *); | 105 | static int qla2xxx_eh_device_reset(struct scsi_cmnd *); |
106 | static int qla2xxx_eh_bus_reset(struct scsi_cmnd *); | 106 | static int qla2xxx_eh_bus_reset(struct scsi_cmnd *); |
107 | static int qla2xxx_eh_host_reset(struct scsi_cmnd *); | 107 | static int qla2xxx_eh_host_reset(struct scsi_cmnd *); |
108 | static int qla2x00_loop_reset(scsi_qla_host_t *ha); | ||
109 | static int qla2x00_device_reset(scsi_qla_host_t *, fc_port_t *); | 108 | static int qla2x00_device_reset(scsi_qla_host_t *, fc_port_t *); |
110 | 109 | ||
111 | static int qla2x00_change_queue_depth(struct scsi_device *, int); | 110 | static int qla2x00_change_queue_depth(struct scsi_device *, int); |
@@ -1060,7 +1059,7 @@ eh_host_reset_lock: | |||
1060 | * Returns: | 1059 | * Returns: |
1061 | * 0 = success | 1060 | * 0 = success |
1062 | */ | 1061 | */ |
1063 | static int | 1062 | int |
1064 | qla2x00_loop_reset(scsi_qla_host_t *ha) | 1063 | qla2x00_loop_reset(scsi_qla_host_t *ha) |
1065 | { | 1064 | { |
1066 | int ret; | 1065 | int ret; |