bool AuthMonitor::preprocess_query(MonOpRequestRef op)
{
- PaxosServiceMessage *m = static_cast<PaxosServiceMessage*>(op->get_req());
+ auto m = op->get_req<PaxosServiceMessage>();
dout(10) << "preprocess_query " << *m << " from " << m->get_orig_source_inst() << dendl;
switch (m->get_type()) {
case MSG_MON_COMMAND:
bool AuthMonitor::prepare_update(MonOpRequestRef op)
{
- PaxosServiceMessage *m = static_cast<PaxosServiceMessage*>(op->get_req());
+ auto m = op->get_req<PaxosServiceMessage>();
dout(10) << "prepare_update " << *m << " from " << m->get_orig_source_inst() << dendl;
switch (m->get_type()) {
case MSG_MON_COMMAND:
bool AuthMonitor::prep_auth(MonOpRequestRef op, bool paxos_writable)
{
- MAuth *m = static_cast<MAuth*>(op->get_req());
+ auto m = op->get_req<MAuth>();
dout(10) << "prep_auth() blob_size=" << m->get_auth_payload().length() << dendl;
MonSession *s = op->get_session();
bool AuthMonitor::preprocess_command(MonOpRequestRef op)
{
- MMonCommand *m = static_cast<MMonCommand*>(op->get_req());
+ auto m = op->get_req<MMonCommand>();
int r = -1;
bufferlist rdata;
stringstream ss, ds;
bool AuthMonitor::prepare_command(MonOpRequestRef op)
{
- MMonCommand *m = static_cast<MMonCommand*>(op->get_req());
+ auto m = op->get_req<MMonCommand>();
stringstream ss, ds;
bufferlist rdata;
string rs;
bool ConfigMonitor::preprocess_command(MonOpRequestRef op)
{
- MMonCommand *m = static_cast<MMonCommand*>(op->get_req());
+ auto m = op->get_req<MMonCommand>();
std::stringstream ss;
int err = 0;
void ConfigMonitor::handle_get_config(MonOpRequestRef op)
{
- MGetConfig *m = static_cast<MGetConfig*>(op->get_req());
+ auto m = op->get_req<MGetConfig>();
dout(10) << __func__ << " " << m->name << " host " << m->host << dendl;
const OSDMap& osdmap = mon->osdmon()->osdmap;
bool ConfigMonitor::prepare_command(MonOpRequestRef op)
{
- MMonCommand *m = static_cast<MMonCommand*>(op->get_req());
+ auto m = op->get_req<MMonCommand>();
std::stringstream ss;
int err = -EINVAL;
void Elector::handle_propose(MonOpRequestRef op)
{
op->mark_event("elector:handle_propose");
- MMonElection *m = static_cast<MMonElection*>(op->get_req());
+ auto m = op->get_req<MMonElection>();
dout(5) << "handle_propose from " << m->get_source() << dendl;
int from = m->get_source().num();
void Elector::handle_ack(MonOpRequestRef op)
{
op->mark_event("elector:handle_ack");
- MMonElection *m = static_cast<MMonElection*>(op->get_req());
+ auto m = op->get_req<MMonElection>();
dout(5) << "handle_ack from " << m->get_source() << dendl;
int from = m->get_source().num();
void Elector::handle_victory(MonOpRequestRef op)
{
op->mark_event("elector:handle_victory");
- MMonElection *m = static_cast<MMonElection*>(op->get_req());
+ auto m = op->get_req<MMonElection>();
dout(5) << "handle_victory from " << m->get_source()
<< " quorum_features " << m->quorum_features
<< " " << m->mon_features
void Elector::nak_old_peer(MonOpRequestRef op)
{
op->mark_event("elector:nak_old_peer");
- MMonElection *m = static_cast<MMonElection*>(op->get_req());
+ auto m = op->get_req<MMonElection>();
uint64_t supported_features = m->get_connection()->get_features();
uint64_t required_features = mon->get_required_features();
mon_feature_t required_mon_features = mon->get_required_mon_features();
void Elector::handle_nak(MonOpRequestRef op)
{
op->mark_event("elector:handle_nak");
- MMonElection *m = static_cast<MMonElection*>(op->get_req());
+ auto m = op->get_req<MMonElection>();
dout(1) << "handle_nak from " << m->get_source()
<< " quorum_features " << m->quorum_features
<< " " << m->mon_features
return;
}
- MMonElection *em = static_cast<MMonElection*>(op->get_req());
+ auto em = op->get_req<MMonElection>();
// assume an old message encoding would have matched
if (em->fsid != mon->monmap->fsid) {
bool HealthMonitor::preprocess_query(MonOpRequestRef op)
{
- PaxosServiceMessage *m = static_cast<PaxosServiceMessage*>(op->get_req());
+ auto m = op->get_req<PaxosServiceMessage>();
switch (m->get_type()) {
case MSG_MON_COMMAND:
return preprocess_command(op);
bool HealthMonitor::preprocess_command(MonOpRequestRef op)
{
- MMonCommand *m = static_cast<MMonCommand*>(op->get_req());
+ auto m = op->get_req<MMonCommand>();
std::stringstream ss;
bufferlist rdata;
bool HealthMonitor::prepare_command(MonOpRequestRef op)
{
- MMonCommand *m = static_cast<MMonCommand*>(op->get_req());
+ auto m = op->get_req<MMonCommand>();
std::stringstream ss;
bufferlist rdata;
bool HealthMonitor::prepare_health_checks(MonOpRequestRef op)
{
- MMonHealthChecks *m = static_cast<MMonHealthChecks*>(op->get_req());
+ auto m = op->get_req<MMonHealthChecks>();
// no need to check if it's changed, the peon has done so
quorum_checks[m->get_source().num()] = std::move(m->health_checks);
return true;
bool LogMonitor::preprocess_query(MonOpRequestRef op)
{
op->mark_logmon_event("preprocess_query");
- PaxosServiceMessage *m = static_cast<PaxosServiceMessage*>(op->get_req());
+ auto m = op->get_req<PaxosServiceMessage>();
dout(10) << "preprocess_query " << *m << " from " << m->get_orig_source_inst() << dendl;
switch (m->get_type()) {
case MSG_MON_COMMAND:
bool LogMonitor::prepare_update(MonOpRequestRef op)
{
op->mark_logmon_event("prepare_update");
- PaxosServiceMessage *m = static_cast<PaxosServiceMessage*>(op->get_req());
+ auto m = op->get_req<PaxosServiceMessage>();
dout(10) << "prepare_update " << *m << " from " << m->get_orig_source_inst() << dendl;
switch (m->get_type()) {
case MSG_MON_COMMAND:
bool LogMonitor::preprocess_log(MonOpRequestRef op)
{
op->mark_logmon_event("preprocess_log");
- MLog *m = static_cast<MLog*>(op->get_req());
+ auto m = op->get_req<MLog>();
dout(10) << "preprocess_log " << *m << " from " << m->get_orig_source() << dendl;
int num_new = 0;
bool LogMonitor::prepare_log(MonOpRequestRef op)
{
op->mark_logmon_event("prepare_log");
- MLog *m = static_cast<MLog*>(op->get_req());
+ auto m = op->get_req<MLog>();
dout(10) << "prepare_log " << *m << " from " << m->get_orig_source() << dendl;
if (m->fsid != mon->monmap->fsid) {
void LogMonitor::_updated_log(MonOpRequestRef op)
{
- MLog *m = static_cast<MLog*>(op->get_req());
+ auto m = op->get_req<MLog>();
dout(7) << "_updated_log for " << m->get_orig_source_inst() << dendl;
mon->send_reply(op, new MLogAck(m->fsid, m->entries.rbegin()->seq));
}
bool LogMonitor::preprocess_command(MonOpRequestRef op)
{
op->mark_logmon_event("preprocess_command");
- MMonCommand *m = static_cast<MMonCommand*>(op->get_req());
+ auto m = op->get_req<MMonCommand>();
int r = -EINVAL;
bufferlist rdata;
stringstream ss;
bool LogMonitor::prepare_command(MonOpRequestRef op)
{
op->mark_logmon_event("prepare_command");
- MMonCommand *m = static_cast<MMonCommand*>(op->get_req());
+ auto m = op->get_req<MMonCommand>();
stringstream ss;
string rs;
int err = -EINVAL;
bool MDSMonitor::preprocess_query(MonOpRequestRef op)
{
op->mark_mdsmon_event(__func__);
- PaxosServiceMessage *m = static_cast<PaxosServiceMessage*>(op->get_req());
+ auto m = op->get_req<PaxosServiceMessage>();
dout(10) << "preprocess_query " << *m << " from " << m->get_orig_source()
<< " " << m->get_orig_source_addrs() << dendl;
bool MDSMonitor::preprocess_beacon(MonOpRequestRef op)
{
op->mark_mdsmon_event(__func__);
- MMDSBeacon *m = static_cast<MMDSBeacon*>(op->get_req());
+ auto m = op->get_req<MMDSBeacon>();
MDSMap::DaemonState state = m->get_state();
mds_gid_t gid = m->get_global_id();
version_t seq = m->get_seq();
bool MDSMonitor::preprocess_offload_targets(MonOpRequestRef op)
{
op->mark_mdsmon_event(__func__);
- MMDSLoadTargets *m = static_cast<MMDSLoadTargets*>(op->get_req());
+ auto m = op->get_req<MMDSLoadTargets>();
dout(10) << "preprocess_offload_targets " << *m << " from " << m->get_orig_source() << dendl;
const auto &fsmap = get_fsmap();
bool MDSMonitor::prepare_update(MonOpRequestRef op)
{
op->mark_mdsmon_event(__func__);
- PaxosServiceMessage *m = static_cast<PaxosServiceMessage*>(op->get_req());
+ auto m = op->get_req<PaxosServiceMessage>();
dout(7) << "prepare_update " << *m << dendl;
switch (m->get_type()) {
bool MDSMonitor::prepare_beacon(MonOpRequestRef op)
{
op->mark_mdsmon_event(__func__);
- MMDSBeacon *m = static_cast<MMDSBeacon*>(op->get_req());
+ auto m = op->get_req<MMDSBeacon>();
// -- this is an update --
dout(12) << "prepare_beacon " << *m << " from " << m->get_orig_source()
<< " " << m->get_orig_source_addrs() << dendl;
auto &pending = get_pending_fsmap_writeable();
op->mark_mdsmon_event(__func__);
- MMDSLoadTargets *m = static_cast<MMDSLoadTargets*>(op->get_req());
+ auto m = op->get_req<MMDSLoadTargets>();
mds_gid_t gid = m->global_id;
if (pending.gid_has_rank(gid)) {
dout(10) << "prepare_offload_targets " << gid << " " << m->targets << dendl;
{
const auto &fsmap = get_fsmap();
op->mark_mdsmon_event(__func__);
- MMDSBeacon *m = static_cast<MMDSBeacon*>(op->get_req());
+ auto m = op->get_req<MMDSBeacon>();
dout(10) << "_updated " << m->get_orig_source() << " " << *m << dendl;
mon->clog->debug() << m->get_orig_source() << " "
<< m->get_orig_source_addrs() << " "
bool MDSMonitor::preprocess_command(MonOpRequestRef op)
{
op->mark_mdsmon_event(__func__);
- MMonCommand *m = static_cast<MMonCommand*>(op->get_req());
+ auto m = op->get_req<MMonCommand>();
int r = -1;
bufferlist rdata;
stringstream ss, ds;
bool MDSMonitor::prepare_command(MonOpRequestRef op)
{
op->mark_mdsmon_event(__func__);
- MMonCommand *m = static_cast<MMonCommand*>(op->get_req());
+ auto m = op->get_req<MMonCommand>();
int r = -EINVAL;
stringstream ss;
bufferlist rdata;
bool MgrMonitor::preprocess_query(MonOpRequestRef op)
{
- PaxosServiceMessage *m = static_cast<PaxosServiceMessage*>(op->get_req());
+ auto m = op->get_req<PaxosServiceMessage>();
switch (m->get_type()) {
case MSG_MGR_BEACON:
return preprocess_beacon(op);
bool MgrMonitor::prepare_update(MonOpRequestRef op)
{
- PaxosServiceMessage *m = static_cast<PaxosServiceMessage*>(op->get_req());
+ auto m = op->get_req<PaxosServiceMessage>();
switch (m->get_type()) {
case MSG_MGR_BEACON:
return prepare_beacon(op);
bool MgrMonitor::preprocess_beacon(MonOpRequestRef op)
{
- MMgrBeacon *m = static_cast<MMgrBeacon*>(op->get_req());
+ auto m = op->get_req<MMgrBeacon>();
mon->no_reply(op); // we never reply to beacons
dout(4) << "beacon from " << m->get_gid() << dendl;
bool MgrMonitor::prepare_beacon(MonOpRequestRef op)
{
- MMgrBeacon *m = static_cast<MMgrBeacon*>(op->get_req());
+ auto m = op->get_req<MMgrBeacon>();
dout(4) << "beacon from " << m->get_gid() << dendl;
// See if we are seeing same name, new GID for the active daemon
bool MgrMonitor::preprocess_command(MonOpRequestRef op)
{
- MMonCommand *m = static_cast<MMonCommand*>(op->get_req());
+ auto m = op->get_req<MMonCommand>();
std::stringstream ss;
bufferlist rdata;
bool MgrMonitor::prepare_command(MonOpRequestRef op)
{
- MMonCommand *m = static_cast<MMonCommand*>(op->get_req());
+ auto m = op->get_req<MMonCommand>();
std::stringstream ss;
bufferlist rdata;
bool MgrStatMonitor::preprocess_query(MonOpRequestRef op)
{
- auto m = static_cast<PaxosServiceMessage*>(op->get_req());
+ auto m = op->get_req<PaxosServiceMessage>();
switch (m->get_type()) {
case CEPH_MSG_STATFS:
return preprocess_statfs(op);
bool MgrStatMonitor::prepare_update(MonOpRequestRef op)
{
- auto m = static_cast<PaxosServiceMessage*>(op->get_req());
+ auto m = op->get_req<PaxosServiceMessage>();
switch (m->get_type()) {
case MSG_MON_MGR_REPORT:
return prepare_report(op);
bool MgrStatMonitor::prepare_report(MonOpRequestRef op)
{
- auto m = static_cast<MMonMgrReport*>(op->get_req());
+ auto m = op->get_req<MMonMgrReport>();
bufferlist bl = m->get_data();
auto p = bl.cbegin();
decode(pending_digest, p);
bool MgrStatMonitor::preprocess_getpoolstats(MonOpRequestRef op)
{
op->mark_pgmon_event(__func__);
- auto m = static_cast<MGetPoolStats*>(op->get_req());
+ auto m = op->get_req<MGetPoolStats>();
auto session = op->get_session();
if (!session)
return true;
bool MgrStatMonitor::preprocess_statfs(MonOpRequestRef op)
{
op->mark_pgmon_event(__func__);
- auto statfs = static_cast<MStatfs*>(op->get_req());
+ auto statfs = op->get_req<MStatfs>();
auto session = op->get_session();
if (!session)
void Monitor::handle_sync(MonOpRequestRef op)
{
- MMonSync *m = static_cast<MMonSync*>(op->get_req());
+ auto m = op->get_req<MMonSync>();
dout(10) << __func__ << " " << *m << dendl;
switch (m->op) {
void Monitor::_sync_reply_no_cookie(MonOpRequestRef op)
{
- MMonSync *m = static_cast<MMonSync*>(op->get_req());
+ auto m = op->get_req<MMonSync>();
MMonSync *reply = new MMonSync(MMonSync::OP_NO_COOKIE, m->cookie);
m->get_connection()->send_message(reply);
}
void Monitor::handle_sync_get_cookie(MonOpRequestRef op)
{
- MMonSync *m = static_cast<MMonSync*>(op->get_req());
+ auto m = op->get_req<MMonSync>();
if (is_synchronizing()) {
_sync_reply_no_cookie(op);
return;
void Monitor::handle_sync_get_chunk(MonOpRequestRef op)
{
- MMonSync *m = static_cast<MMonSync*>(op->get_req());
+ auto m = op->get_req<MMonSync>();
dout(10) << __func__ << " " << *m << dendl;
if (sync_providers.count(m->cookie) == 0) {
void Monitor::handle_sync_cookie(MonOpRequestRef op)
{
- MMonSync *m = static_cast<MMonSync*>(op->get_req());
+ auto m = op->get_req<MMonSync>();
dout(10) << __func__ << " " << *m << dendl;
if (sync_cookie) {
dout(10) << __func__ << " already have a cookie, ignoring" << dendl;
void Monitor::handle_sync_chunk(MonOpRequestRef op)
{
- MMonSync *m = static_cast<MMonSync*>(op->get_req());
+ auto m = op->get_req<MMonSync>();
dout(10) << __func__ << " " << *m << dendl;
if (m->cookie != sync_cookie) {
void Monitor::handle_probe(MonOpRequestRef op)
{
- MMonProbe *m = static_cast<MMonProbe*>(op->get_req());
+ auto m = op->get_req<MMonProbe>();
dout(10) << "handle_probe " << *m << dendl;
if (m->fsid != monmap->fsid) {
void Monitor::handle_probe_probe(MonOpRequestRef op)
{
- MMonProbe *m = static_cast<MMonProbe*>(op->get_req());
+ auto m = op->get_req<MMonProbe>();
dout(10) << "handle_probe_probe " << m->get_source_inst() << *m
<< " features " << m->get_connection()->get_features() << dendl;
void Monitor::handle_probe_reply(MonOpRequestRef op)
{
- MMonProbe *m = static_cast<MMonProbe*>(op->get_req());
+ auto m = op->get_req<MMonProbe>();
dout(10) << "handle_probe_reply " << m->get_source_inst()
<< " " << *m << dendl;
dout(10) << " monmap is " << *monmap << dendl;
void Monitor::handle_command(MonOpRequestRef op)
{
ceph_assert(op->is_type_command());
- MMonCommand *m = static_cast<MMonCommand*>(op->get_req());
+ auto m = op->get_req<MMonCommand>();
if (m->fsid != monmap->fsid) {
dout(0) << "handle_command on fsid " << m->fsid << " != " << monmap->fsid << dendl;
reply_command(op, -EPERM, "wrong fsid", 0);
void Monitor::reply_command(MonOpRequestRef op, int rc, const string &rs,
bufferlist& rdata, version_t version)
{
- MMonCommand *m = static_cast<MMonCommand*>(op->get_req());
+ auto m = op->get_req<MMonCommand>();
ceph_assert(m->get_type() == MSG_MON_COMMAND);
MMonCommandAck *reply = new MMonCommandAck(m->cmd, rc, rs, version);
reply->set_tid(m->get_tid());
//extract the original message and put it into the regular dispatch function
void Monitor::handle_forward(MonOpRequestRef op)
{
- MForward *m = static_cast<MForward*>(op->get_req());
+ auto m = op->get_req<MForward>();
dout(10) << "received forwarded message from "
<< ceph_entity_type_name(m->client_type)
<< " " << m->client_addrs
void Monitor::handle_route(MonOpRequestRef op)
{
- MRoute *m = static_cast<MRoute*>(op->get_req());
+ auto m = op->get_req<MRoute>();
MonSession *session = op->get_session();
//check privileges
if (!session->is_capable("mon", MON_CAP_X)) {
case MSG_MON_PAXOS:
{
op->set_type_paxos();
- MMonPaxos *pm = static_cast<MMonPaxos*>(op->get_req());
+ auto pm = op->get_req<MMonPaxos>();
if (!op->get_session()->is_capable("mon", MON_CAP_X)) {
//can't send these!
return;
void Monitor::handle_ping(MonOpRequestRef op)
{
- MPing *m = static_cast<MPing*>(op->get_req());
+ auto m = op->get_req<MPing>();
dout(10) << __func__ << " " << *m << dendl;
MPing *reply = new MPing;
bufferlist payload;
void Monitor::handle_timecheck_leader(MonOpRequestRef op)
{
- MTimeCheck2 *m = static_cast<MTimeCheck2*>(op->get_req());
+ auto m = op->get_req<MTimeCheck2>();
dout(10) << __func__ << " " << *m << dendl;
/* handles PONG's */
ceph_assert(m->op == MTimeCheck2::OP_PONG);
void Monitor::handle_timecheck_peon(MonOpRequestRef op)
{
- MTimeCheck2 *m = static_cast<MTimeCheck2*>(op->get_req());
+ auto m = op->get_req<MTimeCheck2>();
dout(10) << __func__ << " " << *m << dendl;
ceph_assert(is_peon());
void Monitor::handle_timecheck(MonOpRequestRef op)
{
- MTimeCheck2 *m = static_cast<MTimeCheck2*>(op->get_req());
+ auto m = op->get_req<MTimeCheck2>();
dout(10) << __func__ << " " << *m << dendl;
if (is_leader()) {
void Monitor::handle_subscribe(MonOpRequestRef op)
{
- MMonSubscribe *m = static_cast<MMonSubscribe*>(op->get_req());
+ auto m = op->get_req<MMonSubscribe>();
dout(10) << "handle_subscribe " << *m << dendl;
bool reply = false;
void Monitor::handle_get_version(MonOpRequestRef op)
{
- MMonGetVersion *m = static_cast<MMonGetVersion*>(op->get_req());
+ auto m = op->get_req<MMonGetVersion>();
dout(10) << "handle_get_version " << *m << dendl;
PaxosService *svc = NULL;
void Monitor::handle_mon_get_map(MonOpRequestRef op)
{
- MMonGetMap *m = static_cast<MMonGetMap*>(op->get_req());
+ auto m = op->get_req<MMonGetMap>();
dout(10) << "handle_mon_get_map" << dendl;
send_latest_monmap(m->get_connection().get());
}
void Monitor::handle_mon_metadata(MonOpRequestRef op)
{
- MMonMetadata *m = static_cast<MMonMetadata*>(op->get_req());
+ auto m = op->get_req<MMonMetadata>();
if (is_leader()) {
dout(10) << __func__ << dendl;
update_mon_metadata(m->get_source().num(), std::move(m->data));
void Monitor::handle_scrub(MonOpRequestRef op)
{
- MMonScrub *m = static_cast<MMonScrub*>(op->get_req());
+ auto m = op->get_req<MMonScrub>();
dout(10) << __func__ << " " << *m << dendl;
switch (m->op) {
case MMonScrub::OP_SCRUB:
C_MonOp(_op), mon(_mm), rc(r), rs(s), rdata(rd), version(v){}
void _finish(int r) override {
- MMonCommand *m = static_cast<MMonCommand*>(op->get_req());
+ auto m = op->get_req<MMonCommand>();
if (r >= 0) {
ostringstream ss;
if (!op->get_req()->get_connection()) {
bool MonmapMonitor::preprocess_query(MonOpRequestRef op)
{
- PaxosServiceMessage *m = static_cast<PaxosServiceMessage*>(op->get_req());
+ auto m = op->get_req<PaxosServiceMessage>();
switch (m->get_type()) {
// READs
case MSG_MON_COMMAND:
bool MonmapMonitor::preprocess_command(MonOpRequestRef op)
{
- MMonCommand *m = static_cast<MMonCommand*>(op->get_req());
+ auto m = op->get_req<MMonCommand>();
int r = -1;
bufferlist rdata;
stringstream ss;
bool MonmapMonitor::prepare_update(MonOpRequestRef op)
{
- PaxosServiceMessage *m = static_cast<PaxosServiceMessage*>(op->get_req());
+ auto m = op->get_req<PaxosServiceMessage>();
dout(7) << __func__ << " " << *m << " from " << m->get_orig_source_inst() << dendl;
switch (m->get_type()) {
bool MonmapMonitor::prepare_command(MonOpRequestRef op)
{
- MMonCommand *m = static_cast<MMonCommand*>(op->get_req());
+ auto m = op->get_req<MMonCommand>();
stringstream ss;
string rs;
int err = -EINVAL;
bool MonmapMonitor::preprocess_join(MonOpRequestRef op)
{
- MMonJoin *join = static_cast<MMonJoin*>(op->get_req());
+ auto join = op->get_req<MMonJoin>();
dout(10) << __func__ << " " << join->name << " at " << join->addrs << dendl;
MonSession *session = op->get_session();
}
bool MonmapMonitor::prepare_join(MonOpRequestRef op)
{
- MMonJoin *join = static_cast<MMonJoin*>(op->get_req());
+ auto join = op->get_req<MMonJoin>();
dout(0) << "adding/updating " << join->name
<< " at " << join->addrs << " to monitor cluster" << dendl;
if (pending_map.contains(join->name))
bool OSDMonitor::preprocess_get_osdmap(MonOpRequestRef op)
{
op->mark_osdmon_event(__func__);
- MMonGetOSDMap *m = static_cast<MMonGetOSDMap*>(op->get_req());
+ auto m = op->get_req<MMonGetOSDMap>();
uint64_t features = mon->get_quorum_con_features();
if (op->get_session() && op->get_session()->con_features)
bool OSDMonitor::preprocess_failure(MonOpRequestRef op)
{
op->mark_osdmon_event(__func__);
- MOSDFailure *m = static_cast<MOSDFailure*>(op->get_req());
+ auto m = op->get_req<MOSDFailure>();
// who is target_osd
int badboy = m->get_target_osd();
void _finish(int r) override {
if (r == 0) {
- MOSDMarkMeDown *m = static_cast<MOSDMarkMeDown*>(op->get_req());
+ auto m = op->get_req<MOSDMarkMeDown>();
osdmon->mon->send_reply(
op,
new MOSDMarkMeDown(
bool OSDMonitor::preprocess_mark_me_down(MonOpRequestRef op)
{
op->mark_osdmon_event(__func__);
- MOSDMarkMeDown *m = static_cast<MOSDMarkMeDown*>(op->get_req());
+ auto m = op->get_req<MOSDMarkMeDown>();
int from = m->target_osd;
// check permissions
bool OSDMonitor::prepare_mark_me_down(MonOpRequestRef op)
{
op->mark_osdmon_event(__func__);
- MOSDMarkMeDown *m = static_cast<MOSDMarkMeDown*>(op->get_req());
+ auto m = op->get_req<MOSDMarkMeDown>();
int target_osd = m->target_osd;
ceph_assert(osdmap.is_up(target_osd));
bool OSDMonitor::preprocess_mark_me_dead(MonOpRequestRef op)
{
op->mark_osdmon_event(__func__);
- MOSDMarkMeDead *m = static_cast<MOSDMarkMeDead*>(op->get_req());
+ auto m = op->get_req<MOSDMarkMeDead>();
int from = m->target_osd;
// check permissions
bool OSDMonitor::prepare_mark_me_dead(MonOpRequestRef op)
{
op->mark_osdmon_event(__func__);
- MOSDMarkMeDead *m = static_cast<MOSDMarkMeDead*>(op->get_req());
+ auto m = op->get_req<MOSDMarkMeDead>();
int target_osd = m->target_osd;
ceph_assert(osdmap.is_down(target_osd));
bool OSDMonitor::prepare_failure(MonOpRequestRef op)
{
op->mark_osdmon_event(__func__);
- MOSDFailure *m = static_cast<MOSDFailure*>(op->get_req());
+ auto m = op->get_req<MOSDFailure>();
dout(1) << "prepare_failure osd." << m->get_target_osd()
<< " " << m->get_target_addrs()
<< " from " << m->get_orig_source()
bool OSDMonitor::preprocess_boot(MonOpRequestRef op)
{
op->mark_osdmon_event(__func__);
- MOSDBoot *m = static_cast<MOSDBoot*>(op->get_req());
+ auto m = op->get_req<MOSDBoot>();
int from = m->get_orig_source_inst().name.num();
// check permissions, ignore if failed (no response expected)
bool OSDMonitor::prepare_boot(MonOpRequestRef op)
{
op->mark_osdmon_event(__func__);
- MOSDBoot *m = static_cast<MOSDBoot*>(op->get_req());
+ auto m = op->get_req<MOSDBoot>();
dout(7) << __func__ << " from " << m->get_source()
<< " sb " << m->sb
<< " client_addrs" << m->get_connection()->get_peer_addrs()
void OSDMonitor::_booted(MonOpRequestRef op, bool logit)
{
op->mark_osdmon_event(__func__);
- MOSDBoot *m = static_cast<MOSDBoot*>(op->get_req());
+ auto m = op->get_req<MOSDBoot>();
dout(7) << "_booted " << m->get_orig_source_inst()
<< " w " << m->sb.weight << " from " << m->sb.current_epoch << dendl;
bool OSDMonitor::preprocess_full(MonOpRequestRef op)
{
op->mark_osdmon_event(__func__);
- MOSDFull *m = static_cast<MOSDFull*>(op->get_req());
+ auto m = op->get_req<MOSDFull>();
int from = m->get_orig_source().num();
set<string> state;
unsigned mask = CEPH_OSD_NEARFULL | CEPH_OSD_BACKFILLFULL | CEPH_OSD_FULL;
bool OSDMonitor::prepare_full(MonOpRequestRef op)
{
op->mark_osdmon_event(__func__);
- const MOSDFull *m = static_cast<MOSDFull*>(op->get_req());
+ auto m = op->get_req<MOSDFull>();
const int from = m->get_orig_source().num();
const unsigned mask = CEPH_OSD_NEARFULL | CEPH_OSD_BACKFILLFULL | CEPH_OSD_FULL;
bool OSDMonitor::preprocess_alive(MonOpRequestRef op)
{
op->mark_osdmon_event(__func__);
- MOSDAlive *m = static_cast<MOSDAlive*>(op->get_req());
+ auto m = op->get_req<MOSDAlive>();
int from = m->get_orig_source().num();
// check permissions, ignore if failed
bool OSDMonitor::prepare_alive(MonOpRequestRef op)
{
op->mark_osdmon_event(__func__);
- MOSDAlive *m = static_cast<MOSDAlive*>(op->get_req());
+ auto m = op->get_req<MOSDAlive>();
int from = m->get_orig_source().num();
if (0) { // we probably don't care much about these
bool OSDMonitor::preprocess_pg_created(MonOpRequestRef op)
{
op->mark_osdmon_event(__func__);
- auto m = static_cast<MOSDPGCreated*>(op->get_req());
+ auto m = op->get_req<MOSDPGCreated>();
dout(10) << __func__ << " " << *m << dendl;
auto session = op->get_session();
mon->no_reply(op);
bool OSDMonitor::prepare_pg_created(MonOpRequestRef op)
{
op->mark_osdmon_event(__func__);
- auto m = static_cast<MOSDPGCreated*>(op->get_req());
+ auto m = op->get_req<MOSDPGCreated>();
dout(10) << __func__ << " " << *m << dendl;
auto src = m->get_orig_source();
auto from = src.num();
bool OSDMonitor::preprocess_pg_ready_to_merge(MonOpRequestRef op)
{
op->mark_osdmon_event(__func__);
- auto m = static_cast<MOSDPGReadyToMerge*>(op->get_req());
+ auto m = op->get_req<MOSDPGReadyToMerge>();
dout(10) << __func__ << " " << *m << dendl;
const pg_pool_t *pi;
auto session = op->get_session();
bool OSDMonitor::prepare_pg_ready_to_merge(MonOpRequestRef op)
{
op->mark_osdmon_event(__func__);
- auto m = static_cast<MOSDPGReadyToMerge*>(op->get_req());
+ auto m = op->get_req<MOSDPGReadyToMerge>();
dout(10) << __func__ << " " << *m << dendl;
pg_pool_t p;
if (pending_inc.new_pools.count(m->pgid.pool()))
bool OSDMonitor::preprocess_pgtemp(MonOpRequestRef op)
{
- MOSDPGTemp *m = static_cast<MOSDPGTemp*>(op->get_req());
+ auto m = op->get_req<MOSDPGTemp>();
dout(10) << "preprocess_pgtemp " << *m << dendl;
mempool::osdmap::vector<int> empty;
int from = m->get_orig_source().num();
bool OSDMonitor::prepare_pgtemp(MonOpRequestRef op)
{
op->mark_osdmon_event(__func__);
- MOSDPGTemp *m = static_cast<MOSDPGTemp*>(op->get_req());
+ auto m = op->get_req<MOSDPGTemp>();
int from = m->get_orig_source().num();
dout(7) << "prepare_pgtemp e" << m->map_epoch << " from " << m->get_orig_source_inst() << dendl;
for (map<pg_t,vector<int32_t> >::iterator p = m->pg_temp.begin(); p != m->pg_temp.end(); ++p) {
bool OSDMonitor::preprocess_remove_snaps(MonOpRequestRef op)
{
op->mark_osdmon_event(__func__);
- MRemoveSnaps *m = static_cast<MRemoveSnaps*>(op->get_req());
+ auto m = op->get_req<MRemoveSnaps>();
dout(7) << "preprocess_remove_snaps " << *m << dendl;
// check privilege, ignore if failed
bool OSDMonitor::prepare_remove_snaps(MonOpRequestRef op)
{
op->mark_osdmon_event(__func__);
- MRemoveSnaps *m = static_cast<MRemoveSnaps*>(op->get_req());
+ auto m = op->get_req<MRemoveSnaps>();
dout(7) << "prepare_remove_snaps " << *m << dendl;
for (auto& [pool, snaps] : m->snaps) {
bool OSDMonitor::preprocess_get_purged_snaps(MonOpRequestRef op)
{
op->mark_osdmon_event(__func__);
- const MMonGetPurgedSnaps *m = static_cast<MMonGetPurgedSnaps*>(op->get_req());
+ auto m = op->get_req<MMonGetPurgedSnaps>();
dout(7) << __func__ << " " << *m << dendl;
map<epoch_t,mempool::osdmap::map<int64_t,snap_interval_set_t>> r;
bool OSDMonitor::prepare_beacon(MonOpRequestRef op)
{
op->mark_osdmon_event(__func__);
- const auto beacon = static_cast<MOSDBeacon*>(op->get_req());
+ const auto beacon = op->get_req<MOSDBeacon>();
const auto src = beacon->get_orig_source();
dout(10) << __func__ << " " << *beacon
<< " from " << src << dendl;
bool OSDMonitor::preprocess_command(MonOpRequestRef op)
{
op->mark_osdmon_event(__func__);
- MMonCommand *m = static_cast<MMonCommand*>(op->get_req());
+ auto m = op->get_req<MMonCommand>();
int r = 0;
bufferlist rdata;
stringstream ss, ds;
int OSDMonitor::prepare_new_pool(MonOpRequestRef op)
{
op->mark_osdmon_event(__func__);
- MPoolOp *m = static_cast<MPoolOp*>(op->get_req());
+ auto m = op->get_req<MPoolOp>();
dout(10) << "prepare_new_pool from " << m->get_connection() << dendl;
MonSession *session = op->get_session();
if (!session)
bool OSDMonitor::prepare_command(MonOpRequestRef op)
{
op->mark_osdmon_event(__func__);
- MMonCommand *m = static_cast<MMonCommand*>(op->get_req());
+ auto m = op->get_req<MMonCommand>();
stringstream ss;
cmdmap_t cmdmap;
if (!cmdmap_from_json(m->cmd, &cmdmap, ss)) {
const cmdmap_t& cmdmap)
{
op->mark_osdmon_event(__func__);
- MMonCommand *m = static_cast<MMonCommand*>(op->get_req());
+ auto m = op->get_req<MMonCommand>();
bool ret = false;
stringstream ss;
string rs;
{
op->mark_osdmon_event(__func__);
- MPoolOp *m = static_cast<MPoolOp*>(op->get_req());
+ auto m = op->get_req<MPoolOp>();
MonSession *session = op->get_session();
if (!session) {
_pool_op_reply(op, -EPERM, osdmap.get_epoch());
bool OSDMonitor::preprocess_pool_op(MonOpRequestRef op)
{
op->mark_osdmon_event(__func__);
- MPoolOp *m = static_cast<MPoolOp*>(op->get_req());
+ auto m = op->get_req<MPoolOp>();
if (enforce_pool_op_caps(op)) {
return true;
bool OSDMonitor::preprocess_pool_op_create(MonOpRequestRef op)
{
op->mark_osdmon_event(__func__);
- MPoolOp *m = static_cast<MPoolOp*>(op->get_req());
+ auto m = op->get_req<MPoolOp>();
int64_t pool = osdmap.lookup_pg_pool_name(m->name.c_str());
if (pool >= 0) {
_pool_op_reply(op, 0, osdmap.get_epoch());
bool OSDMonitor::prepare_pool_op(MonOpRequestRef op)
{
op->mark_osdmon_event(__func__);
- MPoolOp *m = static_cast<MPoolOp*>(op->get_req());
+ auto m = op->get_req<MPoolOp>();
dout(10) << "prepare_pool_op " << *m << dendl;
if (m->op == POOL_OP_CREATE) {
return prepare_pool_op_create(op);
bool OSDMonitor::prepare_pool_op_delete(MonOpRequestRef op)
{
op->mark_osdmon_event(__func__);
- MPoolOp *m = static_cast<MPoolOp*>(op->get_req());
+ auto m = op->get_req<MPoolOp>();
ostringstream ss;
int ret = _prepare_remove_pool(m->pool, &ss, false);
if (ret == -EAGAIN) {
int ret, epoch_t epoch, bufferlist *blp)
{
op->mark_osdmon_event(__func__);
- MPoolOp *m = static_cast<MPoolOp*>(op->get_req());
+ auto m = op->get_req<MPoolOp>();
dout(20) << "_pool_op_reply " << ret << dendl;
MPoolOpReply *reply = new MPoolOpReply(m->fsid, m->get_tid(),
ret, epoch, get_last_committed(), blp);
op->mark_paxos_event("handle_collect");
- MMonPaxos *collect = static_cast<MMonPaxos*>(op->get_req());
+ auto collect = op->get_req<MMonPaxos>();
dout(10) << "handle_collect " << *collect << dendl;
ceph_assert(mon->is_peon()); // mon epoch filter should catch strays
void Paxos::handle_last(MonOpRequestRef op)
{
op->mark_paxos_event("handle_last");
- MMonPaxos *last = static_cast<MMonPaxos*>(op->get_req());
+ auto last = op->get_req<MMonPaxos>();
bool need_refresh = false;
int from = last->get_source().num();
void Paxos::handle_begin(MonOpRequestRef op)
{
op->mark_paxos_event("handle_begin");
- MMonPaxos *begin = static_cast<MMonPaxos*>(op->get_req());
+ auto begin = op->get_req<MMonPaxos>();
dout(10) << "handle_begin " << *begin << dendl;
// can we accept this?
void Paxos::handle_accept(MonOpRequestRef op)
{
op->mark_paxos_event("handle_accept");
- MMonPaxos *accept = static_cast<MMonPaxos*>(op->get_req());
+ auto accept = op->get_req<MMonPaxos>();
dout(10) << "handle_accept " << *accept << dendl;
int from = accept->get_source().num();
void Paxos::handle_commit(MonOpRequestRef op)
{
op->mark_paxos_event("handle_commit");
- MMonPaxos *commit = static_cast<MMonPaxos*>(op->get_req());
+ auto commit = op->get_req<MMonPaxos>();
dout(10) << "handle_commit on " << commit->last_committed << dendl;
logger->inc(l_paxos_commit);
void Paxos::handle_lease(MonOpRequestRef op)
{
op->mark_paxos_event("handle_lease");
- MMonPaxos *lease = static_cast<MMonPaxos*>(op->get_req());
+ auto lease = op->get_req<MMonPaxos>();
// sanity
if (!mon->is_peon() ||
last_committed != lease->last_committed) {
void Paxos::handle_lease_ack(MonOpRequestRef op)
{
op->mark_paxos_event("handle_lease_ack");
- MMonPaxos *ack = static_cast<MMonPaxos*>(op->get_req());
+ auto ack = op->get_req<MMonPaxos>();
int from = ack->get_source().num();
if (!lease_ack_timeout_event) {
bool PaxosService::dispatch(MonOpRequestRef op)
{
ceph_assert(op->is_type_service() || op->is_type_command());
- PaxosServiceMessage *m = static_cast<PaxosServiceMessage*>(op->get_req());
+ auto m = op->get_req<PaxosServiceMessage>();
op->mark_event("psvc:dispatch");
dout(10) << __func__ << " " << m << " " << *m