Changeset View
Changeset View
Standalone View
Standalone View
sys/dev/iscsi/iscsi.c
Show First 20 Lines • Show All 165 Lines • ▼ Show 20 Lines | |||||
static void iscsi_pdu_handle_data_in(struct icl_pdu *response); | static void iscsi_pdu_handle_data_in(struct icl_pdu *response); | ||||
static void iscsi_pdu_handle_logout_response(struct icl_pdu *response); | static void iscsi_pdu_handle_logout_response(struct icl_pdu *response); | ||||
static void iscsi_pdu_handle_r2t(struct icl_pdu *response); | static void iscsi_pdu_handle_r2t(struct icl_pdu *response); | ||||
static void iscsi_pdu_handle_async_message(struct icl_pdu *response); | static void iscsi_pdu_handle_async_message(struct icl_pdu *response); | ||||
static void iscsi_pdu_handle_reject(struct icl_pdu *response); | static void iscsi_pdu_handle_reject(struct icl_pdu *response); | ||||
static void iscsi_session_reconnect(struct iscsi_session *is); | static void iscsi_session_reconnect(struct iscsi_session *is); | ||||
static void iscsi_session_terminate(struct iscsi_session *is); | static void iscsi_session_terminate(struct iscsi_session *is); | ||||
static void iscsi_action(struct cam_sim *sim, union ccb *ccb); | static void iscsi_action(struct cam_sim *sim, union ccb *ccb); | ||||
static void iscsi_poll(struct cam_sim *sim); | |||||
static struct iscsi_outstanding *iscsi_outstanding_find(struct iscsi_session *is, | static struct iscsi_outstanding *iscsi_outstanding_find(struct iscsi_session *is, | ||||
uint32_t initiator_task_tag); | uint32_t initiator_task_tag); | ||||
static struct iscsi_outstanding *iscsi_outstanding_add(struct iscsi_session *is, | static struct iscsi_outstanding *iscsi_outstanding_add(struct iscsi_session *is, | ||||
struct icl_pdu *request, union ccb *ccb, | struct icl_pdu *request, union ccb *ccb, | ||||
uint32_t *initiator_task_tagp); | uint32_t *initiator_task_tagp); | ||||
static void iscsi_outstanding_remove(struct iscsi_session *is, | static void iscsi_outstanding_remove(struct iscsi_session *is, | ||||
struct iscsi_outstanding *io); | struct iscsi_outstanding *io); | ||||
▲ Show 20 Lines • Show All 1,304 Lines • ▼ Show 20 Lines | if (is->is_sim != NULL) { | ||||
ISCSI_SESSION_LOCK(is); | ISCSI_SESSION_LOCK(is); | ||||
is->is_devq = cam_simq_alloc(ic->ic_maxtags); | is->is_devq = cam_simq_alloc(ic->ic_maxtags); | ||||
if (is->is_devq == NULL) { | if (is->is_devq == NULL) { | ||||
ISCSI_SESSION_WARN(is, "failed to allocate simq"); | ISCSI_SESSION_WARN(is, "failed to allocate simq"); | ||||
iscsi_session_terminate(is); | iscsi_session_terminate(is); | ||||
return (ENOMEM); | return (ENOMEM); | ||||
} | } | ||||
is->is_sim = cam_sim_alloc(iscsi_action, iscsi_poll, "iscsi", | is->is_sim = cam_sim_alloc(iscsi_action, NULL, "iscsi", | ||||
is, is->is_id /* unit */, &is->is_lock, | is, is->is_id /* unit */, &is->is_lock, | ||||
1, ic->ic_maxtags, is->is_devq); | 1, ic->ic_maxtags, is->is_devq); | ||||
if (is->is_sim == NULL) { | if (is->is_sim == NULL) { | ||||
ISCSI_SESSION_UNLOCK(is); | ISCSI_SESSION_UNLOCK(is); | ||||
ISCSI_SESSION_WARN(is, "failed to allocate SIM"); | ISCSI_SESSION_WARN(is, "failed to allocate SIM"); | ||||
cam_simq_free(is->is_devq); | cam_simq_free(is->is_devq); | ||||
iscsi_session_terminate(is); | iscsi_session_terminate(is); | ||||
return (ENOMEM); | return (ENOMEM); | ||||
▲ Show 20 Lines • Show All 952 Lines • ▼ Show 20 Lines | #endif | ||||
default: | default: | ||||
#if 0 | #if 0 | ||||
ISCSI_SESSION_DEBUG(is, "got unsupported code 0x%x", ccb->ccb_h.func_code); | ISCSI_SESSION_DEBUG(is, "got unsupported code 0x%x", ccb->ccb_h.func_code); | ||||
#endif | #endif | ||||
ccb->ccb_h.status = CAM_FUNC_NOTAVAIL; | ccb->ccb_h.status = CAM_FUNC_NOTAVAIL; | ||||
break; | break; | ||||
} | } | ||||
xpt_done(ccb); | xpt_done(ccb); | ||||
} | |||||
static void | |||||
iscsi_poll(struct cam_sim *sim) | |||||
{ | |||||
KASSERT(0, ("%s: you're not supposed to be here", __func__)); | |||||
} | } | ||||
static void | static void | ||||
iscsi_terminate_sessions(struct iscsi_softc *sc) | iscsi_terminate_sessions(struct iscsi_softc *sc) | ||||
{ | { | ||||
struct iscsi_session *is; | struct iscsi_session *is; | ||||
sx_slock(&sc->sc_lock); | sx_slock(&sc->sc_lock); | ||||
▲ Show 20 Lines • Show All 156 Lines • Show Last 20 Lines |