aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/qla4xxx/ql4_os.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/scsi/qla4xxx/ql4_os.c')
-rw-r--r--drivers/scsi/qla4xxx/ql4_os.c40
1 files changed, 4 insertions, 36 deletions
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);
64static int qla4xxx_host_get_param(struct Scsi_Host *shost, 64static 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);
66static void qla4xxx_conn_stop(struct iscsi_cls_conn *conn, int flag);
67static int qla4xxx_conn_start(struct iscsi_cls_conn *conn);
68static void qla4xxx_recovery_timedout(struct iscsi_cls_session *session); 66static 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
143static 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
158static 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
175static int qla4xxx_host_get_param(struct Scsi_Host *shost, 139static 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