MetaSession *Client::_open_mds_session(mds_rank_t mds)
{
ldout(cct, 10) << __func__ << " mds." << mds << dendl;
- entity_inst_t inst = mdsmap->get_inst(mds);
+ auto addrs = mdsmap->get_addrs(mds);
auto em = mds_sessions.emplace(std::piecewise_construct,
std::forward_as_tuple(mds),
- std::forward_as_tuple(mds, messenger->get_connection(inst), inst));
+ std::forward_as_tuple(mds, messenger->connect_to_mds(addrs), addrs));
assert(em.second); /* not already present */
MetaSession *session = &em.first->second;
// Maybe skip sending a request to open if this MDS daemon
// has previously sent us a REJECT.
if (rejected_by_mds.count(mds)) {
- if (rejected_by_mds[mds] == session->inst) {
+ if (rejected_by_mds[mds] == session->addrs) {
ldout(cct, 4) << __func__ << " mds." << mds << " skipping "
"because we were rejected" << dendl;
return session;
break;
case CEPH_SESSION_REJECT:
- rejected_by_mds[session->mds_num] = session->inst;
+ rejected_by_mds[session->mds_num] = session->addrs;
_closed_mds_session(session);
break;
int newstate = mdsmap->get_state(mds);
if (!mdsmap->is_up(mds)) {
session->con->mark_down();
- } else if (mdsmap->get_inst(mds) != session->inst) {
+ } else if (mdsmap->get_addrs(mds) != session->addrs) {
session->con->mark_down();
- session->inst = mdsmap->get_inst(mds);
+ session->addrs = mdsmap->get_addrs(mds);
// When new MDS starts to take over, notify kernel to trim unused entries
// in its dcache/icache. Hopefully, the kernel will release some unused
// inodes before the new MDS enters reconnect state.
session->mds_state = newstate;
if (newstate == MDSMap::STATE_RECONNECT) {
- session->con = messenger->get_connection(session->inst);
+ session->con = messenger->connect_to_mds(session->addrs);
send_reconnect(session);
} else if (newstate >= MDSMap::STATE_ACTIVE) {
if (oldstate < MDSMap::STATE_ACTIVE) {
const auto info = fsmap->get_info_gid(target_gid);
// Open a connection to the target MDS
- entity_inst_t inst = info.get_inst();
- ConnectionRef conn = messenger->get_connection(inst);
+ ConnectionRef conn = messenger->connect_to_mds(info.get_addrs());
// Generate MDSCommandOp state
auto &op = command_table.start_command();
mds_rank_t mds = MDS_RANK_NONE;
MetaSession *s = NULL;
for (auto &p : mds_sessions) {
- if (mdsmap->get_addr(p.first) == con->get_peer_addr()) {
+ if (mdsmap->get_addrs(p.first) == con->get_peer_addrs()) {
mds = p.first;
s = &p.second;
}
uint64_t cap_gen;
utime_t cap_ttl, last_cap_renew_request;
uint64_t cap_renew_seq;
- entity_inst_t inst;
+ entity_addrvec_t addrs;
enum {
STATE_NEW, // Unused
boost::intrusive_ptr<MClientCapRelease> release;
- MetaSession(mds_rank_t mds_num, ConnectionRef con, entity_inst_t inst)
+ MetaSession(mds_rank_t mds_num, ConnectionRef con,
+ const entity_addrvec_t& addrs)
: mds_num(mds_num), con(con),
- seq(0), cap_gen(0), cap_renew_seq(0), inst(inst),
+ seq(0), cap_gen(0), cap_renew_seq(0), addrs(addrs),
state(STATE_OPENING), mds_state(MDSMap::STATE_NULL), readonly(false)
{}