• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-WNDR4500v2-V1.0.0.60_1.0.38/src/linux/linux-2.6/drivers/scsi/

Lines Matching defs:session

52 iscsi_check_assign_cmdsn(struct iscsi_session *session, struct iscsi_nopin *hdr)
60 if (max_cmdsn > session->max_cmdsn ||
61 max_cmdsn < session->max_cmdsn - INVALID_SN_DELTA)
62 session->max_cmdsn = max_cmdsn;
63 if (exp_cmdsn > session->exp_cmdsn ||
64 exp_cmdsn < session->exp_cmdsn - INVALID_SN_DELTA)
65 session->exp_cmdsn = exp_cmdsn;
110 struct iscsi_session *session = conn->session;
117 hdr->itt = build_itt(ctask->itt, conn->id, session->age);
119 hdr->cmdsn = cpu_to_be32(session->cmdsn);
120 session->cmdsn++;
147 if (session->imm_data_en) {
148 if (ctask->total_length >= session->first_burst)
149 ctask->imm_count = min(session->first_burst,
158 if (!session->initial_r2t_en) {
159 ctask->unsol_count = min(session->first_burst,
184 * Must be called with session lock.
190 struct iscsi_session *session = ctask->conn->session;
198 __kfifo_put(session->cmdpool.queue, (void*)&ctask, sizeof(void*));
209 spin_lock_bh(&ctask->conn->session->lock);
211 spin_unlock_bh(&ctask->conn->session->lock);
222 spin_lock_bh(&ctask->conn->session->lock);
224 spin_unlock_bh(&ctask->conn->session->lock);
244 struct iscsi_session *session = conn->session;
247 rc = iscsi_check_assign_cmdsn(session, (struct iscsi_nopin*)rhdr);
358 * queuecommand or send generic. session lock must be held and verify
364 struct iscsi_session *session = conn->session;
375 if (itt < session->cmds_max) {
376 ctask = session->cmds[itt];
402 itt < ISCSI_MGMT_ITT_OFFSET + session->mgmtpool_max) {
403 mtask = session->mgmt_cmds[itt - ISCSI_MGMT_ITT_OFFSET];
408 rc = iscsi_check_assign_cmdsn(session,
431 __kfifo_put(session->mgmtpool.queue,
453 __kfifo_put(session->mgmtpool.queue,
461 rc = iscsi_check_assign_cmdsn(session,
504 spin_lock(&conn->session->lock);
506 spin_unlock(&conn->session->lock);
515 struct iscsi_session *session = conn->session;
521 (session->age << ISCSI_AGE_SHIFT)) {
523 "session age (%x)\n", (__force u32)hdr->itt,
524 session->age & ISCSI_AGE_MASK);
538 if (itt < session->cmds_max) {
539 ctask = session->cmds[itt];
548 if (ctask->sc->SCp.phase != session->age) {
549 printk(KERN_ERR "iscsi: ctask's session age %d, "
551 session->age);
563 struct iscsi_session *session = conn->session;
566 spin_lock_irqsave(&session->lock, flags);
567 if (session->state == ISCSI_STATE_FAILED) {
568 spin_unlock_irqrestore(&session->lock, flags);
573 session->state = ISCSI_STATE_FAILED;
574 spin_unlock_irqrestore(&session->lock, flags);
587 conn->session->state = ISCSI_STATE_IN_RECOVERY;
588 iscsi_block_session(session_to_cls(conn->session));
591 rc = conn->session->tt->xmit_mgmt_task(conn, conn->mtask);
623 tt = conn->session->tt;
659 spin_lock_bh(&conn->session->lock);
662 spin_unlock_bh(&conn->session->lock);
670 spin_lock_bh(&conn->session->lock);
681 spin_unlock_bh(&conn->session->lock);
685 spin_lock_bh(&conn->session->lock);
688 spin_unlock_bh(&conn->session->lock);
692 spin_unlock_bh(&conn->session->lock);
700 spin_lock_bh(&conn->session->lock);
703 spin_unlock_bh(&conn->session->lock);
749 struct iscsi_session *session;
758 session = iscsi_hostdata(host->hostdata);
760 spin_lock(&session->lock);
767 if (session->state != ISCSI_STATE_LOGGED_IN &&
768 session->state != ISCSI_STATE_FAILED) {
771 * and block the session we requeue here (commands could
775 if (session->state == ISCSI_STATE_IN_RECOVERY) {
780 if (session->state == ISCSI_STATE_RECOVERY_FAILED)
782 else if (session->state == ISCSI_STATE_TERMINATE)
792 if ((int)(session->max_cmdsn - session->cmdsn) < 0) {
797 conn = session->leadconn;
803 if (!__kfifo_get(session->cmdpool.queue, (void*)&ctask,
808 sc->SCp.phase = session->age;
820 session->tt->init_cmd_task(ctask);
828 session->cmdsn, session->max_cmdsn - session->exp_cmdsn + 1);
829 spin_unlock(&session->lock);
835 spin_unlock(&session->lock);
840 spin_unlock(&session->lock);
863 struct iscsi_session *session = conn->session;
867 spin_lock_bh(&session->lock);
868 if (session->state == ISCSI_STATE_TERMINATE) {
869 spin_unlock_bh(&session->lock);
886 if (!__kfifo_get(session->mgmtpool.queue,
888 spin_unlock_bh(&session->lock);
897 hdr->itt = build_itt(mtask->itt, conn->id, session->age);
898 nop->cmdsn = cpu_to_be32(session->cmdsn);
901 session->cmdsn++;
904 nop->cmdsn = cpu_to_be32(session->cmdsn);
914 if (session->tt->init_mgmt_task)
915 session->tt->init_mgmt_task(conn, mtask, data, data_size);
916 spin_unlock_bh(&session->lock);
931 scsi_queue_work(session->host, &conn->xmitwork);
951 struct iscsi_session *session = class_to_transport_session(cls_session);
952 struct iscsi_conn *conn = session->leadconn;
954 spin_lock_bh(&session->lock);
955 if (session->state != ISCSI_STATE_LOGGED_IN) {
956 session->state = ISCSI_STATE_RECOVERY_FAILED;
960 spin_unlock_bh(&session->lock);
967 struct iscsi_session *session = iscsi_hostdata(host->hostdata);
968 struct iscsi_conn *conn = session->leadconn;
971 spin_lock_bh(&session->lock);
972 if (session->state == ISCSI_STATE_TERMINATE) {
974 debug_scsi("failing host reset: session terminated "
975 "[CID %d age %d]\n", conn->id, session->age);
976 spin_unlock_bh(&session->lock);
980 if (sc->SCp.phase == session->age) {
985 spin_unlock_bh(&session->lock);
996 session->state == ISCSI_STATE_TERMINATE ||
997 session->state == ISCSI_STATE_LOGGED_IN ||
998 session->state == ISCSI_STATE_RECOVERY_FAILED);
1002 spin_lock_bh(&session->lock);
1003 if (session->state == ISCSI_STATE_LOGGED_IN)
1007 spin_unlock_bh(&session->lock);
1017 struct iscsi_session *session = conn->session;
1019 spin_lock(&session->lock);
1027 spin_unlock(&session->lock);
1035 struct iscsi_session *session = conn->session;
1040 * ctask timed out but session is OK requests must be serialized.
1061 spin_lock_bh(&session->lock);
1063 session->mgmt_cmds[get_itt(hdr->itt) -
1074 spin_unlock_bh(&session->lock);
1082 * 3) session is terminated or restarted or userspace has
1086 sc->SCp.phase != session->age ||
1087 session->state != ISCSI_STATE_LOGGED_IN ||
1098 * xmit mutex and session lock must be held
1125 struct iscsi_session *session = conn->session;
1132 __kfifo_put(session->mgmtpool.queue, (void*)&ctask->mtask,
1139 * session lock and xmitmutex must be held
1150 conn->session->tt->cleanup_cmd_task(conn, ctask);
1163 struct iscsi_session *session;
1167 * if session was ISCSI_STATE_IN_RECOVERY then we may not have
1177 session = conn->session;
1183 spin_lock_bh(&session->lock);
1186 * If we are not logged in or we have started a new session
1189 if (session->state != ISCSI_STATE_LOGGED_IN ||
1190 sc->SCp.phase != session->age)
1195 spin_unlock_bh(&session->lock);
1212 spin_unlock_bh(&session->lock);
1214 spin_lock_bh(&session->lock);
1216 if (rc || sc->SCp.phase != session->age ||
1217 session->state != ISCSI_STATE_LOGGED_IN)
1227 spin_unlock_bh(&session->lock);
1234 spin_unlock_bh(&session->lock);
1236 spin_lock_bh(&session->lock);
1242 spin_unlock_bh(&session->lock);
1249 spin_lock(&session->lock);
1251 spin_unlock(&session->lock);
1259 spin_unlock_bh(&session->lock);
1339 * iscsi_session_setup - create iscsi cls session and host and session
1346 * a session per scsi host.
1355 struct iscsi_session *session;
1360 hostdata_privsize(sizeof(*session)));
1372 session = iscsi_hostdata(shost->hostdata);
1373 memset(session, 0, sizeof(struct iscsi_session));
1374 session->host = shost;
1375 session->state = ISCSI_STATE_FREE;
1376 session->mgmtpool_max = ISCSI_MGMT_CMDS_MAX;
1377 session->cmds_max = ISCSI_XMIT_CMDS_MAX;
1378 session->cmdsn = initial_cmdsn;
1379 session->exp_cmdsn = initial_cmdsn + 1;
1380 session->max_cmdsn = initial_cmdsn + 1;
1381 session->max_r2t = 1;
1382 session->tt = iscsit;
1385 if (iscsi_pool_init(&session->cmdpool, session->cmds_max,
1386 (void***)&session->cmds,
1391 for (cmd_i = 0; cmd_i < session->cmds_max; cmd_i++) {
1392 struct iscsi_cmd_task *ctask = session->cmds[cmd_i];
1400 spin_lock_init(&session->lock);
1403 if (iscsi_pool_init(&session->mgmtpool, session->mgmtpool_max,
1404 (void***)&session->mgmt_cmds,
1410 for (cmd_i = 0; cmd_i < session->mgmtpool_max; cmd_i++) {
1411 struct iscsi_mgmt_task *mtask = session->mgmt_cmds[cmd_i];
1437 iscsi_pool_free(&session->mgmtpool, (void**)session->mgmt_cmds);
1439 iscsi_pool_free(&session->cmdpool, (void**)session->cmds);
1447 * iscsi_session_teardown - destroy session, host, and cls_session
1451 * a session per scsi host.
1456 struct iscsi_session *session = iscsi_hostdata(shost->hostdata);
1461 iscsi_pool_free(&session->mgmtpool, (void**)session->mgmt_cmds);
1462 iscsi_pool_free(&session->cmdpool, (void**)session->cmds);
1464 kfree(session->targetname);
1480 struct iscsi_session *session = class_to_transport_session(cls_session);
1491 conn->session = session;
1502 conn->immqueue = kfifo_alloc(session->mgmtpool_max * sizeof(void*),
1507 conn->mgmtqueue = kfifo_alloc(session->mgmtpool_max * sizeof(void*),
1515 spin_lock_bh(&session->lock);
1516 if (!__kfifo_get(session->mgmtpool.queue,
1519 spin_unlock_bh(&session->lock);
1522 spin_unlock_bh(&session->lock);
1536 __kfifo_put(session->mgmtpool.queue, (void*)&conn->login_mtask,
1558 struct iscsi_session *session = conn->session;
1564 spin_lock_bh(&session->lock);
1566 if (session->leadconn == conn) {
1570 session->state = ISCSI_STATE_TERMINATE;
1573 spin_unlock_bh(&session->lock);
1582 spin_lock_irqsave(session->host->host_lock, flags);
1583 if (!session->host->host_busy) { /* OK for ERL == 0 */
1584 spin_unlock_irqrestore(session->host->host_lock, flags);
1587 spin_unlock_irqrestore(session->host->host_lock, flags);
1590 "host_failed %d\n", session->host->host_busy,
1591 session->host->host_failed);
1599 scsi_flush_work(session->host);
1601 spin_lock_bh(&session->lock);
1604 __kfifo_put(session->mgmtpool.queue, (void*)&conn->login_mtask,
1606 if (session->leadconn == conn) {
1607 session->leadconn = NULL;
1609 session->cmdsn = session->max_cmdsn = session->exp_cmdsn = 1;
1611 spin_unlock_bh(&session->lock);
1623 struct iscsi_session *session = conn->session;
1625 if (!session) {
1630 if ((session->imm_data_en || !session->initial_r2t_en) &&
1631 session->first_burst > session->max_burst) {
1634 session->first_burst, session->max_burst);
1638 spin_lock_bh(&session->lock);
1640 session->state = ISCSI_STATE_LOGGED_IN;
1650 session->age++;
1651 spin_unlock_bh(&session->lock);
1653 iscsi_unblock_session(session_to_cls(session));
1662 spin_unlock_bh(&session->lock);
1669 flush_control_queues(struct iscsi_session *session, struct iscsi_conn *conn)
1679 __kfifo_put(session->mgmtpool.queue, (void*)&mtask,
1690 __kfifo_put(session->mgmtpool.queue, (void*)&mtask,
1697 /* Fail commands. Mutex and session lock held and recv side suspended */
1719 static void iscsi_start_session_recovery(struct iscsi_session *session,
1724 spin_lock_bh(&session->lock);
1726 spin_unlock_bh(&session->lock);
1736 session->state = ISCSI_STATE_TERMINATE;
1738 session->state = ISCSI_STATE_IN_RECOVERY;
1744 spin_unlock_bh(&session->lock);
1760 if (session->state == ISCSI_STATE_IN_RECOVERY &&
1762 debug_scsi("blocking session\n");
1763 iscsi_block_session(session_to_cls(session));
1770 spin_lock_bh(&session->lock);
1772 flush_control_queues(session, conn);
1773 spin_unlock_bh(&session->lock);
1781 struct iscsi_session *session = conn->session;
1786 iscsi_start_session_recovery(session, conn, flag);
1797 struct iscsi_session *session = class_to_transport_session(cls_session);
1800 spin_lock_bh(&session->lock);
1802 session->leadconn = conn;
1803 spin_unlock_bh(&session->lock);
1819 struct iscsi_session *session = conn->session;
1836 sscanf(buf, "%d", &session->initial_r2t_en);
1839 sscanf(buf, "%d", &session->max_r2t);
1842 sscanf(buf, "%d", &session->imm_data_en);
1845 sscanf(buf, "%d", &session->first_burst);
1848 sscanf(buf, "%d", &session->max_burst);
1851 sscanf(buf, "%d", &session->pdu_inorder_en);
1854 sscanf(buf, "%d", &session->dataseq_inorder_en);
1857 sscanf(buf, "%d", &session->erl);
1872 if (session->targetname)
1875 session->targetname = kstrdup(buf, GFP_KERNEL);
1876 if (!session->targetname)
1880 sscanf(buf, "%d", &session->tpgt);
1909 struct iscsi_session *session = iscsi_hostdata(shost->hostdata);
1914 len = sprintf(buf, "%d\n", session->initial_r2t_en);
1917 len = sprintf(buf, "%hu\n", session->max_r2t);
1920 len = sprintf(buf, "%d\n", session->imm_data_en);
1923 len = sprintf(buf, "%u\n", session->first_burst);
1926 len = sprintf(buf, "%u\n", session->max_burst);
1929 len = sprintf(buf, "%d\n", session->pdu_inorder_en);
1932 len = sprintf(buf, "%d\n", session->dataseq_inorder_en);
1935 len = sprintf(buf, "%d\n", session->erl);
1938 len = sprintf(buf, "%s\n", session->targetname);
1941 len = sprintf(buf, "%d\n", session->tpgt);