Lines Matching refs:session
91 struct Scsi_Host *shost = conn->session->host; in iscsi_conn_queue_work()
99 static void __iscsi_update_cmdsn(struct iscsi_session *session, in __iscsi_update_cmdsn() argument
109 if (exp_cmdsn != session->exp_cmdsn && in __iscsi_update_cmdsn()
110 !iscsi_sna_lt(exp_cmdsn, session->exp_cmdsn)) in __iscsi_update_cmdsn()
111 session->exp_cmdsn = exp_cmdsn; in __iscsi_update_cmdsn()
113 if (max_cmdsn != session->max_cmdsn && in __iscsi_update_cmdsn()
114 !iscsi_sna_lt(max_cmdsn, session->max_cmdsn)) in __iscsi_update_cmdsn()
115 session->max_cmdsn = max_cmdsn; in __iscsi_update_cmdsn()
118 void iscsi_update_cmdsn(struct iscsi_session *session, struct iscsi_nopin *hdr) in iscsi_update_cmdsn() argument
120 __iscsi_update_cmdsn(session, be32_to_cpu(hdr->exp_cmdsn), in iscsi_update_cmdsn()
213 ISCSI_DBG_SESSION(task->conn->session, in iscsi_prep_ecdb_ahs()
239 ISCSI_DBG_SESSION(task->conn->session, in iscsi_prep_bidi_ahs()
298 if (conn->session->fast_abort) { in iscsi_check_tmf_restrictions()
316 ISCSI_DBG_SESSION(conn->session, in iscsi_check_tmf_restrictions()
339 struct iscsi_session *session = conn->session; in iscsi_prep_scsi_cmd_pdu() local
350 if (conn->session->tt->alloc_pdu) { in iscsi_prep_scsi_cmd_pdu()
351 rc = conn->session->tt->alloc_pdu(task, ISCSI_OP_SCSI_CMD); in iscsi_prep_scsi_cmd_pdu()
359 if (session->tt->parse_pdu_itt) in iscsi_prep_scsi_cmd_pdu()
363 task->conn->session->age); in iscsi_prep_scsi_cmd_pdu()
417 if (session->imm_data_en) { in iscsi_prep_scsi_cmd_pdu()
418 if (transfer_length >= session->first_burst) in iscsi_prep_scsi_cmd_pdu()
419 task->imm_count = min(session->first_burst, in iscsi_prep_scsi_cmd_pdu()
428 if (!session->initial_r2t_en) { in iscsi_prep_scsi_cmd_pdu()
429 r2t->data_length = min(session->first_burst, in iscsi_prep_scsi_cmd_pdu()
456 hdr->cmdsn = task->cmdsn = cpu_to_be32(session->cmdsn); in iscsi_prep_scsi_cmd_pdu()
458 if (session->tt->init_task && session->tt->init_task(task)) in iscsi_prep_scsi_cmd_pdu()
462 session->cmdsn++; in iscsi_prep_scsi_cmd_pdu()
465 ISCSI_DBG_SESSION(session, "iscsi prep [%s cid %d sc %p cdb 0x%x " in iscsi_prep_scsi_cmd_pdu()
472 session->cmdsn, in iscsi_prep_scsi_cmd_pdu()
473 session->max_cmdsn - session->exp_cmdsn + 1); in iscsi_prep_scsi_cmd_pdu()
488 struct iscsi_session *session = conn->session; in iscsi_free_task() local
492 ISCSI_DBG_SESSION(session, "freeing task itt 0x%x state %d sc %p\n", in iscsi_free_task()
495 session->tt->cleanup_task(task); in iscsi_free_task()
504 kfifo_in(&session->cmdpool.queue, (void*)&task, sizeof(void*)); in iscsi_free_task()
533 struct iscsi_session *session = task->conn->session; in iscsi_put_task() local
536 spin_lock_bh(&session->back_lock); in iscsi_put_task()
538 spin_unlock_bh(&session->back_lock); in iscsi_put_task()
553 ISCSI_DBG_SESSION(conn->session, in iscsi_complete_task()
597 ISCSI_DBG_SESSION(conn->session, "[itt 0x%x]\n", task->itt); in iscsi_complete_scsi_task()
600 __iscsi_update_cmdsn(conn->session, exp_cmdsn, max_cmdsn); in iscsi_complete_scsi_task()
631 conn->session->queued_cmdsn--; in fail_scsi_task()
648 spin_lock_bh(&conn->session->back_lock); in fail_scsi_task()
650 spin_unlock_bh(&conn->session->back_lock); in fail_scsi_task()
656 struct iscsi_session *session = conn->session; in iscsi_prep_mgmt_task() local
661 if (conn->session->state == ISCSI_STATE_LOGGING_OUT) in iscsi_prep_mgmt_task()
669 nop->cmdsn = cpu_to_be32(session->cmdsn); in iscsi_prep_mgmt_task()
681 session->queued_cmdsn++; in iscsi_prep_mgmt_task()
682 session->cmdsn++; in iscsi_prep_mgmt_task()
686 if (session->tt->init_task && session->tt->init_task(task)) in iscsi_prep_mgmt_task()
690 session->state = ISCSI_STATE_LOGGING_OUT; in iscsi_prep_mgmt_task()
693 ISCSI_DBG_SESSION(session, "mgmtpdu [op 0x%x hdr->itt 0x%x " in iscsi_prep_mgmt_task()
703 struct iscsi_session *session = conn->session; in __iscsi_conn_send_pdu() local
704 struct iscsi_host *ihost = shost_priv(session->host); in __iscsi_conn_send_pdu()
709 if (session->state == ISCSI_STATE_TERMINATE) in __iscsi_conn_send_pdu()
732 if (session->state != ISCSI_STATE_LOGGED_IN) in __iscsi_conn_send_pdu()
743 if (!kfifo_out(&session->cmdpool.queue, in __iscsi_conn_send_pdu()
764 if (conn->session->tt->alloc_pdu) { in __iscsi_conn_send_pdu()
765 if (conn->session->tt->alloc_pdu(task, hdr->opcode)) { in __iscsi_conn_send_pdu()
777 if (session->tt->parse_pdu_itt) in __iscsi_conn_send_pdu()
781 task->conn->session->age); in __iscsi_conn_send_pdu()
788 if (session->tt->xmit_task(task)) in __iscsi_conn_send_pdu()
801 spin_lock(&session->back_lock); in __iscsi_conn_send_pdu()
803 spin_unlock(&session->back_lock); in __iscsi_conn_send_pdu()
811 struct iscsi_session *session = conn->session; in iscsi_conn_send_pdu() local
814 spin_lock_bh(&session->frwd_lock); in iscsi_conn_send_pdu()
817 spin_unlock_bh(&session->frwd_lock); in iscsi_conn_send_pdu()
838 struct iscsi_session *session = conn->session; in iscsi_scsi_cmd_rsp() local
841 iscsi_update_cmdsn(session, (struct iscsi_nopin*)rhdr); in iscsi_scsi_cmd_rsp()
855 BUG_ON(!session->tt->check_protection); in iscsi_scsi_cmd_rsp()
857 ascq = session->tt->check_protection(task, §or); in iscsi_scsi_cmd_rsp()
893 ISCSI_DBG_SESSION(session, "copied %d bytes of sense\n", in iscsi_scsi_cmd_rsp()
923 ISCSI_DBG_SESSION(session, "cmd rsp done [sc %p res %d itt 0x%x]\n", in iscsi_scsi_cmd_rsp()
945 iscsi_update_cmdsn(conn->session, (struct iscsi_nopin *)hdr); in iscsi_data_in_rsp()
960 ISCSI_DBG_SESSION(conn->session, "data in with status done " in iscsi_data_in_rsp()
1087 spin_unlock(&conn->session->back_lock); in iscsi_handle_reject()
1088 spin_lock(&conn->session->frwd_lock); in iscsi_handle_reject()
1091 spin_unlock(&conn->session->frwd_lock); in iscsi_handle_reject()
1092 spin_lock(&conn->session->back_lock); in iscsi_handle_reject()
1133 struct iscsi_session *session = conn->session; in iscsi_itt_to_task() local
1139 if (session->tt->parse_pdu_itt) in iscsi_itt_to_task()
1140 session->tt->parse_pdu_itt(conn, itt, &i, NULL); in iscsi_itt_to_task()
1143 if (i >= session->cmds_max) in iscsi_itt_to_task()
1146 return session->cmds[i]; in iscsi_itt_to_task()
1164 struct iscsi_session *session = conn->session; in __iscsi_complete_pdu() local
1179 ISCSI_DBG_SESSION(session, "[op 0x%x cid %d itt 0x%x len %d]\n", in __iscsi_complete_pdu()
1183 iscsi_update_cmdsn(session, (struct iscsi_nopin*)hdr); in __iscsi_complete_pdu()
1196 spin_unlock(&session->back_lock); in __iscsi_complete_pdu()
1197 spin_lock(&session->frwd_lock); in __iscsi_complete_pdu()
1199 spin_unlock(&session->frwd_lock); in __iscsi_complete_pdu()
1200 spin_lock(&session->back_lock); in __iscsi_complete_pdu()
1251 iscsi_update_cmdsn(session, (struct iscsi_nopin*)hdr); in __iscsi_complete_pdu()
1260 iscsi_update_cmdsn(session, (struct iscsi_nopin*)hdr); in __iscsi_complete_pdu()
1267 iscsi_update_cmdsn(session, (struct iscsi_nopin*)hdr); in __iscsi_complete_pdu()
1277 iscsi_update_cmdsn(session, (struct iscsi_nopin*)hdr); in __iscsi_complete_pdu()
1307 spin_lock(&conn->session->back_lock); in iscsi_complete_pdu()
1309 spin_unlock(&conn->session->back_lock); in iscsi_complete_pdu()
1316 struct iscsi_session *session = conn->session; in iscsi_verify_itt() local
1322 if (session->tt->parse_pdu_itt) in iscsi_verify_itt()
1323 session->tt->parse_pdu_itt(conn, itt, &i, &age); in iscsi_verify_itt()
1329 if (age != session->age) { in iscsi_verify_itt()
1332 (__force u32)itt, session->age); in iscsi_verify_itt()
1336 if (i >= session->cmds_max) { in iscsi_verify_itt()
1339 "%u.\n", i, session->cmds_max); in iscsi_verify_itt()
1366 if (task->sc->SCp.phase != conn->session->age) { in iscsi_itt_to_ctask()
1367 iscsi_session_printk(KERN_ERR, conn->session, in iscsi_itt_to_ctask()
1369 task->sc->SCp.phase, conn->session->age); in iscsi_itt_to_ctask()
1377 void iscsi_session_failure(struct iscsi_session *session, in iscsi_session_failure() argument
1383 spin_lock_bh(&session->frwd_lock); in iscsi_session_failure()
1384 conn = session->leadconn; in iscsi_session_failure()
1385 if (session->state == ISCSI_STATE_TERMINATE || !conn) { in iscsi_session_failure()
1386 spin_unlock_bh(&session->frwd_lock); in iscsi_session_failure()
1391 spin_unlock_bh(&session->frwd_lock); in iscsi_session_failure()
1409 struct iscsi_session *session = conn->session; in iscsi_conn_failure() local
1411 spin_lock_bh(&session->frwd_lock); in iscsi_conn_failure()
1412 if (session->state == ISCSI_STATE_FAILED) { in iscsi_conn_failure()
1413 spin_unlock_bh(&session->frwd_lock); in iscsi_conn_failure()
1418 session->state = ISCSI_STATE_FAILED; in iscsi_conn_failure()
1419 spin_unlock_bh(&session->frwd_lock); in iscsi_conn_failure()
1429 struct iscsi_session *session = conn->session; in iscsi_check_cmdsn_window_closed() local
1434 if (!iscsi_sna_lte(session->queued_cmdsn, session->max_cmdsn)) { in iscsi_check_cmdsn_window_closed()
1435 ISCSI_DBG_SESSION(session, "iSCSI CmdSN closed. ExpCmdSn " in iscsi_check_cmdsn_window_closed()
1437 session->exp_cmdsn, session->max_cmdsn, in iscsi_check_cmdsn_window_closed()
1438 session->cmdsn, session->queued_cmdsn); in iscsi_check_cmdsn_window_closed()
1453 spin_unlock_bh(&conn->session->frwd_lock); in iscsi_xmit_task()
1454 rc = conn->session->tt->xmit_task(task); in iscsi_xmit_task()
1455 spin_lock_bh(&conn->session->frwd_lock); in iscsi_xmit_task()
1462 spin_lock(&conn->session->back_lock); in iscsi_xmit_task()
1464 spin_unlock(&conn->session->back_lock); in iscsi_xmit_task()
1506 spin_lock_bh(&conn->session->frwd_lock); in iscsi_data_xmit()
1508 ISCSI_DBG_SESSION(conn->session, "Tx suspended!\n"); in iscsi_data_xmit()
1509 spin_unlock_bh(&conn->session->frwd_lock); in iscsi_data_xmit()
1533 spin_lock_bh(&conn->session->back_lock); in iscsi_data_xmit()
1535 spin_unlock_bh(&conn->session->back_lock); in iscsi_data_xmit()
1552 if (conn->session->state == ISCSI_STATE_LOGGING_OUT) { in iscsi_data_xmit()
1588 if (conn->session->state == ISCSI_STATE_LOGGING_OUT) in iscsi_data_xmit()
1608 spin_unlock_bh(&conn->session->frwd_lock); in iscsi_data_xmit()
1612 spin_unlock_bh(&conn->session->frwd_lock); in iscsi_data_xmit()
1634 if (!kfifo_out(&conn->session->cmdpool.queue, in iscsi_alloc_task()
1638 sc->SCp.phase = conn->session->age; in iscsi_alloc_task()
1671 struct iscsi_session *session; in iscsi_queuecommand() local
1681 session = cls_session->dd_data; in iscsi_queuecommand()
1682 spin_lock_bh(&session->frwd_lock); in iscsi_queuecommand()
1690 if (session->state != ISCSI_STATE_LOGGED_IN) { in iscsi_queuecommand()
1697 switch (session->state) { in iscsi_queuecommand()
1732 conn = session->leadconn; in iscsi_queuecommand()
1767 if (session->tt->xmit_task(task)) { in iscsi_queuecommand()
1768 session->cmdsn--; in iscsi_queuecommand()
1779 session->queued_cmdsn++; in iscsi_queuecommand()
1780 spin_unlock_bh(&session->frwd_lock); in iscsi_queuecommand()
1786 spin_unlock_bh(&session->frwd_lock); in iscsi_queuecommand()
1787 ISCSI_DBG_SESSION(session, "cmd 0x%x rejected (%d)\n", in iscsi_queuecommand()
1794 spin_unlock_bh(&session->frwd_lock); in iscsi_queuecommand()
1795 ISCSI_DBG_SESSION(session, "iscsi: cmd 0x%x is not queued (%d)\n", in iscsi_queuecommand()
1811 struct iscsi_session *session = cls_session->dd_data; in iscsi_target_alloc() local
1813 starget->can_queue = session->scsi_cmds_max; in iscsi_target_alloc()
1821 struct iscsi_session *session = conn->session; in iscsi_tmf_timedout() local
1823 spin_lock(&session->frwd_lock); in iscsi_tmf_timedout()
1826 ISCSI_DBG_EH(session, "tmf timedout\n"); in iscsi_tmf_timedout()
1830 spin_unlock(&session->frwd_lock); in iscsi_tmf_timedout()
1836 __must_hold(&session->frwd_lock) in iscsi_exec_task_mgmt_fn()
1838 struct iscsi_session *session = conn->session; in iscsi_exec_task_mgmt_fn() local
1844 spin_unlock_bh(&session->frwd_lock); in iscsi_exec_task_mgmt_fn()
1847 spin_lock_bh(&session->frwd_lock); in iscsi_exec_task_mgmt_fn()
1853 ISCSI_DBG_EH(session, "tmf set timeout\n"); in iscsi_exec_task_mgmt_fn()
1855 spin_unlock_bh(&session->frwd_lock); in iscsi_exec_task_mgmt_fn()
1856 mutex_unlock(&session->eh_mutex); in iscsi_exec_task_mgmt_fn()
1866 wait_event_interruptible(conn->ehwait, age != session->age || in iscsi_exec_task_mgmt_fn()
1867 session->state != ISCSI_STATE_LOGGED_IN || in iscsi_exec_task_mgmt_fn()
1873 mutex_lock(&session->eh_mutex); in iscsi_exec_task_mgmt_fn()
1874 spin_lock_bh(&session->frwd_lock); in iscsi_exec_task_mgmt_fn()
1876 if (age != session->age || in iscsi_exec_task_mgmt_fn()
1877 session->state != ISCSI_STATE_LOGGED_IN) in iscsi_exec_task_mgmt_fn()
1891 for (i = 0; i < conn->session->cmds_max; i++) { in fail_scsi_tasks()
1892 task = conn->session->cmds[i]; in fail_scsi_tasks()
1899 ISCSI_DBG_SESSION(conn->session, in fail_scsi_tasks()
1919 spin_lock_bh(&conn->session->frwd_lock); in iscsi_suspend_queue()
1921 spin_unlock_bh(&conn->session->frwd_lock); in iscsi_suspend_queue()
1935 struct Scsi_Host *shost = conn->session->host; in iscsi_suspend_tx()
1971 struct iscsi_session *session; in iscsi_eh_cmd_timed_out() local
1976 session = cls_session->dd_data; in iscsi_eh_cmd_timed_out()
1978 ISCSI_DBG_EH(session, "scsi cmd %p timedout\n", sc); in iscsi_eh_cmd_timed_out()
1980 spin_lock(&session->frwd_lock); in iscsi_eh_cmd_timed_out()
1991 if (session->state != ISCSI_STATE_LOGGED_IN) { in iscsi_eh_cmd_timed_out()
2001 ISCSI_DBG_EH(session, "sc on shutdown, handled\n"); in iscsi_eh_cmd_timed_out()
2013 conn = session->leadconn; in iscsi_eh_cmd_timed_out()
2028 ISCSI_DBG_EH(session, "Command making progress. Asking " in iscsi_eh_cmd_timed_out()
2048 for (i = 0; i < conn->session->cmds_max; i++) { in iscsi_eh_cmd_timed_out()
2049 running_task = conn->session->cmds[i]; in iscsi_eh_cmd_timed_out()
2073 ISCSI_DBG_EH(session, "Command has not made progress " in iscsi_eh_cmd_timed_out()
2107 spin_unlock(&session->frwd_lock); in iscsi_eh_cmd_timed_out()
2108 ISCSI_DBG_EH(session, "return %s\n", rc == BLK_EH_RESET_TIMER ? in iscsi_eh_cmd_timed_out()
2117 struct iscsi_session *session = conn->session; in iscsi_check_transport_timeouts() local
2120 spin_lock(&session->frwd_lock); in iscsi_check_transport_timeouts()
2121 if (session->state != ISCSI_STATE_LOGGED_IN) in iscsi_check_transport_timeouts()
2137 spin_unlock(&session->frwd_lock); in iscsi_check_transport_timeouts()
2155 spin_unlock(&session->frwd_lock); in iscsi_check_transport_timeouts()
2173 struct iscsi_session *session; in iscsi_eh_abort() local
2180 session = cls_session->dd_data; in iscsi_eh_abort()
2182 ISCSI_DBG_EH(session, "aborting sc %p\n", sc); in iscsi_eh_abort()
2184 mutex_lock(&session->eh_mutex); in iscsi_eh_abort()
2185 spin_lock_bh(&session->frwd_lock); in iscsi_eh_abort()
2191 ISCSI_DBG_EH(session, "sc never reached iscsi layer or " in iscsi_eh_abort()
2193 spin_unlock_bh(&session->frwd_lock); in iscsi_eh_abort()
2194 mutex_unlock(&session->eh_mutex); in iscsi_eh_abort()
2202 if (!session->leadconn || session->state != ISCSI_STATE_LOGGED_IN || in iscsi_eh_abort()
2203 sc->SCp.phase != session->age) { in iscsi_eh_abort()
2204 spin_unlock_bh(&session->frwd_lock); in iscsi_eh_abort()
2205 mutex_unlock(&session->eh_mutex); in iscsi_eh_abort()
2206 ISCSI_DBG_EH(session, "failing abort due to dropped " in iscsi_eh_abort()
2211 conn = session->leadconn; in iscsi_eh_abort()
2213 age = session->age; in iscsi_eh_abort()
2216 ISCSI_DBG_EH(session, "aborting [sc %p itt 0x%x]\n", in iscsi_eh_abort()
2221 ISCSI_DBG_EH(session, "sc completed while abort in progress\n"); in iscsi_eh_abort()
2238 if (iscsi_exec_task_mgmt_fn(conn, hdr, age, session->abort_timeout)) in iscsi_eh_abort()
2243 spin_unlock_bh(&session->frwd_lock); in iscsi_eh_abort()
2254 spin_lock_bh(&session->frwd_lock); in iscsi_eh_abort()
2258 spin_unlock_bh(&session->frwd_lock); in iscsi_eh_abort()
2262 spin_unlock_bh(&session->frwd_lock); in iscsi_eh_abort()
2270 ISCSI_DBG_EH(session, "sc completed while abort in " in iscsi_eh_abort()
2281 spin_unlock_bh(&session->frwd_lock); in iscsi_eh_abort()
2283 ISCSI_DBG_EH(session, "abort success [sc %p itt 0x%x]\n", in iscsi_eh_abort()
2285 mutex_unlock(&session->eh_mutex); in iscsi_eh_abort()
2289 spin_unlock_bh(&session->frwd_lock); in iscsi_eh_abort()
2291 ISCSI_DBG_EH(session, "abort failed [sc %p itt 0x%x]\n", sc, in iscsi_eh_abort()
2293 mutex_unlock(&session->eh_mutex); in iscsi_eh_abort()
2311 struct iscsi_session *session; in iscsi_eh_device_reset() local
2317 session = cls_session->dd_data; in iscsi_eh_device_reset()
2319 ISCSI_DBG_EH(session, "LU Reset [sc %p lun %llu]\n", sc, in iscsi_eh_device_reset()
2322 mutex_lock(&session->eh_mutex); in iscsi_eh_device_reset()
2323 spin_lock_bh(&session->frwd_lock); in iscsi_eh_device_reset()
2328 if (!session->leadconn || session->state != ISCSI_STATE_LOGGED_IN) in iscsi_eh_device_reset()
2330 conn = session->leadconn; in iscsi_eh_device_reset()
2340 if (iscsi_exec_task_mgmt_fn(conn, hdr, session->age, in iscsi_eh_device_reset()
2341 session->lu_reset_timeout)) { in iscsi_eh_device_reset()
2350 spin_unlock_bh(&session->frwd_lock); in iscsi_eh_device_reset()
2359 spin_unlock_bh(&session->frwd_lock); in iscsi_eh_device_reset()
2363 spin_lock_bh(&session->frwd_lock); in iscsi_eh_device_reset()
2367 spin_unlock_bh(&session->frwd_lock); in iscsi_eh_device_reset()
2373 spin_unlock_bh(&session->frwd_lock); in iscsi_eh_device_reset()
2375 ISCSI_DBG_EH(session, "dev reset result = %s\n", in iscsi_eh_device_reset()
2377 mutex_unlock(&session->eh_mutex); in iscsi_eh_device_reset()
2384 struct iscsi_session *session = cls_session->dd_data; in iscsi_session_recovery_timedout() local
2386 spin_lock_bh(&session->frwd_lock); in iscsi_session_recovery_timedout()
2387 if (session->state != ISCSI_STATE_LOGGED_IN) { in iscsi_session_recovery_timedout()
2388 session->state = ISCSI_STATE_RECOVERY_FAILED; in iscsi_session_recovery_timedout()
2389 if (session->leadconn) in iscsi_session_recovery_timedout()
2390 wake_up(&session->leadconn->ehwait); in iscsi_session_recovery_timedout()
2392 spin_unlock_bh(&session->frwd_lock); in iscsi_session_recovery_timedout()
2406 struct iscsi_session *session; in iscsi_eh_session_reset() local
2410 session = cls_session->dd_data; in iscsi_eh_session_reset()
2411 conn = session->leadconn; in iscsi_eh_session_reset()
2413 mutex_lock(&session->eh_mutex); in iscsi_eh_session_reset()
2414 spin_lock_bh(&session->frwd_lock); in iscsi_eh_session_reset()
2415 if (session->state == ISCSI_STATE_TERMINATE) { in iscsi_eh_session_reset()
2417 ISCSI_DBG_EH(session, in iscsi_eh_session_reset()
2419 "%s, %s [age %d]\n", session->targetname, in iscsi_eh_session_reset()
2420 conn->persistent_address, session->age); in iscsi_eh_session_reset()
2421 spin_unlock_bh(&session->frwd_lock); in iscsi_eh_session_reset()
2422 mutex_unlock(&session->eh_mutex); in iscsi_eh_session_reset()
2426 spin_unlock_bh(&session->frwd_lock); in iscsi_eh_session_reset()
2427 mutex_unlock(&session->eh_mutex); in iscsi_eh_session_reset()
2434 ISCSI_DBG_EH(session, "wait for relogin\n"); in iscsi_eh_session_reset()
2436 session->state == ISCSI_STATE_TERMINATE || in iscsi_eh_session_reset()
2437 session->state == ISCSI_STATE_LOGGED_IN || in iscsi_eh_session_reset()
2438 session->state == ISCSI_STATE_RECOVERY_FAILED); in iscsi_eh_session_reset()
2442 mutex_lock(&session->eh_mutex); in iscsi_eh_session_reset()
2443 spin_lock_bh(&session->frwd_lock); in iscsi_eh_session_reset()
2444 if (session->state == ISCSI_STATE_LOGGED_IN) { in iscsi_eh_session_reset()
2445 ISCSI_DBG_EH(session, in iscsi_eh_session_reset()
2447 session->targetname, conn->persistent_address); in iscsi_eh_session_reset()
2450 spin_unlock_bh(&session->frwd_lock); in iscsi_eh_session_reset()
2451 mutex_unlock(&session->eh_mutex); in iscsi_eh_session_reset()
2474 struct iscsi_session *session; in iscsi_eh_target_reset() local
2480 session = cls_session->dd_data; in iscsi_eh_target_reset()
2482 ISCSI_DBG_EH(session, "tgt Reset [sc %p tgt %s]\n", sc, in iscsi_eh_target_reset()
2483 session->targetname); in iscsi_eh_target_reset()
2485 mutex_lock(&session->eh_mutex); in iscsi_eh_target_reset()
2486 spin_lock_bh(&session->frwd_lock); in iscsi_eh_target_reset()
2491 if (!session->leadconn || session->state != ISCSI_STATE_LOGGED_IN) in iscsi_eh_target_reset()
2493 conn = session->leadconn; in iscsi_eh_target_reset()
2503 if (iscsi_exec_task_mgmt_fn(conn, hdr, session->age, in iscsi_eh_target_reset()
2504 session->tgt_reset_timeout)) { in iscsi_eh_target_reset()
2513 spin_unlock_bh(&session->frwd_lock); in iscsi_eh_target_reset()
2522 spin_unlock_bh(&session->frwd_lock); in iscsi_eh_target_reset()
2526 spin_lock_bh(&session->frwd_lock); in iscsi_eh_target_reset()
2530 spin_unlock_bh(&session->frwd_lock); in iscsi_eh_target_reset()
2536 spin_unlock_bh(&session->frwd_lock); in iscsi_eh_target_reset()
2538 ISCSI_DBG_EH(session, "tgt %s reset result = %s\n", session->targetname, in iscsi_eh_target_reset()
2540 mutex_unlock(&session->eh_mutex); in iscsi_eh_target_reset()
2767 struct iscsi_session *session; in iscsi_session_setup() local
2817 session = cls_session->dd_data; in iscsi_session_setup()
2818 session->cls_session = cls_session; in iscsi_session_setup()
2819 session->host = shost; in iscsi_session_setup()
2820 session->state = ISCSI_STATE_FREE; in iscsi_session_setup()
2821 session->fast_abort = 1; in iscsi_session_setup()
2822 session->tgt_reset_timeout = 30; in iscsi_session_setup()
2823 session->lu_reset_timeout = 15; in iscsi_session_setup()
2824 session->abort_timeout = 10; in iscsi_session_setup()
2825 session->scsi_cmds_max = scsi_cmds; in iscsi_session_setup()
2826 session->cmds_max = total_cmds; in iscsi_session_setup()
2827 session->queued_cmdsn = session->cmdsn = initial_cmdsn; in iscsi_session_setup()
2828 session->exp_cmdsn = initial_cmdsn + 1; in iscsi_session_setup()
2829 session->max_cmdsn = initial_cmdsn + 1; in iscsi_session_setup()
2830 session->max_r2t = 1; in iscsi_session_setup()
2831 session->tt = iscsit; in iscsi_session_setup()
2832 session->dd_data = cls_session->dd_data + sizeof(*session); in iscsi_session_setup()
2834 mutex_init(&session->eh_mutex); in iscsi_session_setup()
2835 spin_lock_init(&session->frwd_lock); in iscsi_session_setup()
2836 spin_lock_init(&session->back_lock); in iscsi_session_setup()
2839 if (iscsi_pool_init(&session->cmdpool, session->cmds_max, in iscsi_session_setup()
2840 (void***)&session->cmds, in iscsi_session_setup()
2845 for (cmd_i = 0; cmd_i < session->cmds_max; cmd_i++) { in iscsi_session_setup()
2846 struct iscsi_task *task = session->cmds[cmd_i]; in iscsi_session_setup()
2866 iscsi_pool_free(&session->cmdpool); in iscsi_session_setup()
2881 struct iscsi_session *session = cls_session->dd_data; in iscsi_session_teardown() local
2883 struct Scsi_Host *shost = session->host; in iscsi_session_teardown()
2885 iscsi_pool_free(&session->cmdpool); in iscsi_session_teardown()
2889 kfree(session->password); in iscsi_session_teardown()
2890 kfree(session->password_in); in iscsi_session_teardown()
2891 kfree(session->username); in iscsi_session_teardown()
2892 kfree(session->username_in); in iscsi_session_teardown()
2893 kfree(session->targetname); in iscsi_session_teardown()
2894 kfree(session->targetalias); in iscsi_session_teardown()
2895 kfree(session->initiatorname); in iscsi_session_teardown()
2896 kfree(session->boot_root); in iscsi_session_teardown()
2897 kfree(session->boot_nic); in iscsi_session_teardown()
2898 kfree(session->boot_target); in iscsi_session_teardown()
2899 kfree(session->ifacename); in iscsi_session_teardown()
2900 kfree(session->portal_type); in iscsi_session_teardown()
2901 kfree(session->discovery_parent_type); in iscsi_session_teardown()
2920 struct iscsi_session *session = cls_session->dd_data; in iscsi_conn_setup() local
2933 conn->session = session; in iscsi_conn_setup()
2949 spin_lock_bh(&session->frwd_lock); in iscsi_conn_setup()
2950 if (!kfifo_out(&session->cmdpool.queue, in iscsi_conn_setup()
2953 spin_unlock_bh(&session->frwd_lock); in iscsi_conn_setup()
2956 spin_unlock_bh(&session->frwd_lock); in iscsi_conn_setup()
2970 kfifo_in(&session->cmdpool.queue, (void*)&conn->login_task, in iscsi_conn_setup()
2988 struct iscsi_session *session = conn->session; in iscsi_conn_teardown() local
2992 mutex_lock(&session->eh_mutex); in iscsi_conn_teardown()
2993 spin_lock_bh(&session->frwd_lock); in iscsi_conn_teardown()
2995 if (session->leadconn == conn) { in iscsi_conn_teardown()
2999 session->state = ISCSI_STATE_TERMINATE; in iscsi_conn_teardown()
3002 spin_unlock_bh(&session->frwd_lock); in iscsi_conn_teardown()
3007 spin_lock_bh(&session->frwd_lock); in iscsi_conn_teardown()
3013 spin_lock_bh(&session->back_lock); in iscsi_conn_teardown()
3014 kfifo_in(&session->cmdpool.queue, (void*)&conn->login_task, in iscsi_conn_teardown()
3016 spin_unlock_bh(&session->back_lock); in iscsi_conn_teardown()
3017 if (session->leadconn == conn) in iscsi_conn_teardown()
3018 session->leadconn = NULL; in iscsi_conn_teardown()
3019 spin_unlock_bh(&session->frwd_lock); in iscsi_conn_teardown()
3020 mutex_unlock(&session->eh_mutex); in iscsi_conn_teardown()
3029 struct iscsi_session *session = conn->session; in iscsi_conn_start() local
3031 if (!session) { in iscsi_conn_start()
3037 if ((session->imm_data_en || !session->initial_r2t_en) && in iscsi_conn_start()
3038 session->first_burst > session->max_burst) { in iscsi_conn_start()
3041 session->first_burst, session->max_burst); in iscsi_conn_start()
3057 spin_lock_bh(&session->frwd_lock); in iscsi_conn_start()
3059 session->state = ISCSI_STATE_LOGGED_IN; in iscsi_conn_start()
3060 session->queued_cmdsn = session->cmdsn; in iscsi_conn_start()
3076 session->age++; in iscsi_conn_start()
3077 if (session->age == 16) in iscsi_conn_start()
3078 session->age = 0; in iscsi_conn_start()
3086 spin_unlock_bh(&session->frwd_lock); in iscsi_conn_start()
3088 iscsi_unblock_session(session->cls_session); in iscsi_conn_start()
3095 fail_mgmt_tasks(struct iscsi_session *session, struct iscsi_conn *conn) in fail_mgmt_tasks() argument
3100 for (i = 0; i < conn->session->cmds_max; i++) { in fail_mgmt_tasks()
3101 task = conn->session->cmds[i]; in fail_mgmt_tasks()
3108 ISCSI_DBG_SESSION(conn->session, in fail_mgmt_tasks()
3119 static void iscsi_start_session_recovery(struct iscsi_session *session, in iscsi_start_session_recovery() argument
3124 mutex_lock(&session->eh_mutex); in iscsi_start_session_recovery()
3125 spin_lock_bh(&session->frwd_lock); in iscsi_start_session_recovery()
3127 spin_unlock_bh(&session->frwd_lock); in iscsi_start_session_recovery()
3128 mutex_unlock(&session->eh_mutex); in iscsi_start_session_recovery()
3138 session->state = ISCSI_STATE_TERMINATE; in iscsi_start_session_recovery()
3140 session->state = ISCSI_STATE_IN_RECOVERY; in iscsi_start_session_recovery()
3144 spin_unlock_bh(&session->frwd_lock); in iscsi_start_session_recovery()
3149 spin_lock_bh(&session->frwd_lock); in iscsi_start_session_recovery()
3151 spin_unlock_bh(&session->frwd_lock); in iscsi_start_session_recovery()
3162 if (session->state == ISCSI_STATE_IN_RECOVERY && in iscsi_start_session_recovery()
3164 ISCSI_DBG_SESSION(session, "blocking session\n"); in iscsi_start_session_recovery()
3165 iscsi_block_session(session->cls_session); in iscsi_start_session_recovery()
3172 spin_lock_bh(&session->frwd_lock); in iscsi_start_session_recovery()
3174 fail_mgmt_tasks(session, conn); in iscsi_start_session_recovery()
3176 spin_unlock_bh(&session->frwd_lock); in iscsi_start_session_recovery()
3177 mutex_unlock(&session->eh_mutex); in iscsi_start_session_recovery()
3183 struct iscsi_session *session = conn->session; in iscsi_conn_stop() local
3188 iscsi_start_session_recovery(session, conn, flag); in iscsi_conn_stop()
3200 struct iscsi_session *session = cls_session->dd_data; in iscsi_conn_bind() local
3203 spin_lock_bh(&session->frwd_lock); in iscsi_conn_bind()
3205 session->leadconn = conn; in iscsi_conn_bind()
3206 spin_unlock_bh(&session->frwd_lock); in iscsi_conn_bind()
3240 struct iscsi_session *session = conn->session; in iscsi_set_param() local
3245 sscanf(buf, "%d", &session->fast_abort); in iscsi_set_param()
3248 sscanf(buf, "%d", &session->abort_timeout); in iscsi_set_param()
3251 sscanf(buf, "%d", &session->lu_reset_timeout); in iscsi_set_param()
3254 sscanf(buf, "%d", &session->tgt_reset_timeout); in iscsi_set_param()
3275 sscanf(buf, "%d", &session->initial_r2t_en); in iscsi_set_param()
3278 sscanf(buf, "%hu", &session->max_r2t); in iscsi_set_param()
3281 sscanf(buf, "%d", &session->imm_data_en); in iscsi_set_param()
3284 sscanf(buf, "%d", &session->first_burst); in iscsi_set_param()
3287 sscanf(buf, "%d", &session->max_burst); in iscsi_set_param()
3290 sscanf(buf, "%d", &session->pdu_inorder_en); in iscsi_set_param()
3293 sscanf(buf, "%d", &session->dataseq_inorder_en); in iscsi_set_param()
3296 sscanf(buf, "%d", &session->erl); in iscsi_set_param()
3302 return iscsi_switch_str_param(&session->username, buf); in iscsi_set_param()
3304 return iscsi_switch_str_param(&session->username_in, buf); in iscsi_set_param()
3306 return iscsi_switch_str_param(&session->password, buf); in iscsi_set_param()
3308 return iscsi_switch_str_param(&session->password_in, buf); in iscsi_set_param()
3310 return iscsi_switch_str_param(&session->targetname, buf); in iscsi_set_param()
3312 return iscsi_switch_str_param(&session->targetalias, buf); in iscsi_set_param()
3314 sscanf(buf, "%d", &session->tpgt); in iscsi_set_param()
3322 return iscsi_switch_str_param(&session->ifacename, buf); in iscsi_set_param()
3324 return iscsi_switch_str_param(&session->initiatorname, buf); in iscsi_set_param()
3326 return iscsi_switch_str_param(&session->boot_root, buf); in iscsi_set_param()
3328 return iscsi_switch_str_param(&session->boot_nic, buf); in iscsi_set_param()
3330 return iscsi_switch_str_param(&session->boot_target, buf); in iscsi_set_param()
3332 return iscsi_switch_str_param(&session->portal_type, buf); in iscsi_set_param()
3334 return iscsi_switch_str_param(&session->discovery_parent_type, in iscsi_set_param()
3338 session->discovery_sess = !!val; in iscsi_set_param()
3353 struct iscsi_session *session = cls_session->dd_data; in iscsi_session_get_param() local
3358 len = sprintf(buf, "%d\n", session->fast_abort); in iscsi_session_get_param()
3361 len = sprintf(buf, "%d\n", session->abort_timeout); in iscsi_session_get_param()
3364 len = sprintf(buf, "%d\n", session->lu_reset_timeout); in iscsi_session_get_param()
3367 len = sprintf(buf, "%d\n", session->tgt_reset_timeout); in iscsi_session_get_param()
3370 len = sprintf(buf, "%d\n", session->initial_r2t_en); in iscsi_session_get_param()
3373 len = sprintf(buf, "%hu\n", session->max_r2t); in iscsi_session_get_param()
3376 len = sprintf(buf, "%d\n", session->imm_data_en); in iscsi_session_get_param()
3379 len = sprintf(buf, "%u\n", session->first_burst); in iscsi_session_get_param()
3382 len = sprintf(buf, "%u\n", session->max_burst); in iscsi_session_get_param()
3385 len = sprintf(buf, "%d\n", session->pdu_inorder_en); in iscsi_session_get_param()
3388 len = sprintf(buf, "%d\n", session->dataseq_inorder_en); in iscsi_session_get_param()
3391 len = sprintf(buf, "%d\n", session->def_taskmgmt_tmo); in iscsi_session_get_param()
3394 len = sprintf(buf, "%d\n", session->erl); in iscsi_session_get_param()
3397 len = sprintf(buf, "%s\n", session->targetname); in iscsi_session_get_param()
3400 len = sprintf(buf, "%s\n", session->targetalias); in iscsi_session_get_param()
3403 len = sprintf(buf, "%d\n", session->tpgt); in iscsi_session_get_param()
3406 len = sprintf(buf, "%s\n", session->username); in iscsi_session_get_param()
3409 len = sprintf(buf, "%s\n", session->username_in); in iscsi_session_get_param()
3412 len = sprintf(buf, "%s\n", session->password); in iscsi_session_get_param()
3415 len = sprintf(buf, "%s\n", session->password_in); in iscsi_session_get_param()
3418 len = sprintf(buf, "%s\n", session->ifacename); in iscsi_session_get_param()
3421 len = sprintf(buf, "%s\n", session->initiatorname); in iscsi_session_get_param()
3424 len = sprintf(buf, "%s\n", session->boot_root); in iscsi_session_get_param()
3427 len = sprintf(buf, "%s\n", session->boot_nic); in iscsi_session_get_param()
3430 len = sprintf(buf, "%s\n", session->boot_target); in iscsi_session_get_param()
3433 len = sprintf(buf, "%u\n", session->auto_snd_tgt_disable); in iscsi_session_get_param()
3436 len = sprintf(buf, "%u\n", session->discovery_sess); in iscsi_session_get_param()
3439 len = sprintf(buf, "%s\n", session->portal_type); in iscsi_session_get_param()
3442 len = sprintf(buf, "%u\n", session->chap_auth_en); in iscsi_session_get_param()
3445 len = sprintf(buf, "%u\n", session->discovery_logout_en); in iscsi_session_get_param()
3448 len = sprintf(buf, "%u\n", session->bidi_chap_en); in iscsi_session_get_param()
3451 len = sprintf(buf, "%u\n", session->discovery_auth_optional); in iscsi_session_get_param()
3454 len = sprintf(buf, "%d\n", session->time2wait); in iscsi_session_get_param()
3457 len = sprintf(buf, "%d\n", session->time2retain); in iscsi_session_get_param()
3460 len = sprintf(buf, "%u\n", session->tsid); in iscsi_session_get_param()
3464 session->isid[0], session->isid[1], in iscsi_session_get_param()
3465 session->isid[2], session->isid[3], in iscsi_session_get_param()
3466 session->isid[4], session->isid[5]); in iscsi_session_get_param()
3469 len = sprintf(buf, "%u\n", session->discovery_parent_idx); in iscsi_session_get_param()
3472 if (session->discovery_parent_type) in iscsi_session_get_param()
3474 session->discovery_parent_type); in iscsi_session_get_param()