Lines Matching defs:s
50 session_cleanup(struct session *s)
54 taskq_cleanup(&s->tasks);
56 while ((c = TAILQ_FIRST(&s->connections)) != NULL)
59 free(s->config.TargetName);
60 free(s->config.InitiatorName);
61 free(s);
65 session_shutdown(struct session *s)
67 log_debug("session[%s] going down", s->config.SessionName);
69 s->action = SESS_ACT_DOWN;
70 if (s->state & (SESS_INIT | SESS_FREE)) {
73 while ((c = TAILQ_FIRST(&s->connections)) != NULL)
79 taskq_cleanup(&s->tasks);
80 initiator_logout(s, NULL, ISCSI_LOGOUT_CLOSE_SESS);
86 session_config(struct session *s, struct session_config *sc)
88 free(s->config.TargetName);
89 s->config.TargetName = NULL;
90 free(s->config.InitiatorName);
91 s->config.InitiatorName = NULL;
93 s->config = *sc;
96 s->config.TargetName = strdup(sc->TargetName);
97 if (s->config.TargetName == NULL)
101 s->config.InitiatorName = strdup(sc->InitiatorName);
102 if (s->config.InitiatorName == NULL)
105 s->config.InitiatorName = default_initiator_name();
109 session_task_issue(struct session *s, struct task *t)
111 TAILQ_INSERT_TAIL(&s->tasks, t, entry);
112 session_schedule(s);
116 session_logout_issue(struct session *s, struct task *t)
121 TAILQ_FOREACH(c, &s->connections, entry) {
142 session_schedule(struct session *s)
144 struct task *t = TAILQ_FIRST(&s->tasks);
154 TAILQ_FOREACH(c, &s->connections, entry)
156 TAILQ_REMOVE(&s->tasks, t, entry);
168 struct session *s = sev->sess;
171 log_debug("session_fsm[%s]: %s ev %s timeout %d",
172 s->config.SessionName, sess_state(s->state),
207 struct session *s = sev->sess;
211 if (s->state & s_fsm[i].state &&
213 log_debug("sess_fsm[%s]: %s ev %s",
214 s->config.SessionName, sess_state(s->state),
216 ns = s_fsm[i].action(s, sev);
220 log_debug("sess_fsm[%s]: new state %s",
221 s->config.SessionName,
223 s->state = ns;
228 log_warnx("sess_fsm[%s]: unhandled state transition "
229 "[%s, %s]", s->config.SessionName,
230 sess_state(s->state), sess_event(sev->event));
236 sess_do_start(struct session *s, struct sessev *sev)
238 log_debug("new connection to %s",
239 log_sockaddr(&s->config.connection.TargetAddr));
242 s->mine = initiator_sess_defaults;
243 s->his = iscsi_sess_defaults;
244 s->active = iscsi_sess_defaults;
246 if (s->config.SessionType != SESSION_TYPE_DISCOVERY &&
247 s->config.MaxConnections)
248 s->mine.MaxConnections = s->config.MaxConnections;
250 conn_new(s, &s->config.connection);
253 if (s->state == SESS_INIT)
256 return s->state;
260 sess_do_conn_loggedin(struct session *s, struct sessev *sev)
262 if (s->state & SESS_LOGGED_IN)
265 if (s->config.SessionType == SESSION_TYPE_DISCOVERY) {
266 initiator_discovery(s);
270 iscsi_merge_sess_params(&s->active, &s->mine, &s->his);
271 vscsi_event(VSCSI_REQPROBE, s->target, -1);
272 s->holdTimer = 0;
278 sess_do_conn_fail(struct session *s, struct sessev *sev)
307 TAILQ_FOREACH(c, &s->connections, entry) {
315 session_fsm(&s->sev, SESS_EV_START, s->holdTimer);
317 if (s->holdTimer < ISCSID_HOLD_TIME_MAX)
318 s->holdTimer = s->holdTimer ? s->holdTimer * 2 : 1;
324 sess_do_conn_closed(struct session *s, struct sessev *sev)
335 TAILQ_FOREACH(c, &s->connections, entry) {
347 sess_do_stop(struct session *s, struct sessev *sev)
353 while ((c = TAILQ_FIRST(&s->connections)) != NULL)
361 sess_do_free(struct session *s, struct sessev *sev)
365 while ((c = TAILQ_FIRST(&s->connections)) != NULL)
375 sess_do_reinstatement(struct session *s, struct sessev *sev)
379 TAILQ_FOREACH_SAFE(c, &s->connections, entry, nc) {
380 log_debug("sess reinstatement[%s]: %s",
381 s->config.SessionName, conn_state(c->state));
393 sess_state(int s)
397 switch (s) {
407 snprintf(buf, sizeof(buf), "UKNWN %x", s);