mirror of
https://github.com/rd-stuffs/msm-4.14.git
synced 2025-02-20 11:45:48 +08:00
ceph: introduce helper to connect to mds export targets
There are a few cases where we need to open sessions with a given mds's potential export targets. Signed-off-by: Sage Weil <sage@newdream.net>
This commit is contained in:
parent
796d6955a5
commit
ed0552a1a2
@ -704,6 +704,43 @@ static int __open_session(struct ceph_mds_client *mdsc,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* open sessions for any export targets for the given mds
|
||||||
|
*
|
||||||
|
* called under mdsc->mutex
|
||||||
|
*/
|
||||||
|
static void __open_export_target_sessions(struct ceph_mds_client *mdsc,
|
||||||
|
struct ceph_mds_session *session)
|
||||||
|
{
|
||||||
|
struct ceph_mds_info *mi;
|
||||||
|
struct ceph_mds_session *ts;
|
||||||
|
int i, mds = session->s_mds;
|
||||||
|
int target;
|
||||||
|
|
||||||
|
if (mds >= mdsc->mdsmap->m_max_mds)
|
||||||
|
return;
|
||||||
|
mi = &mdsc->mdsmap->m_info[mds];
|
||||||
|
dout("open_export_target_sessions for mds%d (%d targets)\n",
|
||||||
|
session->s_mds, mi->num_export_targets);
|
||||||
|
|
||||||
|
for (i = 0; i < mi->num_export_targets; i++) {
|
||||||
|
target = mi->export_targets[i];
|
||||||
|
ts = __ceph_lookup_mds_session(mdsc, target);
|
||||||
|
if (!ts) {
|
||||||
|
ts = register_session(mdsc, target);
|
||||||
|
if (IS_ERR(ts))
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (session->s_state == CEPH_MDS_SESSION_NEW ||
|
||||||
|
session->s_state == CEPH_MDS_SESSION_CLOSING)
|
||||||
|
__open_session(mdsc, session);
|
||||||
|
else
|
||||||
|
dout(" mds%d target mds%d %p is %s\n", session->s_mds,
|
||||||
|
i, ts, session_state_name(ts->s_state));
|
||||||
|
ceph_put_mds_session(ts);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* session caps
|
* session caps
|
||||||
*/
|
*/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user