Lines Matching refs:session

57 	struct ceph_mds_session *session;  member
1421 mds = cap->session->s_mds; in __choose_mds()
1664 struct ceph_mds_session *session) in __open_session() argument
1668 int mds = session->s_mds; in __open_session()
1677 session->s_state = CEPH_MDS_SESSION_OPENING; in __open_session()
1678 session->s_renew_requested = jiffies; in __open_session()
1682 session->s_seq); in __open_session()
1685 ceph_con_send(&session->s_con, msg); in __open_session()
1697 struct ceph_mds_session *session; in __open_export_target_session() local
1700 session = __ceph_lookup_mds_session(mdsc, target); in __open_export_target_session()
1701 if (!session) { in __open_export_target_session()
1702 session = register_session(mdsc, target); in __open_export_target_session()
1703 if (IS_ERR(session)) in __open_export_target_session()
1704 return session; in __open_export_target_session()
1706 if (session->s_state == CEPH_MDS_SESSION_NEW || in __open_export_target_session()
1707 session->s_state == CEPH_MDS_SESSION_CLOSING) { in __open_export_target_session()
1708 ret = __open_session(mdsc, session); in __open_export_target_session()
1713 return session; in __open_export_target_session()
1719 struct ceph_mds_session *session; in ceph_mdsc_open_export_target_session() local
1725 session = __open_export_target_session(mdsc, target); in ceph_mdsc_open_export_target_session()
1728 return session; in ceph_mdsc_open_export_target_session()
1732 struct ceph_mds_session *session) in __open_export_target_sessions() argument
1736 int i, mds = session->s_mds; in __open_export_target_sessions()
1743 doutc(cl, "for mds%d (%d targets)\n", session->s_mds, in __open_export_target_sessions()
1756 static void detach_cap_releases(struct ceph_mds_session *session, in detach_cap_releases() argument
1759 struct ceph_client *cl = session->s_mdsc->fsc->client; in detach_cap_releases()
1761 lockdep_assert_held(&session->s_cap_lock); in detach_cap_releases()
1763 list_splice_init(&session->s_cap_releases, target); in detach_cap_releases()
1764 session->s_num_cap_releases = 0; in detach_cap_releases()
1765 doutc(cl, "mds%d\n", session->s_mds); in detach_cap_releases()
1781 struct ceph_mds_session *session) in cleanup_session_requests() argument
1787 doutc(cl, "mds%d\n", session->s_mds); in cleanup_session_requests()
1789 while (!list_empty(&session->s_unsafe)) { in cleanup_session_requests()
1790 req = list_first_entry(&session->s_unsafe, in cleanup_session_requests()
1806 req->r_session->s_mds == session->s_mds) in cleanup_session_requests()
1818 int ceph_iterate_session_caps(struct ceph_mds_session *session, in ceph_iterate_session_caps() argument
1822 struct ceph_client *cl = session->s_mdsc->fsc->client; in ceph_iterate_session_caps()
1829 doutc(cl, "%p mds%d\n", session, session->s_mds); in ceph_iterate_session_caps()
1830 spin_lock(&session->s_cap_lock); in ceph_iterate_session_caps()
1831 p = session->s_caps.next; in ceph_iterate_session_caps()
1832 while (p != &session->s_caps) { in ceph_iterate_session_caps()
1841 session->s_cap_iterator = cap; in ceph_iterate_session_caps()
1843 spin_unlock(&session->s_cap_lock); in ceph_iterate_session_caps()
1850 ceph_put_cap(session->s_mdsc, old_cap); in ceph_iterate_session_caps()
1857 spin_lock(&session->s_cap_lock); in ceph_iterate_session_caps()
1861 BUG_ON(cap->session != session); in ceph_iterate_session_caps()
1862 cap->session = NULL; in ceph_iterate_session_caps()
1864 session->s_nr_caps--; in ceph_iterate_session_caps()
1865 atomic64_dec(&session->s_mdsc->metric.total_caps); in ceph_iterate_session_caps()
1867 __ceph_queue_cap_release(session, cap); in ceph_iterate_session_caps()
1876 session->s_cap_iterator = NULL; in ceph_iterate_session_caps()
1877 spin_unlock(&session->s_cap_lock); in ceph_iterate_session_caps()
1881 ceph_put_cap(session->s_mdsc, old_cap); in ceph_iterate_session_caps()
1916 static void remove_session_caps(struct ceph_mds_session *session) in remove_session_caps() argument
1918 struct ceph_fs_client *fsc = session->s_mdsc->fsc; in remove_session_caps()
1922 doutc(fsc->client, "on %p\n", session); in remove_session_caps()
1923 ceph_iterate_session_caps(session, remove_session_caps_cb, fsc); in remove_session_caps()
1927 spin_lock(&session->s_cap_lock); in remove_session_caps()
1928 if (session->s_nr_caps > 0) { in remove_session_caps()
1939 while (!list_empty(&session->s_caps)) { in remove_session_caps()
1940 cap = list_entry(session->s_caps.next, in remove_session_caps()
1946 spin_unlock(&session->s_cap_lock); in remove_session_caps()
1951 spin_lock(&session->s_cap_lock); in remove_session_caps()
1956 detach_cap_releases(session, &dispose); in remove_session_caps()
1958 BUG_ON(session->s_nr_caps > 0); in remove_session_caps()
1959 BUG_ON(!list_empty(&session->s_cap_flushing)); in remove_session_caps()
1960 spin_unlock(&session->s_cap_lock); in remove_session_caps()
1961 dispose_cap_releases(session->s_mdsc, &dispose); in remove_session_caps()
1992 if (cap && cap->cap_gen < atomic_read(&cap->session->s_cap_gen)) in wake_up_session_cb()
2001 static void wake_up_session_caps(struct ceph_mds_session *session, int ev) in wake_up_session_caps() argument
2003 struct ceph_client *cl = session->s_mdsc->fsc->client; in wake_up_session_caps()
2005 doutc(cl, "session %p mds%d\n", session, session->s_mds); in wake_up_session_caps()
2006 ceph_iterate_session_caps(session, wake_up_session_cb, in wake_up_session_caps()
2017 struct ceph_mds_session *session) in send_renew_caps() argument
2023 if (time_after_eq(jiffies, session->s_cap_ttl) && in send_renew_caps()
2024 time_after_eq(session->s_cap_ttl, session->s_renew_requested)) in send_renew_caps()
2025 pr_info_client(cl, "mds%d caps stale\n", session->s_mds); in send_renew_caps()
2026 session->s_renew_requested = jiffies; in send_renew_caps()
2030 state = ceph_mdsmap_get_state(mdsc->mdsmap, session->s_mds); in send_renew_caps()
2032 doutc(cl, "ignoring mds%d (%s)\n", session->s_mds, in send_renew_caps()
2037 doutc(cl, "to mds%d (%s)\n", session->s_mds, in send_renew_caps()
2040 ++session->s_renew_seq); in send_renew_caps()
2043 ceph_con_send(&session->s_con, msg); in send_renew_caps()
2048 struct ceph_mds_session *session, u64 seq) in send_flushmsg_ack() argument
2053 doutc(cl, "to mds%d (%s)s seq %lld\n", session->s_mds, in send_flushmsg_ack()
2054 ceph_session_state_name(session->s_state), seq); in send_flushmsg_ack()
2058 ceph_con_send(&session->s_con, msg); in send_flushmsg_ack()
2069 struct ceph_mds_session *session, int is_renew) in renewed_caps() argument
2075 spin_lock(&session->s_cap_lock); in renewed_caps()
2076 was_stale = is_renew && time_after_eq(jiffies, session->s_cap_ttl); in renewed_caps()
2078 session->s_cap_ttl = session->s_renew_requested + in renewed_caps()
2082 if (time_before(jiffies, session->s_cap_ttl)) { in renewed_caps()
2084 session->s_mds); in renewed_caps()
2088 session->s_mds); in renewed_caps()
2091 doutc(cl, "mds%d ttl now %lu, was %s, now %s\n", session->s_mds, in renewed_caps()
2092 session->s_cap_ttl, was_stale ? "stale" : "fresh", in renewed_caps()
2093 time_before(jiffies, session->s_cap_ttl) ? "stale" : "fresh"); in renewed_caps()
2094 spin_unlock(&session->s_cap_lock); in renewed_caps()
2097 wake_up_session_caps(session, RENEWCAPS); in renewed_caps()
2103 static int request_close_session(struct ceph_mds_session *session) in request_close_session() argument
2105 struct ceph_client *cl = session->s_mdsc->fsc->client; in request_close_session()
2108 doutc(cl, "mds%d state %s seq %lld\n", session->s_mds, in request_close_session()
2109 ceph_session_state_name(session->s_state), session->s_seq); in request_close_session()
2111 session->s_seq); in request_close_session()
2114 ceph_con_send(&session->s_con, msg); in request_close_session()
2122 struct ceph_mds_session *session) in __close_session() argument
2124 if (session->s_state >= CEPH_MDS_SESSION_CLOSING) in __close_session()
2126 session->s_state = CEPH_MDS_SESSION_CLOSING; in __close_session()
2127 return request_close_session(session); in __close_session()
2246 struct ceph_mds_session *session, in ceph_trim_caps() argument
2250 int trim_caps = session->s_nr_caps - max_caps; in ceph_trim_caps()
2252 doutc(cl, "mds%d start: %d / %d, trim %d\n", session->s_mds, in ceph_trim_caps()
2253 session->s_nr_caps, max_caps, trim_caps); in ceph_trim_caps()
2257 ceph_iterate_session_caps(session, trim_caps_cb, &remaining); in ceph_trim_caps()
2259 session->s_mds, session->s_nr_caps, max_caps, in ceph_trim_caps()
2263 ceph_flush_session_cap_releases(mdsc, session); in ceph_trim_caps()
2310 struct ceph_mds_session *session) in ceph_send_cap_releases() argument
2326 spin_lock(&session->s_cap_lock); in ceph_send_cap_releases()
2328 list_splice_init(&session->s_cap_releases, &tmp_list); in ceph_send_cap_releases()
2329 num_cap_releases = session->s_num_cap_releases; in ceph_send_cap_releases()
2330 session->s_num_cap_releases = 0; in ceph_send_cap_releases()
2331 spin_unlock(&session->s_cap_lock); in ceph_send_cap_releases()
2371 doutc(cl, "mds%d %p\n", session->s_mds, msg); in ceph_send_cap_releases()
2372 ceph_con_send(&session->s_con, msg); in ceph_send_cap_releases()
2379 spin_lock(&session->s_cap_lock); in ceph_send_cap_releases()
2380 if (!list_empty(&session->s_cap_releases)) in ceph_send_cap_releases()
2382 spin_unlock(&session->s_cap_lock); in ceph_send_cap_releases()
2391 doutc(cl, "mds%d %p\n", session->s_mds, msg); in ceph_send_cap_releases()
2392 ceph_con_send(&session->s_con, msg); in ceph_send_cap_releases()
2397 session->s_mds); in ceph_send_cap_releases()
2398 spin_lock(&session->s_cap_lock); in ceph_send_cap_releases()
2399 list_splice(&tmp_list, &session->s_cap_releases); in ceph_send_cap_releases()
2400 session->s_num_cap_releases += num_cap_releases; in ceph_send_cap_releases()
2401 spin_unlock(&session->s_cap_lock); in ceph_send_cap_releases()
2406 struct ceph_mds_session *session = in ceph_cap_release_work() local
2409 mutex_lock(&session->s_mutex); in ceph_cap_release_work()
2410 if (session->s_state == CEPH_MDS_SESSION_OPEN || in ceph_cap_release_work()
2411 session->s_state == CEPH_MDS_SESSION_HUNG) in ceph_cap_release_work()
2412 ceph_send_cap_releases(session->s_mdsc, session); in ceph_cap_release_work()
2413 mutex_unlock(&session->s_mutex); in ceph_cap_release_work()
2414 ceph_put_mds_session(session); in ceph_cap_release_work()
2418 struct ceph_mds_session *session) in ceph_flush_session_cap_releases() argument
2424 ceph_get_mds_session(session); in ceph_flush_session_cap_releases()
2426 &session->s_cap_release_work)) { in ceph_flush_session_cap_releases()
2429 ceph_put_mds_session(session); in ceph_flush_session_cap_releases()
2437 void __ceph_queue_cap_release(struct ceph_mds_session *session, in __ceph_queue_cap_release() argument
2440 list_add_tail(&cap->session_caps, &session->s_cap_releases); in __ceph_queue_cap_release()
2441 session->s_num_cap_releases++; in __ceph_queue_cap_release()
2443 if (!(session->s_num_cap_releases % CEPH_CAPS_PER_RELEASE)) in __ceph_queue_cap_release()
2444 ceph_flush_session_cap_releases(session->s_mdsc, session); in __ceph_queue_cap_release()
2966 static inline u16 mds_supported_head_version(struct ceph_mds_session *session) in mds_supported_head_version() argument
2968 if (!test_bit(CEPHFS_FEATURE_32BITS_RETRY_FWD, &session->s_features)) in mds_supported_head_version()
2971 if (!test_bit(CEPHFS_FEATURE_HAS_OWNER_UIDGID, &session->s_features)) in mds_supported_head_version()
2992 static struct ceph_msg *create_request_message(struct ceph_mds_session *session, in create_request_message() argument
2996 int mds = session->s_mds; in create_request_message()
2997 struct ceph_mds_client *mdsc = session->s_mdsc; in create_request_message()
3008 bool legacy = !(session->s_con.peer_features & CEPH_FEATURE_FS_BTIME); in create_request_message()
3009 u16 request_head_version = mds_supported_head_version(session); in create_request_message()
3127 session->s_con.peer_features); in create_request_message()
3130 !test_bit(CEPHFS_FEATURE_HAS_OWNER_UIDGID, &session->s_features)) { in create_request_message()
3302 static int __prepare_send_request(struct ceph_mds_session *session, in __prepare_send_request() argument
3306 int mds = session->s_mds; in __prepare_send_request()
3307 struct ceph_mds_client *mdsc = session->s_mdsc; in __prepare_send_request()
3314 &session->s_features); in __prepare_send_request()
3357 session->s_con.peer_features); in __prepare_send_request()
3387 msg = create_request_message(session, req, drop_cap_releases); in __prepare_send_request()
3395 session->s_con.peer_features); in __prepare_send_request()
3419 static int __send_request(struct ceph_mds_session *session, in __send_request() argument
3425 trace_ceph_mdsc_send_request(session, req); in __send_request()
3427 err = __prepare_send_request(session, req, drop_cap_releases); in __send_request()
3430 ceph_con_send(&session->s_con, req->r_request); in __send_request()
3443 struct ceph_mds_session *session = NULL; in __do_request() local
3478 trace_ceph_mdsc_suspend_request(mdsc, session, req, in __do_request()
3501 trace_ceph_mdsc_suspend_request(mdsc, session, req, in __do_request()
3508 session = __ceph_lookup_mds_session(mdsc, mds); in __do_request()
3509 if (!session) { in __do_request()
3510 session = register_session(mdsc, mds); in __do_request()
3511 if (IS_ERR(session)) { in __do_request()
3512 err = PTR_ERR(session); in __do_request()
3516 req->r_session = ceph_get_mds_session(session); in __do_request()
3518 doutc(cl, "mds%d session %p state %s\n", mds, session, in __do_request()
3519 ceph_session_state_name(session->s_state)); in __do_request()
3525 !test_bit(req->r_feature_needed, &session->s_features)) { in __do_request()
3530 if (session->s_state != CEPH_MDS_SESSION_OPEN && in __do_request()
3531 session->s_state != CEPH_MDS_SESSION_HUNG) { in __do_request()
3547 if (session->s_state == CEPH_MDS_SESSION_REJECTED) { in __do_request()
3549 trace_ceph_mdsc_suspend_request(mdsc, session, req, in __do_request()
3557 if (session->s_state == CEPH_MDS_SESSION_NEW || in __do_request()
3558 session->s_state == CEPH_MDS_SESSION_CLOSING) { in __do_request()
3559 err = __open_session(mdsc, session); in __do_request()
3566 trace_ceph_mdsc_suspend_request(mdsc, session, req, in __do_request()
3568 list_add(&req->r_wait, &session->s_waiting); in __do_request()
3615 cap->session->s_mds, session->s_mds); in __do_request()
3618 spin_lock(&cap->session->s_cap_lock); in __do_request()
3619 cap->session->s_nr_caps--; in __do_request()
3621 spin_unlock(&cap->session->s_cap_lock); in __do_request()
3625 cap->session = session; in __do_request()
3626 spin_lock(&session->s_cap_lock); in __do_request()
3627 session->s_nr_caps++; in __do_request()
3628 list_add_tail(&cap->session_caps, &session->s_caps); in __do_request()
3629 spin_unlock(&session->s_cap_lock); in __do_request()
3631 change_auth_cap_ses(ci, session); in __do_request()
3636 err = __send_request(session, req, false); in __do_request()
3639 ceph_put_mds_session(session); in __do_request()
3851 static void handle_reply(struct ceph_mds_session *session, struct ceph_msg *msg) in handle_reply() argument
3853 struct ceph_mds_client *mdsc = session->s_mdsc; in handle_reply()
3861 int mds = session->s_mds; in handle_reply()
3882 if (req->r_session != session) { in handle_reply()
3884 tid, session->s_mds, in handle_reply()
3934 if (test_bit(CEPHFS_FEATURE_REPLY_ENCODING, &session->s_features)) in handle_reply()
3935 err = parse_reply_info(session, msg, req, (u64)-1); in handle_reply()
3937 err = parse_reply_info(session, msg, req, in handle_reply()
3938 session->s_con.peer_features); in handle_reply()
3965 mutex_lock(&session->s_mutex); in handle_reply()
3971 mutex_lock(&session->s_mutex); in handle_reply()
4042 mutex_unlock(&session->s_mutex); in handle_reply()
4064 struct ceph_mds_session *session, in handle_forward() argument
4163 static void handle_session(struct ceph_mds_session *session, in handle_session() argument
4166 struct ceph_mds_client *mdsc = session->s_mdsc; in handle_session()
4168 int mds = session->s_mds; in handle_session()
4219 session->s_mds); in handle_session()
4320 ceph_get_mds_session(session); in handle_session()
4321 __unregister_session(mdsc, session); in handle_session()
4324 session->s_ttl = jiffies + HZ*mdsc->mdsmap->m_session_autoclose; in handle_session()
4327 mutex_lock(&session->s_mutex); in handle_session()
4330 ceph_session_op_name(op), session, in handle_session()
4331 ceph_session_state_name(session->s_state), seq); in handle_session()
4333 if (session->s_state == CEPH_MDS_SESSION_HUNG) { in handle_session()
4334 session->s_state = CEPH_MDS_SESSION_OPEN; in handle_session()
4335 pr_info_client(cl, "mds%d came back\n", session->s_mds); in handle_session()
4340 if (session->s_state == CEPH_MDS_SESSION_RECONNECTING) in handle_session()
4342 session->s_mds); in handle_session()
4344 session->s_features = features; in handle_session()
4345 if (session->s_state == CEPH_MDS_SESSION_OPEN) { in handle_session()
4347 session->s_mds); in handle_session()
4349 session->s_state = CEPH_MDS_SESSION_OPEN; in handle_session()
4350 renewed_caps(mdsc, session, 0); in handle_session()
4352 &session->s_features)) in handle_session()
4361 if (!session->s_seq && seq) in handle_session()
4362 session->s_seq = seq; in handle_session()
4366 __close_session(mdsc, session); in handle_session()
4370 if (session->s_renew_seq == seq) in handle_session()
4371 renewed_caps(mdsc, session, 1); in handle_session()
4375 if (session->s_state == CEPH_MDS_SESSION_RECONNECTING) in handle_session()
4377 session->s_mds); in handle_session()
4378 session->s_state = CEPH_MDS_SESSION_CLOSED; in handle_session()
4379 cleanup_session_requests(mdsc, session); in handle_session()
4380 remove_session_caps(session); in handle_session()
4387 session->s_mds); in handle_session()
4388 atomic_inc(&session->s_cap_gen); in handle_session()
4389 session->s_cap_ttl = jiffies - 1; in handle_session()
4390 send_renew_caps(mdsc, session); in handle_session()
4394 ceph_trim_caps(mdsc, session, le32_to_cpu(h->max_caps)); in handle_session()
4399 spin_lock(&session->s_cap_lock); in handle_session()
4400 if (session->s_num_cap_releases) in handle_session()
4401 ceph_flush_session_cap_releases(mdsc, session); in handle_session()
4402 spin_unlock(&session->s_cap_lock); in handle_session()
4404 send_flushmsg_ack(mdsc, session, seq); in handle_session()
4408 doutc(cl, "force_session_readonly %p\n", session); in handle_session()
4409 spin_lock(&session->s_cap_lock); in handle_session()
4410 session->s_readonly = true; in handle_session()
4411 spin_unlock(&session->s_cap_lock); in handle_session()
4412 wake_up_session_caps(session, FORCE_RO); in handle_session()
4416 WARN_ON(session->s_state != CEPH_MDS_SESSION_OPENING); in handle_session()
4418 session->s_mds); in handle_session()
4419 session->s_state = CEPH_MDS_SESSION_REJECTED; in handle_session()
4420 cleanup_session_requests(mdsc, session); in handle_session()
4421 remove_session_caps(session); in handle_session()
4432 mutex_unlock(&session->s_mutex); in handle_session()
4435 __wake_requests(mdsc, &session->s_waiting); in handle_session()
4441 ceph_put_mds_session(session); in handle_session()
4486 struct ceph_mds_session *session) in replay_unsafe_requests() argument
4491 doutc(mdsc->fsc->client, "mds%d\n", session->s_mds); in replay_unsafe_requests()
4494 list_for_each_entry_safe(req, nreq, &session->s_unsafe, r_unsafe_item) in replay_unsafe_requests()
4495 __send_request(session, req, true); in replay_unsafe_requests()
4511 if (req->r_session->s_mds != session->s_mds) in replay_unsafe_requests()
4516 __send_request(session, req, true); in replay_unsafe_requests()
4582 ceph_con_send(&recon_state->session->s_con, reply); in send_reconnect_partial()
4676 cap->cap_gen = atomic_read(&cap->session->s_cap_gen); in reconnect_caps_cb()
4892 struct ceph_mds_session *session) in send_mds_reconnect() argument
4896 int mds = session->s_mds; in send_mds_reconnect()
4899 .session = session, in send_mds_reconnect()
4913 xa_destroy(&session->s_delegated_inos); in send_mds_reconnect()
4915 mutex_lock(&session->s_mutex); in send_mds_reconnect()
4916 session->s_state = CEPH_MDS_SESSION_RECONNECTING; in send_mds_reconnect()
4917 session->s_seq = 0; in send_mds_reconnect()
4919 doutc(cl, "session %p state %s\n", session, in send_mds_reconnect()
4920 ceph_session_state_name(session->s_state)); in send_mds_reconnect()
4922 atomic_inc(&session->s_cap_gen); in send_mds_reconnect()
4924 spin_lock(&session->s_cap_lock); in send_mds_reconnect()
4926 session->s_readonly = 0; in send_mds_reconnect()
4932 session->s_cap_reconnect = 1; in send_mds_reconnect()
4934 detach_cap_releases(session, &dispose); in send_mds_reconnect()
4935 spin_unlock(&session->s_cap_lock); in send_mds_reconnect()
4942 ceph_con_close(&session->s_con); in send_mds_reconnect()
4943 ceph_con_open(&session->s_con, in send_mds_reconnect()
4948 replay_unsafe_requests(mdsc, session); in send_mds_reconnect()
4950 ceph_early_kick_flushing_caps(mdsc, session); in send_mds_reconnect()
4959 if (test_bit(CEPHFS_FEATURE_MULTI_RECONNECT, &session->s_features)) { in send_mds_reconnect()
4962 } else if (session->s_con.peer_features & CEPH_FEATURE_MDSENC) { in send_mds_reconnect()
4968 err = ceph_iterate_session_caps(session, reconnect_caps_cb, &recon_state); in send_mds_reconnect()
4970 spin_lock(&session->s_cap_lock); in send_mds_reconnect()
4971 session->s_cap_reconnect = 0; in send_mds_reconnect()
4972 spin_unlock(&session->s_cap_lock); in send_mds_reconnect()
5035 ceph_con_send(&session->s_con, reply); in send_mds_reconnect()
5037 mutex_unlock(&session->s_mutex); in send_mds_reconnect()
5040 __wake_requests(mdsc, &session->s_waiting); in send_mds_reconnect()
5050 mutex_unlock(&session->s_mutex); in send_mds_reconnect()
5241 struct ceph_mds_session *session, in handle_lease() argument
5249 int mds = session->s_mds; in handle_lease()
5258 if (!ceph_inc_mds_stopping_blocker(mdsc, session)) in handle_lease()
5277 mutex_lock(&session->s_mutex); in handle_lease()
5300 if (di->lease_session == session) { in handle_lease()
5309 if (di->lease_session == session && in handle_lease()
5310 di->lease_gen == atomic_read(&session->s_cap_gen) && in handle_lease()
5334 ceph_con_send(&session->s_con, msg); in handle_lease()
5337 mutex_unlock(&session->s_mutex); in handle_lease()
5350 void ceph_mdsc_lease_send_msg(struct ceph_mds_session *session, in ceph_mdsc_lease_send_msg() argument
5354 struct ceph_client *cl = session->s_mdsc->fsc->client; in ceph_mdsc_lease_send_msg()
5361 session->s_mds); in ceph_mdsc_lease_send_msg()
5380 ceph_con_send(&session->s_con, msg); in ceph_mdsc_lease_send_msg()
5981 struct ceph_mds_session *session; in ceph_mdsc_close_sessions() local
5990 session = __ceph_lookup_mds_session(mdsc, i); in ceph_mdsc_close_sessions()
5991 if (!session) in ceph_mdsc_close_sessions()
5994 mutex_lock(&session->s_mutex); in ceph_mdsc_close_sessions()
5995 if (__close_session(mdsc, session) <= 0) in ceph_mdsc_close_sessions()
5997 mutex_unlock(&session->s_mutex); in ceph_mdsc_close_sessions()
5998 ceph_put_mds_session(session); in ceph_mdsc_close_sessions()
6012 session = ceph_get_mds_session(mdsc->sessions[i]); in ceph_mdsc_close_sessions()
6013 __unregister_session(mdsc, session); in ceph_mdsc_close_sessions()
6015 mutex_lock(&session->s_mutex); in ceph_mdsc_close_sessions()
6016 remove_session_caps(session); in ceph_mdsc_close_sessions()
6017 mutex_unlock(&session->s_mutex); in ceph_mdsc_close_sessions()
6018 ceph_put_mds_session(session); in ceph_mdsc_close_sessions()
6037 struct ceph_mds_session *session; in ceph_mdsc_force_umount() local
6044 session = __ceph_lookup_mds_session(mdsc, mds); in ceph_mdsc_force_umount()
6045 if (!session) in ceph_mdsc_force_umount()
6048 if (session->s_state == CEPH_MDS_SESSION_REJECTED) in ceph_mdsc_force_umount()
6049 __unregister_session(mdsc, session); in ceph_mdsc_force_umount()
6050 __wake_requests(mdsc, &session->s_waiting); in ceph_mdsc_force_umount()
6053 mutex_lock(&session->s_mutex); in ceph_mdsc_force_umount()
6054 __close_session(mdsc, session); in ceph_mdsc_force_umount()
6055 if (session->s_state == CEPH_MDS_SESSION_CLOSING) { in ceph_mdsc_force_umount()
6056 cleanup_session_requests(mdsc, session); in ceph_mdsc_force_umount()
6057 remove_session_caps(session); in ceph_mdsc_force_umount()
6059 mutex_unlock(&session->s_mutex); in ceph_mdsc_force_umount()
6060 ceph_put_mds_session(session); in ceph_mdsc_force_umount()