• Home
  • Raw
  • Download

Lines Matching refs:session

1684 int iscsi_session_chkready(struct iscsi_cls_session *session)  in iscsi_session_chkready()  argument
1689 spin_lock_irqsave(&session->lock, flags); in iscsi_session_chkready()
1690 switch (session->state) { in iscsi_session_chkready()
1704 spin_unlock_irqrestore(&session->lock, flags); in iscsi_session_chkready()
1709 int iscsi_is_session_online(struct iscsi_cls_session *session) in iscsi_is_session_online() argument
1714 spin_lock_irqsave(&session->lock, flags); in iscsi_is_session_online()
1715 if (session->state == ISCSI_SESSION_LOGGED_IN) in iscsi_is_session_online()
1717 spin_unlock_irqrestore(&session->lock, flags); in iscsi_is_session_online()
1724 struct iscsi_cls_session *session = iscsi_dev_to_session(dev); in iscsi_session_release() local
1727 shost = iscsi_session_to_shost(session); in iscsi_session_release()
1729 ISCSI_DBG_TRANS_SESSION(session, "Completing session release\n"); in iscsi_session_release()
1730 kfree(session); in iscsi_session_release()
1786 struct iscsi_cls_session *session; in iscsi_user_scan_session() local
1795 session = iscsi_dev_to_session(dev); in iscsi_user_scan_session()
1797 ISCSI_DBG_TRANS_SESSION(session, "Scanning session\n"); in iscsi_user_scan_session()
1799 shost = iscsi_session_to_shost(session); in iscsi_user_scan_session()
1803 spin_lock_irqsave(&session->lock, flags); in iscsi_user_scan_session()
1804 if (session->state != ISCSI_SESSION_LOGGED_IN) { in iscsi_user_scan_session()
1805 spin_unlock_irqrestore(&session->lock, flags); in iscsi_user_scan_session()
1808 id = session->target_id; in iscsi_user_scan_session()
1809 spin_unlock_irqrestore(&session->lock, flags); in iscsi_user_scan_session()
1816 scsi_scan_target(&session->dev, 0, id, in iscsi_user_scan_session()
1822 ISCSI_DBG_TRANS_SESSION(session, "Completed session scan\n"); in iscsi_user_scan_session()
1842 struct iscsi_cls_session *session = in iscsi_scan_session() local
1844 struct Scsi_Host *shost = iscsi_session_to_shost(session); in iscsi_scan_session()
1853 iscsi_user_scan_session(&session->dev, &scan_data); in iscsi_scan_session()
1868 struct iscsi_cls_session *session = in iscsi_block_scsi_eh() local
1873 spin_lock_irqsave(&session->lock, flags); in iscsi_block_scsi_eh()
1874 while (session->state != ISCSI_SESSION_LOGGED_IN) { in iscsi_block_scsi_eh()
1875 if (session->state == ISCSI_SESSION_FREE) { in iscsi_block_scsi_eh()
1879 spin_unlock_irqrestore(&session->lock, flags); in iscsi_block_scsi_eh()
1881 spin_lock_irqsave(&session->lock, flags); in iscsi_block_scsi_eh()
1883 spin_unlock_irqrestore(&session->lock, flags); in iscsi_block_scsi_eh()
1890 struct iscsi_cls_session *session = in session_recovery_timedout() local
1895 iscsi_cls_session_printk(KERN_INFO, session, in session_recovery_timedout()
1897 session->recovery_tmo); in session_recovery_timedout()
1899 spin_lock_irqsave(&session->lock, flags); in session_recovery_timedout()
1900 switch (session->state) { in session_recovery_timedout()
1902 session->state = ISCSI_SESSION_FREE; in session_recovery_timedout()
1907 spin_unlock_irqrestore(&session->lock, flags); in session_recovery_timedout()
1910 spin_unlock_irqrestore(&session->lock, flags); in session_recovery_timedout()
1912 ISCSI_DBG_TRANS_SESSION(session, "Unblocking SCSI target\n"); in session_recovery_timedout()
1913 scsi_target_unblock(&session->dev, SDEV_TRANSPORT_OFFLINE); in session_recovery_timedout()
1914 ISCSI_DBG_TRANS_SESSION(session, "Completed unblocking SCSI target\n"); in session_recovery_timedout()
1916 if (session->transport->session_recovery_timedout) in session_recovery_timedout()
1917 session->transport->session_recovery_timedout(session); in session_recovery_timedout()
1922 struct iscsi_cls_session *session = in __iscsi_unblock_session() local
1925 struct Scsi_Host *shost = iscsi_session_to_shost(session); in __iscsi_unblock_session()
1929 ISCSI_DBG_TRANS_SESSION(session, "Unblocking session\n"); in __iscsi_unblock_session()
1934 cancel_delayed_work(&session->recovery_work); in __iscsi_unblock_session()
1935 spin_lock_irqsave(&session->lock, flags); in __iscsi_unblock_session()
1936 session->state = ISCSI_SESSION_LOGGED_IN; in __iscsi_unblock_session()
1937 spin_unlock_irqrestore(&session->lock, flags); in __iscsi_unblock_session()
1939 scsi_target_unblock(&session->dev, SDEV_RUNNING); in __iscsi_unblock_session()
1946 if (scsi_queue_work(shost, &session->scan_work)) in __iscsi_unblock_session()
1949 ISCSI_DBG_TRANS_SESSION(session, "Completed unblocking session\n"); in __iscsi_unblock_session()
1958 void iscsi_unblock_session(struct iscsi_cls_session *session) in iscsi_unblock_session() argument
1960 flush_work(&session->block_work); in iscsi_unblock_session()
1962 queue_work(iscsi_eh_timer_workq, &session->unblock_work); in iscsi_unblock_session()
1968 flush_work(&session->unblock_work); in iscsi_unblock_session()
1974 struct iscsi_cls_session *session = in __iscsi_block_session() local
1979 ISCSI_DBG_TRANS_SESSION(session, "Blocking session\n"); in __iscsi_block_session()
1980 spin_lock_irqsave(&session->lock, flags); in __iscsi_block_session()
1981 session->state = ISCSI_SESSION_FAILED; in __iscsi_block_session()
1982 spin_unlock_irqrestore(&session->lock, flags); in __iscsi_block_session()
1983 scsi_target_block(&session->dev); in __iscsi_block_session()
1984 ISCSI_DBG_TRANS_SESSION(session, "Completed SCSI target blocking\n"); in __iscsi_block_session()
1985 if (session->recovery_tmo >= 0) in __iscsi_block_session()
1987 &session->recovery_work, in __iscsi_block_session()
1988 session->recovery_tmo * HZ); in __iscsi_block_session()
1991 void iscsi_block_session(struct iscsi_cls_session *session) in iscsi_block_session() argument
1993 queue_work(iscsi_eh_timer_workq, &session->block_work); in iscsi_block_session()
1999 struct iscsi_cls_session *session = in __iscsi_unbind_session() local
2002 struct Scsi_Host *shost = iscsi_session_to_shost(session); in __iscsi_unbind_session()
2007 ISCSI_DBG_TRANS_SESSION(session, "Unbinding session\n"); in __iscsi_unbind_session()
2011 spin_lock_irqsave(&session->lock, flags); in __iscsi_unbind_session()
2012 if (session->target_id == ISCSI_MAX_TARGET) { in __iscsi_unbind_session()
2013 spin_unlock_irqrestore(&session->lock, flags); in __iscsi_unbind_session()
2018 target_id = session->target_id; in __iscsi_unbind_session()
2019 session->target_id = ISCSI_MAX_TARGET; in __iscsi_unbind_session()
2020 spin_unlock_irqrestore(&session->lock, flags); in __iscsi_unbind_session()
2023 scsi_remove_target(&session->dev); in __iscsi_unbind_session()
2025 if (session->ida_used) in __iscsi_unbind_session()
2029 iscsi_session_event(session, ISCSI_KEVENT_UNBIND_SESSION); in __iscsi_unbind_session()
2030 ISCSI_DBG_TRANS_SESSION(session, "Completed target removal\n"); in __iscsi_unbind_session()
2035 struct iscsi_cls_session *session = in __iscsi_destroy_session() local
2038 session->transport->destroy_session(session); in __iscsi_destroy_session()
2045 struct iscsi_cls_session *session; in iscsi_alloc_session() local
2047 session = kzalloc(sizeof(*session) + dd_size, in iscsi_alloc_session()
2049 if (!session) in iscsi_alloc_session()
2052 session->transport = transport; in iscsi_alloc_session()
2053 session->creator = -1; in iscsi_alloc_session()
2054 session->recovery_tmo = 120; in iscsi_alloc_session()
2055 session->recovery_tmo_sysfs_override = false; in iscsi_alloc_session()
2056 session->state = ISCSI_SESSION_FREE; in iscsi_alloc_session()
2057 INIT_DELAYED_WORK(&session->recovery_work, session_recovery_timedout); in iscsi_alloc_session()
2058 INIT_LIST_HEAD(&session->sess_list); in iscsi_alloc_session()
2059 INIT_WORK(&session->unblock_work, __iscsi_unblock_session); in iscsi_alloc_session()
2060 INIT_WORK(&session->block_work, __iscsi_block_session); in iscsi_alloc_session()
2061 INIT_WORK(&session->unbind_work, __iscsi_unbind_session); in iscsi_alloc_session()
2062 INIT_WORK(&session->scan_work, iscsi_scan_session); in iscsi_alloc_session()
2063 INIT_WORK(&session->destroy_work, __iscsi_destroy_session); in iscsi_alloc_session()
2064 spin_lock_init(&session->lock); in iscsi_alloc_session()
2068 session->dev.parent = &shost->shost_gendev; in iscsi_alloc_session()
2069 session->dev.release = iscsi_session_release; in iscsi_alloc_session()
2070 device_initialize(&session->dev); in iscsi_alloc_session()
2072 session->dd_data = &session[1]; in iscsi_alloc_session()
2074 ISCSI_DBG_TRANS_SESSION(session, "Completed session allocation\n"); in iscsi_alloc_session()
2075 return session; in iscsi_alloc_session()
2079 int iscsi_add_session(struct iscsi_cls_session *session, unsigned int target_id) in iscsi_add_session() argument
2085 session->sid = atomic_add_return(1, &iscsi_session_nr); in iscsi_add_session()
2091 iscsi_cls_session_printk(KERN_ERR, session, in iscsi_add_session()
2095 session->target_id = (unsigned int)id; in iscsi_add_session()
2096 session->ida_used = true; in iscsi_add_session()
2098 session->target_id = target_id; in iscsi_add_session()
2100 dev_set_name(&session->dev, "session%u", session->sid); in iscsi_add_session()
2101 err = device_add(&session->dev); in iscsi_add_session()
2103 iscsi_cls_session_printk(KERN_ERR, session, in iscsi_add_session()
2107 err = transport_register_device(&session->dev); in iscsi_add_session()
2109 iscsi_cls_session_printk(KERN_ERR, session, in iscsi_add_session()
2115 list_add(&session->sess_list, &sesslist); in iscsi_add_session()
2118 iscsi_session_event(session, ISCSI_KEVENT_CREATE_SESSION); in iscsi_add_session()
2119 ISCSI_DBG_TRANS_SESSION(session, "Completed session adding\n"); in iscsi_add_session()
2123 device_del(&session->dev); in iscsi_add_session()
2125 if (session->ida_used) in iscsi_add_session()
2126 ida_simple_remove(&iscsi_sess_ida, session->target_id); in iscsi_add_session()
2145 struct iscsi_cls_session *session; in iscsi_create_session() local
2147 session = iscsi_alloc_session(shost, transport, dd_size); in iscsi_create_session()
2148 if (!session) in iscsi_create_session()
2151 if (iscsi_add_session(session, target_id)) { in iscsi_create_session()
2152 iscsi_free_session(session); in iscsi_create_session()
2155 return session; in iscsi_create_session()
2181 void iscsi_remove_session(struct iscsi_cls_session *session) in iscsi_remove_session() argument
2186 ISCSI_DBG_TRANS_SESSION(session, "Removing session\n"); in iscsi_remove_session()
2189 if (!list_empty(&session->sess_list)) in iscsi_remove_session()
2190 list_del(&session->sess_list); in iscsi_remove_session()
2193 flush_work(&session->block_work); in iscsi_remove_session()
2194 flush_work(&session->unblock_work); in iscsi_remove_session()
2195 cancel_delayed_work_sync(&session->recovery_work); in iscsi_remove_session()
2202 spin_lock_irqsave(&session->lock, flags); in iscsi_remove_session()
2203 session->state = ISCSI_SESSION_FREE; in iscsi_remove_session()
2204 spin_unlock_irqrestore(&session->lock, flags); in iscsi_remove_session()
2206 scsi_target_unblock(&session->dev, SDEV_TRANSPORT_OFFLINE); in iscsi_remove_session()
2208 flush_work(&session->scan_work); in iscsi_remove_session()
2210 flush_work(&session->unbind_work); in iscsi_remove_session()
2211 __iscsi_unbind_session(&session->unbind_work); in iscsi_remove_session()
2214 err = device_for_each_child(&session->dev, NULL, in iscsi_remove_session()
2217 iscsi_cls_session_printk(KERN_ERR, session, in iscsi_remove_session()
2221 transport_unregister_device(&session->dev); in iscsi_remove_session()
2223 ISCSI_DBG_TRANS_SESSION(session, "Completing session removal\n"); in iscsi_remove_session()
2224 device_del(&session->dev); in iscsi_remove_session()
2228 void iscsi_free_session(struct iscsi_cls_session *session) in iscsi_free_session() argument
2230 ISCSI_DBG_TRANS_SESSION(session, "Freeing session\n"); in iscsi_free_session()
2231 iscsi_session_event(session, ISCSI_KEVENT_DESTROY_SESSION); in iscsi_free_session()
2232 put_device(&session->dev); in iscsi_free_session()
2252 iscsi_create_conn(struct iscsi_cls_session *session, int dd_size, uint32_t cid) in iscsi_create_conn() argument
2254 struct iscsi_transport *transport = session->transport; in iscsi_create_conn()
2273 if (!get_device(&session->dev)) in iscsi_create_conn()
2276 dev_set_name(&conn->dev, "connection%d:%u", session->sid, cid); in iscsi_create_conn()
2277 conn->dev.parent = &session->dev; in iscsi_create_conn()
2281 iscsi_cls_session_printk(KERN_ERR, session, "could not " in iscsi_create_conn()
2287 iscsi_cls_session_printk(KERN_ERR, session, "could not " in iscsi_create_conn()
2301 put_device(&session->dev); in iscsi_create_conn()
2304 put_device(&session->dev); in iscsi_create_conn()
2506 struct iscsi_cls_session *session; in stop_conn_work_fn() local
2508 session = iscsi_session_lookup(sid); in stop_conn_work_fn()
2509 if (session) { in stop_conn_work_fn()
2511 session->recovery_tmo = 0; in stop_conn_work_fn()
2744 int iscsi_session_event(struct iscsi_cls_session *session, in iscsi_session_event() argument
2754 priv = iscsi_if_transport_lookup(session->transport); in iscsi_session_event()
2757 shost = iscsi_session_to_shost(session); in iscsi_session_event()
2761 iscsi_cls_session_printk(KERN_ERR, session, in iscsi_session_event()
2769 ev->transport_handle = iscsi_handle(session->transport); in iscsi_session_event()
2775 ev->r.d_session.sid = session->sid; in iscsi_session_event()
2779 ev->r.c_session_ret.sid = session->sid; in iscsi_session_event()
2783 ev->r.unbind_session.sid = session->sid; in iscsi_session_event()
2786 iscsi_cls_session_printk(KERN_ERR, session, "Invalid event " in iscsi_session_event()
2798 iscsi_cls_session_printk(KERN_ERR, session, in iscsi_session_event()
2803 ISCSI_DBG_TRANS_SESSION(session, "Completed handling event %d rc %d\n", in iscsi_session_event()
2816 struct iscsi_cls_session *session; in iscsi_if_create_session() local
2819 session = transport->create_session(ep, cmds_max, queue_depth, in iscsi_if_create_session()
2821 if (!session) in iscsi_if_create_session()
2824 session->creator = pid; in iscsi_if_create_session()
2825 shost = iscsi_session_to_shost(session); in iscsi_if_create_session()
2827 ev->r.c_session_ret.sid = session->sid; in iscsi_if_create_session()
2828 ISCSI_DBG_TRANS_SESSION(session, in iscsi_if_create_session()
2837 struct iscsi_cls_session *session; in iscsi_if_create_conn() local
2839 session = iscsi_session_lookup(ev->u.c_conn.sid); in iscsi_if_create_conn()
2840 if (!session) { in iscsi_if_create_conn()
2846 conn = transport->create_conn(session, ev->u.c_conn.cid); in iscsi_if_create_conn()
2848 iscsi_cls_session_printk(KERN_ERR, session, in iscsi_if_create_conn()
2853 ev->r.c_conn_ret.sid = session->sid; in iscsi_if_create_conn()
2892 struct iscsi_cls_session *session; in iscsi_set_param() local
2898 session = iscsi_session_lookup(ev->u.set_param.sid); in iscsi_set_param()
2900 if (!conn || !session) in iscsi_set_param()
2906 if (!session->recovery_tmo_sysfs_override) in iscsi_set_param()
2907 session->recovery_tmo = value; in iscsi_set_param()
3532 struct iscsi_cls_session *session; in iscsi_logout_flashnode_sid() local
3548 session = iscsi_session_lookup(ev->u.logout_flashnode_sid.sid); in iscsi_logout_flashnode_sid()
3549 if (!session) { in iscsi_logout_flashnode_sid()
3556 err = transport->logout_flashnode_sid(session); in iscsi_logout_flashnode_sid()
3645 struct iscsi_cls_session *session; in iscsi_if_recv_msg() local
3689 session = iscsi_session_lookup(ev->u.d_session.sid); in iscsi_if_recv_msg()
3690 if (!session) in iscsi_if_recv_msg()
3695 transport->destroy_session(session); in iscsi_if_recv_msg()
3698 session = iscsi_session_lookup(ev->u.d_session.sid); in iscsi_if_recv_msg()
3699 if (!session) in iscsi_if_recv_msg()
3708 list_del_init(&session->sess_list); in iscsi_if_recv_msg()
3711 queue_work(iscsi_destroy_workq, &session->destroy_work); in iscsi_if_recv_msg()
3715 session = iscsi_session_lookup(ev->u.d_session.sid); in iscsi_if_recv_msg()
3716 if (session) in iscsi_if_recv_msg()
3717 scsi_queue_work(iscsi_session_to_shost(session), in iscsi_if_recv_msg()
3718 &session->unbind_work); in iscsi_if_recv_msg()
3729 session = iscsi_session_lookup(ev->u.b_conn.sid); in iscsi_if_recv_msg()
3735 if (!session || !conn) { in iscsi_if_recv_msg()
3741 ev->r.retcode = transport->bind_conn(session, conn, in iscsi_if_recv_msg()
4167 struct iscsi_cls_session *session = \
4169 struct iscsi_transport *t = session->transport; \
4173 return t->get_session_param(session, param, buf); \
4226 struct iscsi_cls_session *session = iscsi_dev_to_session(dev->parent); in show_priv_session_state() local
4227 return sysfs_emit(buf, "%s\n", iscsi_session_state_name(session->state)); in show_priv_session_state()
4235 struct iscsi_cls_session *session = iscsi_dev_to_session(dev->parent); in show_priv_session_creator() local
4236 return sysfs_emit(buf, "%d\n", session->creator); in show_priv_session_creator()
4244 struct iscsi_cls_session *session = iscsi_dev_to_session(dev->parent); in show_priv_session_target_id() local
4245 return sysfs_emit(buf, "%d\n", session->target_id); in show_priv_session_target_id()
4255 struct iscsi_cls_session *session = \
4257 if (session->field == -1) \
4259 return sysfs_emit(buf, format"\n", session->field); \
4270 struct iscsi_cls_session *session = \
4272 if ((session->state == ISCSI_SESSION_FREE) || \
4273 (session->state == ISCSI_SESSION_FAILED)) \
4276 session->field = -1; \
4277 session->field##_sysfs_override = true; \
4282 session->field = val; \
4283 session->field##_sysfs_override = true; \
4349 struct iscsi_cls_session *session = transport_class_to_session(cdev); in iscsi_session_attr_is_visible() local
4350 struct iscsi_transport *t = session->transport; in iscsi_session_attr_is_visible()
4582 struct iscsi_cls_session *session; in iscsi_session_match() local
4589 session = iscsi_dev_to_session(dev); in iscsi_session_match()
4590 shost = iscsi_session_to_shost(session); in iscsi_session_match()
4604 struct iscsi_cls_session *session; in iscsi_conn_match() local
4613 session = iscsi_dev_to_session(conn->dev.parent); in iscsi_conn_match()
4614 shost = iscsi_session_to_shost(session); in iscsi_conn_match()