• 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()
1818 spin_lock_irqsave(&session->lock, flags); in iscsi_user_scan_session()
1819 session->target_state = ISCSI_SESSION_TARGET_SCANNED; in iscsi_user_scan_session()
1820 spin_unlock_irqrestore(&session->lock, flags); in iscsi_user_scan_session()
1826 ISCSI_DBG_TRANS_SESSION(session, "Completed session scan\n"); in iscsi_user_scan_session()
1846 struct iscsi_cls_session *session = in iscsi_scan_session() local
1848 struct Scsi_Host *shost = iscsi_session_to_shost(session); in iscsi_scan_session()
1857 iscsi_user_scan_session(&session->dev, &scan_data); in iscsi_scan_session()
1872 struct iscsi_cls_session *session = in iscsi_block_scsi_eh() local
1877 spin_lock_irqsave(&session->lock, flags); in iscsi_block_scsi_eh()
1878 while (session->state != ISCSI_SESSION_LOGGED_IN) { in iscsi_block_scsi_eh()
1879 if (session->state == ISCSI_SESSION_FREE) { in iscsi_block_scsi_eh()
1883 spin_unlock_irqrestore(&session->lock, flags); in iscsi_block_scsi_eh()
1885 spin_lock_irqsave(&session->lock, flags); in iscsi_block_scsi_eh()
1887 spin_unlock_irqrestore(&session->lock, flags); in iscsi_block_scsi_eh()
1894 struct iscsi_cls_session *session = in session_recovery_timedout() local
1899 iscsi_cls_session_printk(KERN_INFO, session, in session_recovery_timedout()
1901 session->recovery_tmo); in session_recovery_timedout()
1903 spin_lock_irqsave(&session->lock, flags); in session_recovery_timedout()
1904 switch (session->state) { in session_recovery_timedout()
1906 session->state = ISCSI_SESSION_FREE; in session_recovery_timedout()
1911 spin_unlock_irqrestore(&session->lock, flags); in session_recovery_timedout()
1914 spin_unlock_irqrestore(&session->lock, flags); in session_recovery_timedout()
1916 ISCSI_DBG_TRANS_SESSION(session, "Unblocking SCSI target\n"); in session_recovery_timedout()
1917 scsi_target_unblock(&session->dev, SDEV_TRANSPORT_OFFLINE); in session_recovery_timedout()
1918 ISCSI_DBG_TRANS_SESSION(session, "Completed unblocking SCSI target\n"); in session_recovery_timedout()
1920 if (session->transport->session_recovery_timedout) in session_recovery_timedout()
1921 session->transport->session_recovery_timedout(session); in session_recovery_timedout()
1926 struct iscsi_cls_session *session = in __iscsi_unblock_session() local
1929 struct Scsi_Host *shost = iscsi_session_to_shost(session); in __iscsi_unblock_session()
1933 ISCSI_DBG_TRANS_SESSION(session, "Unblocking session\n"); in __iscsi_unblock_session()
1938 cancel_delayed_work(&session->recovery_work); in __iscsi_unblock_session()
1939 spin_lock_irqsave(&session->lock, flags); in __iscsi_unblock_session()
1940 session->state = ISCSI_SESSION_LOGGED_IN; in __iscsi_unblock_session()
1941 spin_unlock_irqrestore(&session->lock, flags); in __iscsi_unblock_session()
1943 scsi_target_unblock(&session->dev, SDEV_RUNNING); in __iscsi_unblock_session()
1950 if (scsi_queue_work(shost, &session->scan_work)) in __iscsi_unblock_session()
1953 ISCSI_DBG_TRANS_SESSION(session, "Completed unblocking session\n"); in __iscsi_unblock_session()
1962 void iscsi_unblock_session(struct iscsi_cls_session *session) in iscsi_unblock_session() argument
1964 flush_work(&session->block_work); in iscsi_unblock_session()
1966 queue_work(iscsi_eh_timer_workq, &session->unblock_work); in iscsi_unblock_session()
1972 flush_work(&session->unblock_work); in iscsi_unblock_session()
1978 struct iscsi_cls_session *session = in __iscsi_block_session() local
1983 ISCSI_DBG_TRANS_SESSION(session, "Blocking session\n"); in __iscsi_block_session()
1984 spin_lock_irqsave(&session->lock, flags); in __iscsi_block_session()
1985 session->state = ISCSI_SESSION_FAILED; in __iscsi_block_session()
1986 spin_unlock_irqrestore(&session->lock, flags); in __iscsi_block_session()
1987 scsi_target_block(&session->dev); in __iscsi_block_session()
1988 ISCSI_DBG_TRANS_SESSION(session, "Completed SCSI target blocking\n"); in __iscsi_block_session()
1989 if (session->recovery_tmo >= 0) in __iscsi_block_session()
1991 &session->recovery_work, in __iscsi_block_session()
1992 session->recovery_tmo * HZ); in __iscsi_block_session()
1995 void iscsi_block_session(struct iscsi_cls_session *session) in iscsi_block_session() argument
1997 queue_work(iscsi_eh_timer_workq, &session->block_work); in iscsi_block_session()
2003 struct iscsi_cls_session *session = in __iscsi_unbind_session() local
2006 struct Scsi_Host *shost = iscsi_session_to_shost(session); in __iscsi_unbind_session()
2012 ISCSI_DBG_TRANS_SESSION(session, "Unbinding session\n"); in __iscsi_unbind_session()
2016 spin_lock_irqsave(&session->lock, flags); in __iscsi_unbind_session()
2017 if (session->target_state == ISCSI_SESSION_TARGET_ALLOCATED) { in __iscsi_unbind_session()
2019 } else if (session->target_state != ISCSI_SESSION_TARGET_SCANNED) { in __iscsi_unbind_session()
2020 spin_unlock_irqrestore(&session->lock, flags); in __iscsi_unbind_session()
2022 ISCSI_DBG_TRANS_SESSION(session, in __iscsi_unbind_session()
2027 session->target_state = ISCSI_SESSION_TARGET_UNBINDING; in __iscsi_unbind_session()
2028 target_id = session->target_id; in __iscsi_unbind_session()
2029 session->target_id = ISCSI_MAX_TARGET; in __iscsi_unbind_session()
2030 spin_unlock_irqrestore(&session->lock, flags); in __iscsi_unbind_session()
2034 scsi_remove_target(&session->dev); in __iscsi_unbind_session()
2036 if (session->ida_used) in __iscsi_unbind_session()
2039 iscsi_session_event(session, ISCSI_KEVENT_UNBIND_SESSION); in __iscsi_unbind_session()
2040 ISCSI_DBG_TRANS_SESSION(session, "Completed target removal\n"); in __iscsi_unbind_session()
2042 spin_lock_irqsave(&session->lock, flags); in __iscsi_unbind_session()
2043 session->target_state = ISCSI_SESSION_TARGET_UNBOUND; in __iscsi_unbind_session()
2044 spin_unlock_irqrestore(&session->lock, flags); in __iscsi_unbind_session()
2049 struct iscsi_cls_session *session = in __iscsi_destroy_session() local
2052 session->transport->destroy_session(session); in __iscsi_destroy_session()
2059 struct iscsi_cls_session *session; in iscsi_alloc_session() local
2061 session = kzalloc(sizeof(*session) + dd_size, in iscsi_alloc_session()
2063 if (!session) in iscsi_alloc_session()
2066 session->transport = transport; in iscsi_alloc_session()
2067 session->creator = -1; in iscsi_alloc_session()
2068 session->recovery_tmo = 120; in iscsi_alloc_session()
2069 session->recovery_tmo_sysfs_override = false; in iscsi_alloc_session()
2070 session->state = ISCSI_SESSION_FREE; in iscsi_alloc_session()
2071 INIT_DELAYED_WORK(&session->recovery_work, session_recovery_timedout); in iscsi_alloc_session()
2072 INIT_LIST_HEAD(&session->sess_list); in iscsi_alloc_session()
2073 INIT_WORK(&session->unblock_work, __iscsi_unblock_session); in iscsi_alloc_session()
2074 INIT_WORK(&session->block_work, __iscsi_block_session); in iscsi_alloc_session()
2075 INIT_WORK(&session->unbind_work, __iscsi_unbind_session); in iscsi_alloc_session()
2076 INIT_WORK(&session->scan_work, iscsi_scan_session); in iscsi_alloc_session()
2077 INIT_WORK(&session->destroy_work, __iscsi_destroy_session); in iscsi_alloc_session()
2078 spin_lock_init(&session->lock); in iscsi_alloc_session()
2082 session->dev.parent = &shost->shost_gendev; in iscsi_alloc_session()
2083 session->dev.release = iscsi_session_release; in iscsi_alloc_session()
2084 device_initialize(&session->dev); in iscsi_alloc_session()
2086 session->dd_data = &session[1]; in iscsi_alloc_session()
2088 ISCSI_DBG_TRANS_SESSION(session, "Completed session allocation\n"); in iscsi_alloc_session()
2089 return session; in iscsi_alloc_session()
2093 int iscsi_add_session(struct iscsi_cls_session *session, unsigned int target_id) in iscsi_add_session() argument
2099 session->sid = atomic_add_return(1, &iscsi_session_nr); in iscsi_add_session()
2105 iscsi_cls_session_printk(KERN_ERR, session, in iscsi_add_session()
2109 session->target_id = (unsigned int)id; in iscsi_add_session()
2110 session->ida_used = true; in iscsi_add_session()
2112 session->target_id = target_id; in iscsi_add_session()
2113 spin_lock_irqsave(&session->lock, flags); in iscsi_add_session()
2114 session->target_state = ISCSI_SESSION_TARGET_ALLOCATED; in iscsi_add_session()
2115 spin_unlock_irqrestore(&session->lock, flags); in iscsi_add_session()
2117 dev_set_name(&session->dev, "session%u", session->sid); in iscsi_add_session()
2118 err = device_add(&session->dev); in iscsi_add_session()
2120 iscsi_cls_session_printk(KERN_ERR, session, in iscsi_add_session()
2124 err = transport_register_device(&session->dev); in iscsi_add_session()
2126 iscsi_cls_session_printk(KERN_ERR, session, in iscsi_add_session()
2132 list_add(&session->sess_list, &sesslist); in iscsi_add_session()
2135 iscsi_session_event(session, ISCSI_KEVENT_CREATE_SESSION); in iscsi_add_session()
2136 ISCSI_DBG_TRANS_SESSION(session, "Completed session adding\n"); in iscsi_add_session()
2140 device_del(&session->dev); in iscsi_add_session()
2142 if (session->ida_used) in iscsi_add_session()
2143 ida_simple_remove(&iscsi_sess_ida, session->target_id); in iscsi_add_session()
2162 struct iscsi_cls_session *session; in iscsi_create_session() local
2164 session = iscsi_alloc_session(shost, transport, dd_size); in iscsi_create_session()
2165 if (!session) in iscsi_create_session()
2168 if (iscsi_add_session(session, target_id)) { in iscsi_create_session()
2169 iscsi_free_session(session); in iscsi_create_session()
2172 return session; in iscsi_create_session()
2198 void iscsi_remove_session(struct iscsi_cls_session *session) in iscsi_remove_session() argument
2203 ISCSI_DBG_TRANS_SESSION(session, "Removing session\n"); in iscsi_remove_session()
2206 if (!list_empty(&session->sess_list)) in iscsi_remove_session()
2207 list_del(&session->sess_list); in iscsi_remove_session()
2210 flush_work(&session->block_work); in iscsi_remove_session()
2211 flush_work(&session->unblock_work); in iscsi_remove_session()
2212 cancel_delayed_work_sync(&session->recovery_work); in iscsi_remove_session()
2219 spin_lock_irqsave(&session->lock, flags); in iscsi_remove_session()
2220 session->state = ISCSI_SESSION_FREE; in iscsi_remove_session()
2221 spin_unlock_irqrestore(&session->lock, flags); in iscsi_remove_session()
2223 scsi_target_unblock(&session->dev, SDEV_TRANSPORT_OFFLINE); in iscsi_remove_session()
2225 flush_work(&session->scan_work); in iscsi_remove_session()
2227 flush_work(&session->unbind_work); in iscsi_remove_session()
2228 __iscsi_unbind_session(&session->unbind_work); in iscsi_remove_session()
2231 err = device_for_each_child(&session->dev, NULL, in iscsi_remove_session()
2234 iscsi_cls_session_printk(KERN_ERR, session, in iscsi_remove_session()
2238 transport_unregister_device(&session->dev); in iscsi_remove_session()
2240 ISCSI_DBG_TRANS_SESSION(session, "Completing session removal\n"); in iscsi_remove_session()
2241 device_del(&session->dev); in iscsi_remove_session()
2268 struct iscsi_cls_session *session = iscsi_conn_to_session(conn); in iscsi_ep_disconnect() local
2274 if (!conn->ep || !session->transport->ep_disconnect) in iscsi_ep_disconnect()
2280 session->transport->unbind_conn(conn, is_active); in iscsi_ep_disconnect()
2281 session->transport->ep_disconnect(ep); in iscsi_ep_disconnect()
2368 struct iscsi_cls_session *session = iscsi_conn_to_session(conn); in iscsi_cleanup_conn_work_fn() local
2385 if (session->recovery_tmo > 0) in iscsi_cleanup_conn_work_fn()
2386 session->recovery_tmo = 0; in iscsi_cleanup_conn_work_fn()
2394 void iscsi_free_session(struct iscsi_cls_session *session) in iscsi_free_session() argument
2396 ISCSI_DBG_TRANS_SESSION(session, "Freeing session\n"); in iscsi_free_session()
2397 iscsi_session_event(session, ISCSI_KEVENT_DESTROY_SESSION); in iscsi_free_session()
2398 put_device(&session->dev); in iscsi_free_session()
2418 iscsi_create_conn(struct iscsi_cls_session *session, int dd_size, uint32_t cid) in iscsi_create_conn() argument
2420 struct iscsi_transport *transport = session->transport; in iscsi_create_conn()
2440 if (!get_device(&session->dev)) in iscsi_create_conn()
2443 dev_set_name(&conn->dev, "connection%d:%u", session->sid, cid); in iscsi_create_conn()
2444 conn->dev.parent = &session->dev; in iscsi_create_conn()
2448 iscsi_cls_session_printk(KERN_ERR, session, "could not " in iscsi_create_conn()
2454 iscsi_cls_session_printk(KERN_ERR, session, "could not " in iscsi_create_conn()
2468 put_device(&session->dev); in iscsi_create_conn()
2471 put_device(&session->dev); in iscsi_create_conn()
2859 int iscsi_session_event(struct iscsi_cls_session *session, in iscsi_session_event() argument
2869 priv = iscsi_if_transport_lookup(session->transport); in iscsi_session_event()
2872 shost = iscsi_session_to_shost(session); in iscsi_session_event()
2876 iscsi_cls_session_printk(KERN_ERR, session, in iscsi_session_event()
2884 ev->transport_handle = iscsi_handle(session->transport); in iscsi_session_event()
2890 ev->r.d_session.sid = session->sid; in iscsi_session_event()
2894 ev->r.c_session_ret.sid = session->sid; in iscsi_session_event()
2898 ev->r.unbind_session.sid = session->sid; in iscsi_session_event()
2901 iscsi_cls_session_printk(KERN_ERR, session, "Invalid event " in iscsi_session_event()
2913 iscsi_cls_session_printk(KERN_ERR, session, in iscsi_session_event()
2918 ISCSI_DBG_TRANS_SESSION(session, "Completed handling event %d rc %d\n", in iscsi_session_event()
2931 struct iscsi_cls_session *session; in iscsi_if_create_session() local
2934 session = transport->create_session(ep, cmds_max, queue_depth, in iscsi_if_create_session()
2936 if (!session) in iscsi_if_create_session()
2939 session->creator = pid; in iscsi_if_create_session()
2940 shost = iscsi_session_to_shost(session); in iscsi_if_create_session()
2942 ev->r.c_session_ret.sid = session->sid; in iscsi_if_create_session()
2943 ISCSI_DBG_TRANS_SESSION(session, in iscsi_if_create_session()
2952 struct iscsi_cls_session *session; in iscsi_if_create_conn() local
2954 session = iscsi_session_lookup(ev->u.c_conn.sid); in iscsi_if_create_conn()
2955 if (!session) { in iscsi_if_create_conn()
2961 conn = transport->create_conn(session, ev->u.c_conn.cid); in iscsi_if_create_conn()
2963 iscsi_cls_session_printk(KERN_ERR, session, in iscsi_if_create_conn()
2968 ev->r.c_conn_ret.sid = session->sid; in iscsi_if_create_conn()
2998 struct iscsi_cls_session *session; in iscsi_set_param() local
3004 session = iscsi_session_lookup(ev->u.set_param.sid); in iscsi_set_param()
3006 if (!conn || !session) in iscsi_set_param()
3012 if (!session->recovery_tmo_sysfs_override) in iscsi_set_param()
3013 session->recovery_tmo = value; in iscsi_set_param()
3646 struct iscsi_cls_session *session; in iscsi_logout_flashnode_sid() local
3662 session = iscsi_session_lookup(ev->u.logout_flashnode_sid.sid); in iscsi_logout_flashnode_sid()
3663 if (!session) { in iscsi_logout_flashnode_sid()
3670 err = transport->logout_flashnode_sid(session); in iscsi_logout_flashnode_sid()
3753 struct iscsi_cls_session *session; in iscsi_if_transport_conn() local
3803 session = iscsi_session_lookup(ev->u.b_conn.sid); in iscsi_if_transport_conn()
3804 if (!session) { in iscsi_if_transport_conn()
3809 ev->r.retcode = transport->bind_conn(session, conn, in iscsi_if_transport_conn()
3865 struct iscsi_cls_session *session; in iscsi_if_recv_msg() local
3909 session = iscsi_session_lookup(ev->u.d_session.sid); in iscsi_if_recv_msg()
3910 if (!session) in iscsi_if_recv_msg()
3915 transport->destroy_session(session); in iscsi_if_recv_msg()
3918 session = iscsi_session_lookup(ev->u.d_session.sid); in iscsi_if_recv_msg()
3919 if (!session) in iscsi_if_recv_msg()
3928 list_del_init(&session->sess_list); in iscsi_if_recv_msg()
3931 queue_work(system_unbound_wq, &session->destroy_work); in iscsi_if_recv_msg()
3935 session = iscsi_session_lookup(ev->u.d_session.sid); in iscsi_if_recv_msg()
3936 if (session) in iscsi_if_recv_msg()
3937 scsi_queue_work(iscsi_session_to_shost(session), in iscsi_if_recv_msg()
3938 &session->unbind_work); in iscsi_if_recv_msg()
4315 struct iscsi_cls_session *session = \
4317 struct iscsi_transport *t = session->transport; \
4321 return t->get_session_param(session, param, buf); \
4374 struct iscsi_cls_session *session = iscsi_dev_to_session(dev->parent); in show_priv_session_target_state() local
4377 iscsi_session_target_state_name[session->target_state]); in show_priv_session_target_state()
4387 struct iscsi_cls_session *session = iscsi_dev_to_session(dev->parent); in show_priv_session_state() local
4388 return sysfs_emit(buf, "%s\n", iscsi_session_state_name(session->state)); in show_priv_session_state()
4396 struct iscsi_cls_session *session = iscsi_dev_to_session(dev->parent); in show_priv_session_creator() local
4397 return sysfs_emit(buf, "%d\n", session->creator); in show_priv_session_creator()
4405 struct iscsi_cls_session *session = iscsi_dev_to_session(dev->parent); in show_priv_session_target_id() local
4406 return sysfs_emit(buf, "%d\n", session->target_id); in show_priv_session_target_id()
4416 struct iscsi_cls_session *session = \
4418 if (session->field == -1) \
4420 return sysfs_emit(buf, format"\n", session->field); \
4431 struct iscsi_cls_session *session = \
4433 if ((session->state == ISCSI_SESSION_FREE) || \
4434 (session->state == ISCSI_SESSION_FAILED)) \
4437 session->field = -1; \
4438 session->field##_sysfs_override = true; \
4443 session->field = val; \
4444 session->field##_sysfs_override = true; \
4511 struct iscsi_cls_session *session = transport_class_to_session(cdev); in iscsi_session_attr_is_visible() local
4512 struct iscsi_transport *t = session->transport; in iscsi_session_attr_is_visible()
4746 struct iscsi_cls_session *session; in iscsi_session_match() local
4753 session = iscsi_dev_to_session(dev); in iscsi_session_match()
4754 shost = iscsi_session_to_shost(session); in iscsi_session_match()
4768 struct iscsi_cls_session *session; in iscsi_conn_match() local
4777 session = iscsi_dev_to_session(conn->dev.parent); in iscsi_conn_match()
4778 shost = iscsi_session_to_shost(session); in iscsi_conn_match()