diff options
-rw-r--r-- | drivers/scsi/qla4xxx/ql4_init.c | 1 | ||||
-rw-r--r-- | drivers/scsi/qla4xxx/ql4_os.c | 40 |
2 files changed, 5 insertions, 36 deletions
diff --git a/drivers/scsi/qla4xxx/ql4_init.c b/drivers/scsi/qla4xxx/ql4_init.c index 49925f92555e..10b3b9a620f3 100644 --- a/drivers/scsi/qla4xxx/ql4_init.c +++ b/drivers/scsi/qla4xxx/ql4_init.c | |||
@@ -1306,6 +1306,7 @@ int qla4xxx_process_ddb_changed(struct scsi_qla_host *ha, | |||
1306 | atomic_set(&ddb_entry->relogin_timer, 0); | 1306 | atomic_set(&ddb_entry->relogin_timer, 0); |
1307 | clear_bit(DF_RELOGIN, &ddb_entry->flags); | 1307 | clear_bit(DF_RELOGIN, &ddb_entry->flags); |
1308 | clear_bit(DF_NO_RELOGIN, &ddb_entry->flags); | 1308 | clear_bit(DF_NO_RELOGIN, &ddb_entry->flags); |
1309 | iscsi_unblock_session(ddb_entry->sess); | ||
1309 | iscsi_session_event(ddb_entry->sess, | 1310 | iscsi_session_event(ddb_entry->sess, |
1310 | ISCSI_KEVENT_CREATE_SESSION); | 1311 | ISCSI_KEVENT_CREATE_SESSION); |
1311 | /* | 1312 | /* |
diff --git a/drivers/scsi/qla4xxx/ql4_os.c b/drivers/scsi/qla4xxx/ql4_os.c index 2e2b9fedffcc..a87fb9f00ac4 100644 --- a/drivers/scsi/qla4xxx/ql4_os.c +++ b/drivers/scsi/qla4xxx/ql4_os.c | |||
@@ -63,8 +63,6 @@ static int qla4xxx_sess_get_param(struct iscsi_cls_session *sess, | |||
63 | enum iscsi_param param, char *buf); | 63 | enum iscsi_param param, char *buf); |
64 | static int qla4xxx_host_get_param(struct Scsi_Host *shost, | 64 | static int qla4xxx_host_get_param(struct Scsi_Host *shost, |
65 | enum iscsi_host_param param, char *buf); | 65 | enum iscsi_host_param param, char *buf); |
66 | static void qla4xxx_conn_stop(struct iscsi_cls_conn *conn, int flag); | ||
67 | static int qla4xxx_conn_start(struct iscsi_cls_conn *conn); | ||
68 | static void qla4xxx_recovery_timedout(struct iscsi_cls_session *session); | 66 | static void qla4xxx_recovery_timedout(struct iscsi_cls_session *session); |
69 | 67 | ||
70 | /* | 68 | /* |
@@ -116,8 +114,6 @@ static struct iscsi_transport qla4xxx_iscsi_transport = { | |||
116 | .get_conn_param = qla4xxx_conn_get_param, | 114 | .get_conn_param = qla4xxx_conn_get_param, |
117 | .get_session_param = qla4xxx_sess_get_param, | 115 | .get_session_param = qla4xxx_sess_get_param, |
118 | .get_host_param = qla4xxx_host_get_param, | 116 | .get_host_param = qla4xxx_host_get_param, |
119 | .start_conn = qla4xxx_conn_start, | ||
120 | .stop_conn = qla4xxx_conn_stop, | ||
121 | .session_recovery_timedout = qla4xxx_recovery_timedout, | 117 | .session_recovery_timedout = qla4xxx_recovery_timedout, |
122 | }; | 118 | }; |
123 | 119 | ||
@@ -140,38 +136,6 @@ static void qla4xxx_recovery_timedout(struct iscsi_cls_session *session) | |||
140 | queue_work(ha->dpc_thread, &ha->dpc_work); | 136 | queue_work(ha->dpc_thread, &ha->dpc_work); |
141 | } | 137 | } |
142 | 138 | ||
143 | static int qla4xxx_conn_start(struct iscsi_cls_conn *conn) | ||
144 | { | ||
145 | struct iscsi_cls_session *session; | ||
146 | struct ddb_entry *ddb_entry; | ||
147 | |||
148 | session = iscsi_dev_to_session(conn->dev.parent); | ||
149 | ddb_entry = session->dd_data; | ||
150 | |||
151 | DEBUG2(printk("scsi%ld: %s: index [%d] starting conn\n", | ||
152 | ddb_entry->ha->host_no, __func__, | ||
153 | ddb_entry->fw_ddb_index)); | ||
154 | iscsi_unblock_session(session); | ||
155 | return 0; | ||
156 | } | ||
157 | |||
158 | static void qla4xxx_conn_stop(struct iscsi_cls_conn *conn, int flag) | ||
159 | { | ||
160 | struct iscsi_cls_session *session; | ||
161 | struct ddb_entry *ddb_entry; | ||
162 | |||
163 | session = iscsi_dev_to_session(conn->dev.parent); | ||
164 | ddb_entry = session->dd_data; | ||
165 | |||
166 | DEBUG2(printk("scsi%ld: %s: index [%d] stopping conn\n", | ||
167 | ddb_entry->ha->host_no, __func__, | ||
168 | ddb_entry->fw_ddb_index)); | ||
169 | if (flag == STOP_CONN_RECOVER) | ||
170 | iscsi_block_session(session); | ||
171 | else | ||
172 | printk(KERN_ERR "iscsi: invalid stop flag %d\n", flag); | ||
173 | } | ||
174 | |||
175 | static int qla4xxx_host_get_param(struct Scsi_Host *shost, | 139 | static int qla4xxx_host_get_param(struct Scsi_Host *shost, |
176 | enum iscsi_host_param param, char *buf) | 140 | enum iscsi_host_param param, char *buf) |
177 | { | 141 | { |
@@ -308,6 +272,9 @@ int qla4xxx_add_sess(struct ddb_entry *ddb_entry) | |||
308 | DEBUG2(printk(KERN_ERR "Could not add connection.\n")); | 272 | DEBUG2(printk(KERN_ERR "Could not add connection.\n")); |
309 | return -ENOMEM; | 273 | return -ENOMEM; |
310 | } | 274 | } |
275 | |||
276 | /* finally ready to go */ | ||
277 | iscsi_unblock_session(ddb_entry->sess); | ||
311 | return 0; | 278 | return 0; |
312 | } | 279 | } |
313 | 280 | ||
@@ -364,6 +331,7 @@ void qla4xxx_mark_device_missing(struct scsi_qla_host *ha, | |||
364 | DEBUG3(printk("scsi%d:%d:%d: index [%d] marked MISSING\n", | 331 | DEBUG3(printk("scsi%d:%d:%d: index [%d] marked MISSING\n", |
365 | ha->host_no, ddb_entry->bus, ddb_entry->target, | 332 | ha->host_no, ddb_entry->bus, ddb_entry->target, |
366 | ddb_entry->fw_ddb_index)); | 333 | ddb_entry->fw_ddb_index)); |
334 | iscsi_block_session(ddb_entry->sess); | ||
367 | iscsi_conn_error(ddb_entry->conn, ISCSI_ERR_CONN_FAILED); | 335 | iscsi_conn_error(ddb_entry->conn, ISCSI_ERR_CONN_FAILED); |
368 | } | 336 | } |
369 | 337 | ||