Lines Matching refs:session
46 struct ceph_mds_session *session,
616 struct ceph_mds_session *session, u64 cap_id, in ceph_add_cap() argument
624 int mds = session->s_mds; in ceph_add_cap()
628 session->s_mds, cap_id, ceph_cap_string(issued), seq); in ceph_add_cap()
652 cap->session = session; in ceph_add_cap()
653 spin_lock(&session->s_cap_lock); in ceph_add_cap()
654 list_add_tail(&cap->session_caps, &session->s_caps); in ceph_add_cap()
655 session->s_nr_caps++; in ceph_add_cap()
656 spin_unlock(&session->s_cap_lock); in ceph_add_cap()
749 cap->cap_gen = session->s_cap_gen; in ceph_add_cap()
765 spin_lock(&cap->session->s_gen_ttl_lock); in __cap_is_valid()
766 gen = cap->session->s_cap_gen; in __cap_is_valid()
767 ttl = cap->session->s_cap_ttl; in __cap_is_valid()
768 spin_unlock(&cap->session->s_gen_ttl_lock); in __cap_is_valid()
841 struct ceph_mds_session *s = cap->session; in __touch_cap()
1046 struct ceph_mds_session *session = cap->session; in __ceph_remove_cap() local
1055 spin_lock(&session->s_cap_lock); in __ceph_remove_cap()
1056 if (session->s_cap_iterator == cap) { in __ceph_remove_cap()
1059 cap, cap->session); in __ceph_remove_cap()
1062 session->s_nr_caps--; in __ceph_remove_cap()
1063 cap->session = NULL; in __ceph_remove_cap()
1074 (!session->s_cap_reconnect || cap->cap_gen == session->s_cap_gen)) { in __ceph_remove_cap()
1078 &session->s_cap_releases); in __ceph_remove_cap()
1079 session->s_num_cap_releases++; in __ceph_remove_cap()
1087 spin_unlock(&session->s_cap_lock); in __ceph_remove_cap()
1109 struct ceph_mds_session *session; member
1136 struct ceph_osd_client *osdc = &arg->session->s_mdsc->fsc->client->osdc; in send_cap_msg()
1233 ceph_con_send(&arg->session->s_con, msg); in send_cap_msg()
1289 inode, cap, cap->session, in __send_cap()
1294 arg.session = cap->session; in __send_cap()
1390 struct ceph_mds_session *session, in __send_flush_snap() argument
1396 arg.session = session; in __send_flush_snap()
1442 struct ceph_mds_session *session) in __ceph_flush_snaps() argument
1447 struct ceph_mds_client *mdsc = session->s_mdsc; in __ceph_flush_snaps()
1452 dout("__flush_snaps %p session %p\n", inode, session); in __ceph_flush_snaps()
1479 &session->s_cap_flushing); in __ceph_flush_snaps()
1498 if (!(cap && cap->session == session)) { in __ceph_flush_snaps()
1500 "stop\n", inode, cap, session->s_mds); in __ceph_flush_snaps()
1523 ret = __send_flush_snap(inode, session, capsnap, cap->mseq, in __ceph_flush_snaps()
1541 struct ceph_mds_session *session = NULL; in ceph_flush_snaps() local
1546 session = *psession; in ceph_flush_snaps()
1558 mds = ci->i_auth_cap->session->s_mds; in ceph_flush_snaps()
1559 if (session && session->s_mds != mds) { in ceph_flush_snaps()
1560 dout(" oops, wrong session %p mutex\n", session); in ceph_flush_snaps()
1561 mutex_unlock(&session->s_mutex); in ceph_flush_snaps()
1562 ceph_put_mds_session(session); in ceph_flush_snaps()
1563 session = NULL; in ceph_flush_snaps()
1565 if (!session) { in ceph_flush_snaps()
1568 session = __ceph_lookup_mds_session(mdsc, mds); in ceph_flush_snaps()
1570 if (session) { in ceph_flush_snaps()
1571 dout(" inverting session/ino locks on %p\n", session); in ceph_flush_snaps()
1572 mutex_lock(&session->s_mutex); in ceph_flush_snaps()
1579 __kick_flushing_caps(mdsc, session, ci, 0); in ceph_flush_snaps()
1583 __ceph_flush_snaps(ci, session); in ceph_flush_snaps()
1588 *psession = session; in ceph_flush_snaps()
1589 } else if (session) { in ceph_flush_snaps()
1590 mutex_unlock(&session->s_mutex); in ceph_flush_snaps()
1591 ceph_put_mds_session(session); in ceph_flush_snaps()
1714 struct ceph_mds_session *session, bool wake, in __mark_caps_flushing() argument
1747 list_add_tail(&ci->i_flushing_item, &session->s_cap_flushing); in __mark_caps_flushing()
1809 struct ceph_mds_session *session) in ceph_check_caps() argument
1996 if (session && session != cap->session) { in ceph_check_caps()
1997 dout("oops, wrong session %p mutex\n", session); in ceph_check_caps()
1998 mutex_unlock(&session->s_mutex); in ceph_check_caps()
1999 session = NULL; in ceph_check_caps()
2001 if (!session) { in ceph_check_caps()
2002 session = cap->session; in ceph_check_caps()
2003 if (mutex_trylock(&session->s_mutex) == 0) { in ceph_check_caps()
2005 session); in ceph_check_caps()
2011 mutex_lock(&session->s_mutex); in ceph_check_caps()
2022 __kick_flushing_caps(mdsc, session, ci, 0); in ceph_check_caps()
2026 __ceph_flush_snaps(ci, session); in ceph_check_caps()
2045 flushing = __mark_caps_flushing(inode, session, false, in ceph_check_caps()
2075 if (session) in ceph_check_caps()
2076 mutex_unlock(&session->s_mutex); in ceph_check_caps()
2088 struct ceph_mds_session *session = NULL; in try_flush_caps() local
2105 if (!session || session != cap->session) { in try_flush_caps()
2107 if (session) in try_flush_caps()
2108 mutex_unlock(&session->s_mutex); in try_flush_caps()
2109 session = cap->session; in try_flush_caps()
2110 mutex_lock(&session->s_mutex); in try_flush_caps()
2113 if (cap->session->s_state < CEPH_MDS_SESSION_OPEN) { in try_flush_caps()
2118 flushing = __mark_caps_flushing(inode, session, true, in try_flush_caps()
2143 if (session) in try_flush_caps()
2144 mutex_unlock(&session->s_mutex); in try_flush_caps()
2285 struct ceph_mds_session *session, in __kick_flushing_caps() argument
2302 if (!(cap && cap->session == session)) { in __kick_flushing_caps()
2304 inode, cap, session->s_mds); in __kick_flushing_caps()
2337 ret = __send_flush_snap(inode, session, capsnap, cap->mseq, in __kick_flushing_caps()
2355 struct ceph_mds_session *session) in ceph_early_kick_flushing_caps() argument
2361 dout("early_kick_flushing_caps mds%d\n", session->s_mds); in ceph_early_kick_flushing_caps()
2367 list_for_each_entry(ci, &session->s_cap_flushing, i_flushing_item) { in ceph_early_kick_flushing_caps()
2370 if (!(cap && cap->session == session)) { in ceph_early_kick_flushing_caps()
2372 &ci->vfs_inode, cap, session->s_mds); in ceph_early_kick_flushing_caps()
2387 __kick_flushing_caps(mdsc, session, ci, in ceph_early_kick_flushing_caps()
2398 struct ceph_mds_session *session) in ceph_kick_flushing_caps() argument
2404 dout("kick_flushing_caps mds%d\n", session->s_mds); in ceph_kick_flushing_caps()
2410 list_for_each_entry(ci, &session->s_cap_flushing, i_flushing_item) { in ceph_kick_flushing_caps()
2413 if (!(cap && cap->session == session)) { in ceph_kick_flushing_caps()
2415 &ci->vfs_inode, cap, session->s_mds); in ceph_kick_flushing_caps()
2421 __kick_flushing_caps(mdsc, session, ci, in ceph_kick_flushing_caps()
2429 struct ceph_mds_session *session, in kick_flushing_inode_caps() argument
2444 &cap->session->s_cap_flushing); in kick_flushing_inode_caps()
2449 __kick_flushing_caps(mdsc, session, ci, oldest_flush_tid); in kick_flushing_inode_caps()
2599 struct ceph_mds_session *s = ci->i_auth_cap->session; in try_get_cap_refs()
3034 struct ceph_mds_session *session, in handle_cap_grant() argument
3040 __releases(session->s_mdsc->snap_rwsem) in handle_cap_grant()
3057 inode, cap, session->s_mds, seq, ceph_cap_string(newcaps)); in handle_cap_grant()
3097 cap->cap_gen = session->s_cap_gen; in handle_cap_grant()
3259 kick_flushing_inode_caps(session->s_mdsc, session, inode); in handle_cap_grant()
3260 up_read(&session->s_mdsc->snap_rwsem); in handle_cap_grant()
3288 session); in handle_cap_grant()
3290 ceph_check_caps(ci, CHECK_CAPS_NODELAY, session); in handle_cap_grant()
3292 mutex_unlock(&session->s_mutex); in handle_cap_grant()
3301 struct ceph_mds_session *session, in handle_cap_flush_ack() argument
3334 inode, session->s_mds, seq, ceph_cap_string(dirty), in handle_cap_flush_ack()
3353 if (!list_empty(&session->s_cap_flushing)) { in handle_cap_flush_ack()
3355 session->s_mds, in handle_cap_flush_ack()
3356 &list_first_entry(&session->s_cap_flushing, in handle_cap_flush_ack()
3406 struct ceph_mds_session *session) in handle_cap_flushsnap_ack() argument
3417 inode, ci, session->s_mds, follows); in handle_cap_flushsnap_ack()
3472 struct ceph_mds_session *session) in handle_cap_trunc() argument
3476 int mds = session->s_mds; in handle_cap_trunc()
3508 struct ceph_mds_session *session) in handle_cap_export() argument
3518 int mds = session->s_mds; in handle_cap_export()
3579 &tcap->session->s_cap_flushing); in handle_cap_export()
3596 &tcap->session->s_cap_flushing); in handle_cap_export()
3605 mutex_unlock(&session->s_mutex); in handle_cap_export()
3611 mutex_lock(&session->s_mutex); in handle_cap_export()
3616 mutex_lock_nested(&session->s_mutex, in handle_cap_export()
3629 mutex_unlock(&session->s_mutex); in handle_cap_export()
3646 struct ceph_mds_session *session, in handle_cap_import() argument
3652 int mds = session->s_mds; in handle_cap_import()
3694 ceph_add_cap(inode, session, cap_id, -1, caps, wanted, seq, mseq, in handle_cap_import()
3728 void ceph_handle_caps(struct ceph_mds_session *session, in ceph_handle_caps() argument
3731 struct ceph_mds_client *mdsc = session->s_mdsc; in ceph_handle_caps()
3747 dout("handle_caps from mds%d\n", session->s_mds); in ceph_handle_caps()
3846 mutex_lock(&session->s_mutex); in ceph_handle_caps()
3847 session->s_seq++; in ceph_handle_caps()
3848 dout(" mds%d seq %lld cap seq %u\n", session->s_mds, session->s_seq, in ceph_handle_caps()
3862 spin_lock(&session->s_cap_lock); in ceph_handle_caps()
3864 &session->s_cap_releases); in ceph_handle_caps()
3865 session->s_num_cap_releases++; in ceph_handle_caps()
3866 spin_unlock(&session->s_cap_lock); in ceph_handle_caps()
3875 h, session); in ceph_handle_caps()
3879 handle_cap_export(inode, h, peer, session); in ceph_handle_caps()
3893 handle_cap_import(mdsc, inode, h, peer, session, in ceph_handle_caps()
3895 handle_cap_grant(inode, session, cap, in ceph_handle_caps()
3904 cap = __get_cap_for_mds(ceph_inode(inode), session->s_mds); in ceph_handle_caps()
3908 session->s_mds); in ceph_handle_caps()
3919 handle_cap_grant(inode, session, cap, in ceph_handle_caps()
3925 h, session, cap); in ceph_handle_caps()
3929 handle_cap_trunc(inode, h, session); in ceph_handle_caps()
3946 ceph_send_cap_releases(mdsc, session); in ceph_handle_caps()
3949 mutex_unlock(&session->s_mutex); in ceph_handle_caps()