Lines Matching refs:session
47 struct ceph_mds_session *session,
607 struct ceph_mds_session *session, u64 cap_id, in ceph_add_cap() argument
615 int mds = session->s_mds; in ceph_add_cap()
622 session->s_mds, cap_id, ceph_cap_string(issued), seq); in ceph_add_cap()
631 spin_lock(&session->s_gen_ttl_lock); in ceph_add_cap()
632 gen = session->s_cap_gen; in ceph_add_cap()
633 spin_unlock(&session->s_gen_ttl_lock); in ceph_add_cap()
650 cap->session = session; in ceph_add_cap()
651 spin_lock(&session->s_cap_lock); in ceph_add_cap()
652 list_add_tail(&cap->session_caps, &session->s_caps); in ceph_add_cap()
653 session->s_nr_caps++; in ceph_add_cap()
654 spin_unlock(&session->s_cap_lock); in ceph_add_cap()
656 spin_lock(&session->s_cap_lock); in ceph_add_cap()
657 list_move_tail(&cap->session_caps, &session->s_caps); in ceph_add_cap()
658 spin_unlock(&session->s_cap_lock); in ceph_add_cap()
770 spin_lock(&cap->session->s_gen_ttl_lock); in __cap_is_valid()
771 gen = cap->session->s_cap_gen; in __cap_is_valid()
772 ttl = cap->session->s_cap_ttl; in __cap_is_valid()
773 spin_unlock(&cap->session->s_gen_ttl_lock); in __cap_is_valid()
846 struct ceph_mds_session *s = cap->session; in __touch_cap()
1053 struct ceph_mds_session *session = cap->session; in __ceph_remove_cap() local
1074 spin_lock(&session->s_cap_lock); in __ceph_remove_cap()
1075 if (session->s_cap_iterator == cap) { in __ceph_remove_cap()
1078 cap, cap->session); in __ceph_remove_cap()
1081 session->s_nr_caps--; in __ceph_remove_cap()
1082 cap->session = NULL; in __ceph_remove_cap()
1093 (!session->s_cap_reconnect || cap->cap_gen == session->s_cap_gen)) { in __ceph_remove_cap()
1096 __ceph_queue_cap_release(session, cap); in __ceph_remove_cap()
1104 spin_unlock(&session->s_cap_lock); in __ceph_remove_cap()
1121 struct ceph_mds_session *session; member
1148 struct ceph_osd_client *osdc = &arg->session->s_mdsc->fsc->client->osdc; in send_cap_msg()
1240 ceph_con_send(&arg->session->s_con, msg); in send_cap_msg()
1295 inode, cap, cap->session, in __send_cap()
1300 arg.session = cap->session; in __send_cap()
1407 struct ceph_mds_session *session, in __send_flush_snap() argument
1413 arg.session = session; in __send_flush_snap()
1461 struct ceph_mds_session *session) in __ceph_flush_snaps() argument
1466 struct ceph_mds_client *mdsc = session->s_mdsc; in __ceph_flush_snaps()
1471 dout("__flush_snaps %p session %p\n", inode, session); in __ceph_flush_snaps()
1498 &session->s_cap_flushing); in __ceph_flush_snaps()
1517 if (!(cap && cap->session == session)) { in __ceph_flush_snaps()
1519 "stop\n", inode, cap, session->s_mds); in __ceph_flush_snaps()
1542 ret = __send_flush_snap(inode, session, capsnap, cap->mseq, in __ceph_flush_snaps()
1560 struct ceph_mds_session *session = NULL; in ceph_flush_snaps() local
1566 session = *psession; in ceph_flush_snaps()
1578 mds = ci->i_auth_cap->session->s_mds; in ceph_flush_snaps()
1579 if (session && session->s_mds != mds) { in ceph_flush_snaps()
1580 dout(" oops, wrong session %p mutex\n", session); in ceph_flush_snaps()
1581 mutex_unlock(&session->s_mutex); in ceph_flush_snaps()
1582 ceph_put_mds_session(session); in ceph_flush_snaps()
1583 session = NULL; in ceph_flush_snaps()
1585 if (!session) { in ceph_flush_snaps()
1588 session = __ceph_lookup_mds_session(mdsc, mds); in ceph_flush_snaps()
1590 if (session) { in ceph_flush_snaps()
1591 dout(" inverting session/ino locks on %p\n", session); in ceph_flush_snaps()
1592 mutex_lock(&session->s_mutex); in ceph_flush_snaps()
1599 __kick_flushing_caps(mdsc, session, ci, 0); in ceph_flush_snaps()
1601 __ceph_flush_snaps(ci, session); in ceph_flush_snaps()
1606 *psession = session; in ceph_flush_snaps()
1607 } else if (session) { in ceph_flush_snaps()
1608 mutex_unlock(&session->s_mutex); in ceph_flush_snaps()
1609 ceph_put_mds_session(session); in ceph_flush_snaps()
1737 struct ceph_mds_session *session, bool wake, in __mark_caps_flushing() argument
1770 list_add_tail(&ci->i_flushing_item, &session->s_cap_flushing); in __mark_caps_flushing()
1834 struct ceph_mds_session *session) in ceph_check_caps() argument
2022 if (session && session != cap->session) { in ceph_check_caps()
2023 dout("oops, wrong session %p mutex\n", session); in ceph_check_caps()
2024 mutex_unlock(&session->s_mutex); in ceph_check_caps()
2025 session = NULL; in ceph_check_caps()
2027 if (!session) { in ceph_check_caps()
2028 session = cap->session; in ceph_check_caps()
2029 if (mutex_trylock(&session->s_mutex) == 0) { in ceph_check_caps()
2031 session); in ceph_check_caps()
2032 session = ceph_get_mds_session(session); in ceph_check_caps()
2038 if (session) { in ceph_check_caps()
2039 mutex_lock(&session->s_mutex); in ceph_check_caps()
2040 ceph_put_mds_session(session); in ceph_check_caps()
2060 __kick_flushing_caps(mdsc, session, ci, 0); in ceph_check_caps()
2062 __ceph_flush_snaps(ci, session); in ceph_check_caps()
2082 flush_tid = __mark_caps_flushing(inode, session, false, in ceph_check_caps()
2111 if (session) in ceph_check_caps()
2112 mutex_unlock(&session->s_mutex); in ceph_check_caps()
2124 struct ceph_mds_session *session = NULL; in try_flush_caps() local
2135 if (session != cap->session) { in try_flush_caps()
2137 if (session) in try_flush_caps()
2138 mutex_unlock(&session->s_mutex); in try_flush_caps()
2139 session = cap->session; in try_flush_caps()
2140 mutex_lock(&session->s_mutex); in try_flush_caps()
2143 if (cap->session->s_state < CEPH_MDS_SESSION_OPEN) { in try_flush_caps()
2151 __kick_flushing_caps(mdsc, session, ci, 0); in try_flush_caps()
2153 __ceph_flush_snaps(ci, session); in try_flush_caps()
2158 flush_tid = __mark_caps_flushing(inode, session, true, in try_flush_caps()
2186 if (session) in try_flush_caps()
2187 mutex_unlock(&session->s_mutex); in try_flush_caps()
2329 struct ceph_mds_session *session, in __kick_flushing_caps() argument
2356 if (!(cap && cap->session == session)) { in __kick_flushing_caps()
2358 inode, cap, session->s_mds); in __kick_flushing_caps()
2394 ret = __send_flush_snap(inode, session, capsnap, cap->mseq, in __kick_flushing_caps()
2412 struct ceph_mds_session *session) in ceph_early_kick_flushing_caps() argument
2418 dout("early_kick_flushing_caps mds%d\n", session->s_mds); in ceph_early_kick_flushing_caps()
2424 list_for_each_entry(ci, &session->s_cap_flushing, i_flushing_item) { in ceph_early_kick_flushing_caps()
2427 if (!(cap && cap->session == session)) { in ceph_early_kick_flushing_caps()
2429 &ci->vfs_inode, cap, session->s_mds); in ceph_early_kick_flushing_caps()
2449 __kick_flushing_caps(mdsc, session, ci, in ceph_early_kick_flushing_caps()
2460 struct ceph_mds_session *session) in ceph_kick_flushing_caps() argument
2466 dout("kick_flushing_caps mds%d\n", session->s_mds); in ceph_kick_flushing_caps()
2472 list_for_each_entry(ci, &session->s_cap_flushing, i_flushing_item) { in ceph_kick_flushing_caps()
2475 if (!(cap && cap->session == session)) { in ceph_kick_flushing_caps()
2477 &ci->vfs_inode, cap, session->s_mds); in ceph_kick_flushing_caps()
2482 __kick_flushing_caps(mdsc, session, ci, in ceph_kick_flushing_caps()
2490 struct ceph_mds_session *session, in kick_flushing_inode_caps() argument
2505 &cap->session->s_cap_flushing); in kick_flushing_inode_caps()
2509 __kick_flushing_caps(mdsc, session, ci, oldest_flush_tid); in kick_flushing_inode_caps()
2672 struct ceph_mds_session *s = ci->i_auth_cap->session; in try_get_cap_refs()
3131 struct ceph_mds_session *session, in handle_cap_grant() argument
3137 __releases(session->s_mdsc->snap_rwsem) in handle_cap_grant()
3146 bool was_stale = cap->cap_gen < session->s_cap_gen; in handle_cap_grant()
3155 inode, cap, session->s_mds, seq, ceph_cap_string(newcaps)); in handle_cap_grant()
3198 cap->cap_gen = session->s_cap_gen; in handle_cap_grant()
3380 kick_flushing_inode_caps(session->s_mdsc, session, inode); in handle_cap_grant()
3381 up_read(&session->s_mdsc->snap_rwsem); in handle_cap_grant()
3409 session); in handle_cap_grant()
3411 ceph_check_caps(ci, CHECK_CAPS_NODELAY, session); in handle_cap_grant()
3413 mutex_unlock(&session->s_mutex); in handle_cap_grant()
3422 struct ceph_mds_session *session, in handle_cap_flush_ack() argument
3455 inode, session->s_mds, seq, ceph_cap_string(dirty), in handle_cap_flush_ack()
3474 if (!list_empty(&session->s_cap_flushing)) { in handle_cap_flush_ack()
3476 session->s_mds, in handle_cap_flush_ack()
3477 &list_first_entry(&session->s_cap_flushing, in handle_cap_flush_ack()
3527 struct ceph_mds_session *session) in handle_cap_flushsnap_ack() argument
3538 inode, ci, session->s_mds, follows); in handle_cap_flushsnap_ack()
3593 struct ceph_mds_session *session) in handle_cap_trunc() argument
3597 int mds = session->s_mds; in handle_cap_trunc()
3629 struct ceph_mds_session *session) in handle_cap_export() argument
3639 int mds = session->s_mds; in handle_cap_export()
3699 &tcap->session->s_cap_flushing); in handle_cap_export()
3716 &tcap->session->s_cap_flushing); in handle_cap_export()
3725 mutex_unlock(&session->s_mutex); in handle_cap_export()
3731 mutex_lock(&session->s_mutex); in handle_cap_export()
3736 mutex_lock_nested(&session->s_mutex, in handle_cap_export()
3744 mutex_lock(&session->s_mutex); in handle_cap_export()
3750 mutex_unlock(&session->s_mutex); in handle_cap_export()
3767 struct ceph_mds_session *session, in handle_cap_import() argument
3773 int mds = session->s_mds; in handle_cap_import()
3815 ceph_add_cap(inode, session, cap_id, -1, caps, wanted, seq, mseq, in handle_cap_import()
3849 void ceph_handle_caps(struct ceph_mds_session *session, in ceph_handle_caps() argument
3852 struct ceph_mds_client *mdsc = session->s_mdsc; in ceph_handle_caps()
3868 dout("handle_caps from mds%d\n", session->s_mds); in ceph_handle_caps()
3969 mutex_lock(&session->s_mutex); in ceph_handle_caps()
3970 session->s_seq++; in ceph_handle_caps()
3971 dout(" mds%d seq %lld cap seq %u\n", session->s_mds, session->s_seq, in ceph_handle_caps()
3985 spin_lock(&session->s_cap_lock); in ceph_handle_caps()
3986 __ceph_queue_cap_release(session, cap); in ceph_handle_caps()
3987 spin_unlock(&session->s_cap_lock); in ceph_handle_caps()
3996 h, session); in ceph_handle_caps()
4000 handle_cap_export(inode, h, peer, session); in ceph_handle_caps()
4014 handle_cap_import(mdsc, inode, h, peer, session, in ceph_handle_caps()
4016 handle_cap_grant(inode, session, cap, in ceph_handle_caps()
4025 cap = __get_cap_for_mds(ceph_inode(inode), session->s_mds); in ceph_handle_caps()
4029 session->s_mds); in ceph_handle_caps()
4040 handle_cap_grant(inode, session, cap, in ceph_handle_caps()
4046 h, session, cap); in ceph_handle_caps()
4050 handle_cap_trunc(inode, h, session); in ceph_handle_caps()
4060 mutex_unlock(&session->s_mutex); in ceph_handle_caps()
4073 ceph_flush_cap_releases(mdsc, session); in ceph_handle_caps()