Lines Matching refs:session
512 struct ceph_mds_session *session, u64 cap_id, in ceph_add_cap() argument
520 int mds = session->s_mds; in ceph_add_cap()
524 session->s_mds, cap_id, ceph_cap_string(issued), seq); in ceph_add_cap()
548 cap->session = session; in ceph_add_cap()
549 spin_lock(&session->s_cap_lock); in ceph_add_cap()
550 list_add_tail(&cap->session_caps, &session->s_caps); in ceph_add_cap()
551 session->s_nr_caps++; in ceph_add_cap()
552 spin_unlock(&session->s_cap_lock); in ceph_add_cap()
631 cap->cap_gen = session->s_cap_gen; in ceph_add_cap()
647 spin_lock(&cap->session->s_gen_ttl_lock); in __cap_is_valid()
648 gen = cap->session->s_cap_gen; in __cap_is_valid()
649 ttl = cap->session->s_cap_ttl; in __cap_is_valid()
650 spin_unlock(&cap->session->s_gen_ttl_lock); in __cap_is_valid()
723 struct ceph_mds_session *s = cap->session; in __touch_cap()
919 struct ceph_mds_session *session = cap->session; in __ceph_remove_cap() local
928 spin_lock(&session->s_cap_lock); in __ceph_remove_cap()
934 (!session->s_cap_reconnect || in __ceph_remove_cap()
935 cap->cap_gen == session->s_cap_gen)) in __ceph_remove_cap()
936 __queue_cap_release(session, ci->i_vino.ino, cap->cap_id, in __ceph_remove_cap()
939 if (session->s_cap_iterator == cap) { in __ceph_remove_cap()
942 cap, cap->session); in __ceph_remove_cap()
945 session->s_nr_caps--; in __ceph_remove_cap()
946 cap->session = NULL; in __ceph_remove_cap()
951 spin_unlock(&session->s_cap_lock); in __ceph_remove_cap()
977 static int send_cap_msg(struct ceph_mds_session *session, in send_cap_msg() argument
1052 ceph_con_send(&session->s_con, msg); in send_cap_msg()
1056 void __queue_cap_release(struct ceph_mds_session *session, in __queue_cap_release() argument
1064 BUG_ON(!session->s_num_cap_releases); in __queue_cap_release()
1065 msg = list_first_entry(&session->s_cap_releases, in __queue_cap_release()
1069 ino, session->s_mds, msg, session->s_num_cap_releases); in __queue_cap_release()
1080 session->s_num_cap_releases--; in __queue_cap_release()
1085 list_move_tail(&msg->list_head, &session->s_cap_releases_done); in __queue_cap_release()
1144 struct ceph_mds_session *session; in __send_cap() local
1159 inode, cap, cap->session, in __send_cap()
1164 session = cap->session; in __send_cap()
1239 ret = send_cap_msg(session, ceph_vino(inode).ino, cap_id, in __send_cap()
1278 struct ceph_mds_session *session = NULL; /* if session != NULL, we hold in __ceph_flush_snaps() local
1285 session = *psession; in __ceph_flush_snaps()
1318 mds = ci->i_auth_cap->session->s_mds; in __ceph_flush_snaps()
1321 if (session && session->s_mds != mds) { in __ceph_flush_snaps()
1322 dout("oops, wrong session %p mutex\n", session); in __ceph_flush_snaps()
1323 mutex_unlock(&session->s_mutex); in __ceph_flush_snaps()
1324 ceph_put_mds_session(session); in __ceph_flush_snaps()
1325 session = NULL; in __ceph_flush_snaps()
1327 if (!session) { in __ceph_flush_snaps()
1330 session = __ceph_lookup_mds_session(mdsc, mds); in __ceph_flush_snaps()
1332 if (session) { in __ceph_flush_snaps()
1334 session); in __ceph_flush_snaps()
1335 mutex_lock(&session->s_mutex); in __ceph_flush_snaps()
1351 &session->s_cap_snaps_flushing); in __ceph_flush_snaps()
1356 send_cap_msg(session, ceph_vino(inode).ino, 0, in __ceph_flush_snaps()
1380 *psession = session; in __ceph_flush_snaps()
1381 else if (session) { in __ceph_flush_snaps()
1382 mutex_unlock(&session->s_mutex); in __ceph_flush_snaps()
1383 ceph_put_mds_session(session); in __ceph_flush_snaps()
1448 struct ceph_mds_session *session) in __mark_caps_flushing() argument
1471 list_add_tail(&ci->i_flushing_item, &session->s_cap_flushing); in __mark_caps_flushing()
1476 list_move_tail(&ci->i_flushing_item, &session->s_cap_flushing); in __mark_caps_flushing()
1521 struct ceph_mds_session *session) in ceph_check_caps() argument
1549 __ceph_flush_snaps(ci, &session, 0); in ceph_check_caps()
1713 if (session && session != cap->session) { in ceph_check_caps()
1714 dout("oops, wrong session %p mutex\n", session); in ceph_check_caps()
1715 mutex_unlock(&session->s_mutex); in ceph_check_caps()
1716 session = NULL; in ceph_check_caps()
1718 if (!session) { in ceph_check_caps()
1719 session = cap->session; in ceph_check_caps()
1720 if (mutex_trylock(&session->s_mutex) == 0) { in ceph_check_caps()
1722 session); in ceph_check_caps()
1728 mutex_lock(&session->s_mutex); in ceph_check_caps()
1746 flushing = __mark_caps_flushing(inode, session); in ceph_check_caps()
1775 if (session) in ceph_check_caps()
1776 mutex_unlock(&session->s_mutex); in ceph_check_caps()
1789 struct ceph_mds_session *session = NULL; in try_flush_caps() local
1803 if (!session || session != cap->session) { in try_flush_caps()
1805 if (session) in try_flush_caps()
1806 mutex_unlock(&session->s_mutex); in try_flush_caps()
1807 session = cap->session; in try_flush_caps()
1808 mutex_lock(&session->s_mutex); in try_flush_caps()
1811 if (cap->session->s_state < CEPH_MDS_SESSION_OPEN) in try_flush_caps()
1814 flushing = __mark_caps_flushing(inode, session); in try_flush_caps()
1829 if (session) in try_flush_caps()
1830 mutex_unlock(&session->s_mutex); in try_flush_caps()
1972 struct ceph_mds_session *session) in kick_flushing_capsnaps() argument
1976 dout("kick_flushing_capsnaps mds%d\n", session->s_mds); in kick_flushing_capsnaps()
1977 list_for_each_entry(capsnap, &session->s_cap_snaps_flushing, in kick_flushing_capsnaps()
1985 if (cap && cap->session == session) { in kick_flushing_capsnaps()
1988 __ceph_flush_snaps(ci, &session, 1); in kick_flushing_capsnaps()
1991 cap, session->s_mds); in kick_flushing_capsnaps()
1998 struct ceph_mds_session *session) in ceph_kick_flushing_caps() argument
2002 kick_flushing_capsnaps(mdsc, session); in ceph_kick_flushing_caps()
2004 dout("kick_flushing_caps mds%d\n", session->s_mds); in ceph_kick_flushing_caps()
2005 list_for_each_entry(ci, &session->s_cap_flushing, i_flushing_item) { in ceph_kick_flushing_caps()
2012 if (cap && cap->session == session) { in ceph_kick_flushing_caps()
2027 cap, session->s_mds); in ceph_kick_flushing_caps()
2034 struct ceph_mds_session *session, in kick_flushing_inode_caps() argument
2046 __ceph_flush_snaps(ci, &session, 1); in kick_flushing_inode_caps()
2051 &cap->session->s_cap_flushing); in kick_flushing_inode_caps()
2174 struct ceph_mds_session *s = ci->i_auth_cap->session; in try_get_cap_refs()
2481 struct ceph_mds_session *session, in handle_cap_grant() argument
2487 int mds = session->s_mds; in handle_cap_grant()
2545 cap->cap_gen = session->s_cap_gen; in handle_cap_grant()
2685 kick_flushing_inode_caps(mdsc, session, inode); in handle_cap_grant()
2716 session); in handle_cap_grant()
2718 ceph_check_caps(ci, CHECK_CAPS_NODELAY, session); in handle_cap_grant()
2720 mutex_unlock(&session->s_mutex); in handle_cap_grant()
2729 struct ceph_mds_session *session, in handle_cap_flush_ack() argument
2748 inode, session->s_mds, seq, ceph_cap_string(dirty), in handle_cap_flush_ack()
2760 if (!list_empty(&session->s_cap_flushing)) in handle_cap_flush_ack()
2762 session->s_mds, in handle_cap_flush_ack()
2763 &list_entry(session->s_cap_flushing.next, in handle_cap_flush_ack()
2800 struct ceph_mds_session *session) in handle_cap_flushsnap_ack() argument
2808 inode, ci, session->s_mds, follows); in handle_cap_flushsnap_ack()
2845 struct ceph_mds_session *session) in handle_cap_trunc() argument
2849 int mds = session->s_mds; in handle_cap_trunc()
2883 struct ceph_mds_session *session) in handle_cap_export() argument
2893 int mds = session->s_mds; in handle_cap_export()
2943 &tcap->session->s_cap_flushing); in handle_cap_export()
2960 mutex_unlock(&session->s_mutex); in handle_cap_export()
2966 mutex_lock(&session->s_mutex); in handle_cap_export()
2971 mutex_lock_nested(&session->s_mutex, in handle_cap_export()
2985 mutex_unlock(&session->s_mutex); in handle_cap_export()
3002 struct ceph_mds_session *session, in handle_cap_import() argument
3008 int mds = session->s_mds; in handle_cap_import()
3050 ceph_add_cap(inode, session, cap_id, -1, caps, wanted, seq, mseq, in handle_cap_import()
3084 void ceph_handle_caps(struct ceph_mds_session *session, in ceph_handle_caps() argument
3087 struct ceph_mds_client *mdsc = session->s_mdsc; in ceph_handle_caps()
3095 int mds = session->s_mds; in ceph_handle_caps()
3165 mutex_lock(&session->s_mutex); in ceph_handle_caps()
3166 session->s_seq++; in ceph_handle_caps()
3167 dout(" mds%d seq %lld cap seq %u\n", session->s_mds, session->s_seq, in ceph_handle_caps()
3171 ceph_add_cap_releases(mdsc, session); in ceph_handle_caps()
3177 spin_lock(&session->s_cap_lock); in ceph_handle_caps()
3178 __queue_cap_release(session, vino.ino, cap_id, in ceph_handle_caps()
3180 spin_unlock(&session->s_cap_lock); in ceph_handle_caps()
3188 handle_cap_flushsnap_ack(inode, tid, h, session); in ceph_handle_caps()
3192 handle_cap_export(inode, h, peer, session); in ceph_handle_caps()
3206 handle_cap_import(mdsc, inode, h, peer, session, in ceph_handle_caps()
3210 msg->middle, session, cap, issued); in ceph_handle_caps()
3234 msg->middle, session, cap, issued); in ceph_handle_caps()
3238 handle_cap_flush_ack(inode, tid, h, session, cap); in ceph_handle_caps()
3242 handle_cap_trunc(inode, h, session); in ceph_handle_caps()
3259 ceph_add_cap_releases(mdsc, session); in ceph_handle_caps()
3260 ceph_send_cap_releases(mdsc, session); in ceph_handle_caps()
3263 mutex_unlock(&session->s_mutex); in ceph_handle_caps()