diff options
author | Mike Christie <michaelc@cs.wisc.edu> | 2010-07-22 07:29:49 -0400 |
---|---|---|
committer | James Bottomley <James.Bottomley@suse.de> | 2010-07-28 10:06:06 -0400 |
commit | c01be6dcb2b5cce4feaf48035be6395e5cd7d47c (patch) | |
tree | b3080a6410e46a6c84bb6315bd56cc9fe085d874 /drivers/scsi/qla4xxx | |
parent | fe4f0bdeea788a8ac049c097895cb2e4044f18b1 (diff) |
[SCSI] iscsi_transport: wait on session in error handler path
wait for session to come online in eh_device_reset_handler
and eh_target_reset_handler
Signed-off-by: Mike Christie <michaelc@cs.wisc.edu>
Signed-off-by: Vikas Chaudhary <vikas.chaudhary@qlogic.com>
Signed-off-by: Ravi Anand <ravi.anand@qlogic.com>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
Diffstat (limited to 'drivers/scsi/qla4xxx')
-rw-r--r-- | drivers/scsi/qla4xxx/ql4_os.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/drivers/scsi/qla4xxx/ql4_os.c b/drivers/scsi/qla4xxx/ql4_os.c index 821384147a41..5529b2a39741 100644 --- a/drivers/scsi/qla4xxx/ql4_os.c +++ b/drivers/scsi/qla4xxx/ql4_os.c | |||
@@ -2020,6 +2020,11 @@ static int qla4xxx_eh_device_reset(struct scsi_cmnd *cmd) | |||
2020 | if (!ddb_entry) | 2020 | if (!ddb_entry) |
2021 | return ret; | 2021 | return ret; |
2022 | 2022 | ||
2023 | ret = iscsi_block_scsi_eh(cmd); | ||
2024 | if (ret) | ||
2025 | return ret; | ||
2026 | ret = FAILED; | ||
2027 | |||
2023 | ql4_printk(KERN_INFO, ha, | 2028 | ql4_printk(KERN_INFO, ha, |
2024 | "scsi%ld:%d:%d:%d: DEVICE RESET ISSUED.\n", ha->host_no, | 2029 | "scsi%ld:%d:%d:%d: DEVICE RESET ISSUED.\n", ha->host_no, |
2025 | cmd->device->channel, cmd->device->id, cmd->device->lun); | 2030 | cmd->device->channel, cmd->device->id, cmd->device->lun); |
@@ -2072,11 +2077,15 @@ static int qla4xxx_eh_target_reset(struct scsi_cmnd *cmd) | |||
2072 | { | 2077 | { |
2073 | struct scsi_qla_host *ha = to_qla_host(cmd->device->host); | 2078 | struct scsi_qla_host *ha = to_qla_host(cmd->device->host); |
2074 | struct ddb_entry *ddb_entry = cmd->device->hostdata; | 2079 | struct ddb_entry *ddb_entry = cmd->device->hostdata; |
2075 | int stat; | 2080 | int stat, ret; |
2076 | 2081 | ||
2077 | if (!ddb_entry) | 2082 | if (!ddb_entry) |
2078 | return FAILED; | 2083 | return FAILED; |
2079 | 2084 | ||
2085 | ret = iscsi_block_scsi_eh(cmd); | ||
2086 | if (ret) | ||
2087 | return ret; | ||
2088 | |||
2080 | starget_printk(KERN_INFO, scsi_target(cmd->device), | 2089 | starget_printk(KERN_INFO, scsi_target(cmd->device), |
2081 | "WARM TARGET RESET ISSUED.\n"); | 2090 | "WARM TARGET RESET ISSUED.\n"); |
2082 | 2091 | ||