diff options
author | Mike Christie <michaelc@cs.wisc.edu> | 2006-06-28 13:00:32 -0400 |
---|---|---|
committer | James Bottomley <jejb@mulgrave.il.steeleye.com> | 2006-06-29 11:14:42 -0400 |
commit | 53cb8a1f45e06a2627a6d89b151cccb95fa45cbf (patch) | |
tree | 272c8bfb7a3e8a9a9af55e2e6b76e0ecd757410b /include/scsi | |
parent | 6a8a0d3621745279a131d95f0204dc9ddac60d55 (diff) |
[SCSI] iscsi: add async notification of session events
This patch adds or modifies the transport class functions
used to notify userspace of session state events.
We modify the session addition up event and add a destruction event
to notify userspace of session creation, relogin and destruction.
And we modify the conn error event to be sent by broadcast
since multiple listeners may want to listen for it.
Signed-off-by: Mike Christie <michaelc@cs.wisc.edu>
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
Diffstat (limited to 'include/scsi')
-rw-r--r-- | include/scsi/iscsi_if.h | 23 | ||||
-rw-r--r-- | include/scsi/scsi_transport_iscsi.h | 3 |
2 files changed, 8 insertions, 18 deletions
diff --git a/include/scsi/iscsi_if.h b/include/scsi/iscsi_if.h index 8813f0f4c624..55ebf035e620 100644 --- a/include/scsi/iscsi_if.h +++ b/include/scsi/iscsi_if.h | |||
@@ -53,6 +53,7 @@ enum iscsi_uevent_e { | |||
53 | ISCSI_KEVENT_RECV_PDU = KEVENT_BASE + 1, | 53 | ISCSI_KEVENT_RECV_PDU = KEVENT_BASE + 1, |
54 | ISCSI_KEVENT_CONN_ERROR = KEVENT_BASE + 2, | 54 | ISCSI_KEVENT_CONN_ERROR = KEVENT_BASE + 2, |
55 | ISCSI_KEVENT_IF_ERROR = KEVENT_BASE + 3, | 55 | ISCSI_KEVENT_IF_ERROR = KEVENT_BASE + 3, |
56 | ISCSI_KEVENT_DESTROY_SESSION = KEVENT_BASE + 4, | ||
56 | }; | 57 | }; |
57 | 58 | ||
58 | enum iscsi_tgt_dscvr { | 59 | enum iscsi_tgt_dscvr { |
@@ -157,27 +158,13 @@ struct iscsi_uevent { | |||
157 | uint32_t cid; | 158 | uint32_t cid; |
158 | uint32_t error; /* enum iscsi_err */ | 159 | uint32_t error; /* enum iscsi_err */ |
159 | } connerror; | 160 | } connerror; |
161 | struct msg_session_destroyed { | ||
162 | uint32_t host_no; | ||
163 | uint32_t sid; | ||
164 | } d_session; | ||
160 | struct msg_transport_connect_ret { | 165 | struct msg_transport_connect_ret { |
161 | uint64_t handle; | 166 | uint64_t handle; |
162 | } ep_connect_ret; | 167 | } ep_connect_ret; |
163 | struct msg_tgt_dscvr_ret { | ||
164 | /* | ||
165 | * session/connection pair used to reference | ||
166 | * the connection to server | ||
167 | */ | ||
168 | uint32_t sid; | ||
169 | uint32_t cid; | ||
170 | union { | ||
171 | struct isns { | ||
172 | /* port # for conn to iSNS server */ | ||
173 | uint16_t isns_port; | ||
174 | /* listening port to receive SCNs */ | ||
175 | uint16_t scn_port; | ||
176 | /* listening port to receive ESIs */ | ||
177 | uint16_t esi_port; | ||
178 | } isns_attrib; | ||
179 | } u; | ||
180 | } tgt_dscvr_ret; | ||
181 | } r; | 168 | } r; |
182 | } __attribute__ ((aligned (sizeof(uint64_t)))); | 169 | } __attribute__ ((aligned (sizeof(uint64_t)))); |
183 | 170 | ||
diff --git a/include/scsi/scsi_transport_iscsi.h b/include/scsi/scsi_transport_iscsi.h index f7b0db5f2f5b..5a3df1d7085f 100644 --- a/include/scsi/scsi_transport_iscsi.h +++ b/include/scsi/scsi_transport_iscsi.h | |||
@@ -214,6 +214,8 @@ extern struct iscsi_cls_session *iscsi_alloc_session(struct Scsi_Host *shost, | |||
214 | struct iscsi_transport *transport); | 214 | struct iscsi_transport *transport); |
215 | extern int iscsi_add_session(struct iscsi_cls_session *session, | 215 | extern int iscsi_add_session(struct iscsi_cls_session *session, |
216 | unsigned int target_id); | 216 | unsigned int target_id); |
217 | extern int iscsi_if_create_session_done(struct iscsi_cls_conn *conn); | ||
218 | extern int iscsi_if_destroy_session_done(struct iscsi_cls_conn *conn); | ||
217 | extern struct iscsi_cls_session *iscsi_create_session(struct Scsi_Host *shost, | 219 | extern struct iscsi_cls_session *iscsi_create_session(struct Scsi_Host *shost, |
218 | struct iscsi_transport *t, | 220 | struct iscsi_transport *t, |
219 | unsigned int target_id); | 221 | unsigned int target_id); |
@@ -226,4 +228,5 @@ extern int iscsi_destroy_conn(struct iscsi_cls_conn *conn); | |||
226 | extern void iscsi_unblock_session(struct iscsi_cls_session *session); | 228 | extern void iscsi_unblock_session(struct iscsi_cls_session *session); |
227 | extern void iscsi_block_session(struct iscsi_cls_session *session); | 229 | extern void iscsi_block_session(struct iscsi_cls_session *session); |
228 | 230 | ||
231 | |||
229 | #endif | 232 | #endif |