mirror of
https://github.com/edk2-porting/linux-next.git
synced 2025-01-03 19:24:02 +08:00
[SCSI] qla4xxx: Fixed session destroy issue on link up-down.
During link down, iscsid tries to do re-login to failed session. In case of link down-up-down, LLD was sending connection login failed event to iscsid, which is destroying the session, instead we have to continue re-login by sending connection err event. JIRA Key: UPSISCSI-134 Signed-off-by: Manish Rangankar <manish.rangankar@qlogic.com> Signed-off-by: Vikas Chaudhary <vikas.chaudhary@qlogic.com> Reviewed-by: Mike Christie <michaelc@cs.wisc.edu> Signed-off-by: James Bottomley <JBottomley@Parallels.com>
This commit is contained in:
parent
736cf369c9
commit
98270ab45c
@ -931,6 +931,22 @@ int qla4xxx_process_ddb_changed(struct scsi_qla_host *ha, uint32_t fw_ddb_index,
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case DDB_DS_SESSION_FAILED:
|
||||||
|
switch (state) {
|
||||||
|
case DDB_DS_SESSION_ACTIVE:
|
||||||
|
case DDB_DS_DISCOVERY:
|
||||||
|
iscsi_conn_login_event(ddb_entry->conn,
|
||||||
|
ISCSI_CONN_STATE_LOGGED_IN);
|
||||||
|
qla4xxx_update_session_conn_param(ha, ddb_entry);
|
||||||
|
status = QLA_SUCCESS;
|
||||||
|
break;
|
||||||
|
case DDB_DS_SESSION_FAILED:
|
||||||
|
iscsi_session_failure(ddb_entry->sess->dd_data,
|
||||||
|
ISCSI_ERR_CONN_FAILED);
|
||||||
|
status = QLA_SUCCESS;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
DEBUG2(ql4_printk(KERN_INFO, ha, "%s: Unknown Event\n",
|
DEBUG2(ql4_printk(KERN_INFO, ha, "%s: Unknown Event\n",
|
||||||
__func__));
|
__func__));
|
||||||
|
@ -1158,7 +1158,11 @@ static int qla4xxx_conn_start(struct iscsi_cls_conn *cls_conn)
|
|||||||
goto exit_conn_start;
|
goto exit_conn_start;
|
||||||
}
|
}
|
||||||
|
|
||||||
ddb_entry->fw_ddb_device_state = DDB_DS_LOGIN_IN_PROCESS;
|
if (ddb_entry->fw_ddb_device_state == DDB_DS_NO_CONNECTION_ACTIVE)
|
||||||
|
ddb_entry->fw_ddb_device_state = DDB_DS_LOGIN_IN_PROCESS;
|
||||||
|
|
||||||
|
DEBUG2(printk(KERN_INFO "%s: DDB state [%d]\n", __func__,
|
||||||
|
ddb_entry->fw_ddb_device_state));
|
||||||
|
|
||||||
exit_set_param:
|
exit_set_param:
|
||||||
iscsi_conn_start(cls_conn);
|
iscsi_conn_start(cls_conn);
|
||||||
|
Loading…
Reference in New Issue
Block a user