From: Sage Weil Date: Fri, 8 Mar 2013 21:47:03 +0000 (-0800) Subject: client: use Connection* in MetaSession instead of the inst/addr X-Git-Tag: v0.60~81^2~8 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=f8272c0e603ac7890e29afdd3c950546b244ede0;p=ceph.git client: use Connection* in MetaSession instead of the inst/addr This moves us to a cleaner API, and makes the session lifetime explicit and clean. Yay! Signed-off-by: Sage Weil --- diff --git a/src/client/Client.cc b/src/client/Client.cc index 1c96417785ac..ce899400b9b8 100644 --- a/src/client/Client.cc +++ b/src/client/Client.cc @@ -1476,10 +1476,11 @@ MetaSession *Client::_open_mds_session(int mds) session->mds_num = mds; session->seq = 0; session->inst = mdsmap->get_inst(mds); + session->con = messenger->get_connection(session->inst); session->state = MetaSession::STATE_OPENING; mds_sessions[mds] = session; messenger->send_message(new MClientSession(CEPH_SESSION_REQUEST_OPEN), - session->inst); + session->con); return session; } @@ -1494,6 +1495,7 @@ void Client::_close_mds_session(MetaSession *s) void Client::_closed_mds_session(MetaSession *s) { s->state = MetaSession::STATE_CLOSED; + messenger->mark_down(s->con); mount_cond.Signal(); remove_session_caps(s); kick_requests(s, true); @@ -1582,7 +1584,7 @@ void Client::send_request(MetaRequest *request, MetaSession *session) session->requests.push_back(&request->item); ldout(cct, 10) << "send_request " << *r << " to mds." << mds << dendl; - messenger->send_message(r, session->inst); + messenger->send_message(r, session->con); } MClientRequest* Client::build_client_request(MetaRequest *request) @@ -1841,6 +1843,8 @@ void Client::handle_mds_map(MMDSMap* m) mds_sessions.count(p->first)) { MetaSession *session = mds_sessions[p->first]; session->inst = mdsmap->get_inst(p->first); + session->con->put(); + session->con = messenger->get_connection(session->inst); send_reconnect(session); } @@ -1924,7 +1928,7 @@ void Client::send_reconnect(MetaSession *session) //make sure unsafe requests get saved resend_unsafe_requests(session); - messenger->send_message(m, session->inst); + messenger->send_message(m, session->con); } @@ -2294,7 +2298,7 @@ void Client::send_cap(Inode *in, MetaSession *session, Cap *cap, in->requested_max_size = in->wanted_max_size; ldout(cct, 15) << "auth cap, setting max_size = " << in->requested_max_size << dendl; } - messenger->send_message(m, session->inst); + messenger->send_message(m, session->con); } @@ -2527,7 +2531,7 @@ void Client::flush_snaps(Inode *in, bool all_again, CapSnap *again) capsnap->atime.encode_timeval(&m->head.atime); m->head.time_warp_seq = capsnap->time_warp_seq; - messenger->send_message(m, session->inst); + messenger->send_message(m, session->con); } } @@ -3814,7 +3818,7 @@ void Client::renew_caps(MetaSession *session) session->last_cap_renew_request = ceph_clock_now(cct); uint64_t seq = ++session->cap_renew_seq; messenger->send_message(new MClientSession(CEPH_SESSION_REQUEST_RENEWCAPS, seq), - session->inst); + session->con); } diff --git a/src/client/MetaSession.cc b/src/client/MetaSession.cc index 87c14bf11f64..435b67bd56c5 100644 --- a/src/client/MetaSession.cc +++ b/src/client/MetaSession.cc @@ -37,4 +37,6 @@ MetaSession::~MetaSession() { if (release) release->put(); + if (con) + con->put(); }