Lines Matching refs:session
55 struct ceph_mds_session *session; member
1405 mds = cap->session->s_mds; in __choose_mds()
1634 struct ceph_mds_session *session) in __open_session() argument
1638 int mds = session->s_mds; in __open_session()
1647 session->s_state = CEPH_MDS_SESSION_OPENING; in __open_session()
1648 session->s_renew_requested = jiffies; in __open_session()
1651 msg = create_session_open_msg(mdsc, session->s_seq); in __open_session()
1654 ceph_con_send(&session->s_con, msg); in __open_session()
1666 struct ceph_mds_session *session; in __open_export_target_session() local
1669 session = __ceph_lookup_mds_session(mdsc, target); in __open_export_target_session()
1670 if (!session) { in __open_export_target_session()
1671 session = register_session(mdsc, target); in __open_export_target_session()
1672 if (IS_ERR(session)) in __open_export_target_session()
1673 return session; in __open_export_target_session()
1675 if (session->s_state == CEPH_MDS_SESSION_NEW || in __open_export_target_session()
1676 session->s_state == CEPH_MDS_SESSION_CLOSING) { in __open_export_target_session()
1677 ret = __open_session(mdsc, session); in __open_export_target_session()
1682 return session; in __open_export_target_session()
1688 struct ceph_mds_session *session; in ceph_mdsc_open_export_target_session() local
1693 session = __open_export_target_session(mdsc, target); in ceph_mdsc_open_export_target_session()
1696 return session; in ceph_mdsc_open_export_target_session()
1700 struct ceph_mds_session *session) in __open_export_target_sessions() argument
1704 int i, mds = session->s_mds; in __open_export_target_sessions()
1711 session->s_mds, mi->num_export_targets); in __open_export_target_sessions()
1720 struct ceph_mds_session *session) in ceph_mdsc_open_export_target_sessions() argument
1723 __open_export_target_sessions(mdsc, session); in ceph_mdsc_open_export_target_sessions()
1731 static void detach_cap_releases(struct ceph_mds_session *session, in detach_cap_releases() argument
1734 lockdep_assert_held(&session->s_cap_lock); in detach_cap_releases()
1736 list_splice_init(&session->s_cap_releases, target); in detach_cap_releases()
1737 session->s_num_cap_releases = 0; in detach_cap_releases()
1738 dout("dispose_cap_releases mds%d\n", session->s_mds); in detach_cap_releases()
1754 struct ceph_mds_session *session) in cleanup_session_requests() argument
1759 dout("cleanup_session_requests mds%d\n", session->s_mds); in cleanup_session_requests()
1761 while (!list_empty(&session->s_unsafe)) { in cleanup_session_requests()
1762 req = list_first_entry(&session->s_unsafe, in cleanup_session_requests()
1778 req->r_session->s_mds == session->s_mds) in cleanup_session_requests()
1790 int ceph_iterate_session_caps(struct ceph_mds_session *session, in ceph_iterate_session_caps() argument
1800 dout("iterate_session_caps %p mds%d\n", session, session->s_mds); in ceph_iterate_session_caps()
1801 spin_lock(&session->s_cap_lock); in ceph_iterate_session_caps()
1802 p = session->s_caps.next; in ceph_iterate_session_caps()
1803 while (p != &session->s_caps) { in ceph_iterate_session_caps()
1812 session->s_cap_iterator = cap; in ceph_iterate_session_caps()
1814 spin_unlock(&session->s_cap_lock); in ceph_iterate_session_caps()
1821 ceph_put_cap(session->s_mdsc, old_cap); in ceph_iterate_session_caps()
1828 spin_lock(&session->s_cap_lock); in ceph_iterate_session_caps()
1833 BUG_ON(cap->session != session); in ceph_iterate_session_caps()
1834 cap->session = NULL; in ceph_iterate_session_caps()
1836 session->s_nr_caps--; in ceph_iterate_session_caps()
1837 atomic64_dec(&session->s_mdsc->metric.total_caps); in ceph_iterate_session_caps()
1839 __ceph_queue_cap_release(session, cap); in ceph_iterate_session_caps()
1848 session->s_cap_iterator = NULL; in ceph_iterate_session_caps()
1849 spin_unlock(&session->s_cap_lock); in ceph_iterate_session_caps()
1853 ceph_put_cap(session->s_mdsc, old_cap); in ceph_iterate_session_caps()
1887 static void remove_session_caps(struct ceph_mds_session *session) in remove_session_caps() argument
1889 struct ceph_fs_client *fsc = session->s_mdsc->fsc; in remove_session_caps()
1893 dout("remove_session_caps on %p\n", session); in remove_session_caps()
1894 ceph_iterate_session_caps(session, remove_session_caps_cb, fsc); in remove_session_caps()
1898 spin_lock(&session->s_cap_lock); in remove_session_caps()
1899 if (session->s_nr_caps > 0) { in remove_session_caps()
1910 while (!list_empty(&session->s_caps)) { in remove_session_caps()
1911 cap = list_entry(session->s_caps.next, in remove_session_caps()
1917 spin_unlock(&session->s_cap_lock); in remove_session_caps()
1922 spin_lock(&session->s_cap_lock); in remove_session_caps()
1927 detach_cap_releases(session, &dispose); in remove_session_caps()
1929 BUG_ON(session->s_nr_caps > 0); in remove_session_caps()
1930 BUG_ON(!list_empty(&session->s_cap_flushing)); in remove_session_caps()
1931 spin_unlock(&session->s_cap_lock); in remove_session_caps()
1932 dispose_cap_releases(session->s_mdsc, &dispose); in remove_session_caps()
1963 if (cap && cap->cap_gen < atomic_read(&cap->session->s_cap_gen)) in wake_up_session_cb()
1972 static void wake_up_session_caps(struct ceph_mds_session *session, int ev) in wake_up_session_caps() argument
1974 dout("wake_up_session_caps %p mds%d\n", session, session->s_mds); in wake_up_session_caps()
1975 ceph_iterate_session_caps(session, wake_up_session_cb, in wake_up_session_caps()
1986 struct ceph_mds_session *session) in send_renew_caps() argument
1991 if (time_after_eq(jiffies, session->s_cap_ttl) && in send_renew_caps()
1992 time_after_eq(session->s_cap_ttl, session->s_renew_requested)) in send_renew_caps()
1993 pr_info("mds%d caps stale\n", session->s_mds); in send_renew_caps()
1994 session->s_renew_requested = jiffies; in send_renew_caps()
1998 state = ceph_mdsmap_get_state(mdsc->mdsmap, session->s_mds); in send_renew_caps()
2001 session->s_mds, ceph_mds_state_name(state)); in send_renew_caps()
2005 dout("send_renew_caps to mds%d (%s)\n", session->s_mds, in send_renew_caps()
2008 ++session->s_renew_seq); in send_renew_caps()
2011 ceph_con_send(&session->s_con, msg); in send_renew_caps()
2016 struct ceph_mds_session *session, u64 seq) in send_flushmsg_ack() argument
2021 session->s_mds, ceph_session_state_name(session->s_state), seq); in send_flushmsg_ack()
2025 ceph_con_send(&session->s_con, msg); in send_flushmsg_ack()
2036 struct ceph_mds_session *session, int is_renew) in renewed_caps() argument
2041 spin_lock(&session->s_cap_lock); in renewed_caps()
2042 was_stale = is_renew && time_after_eq(jiffies, session->s_cap_ttl); in renewed_caps()
2044 session->s_cap_ttl = session->s_renew_requested + in renewed_caps()
2048 if (time_before(jiffies, session->s_cap_ttl)) { in renewed_caps()
2049 pr_info("mds%d caps renewed\n", session->s_mds); in renewed_caps()
2052 pr_info("mds%d caps still stale\n", session->s_mds); in renewed_caps()
2056 session->s_mds, session->s_cap_ttl, was_stale ? "stale" : "fresh", in renewed_caps()
2057 time_before(jiffies, session->s_cap_ttl) ? "stale" : "fresh"); in renewed_caps()
2058 spin_unlock(&session->s_cap_lock); in renewed_caps()
2061 wake_up_session_caps(session, RENEWCAPS); in renewed_caps()
2067 static int request_close_session(struct ceph_mds_session *session) in request_close_session() argument
2072 session->s_mds, ceph_session_state_name(session->s_state), in request_close_session()
2073 session->s_seq); in request_close_session()
2075 session->s_seq); in request_close_session()
2078 ceph_con_send(&session->s_con, msg); in request_close_session()
2086 struct ceph_mds_session *session) in __close_session() argument
2088 if (session->s_state >= CEPH_MDS_SESSION_CLOSING) in __close_session()
2090 session->s_state = CEPH_MDS_SESSION_CLOSING; in __close_session()
2091 return request_close_session(session); in __close_session()
2207 struct ceph_mds_session *session, in ceph_trim_caps() argument
2210 int trim_caps = session->s_nr_caps - max_caps; in ceph_trim_caps()
2213 session->s_mds, session->s_nr_caps, max_caps, trim_caps); in ceph_trim_caps()
2217 ceph_iterate_session_caps(session, trim_caps_cb, &remaining); in ceph_trim_caps()
2219 session->s_mds, session->s_nr_caps, max_caps, in ceph_trim_caps()
2223 ceph_flush_cap_releases(mdsc, session); in ceph_trim_caps()
2267 struct ceph_mds_session *session) in ceph_send_cap_releases() argument
2282 spin_lock(&session->s_cap_lock); in ceph_send_cap_releases()
2284 list_splice_init(&session->s_cap_releases, &tmp_list); in ceph_send_cap_releases()
2285 num_cap_releases = session->s_num_cap_releases; in ceph_send_cap_releases()
2286 session->s_num_cap_releases = 0; in ceph_send_cap_releases()
2287 spin_unlock(&session->s_cap_lock); in ceph_send_cap_releases()
2327 dout("send_cap_releases mds%d %p\n", session->s_mds, msg); in ceph_send_cap_releases()
2328 ceph_con_send(&session->s_con, msg); in ceph_send_cap_releases()
2335 spin_lock(&session->s_cap_lock); in ceph_send_cap_releases()
2336 if (!list_empty(&session->s_cap_releases)) in ceph_send_cap_releases()
2338 spin_unlock(&session->s_cap_lock); in ceph_send_cap_releases()
2347 dout("send_cap_releases mds%d %p\n", session->s_mds, msg); in ceph_send_cap_releases()
2348 ceph_con_send(&session->s_con, msg); in ceph_send_cap_releases()
2353 session->s_mds); in ceph_send_cap_releases()
2354 spin_lock(&session->s_cap_lock); in ceph_send_cap_releases()
2355 list_splice(&tmp_list, &session->s_cap_releases); in ceph_send_cap_releases()
2356 session->s_num_cap_releases += num_cap_releases; in ceph_send_cap_releases()
2357 spin_unlock(&session->s_cap_lock); in ceph_send_cap_releases()
2362 struct ceph_mds_session *session = in ceph_cap_release_work() local
2365 mutex_lock(&session->s_mutex); in ceph_cap_release_work()
2366 if (session->s_state == CEPH_MDS_SESSION_OPEN || in ceph_cap_release_work()
2367 session->s_state == CEPH_MDS_SESSION_HUNG) in ceph_cap_release_work()
2368 ceph_send_cap_releases(session->s_mdsc, session); in ceph_cap_release_work()
2369 mutex_unlock(&session->s_mutex); in ceph_cap_release_work()
2370 ceph_put_mds_session(session); in ceph_cap_release_work()
2374 struct ceph_mds_session *session) in ceph_flush_cap_releases() argument
2379 ceph_get_mds_session(session); in ceph_flush_cap_releases()
2381 &session->s_cap_release_work)) { in ceph_flush_cap_releases()
2384 ceph_put_mds_session(session); in ceph_flush_cap_releases()
2392 void __ceph_queue_cap_release(struct ceph_mds_session *session, in __ceph_queue_cap_release() argument
2395 list_add_tail(&cap->session_caps, &session->s_cap_releases); in __ceph_queue_cap_release()
2396 session->s_num_cap_releases++; in __ceph_queue_cap_release()
2398 if (!(session->s_num_cap_releases % CEPH_CAPS_PER_RELEASE)) in __ceph_queue_cap_release()
2399 ceph_flush_cap_releases(session->s_mdsc, session); in __ceph_queue_cap_release()
2858 static struct ceph_msg *create_request_message(struct ceph_mds_session *session, in create_request_message() argument
2862 int mds = session->s_mds; in create_request_message()
2863 struct ceph_mds_client *mdsc = session->s_mdsc; in create_request_message()
2876 bool legacy = !(session->s_con.peer_features & CEPH_FEATURE_FS_BTIME); in create_request_message()
2878 &session->s_features); in create_request_message()
2968 session->s_con.peer_features); in create_request_message()
3096 static int __prepare_send_request(struct ceph_mds_session *session, in __prepare_send_request() argument
3100 int mds = session->s_mds; in __prepare_send_request()
3101 struct ceph_mds_client *mdsc = session->s_mdsc; in __prepare_send_request()
3107 &session->s_features); in __prepare_send_request()
3150 session->s_con.peer_features); in __prepare_send_request()
3180 msg = create_request_message(session, req, drop_cap_releases); in __prepare_send_request()
3188 session->s_con.peer_features); in __prepare_send_request()
3212 static int __send_request(struct ceph_mds_session *session, in __send_request() argument
3218 err = __prepare_send_request(session, req, drop_cap_releases); in __send_request()
3221 ceph_con_send(&session->s_con, req->r_request); in __send_request()
3233 struct ceph_mds_session *session = NULL; in __do_request() local
3294 session = __ceph_lookup_mds_session(mdsc, mds); in __do_request()
3295 if (!session) { in __do_request()
3296 session = register_session(mdsc, mds); in __do_request()
3297 if (IS_ERR(session)) { in __do_request()
3298 err = PTR_ERR(session); in __do_request()
3302 req->r_session = ceph_get_mds_session(session); in __do_request()
3304 dout("do_request mds%d session %p state %s\n", mds, session, in __do_request()
3305 ceph_session_state_name(session->s_state)); in __do_request()
3311 !test_bit(req->r_feature_needed, &session->s_features)) { in __do_request()
3316 if (session->s_state != CEPH_MDS_SESSION_OPEN && in __do_request()
3317 session->s_state != CEPH_MDS_SESSION_HUNG) { in __do_request()
3333 if (session->s_state == CEPH_MDS_SESSION_REJECTED) { in __do_request()
3341 if (session->s_state == CEPH_MDS_SESSION_NEW || in __do_request()
3342 session->s_state == CEPH_MDS_SESSION_CLOSING) { in __do_request()
3343 err = __open_session(mdsc, session); in __do_request()
3350 list_add(&req->r_wait, &session->s_waiting); in __do_request()
3397 cap->session->s_mds, session->s_mds); in __do_request()
3400 spin_lock(&cap->session->s_cap_lock); in __do_request()
3401 cap->session->s_nr_caps--; in __do_request()
3403 spin_unlock(&cap->session->s_cap_lock); in __do_request()
3407 cap->session = session; in __do_request()
3408 spin_lock(&session->s_cap_lock); in __do_request()
3409 session->s_nr_caps++; in __do_request()
3410 list_add_tail(&cap->session_caps, &session->s_caps); in __do_request()
3411 spin_unlock(&session->s_cap_lock); in __do_request()
3413 change_auth_cap_ses(ci, session); in __do_request()
3418 err = __send_request(session, req, false); in __do_request()
3421 ceph_put_mds_session(session); in __do_request()
3624 static void handle_reply(struct ceph_mds_session *session, struct ceph_msg *msg) in handle_reply() argument
3626 struct ceph_mds_client *mdsc = session->s_mdsc; in handle_reply()
3633 int mds = session->s_mds; in handle_reply()
3654 if (req->r_session != session) { in handle_reply()
3656 " not mds%d\n", tid, session->s_mds, in handle_reply()
3706 if (test_bit(CEPHFS_FEATURE_REPLY_ENCODING, &session->s_features)) in handle_reply()
3707 err = parse_reply_info(session, msg, req, (u64)-1); in handle_reply()
3709 err = parse_reply_info(session, msg, req, in handle_reply()
3710 session->s_con.peer_features); in handle_reply()
3737 mutex_lock(&session->s_mutex); in handle_reply()
3743 mutex_lock(&session->s_mutex); in handle_reply()
3813 mutex_unlock(&session->s_mutex); in handle_reply()
3835 struct ceph_mds_session *session, in handle_forward() argument
3932 static void handle_session(struct ceph_mds_session *session, in handle_session() argument
3935 struct ceph_mds_client *mdsc = session->s_mdsc; in handle_session()
3936 int mds = session->s_mds; in handle_session()
3983 pr_warn("mds%d session blocklisted\n", session->s_mds); in handle_session()
3990 ceph_get_mds_session(session); in handle_session()
3991 __unregister_session(mdsc, session); in handle_session()
3994 session->s_ttl = jiffies + HZ*mdsc->mdsmap->m_session_autoclose; in handle_session()
3997 mutex_lock(&session->s_mutex); in handle_session()
4000 mds, ceph_session_op_name(op), session, in handle_session()
4001 ceph_session_state_name(session->s_state), seq); in handle_session()
4003 if (session->s_state == CEPH_MDS_SESSION_HUNG) { in handle_session()
4004 session->s_state = CEPH_MDS_SESSION_OPEN; in handle_session()
4005 pr_info("mds%d came back\n", session->s_mds); in handle_session()
4010 if (session->s_state == CEPH_MDS_SESSION_RECONNECTING) in handle_session()
4011 pr_info("mds%d reconnect success\n", session->s_mds); in handle_session()
4013 if (session->s_state == CEPH_MDS_SESSION_OPEN) { in handle_session()
4014 pr_notice("mds%d is already opened\n", session->s_mds); in handle_session()
4016 session->s_state = CEPH_MDS_SESSION_OPEN; in handle_session()
4017 session->s_features = features; in handle_session()
4018 renewed_caps(mdsc, session, 0); in handle_session()
4020 &session->s_features)) in handle_session()
4029 if (!session->s_seq && seq) in handle_session()
4030 session->s_seq = seq; in handle_session()
4034 __close_session(mdsc, session); in handle_session()
4038 if (session->s_renew_seq == seq) in handle_session()
4039 renewed_caps(mdsc, session, 1); in handle_session()
4043 if (session->s_state == CEPH_MDS_SESSION_RECONNECTING) in handle_session()
4044 pr_info("mds%d reconnect denied\n", session->s_mds); in handle_session()
4045 session->s_state = CEPH_MDS_SESSION_CLOSED; in handle_session()
4046 cleanup_session_requests(mdsc, session); in handle_session()
4047 remove_session_caps(session); in handle_session()
4054 session->s_mds); in handle_session()
4055 atomic_inc(&session->s_cap_gen); in handle_session()
4056 session->s_cap_ttl = jiffies - 1; in handle_session()
4057 send_renew_caps(mdsc, session); in handle_session()
4061 ceph_trim_caps(mdsc, session, le32_to_cpu(h->max_caps)); in handle_session()
4066 spin_lock(&session->s_cap_lock); in handle_session()
4067 if (session->s_num_cap_releases) in handle_session()
4068 ceph_flush_cap_releases(mdsc, session); in handle_session()
4069 spin_unlock(&session->s_cap_lock); in handle_session()
4071 send_flushmsg_ack(mdsc, session, seq); in handle_session()
4075 dout("force_session_readonly %p\n", session); in handle_session()
4076 spin_lock(&session->s_cap_lock); in handle_session()
4077 session->s_readonly = true; in handle_session()
4078 spin_unlock(&session->s_cap_lock); in handle_session()
4079 wake_up_session_caps(session, FORCE_RO); in handle_session()
4083 WARN_ON(session->s_state != CEPH_MDS_SESSION_OPENING); in handle_session()
4084 pr_info("mds%d rejected session\n", session->s_mds); in handle_session()
4085 session->s_state = CEPH_MDS_SESSION_REJECTED; in handle_session()
4086 cleanup_session_requests(mdsc, session); in handle_session()
4087 remove_session_caps(session); in handle_session()
4098 mutex_unlock(&session->s_mutex); in handle_session()
4101 __wake_requests(mdsc, &session->s_waiting); in handle_session()
4107 ceph_put_mds_session(session); in handle_session()
4144 struct ceph_mds_session *session) in replay_unsafe_requests() argument
4149 dout("replay_unsafe_requests mds%d\n", session->s_mds); in replay_unsafe_requests()
4152 list_for_each_entry_safe(req, nreq, &session->s_unsafe, r_unsafe_item) in replay_unsafe_requests()
4153 __send_request(session, req, true); in replay_unsafe_requests()
4169 if (req->r_session->s_mds != session->s_mds) in replay_unsafe_requests()
4174 __send_request(session, req, true); in replay_unsafe_requests()
4240 ceph_con_send(&recon_state->session->s_con, reply); in send_reconnect_partial()
4336 cap->cap_gen = atomic_read(&cap->session->s_cap_gen); in reconnect_caps_cb()
4547 struct ceph_mds_session *session) in send_mds_reconnect() argument
4550 int mds = session->s_mds; in send_mds_reconnect()
4553 .session = session, in send_mds_reconnect()
4567 xa_destroy(&session->s_delegated_inos); in send_mds_reconnect()
4569 mutex_lock(&session->s_mutex); in send_mds_reconnect()
4570 session->s_state = CEPH_MDS_SESSION_RECONNECTING; in send_mds_reconnect()
4571 session->s_seq = 0; in send_mds_reconnect()
4573 dout("session %p state %s\n", session, in send_mds_reconnect()
4574 ceph_session_state_name(session->s_state)); in send_mds_reconnect()
4576 atomic_inc(&session->s_cap_gen); in send_mds_reconnect()
4578 spin_lock(&session->s_cap_lock); in send_mds_reconnect()
4580 session->s_readonly = 0; in send_mds_reconnect()
4586 session->s_cap_reconnect = 1; in send_mds_reconnect()
4588 detach_cap_releases(session, &dispose); in send_mds_reconnect()
4589 spin_unlock(&session->s_cap_lock); in send_mds_reconnect()
4596 ceph_con_close(&session->s_con); in send_mds_reconnect()
4597 ceph_con_open(&session->s_con, in send_mds_reconnect()
4602 replay_unsafe_requests(mdsc, session); in send_mds_reconnect()
4604 ceph_early_kick_flushing_caps(mdsc, session); in send_mds_reconnect()
4613 if (test_bit(CEPHFS_FEATURE_MULTI_RECONNECT, &session->s_features)) { in send_mds_reconnect()
4616 } else if (session->s_con.peer_features & CEPH_FEATURE_MDSENC) { in send_mds_reconnect()
4622 err = ceph_iterate_session_caps(session, reconnect_caps_cb, &recon_state); in send_mds_reconnect()
4624 spin_lock(&session->s_cap_lock); in send_mds_reconnect()
4625 session->s_cap_reconnect = 0; in send_mds_reconnect()
4626 spin_unlock(&session->s_cap_lock); in send_mds_reconnect()
4689 ceph_con_send(&session->s_con, reply); in send_mds_reconnect()
4691 mutex_unlock(&session->s_mutex); in send_mds_reconnect()
4694 __wake_requests(mdsc, &session->s_waiting); in send_mds_reconnect()
4704 mutex_unlock(&session->s_mutex); in send_mds_reconnect()
4893 struct ceph_mds_session *session, in handle_lease() argument
4900 int mds = session->s_mds; in handle_lease()
4909 if (!ceph_inc_mds_stopping_blocker(mdsc, session)) in handle_lease()
4929 mutex_lock(&session->s_mutex); in handle_lease()
4952 if (di->lease_session == session) { in handle_lease()
4961 if (di->lease_session == session && in handle_lease()
4962 di->lease_gen == atomic_read(&session->s_cap_gen) && in handle_lease()
4986 ceph_con_send(&session->s_con, msg); in handle_lease()
4989 mutex_unlock(&session->s_mutex); in handle_lease()
5002 void ceph_mdsc_lease_send_msg(struct ceph_mds_session *session, in ceph_mdsc_lease_send_msg() argument
5012 dentry, ceph_lease_op_name(action), session->s_mds); in ceph_mdsc_lease_send_msg()
5031 ceph_con_send(&session->s_con, msg); in ceph_mdsc_lease_send_msg()
5439 struct ceph_mds_session *session; in ceph_mdsc_close_sessions() local
5448 session = __ceph_lookup_mds_session(mdsc, i); in ceph_mdsc_close_sessions()
5449 if (!session) in ceph_mdsc_close_sessions()
5452 mutex_lock(&session->s_mutex); in ceph_mdsc_close_sessions()
5453 if (__close_session(mdsc, session) <= 0) in ceph_mdsc_close_sessions()
5455 mutex_unlock(&session->s_mutex); in ceph_mdsc_close_sessions()
5456 ceph_put_mds_session(session); in ceph_mdsc_close_sessions()
5470 session = ceph_get_mds_session(mdsc->sessions[i]); in ceph_mdsc_close_sessions()
5471 __unregister_session(mdsc, session); in ceph_mdsc_close_sessions()
5473 mutex_lock(&session->s_mutex); in ceph_mdsc_close_sessions()
5474 remove_session_caps(session); in ceph_mdsc_close_sessions()
5475 mutex_unlock(&session->s_mutex); in ceph_mdsc_close_sessions()
5476 ceph_put_mds_session(session); in ceph_mdsc_close_sessions()
5494 struct ceph_mds_session *session; in ceph_mdsc_force_umount() local
5501 session = __ceph_lookup_mds_session(mdsc, mds); in ceph_mdsc_force_umount()
5502 if (!session) in ceph_mdsc_force_umount()
5505 if (session->s_state == CEPH_MDS_SESSION_REJECTED) in ceph_mdsc_force_umount()
5506 __unregister_session(mdsc, session); in ceph_mdsc_force_umount()
5507 __wake_requests(mdsc, &session->s_waiting); in ceph_mdsc_force_umount()
5510 mutex_lock(&session->s_mutex); in ceph_mdsc_force_umount()
5511 __close_session(mdsc, session); in ceph_mdsc_force_umount()
5512 if (session->s_state == CEPH_MDS_SESSION_CLOSING) { in ceph_mdsc_force_umount()
5513 cleanup_session_requests(mdsc, session); in ceph_mdsc_force_umount()
5514 remove_session_caps(session); in ceph_mdsc_force_umount()
5516 mutex_unlock(&session->s_mutex); in ceph_mdsc_force_umount()
5517 ceph_put_mds_session(session); in ceph_mdsc_force_umount()