if (!session->is_capable("mds", MON_CAP_X)) {
dout(0) << "preprocess_beacon got MMDSBeacon from entity with insufficient privileges "
<< session->caps << dendl;
- goto out;
+ goto ignore;
}
if (m->get_fsid() != mon->monmap->fsid) {
dout(0) << "preprocess_beacon on fsid " << m->get_fsid() << " != " << mon->monmap->fsid << dendl;
- goto out;
+ goto ignore;
}
dout(12) << "preprocess_beacon " << *m
// make sure the address has a port
if (m->get_orig_source_addr().get_port() == 0) {
dout(1) << " ignoring boot message without a port" << dendl;
- goto out;
+ goto ignore;
}
// check compat
if (!m->get_compat().writeable(mdsmap.compat)) {
dout(1) << " mds " << m->get_source_inst() << " can't write to mdsmap " << mdsmap.compat << dendl;
- goto out;
+ goto ignore;
}
// fw to leader?
if (pending_mdsmap.test_flag(CEPH_MDSMAP_DOWN)) {
dout(7) << " mdsmap DOWN flag set, ignoring mds " << m->get_source_inst() << " beacon" << dendl;
- goto out;
+ goto ignore;
}
// booted, but not in map?
// old seq?
if (info.state_seq > seq) {
dout(7) << "mds_beacon " << *m << " has old seq, ignoring" << dendl;
- goto out;
+ goto ignore;
}
if (mdsmap.get_epoch() != m->get_last_epoch_seen()) {
dout(10) << "mds_beacon " << *m
<< " ignoring requested state, because mds hasn't seen latest map" << dendl;
- goto ignore;
+ goto reply;
}
if (info.laggy()) {
}
if (state == MDSMap::STATE_BOOT) {
// ignore, already booted.
- goto out;
+ goto ignore;
}
// is there a state change here?
if (info.state != state) {
info.state == MDSMap::STATE_ONESHOT_REPLAY) && state > 0) {
dout(10) << "mds_beacon mds can't activate itself (" << ceph_mds_state_name(info.state)
<< " -> " << ceph_mds_state_name(state) << ")" << dendl;
- goto ignore;
+ goto reply;
}
if (info.state == MDSMap::STATE_STANDBY &&
dout(10) << "mds_beacon can't standby-replay mds." << m->get_standby_for_rank() << " at this time (cluster degraded, or mds not active)" << dendl;
dout(10) << "pending_mdsmap.is_degraded()==" << pending_mdsmap.is_degraded()
<< " rank state: " << ceph_mds_state_name(pending_mdsmap.get_state(m->get_standby_for_rank())) << dendl;
- goto ignore;
+ goto reply;
}
_note_beacon(m);
return false; // need to update map
return false;
}
- ignore:
+ reply:
// note time and reply
_note_beacon(m);
mon->send_reply(m,
m->put();
return true;
- out:
+ ignore:
// I won't reply this beacon, drop it.
mon->no_reply(m);
m->put();