From: Greg Farnum Date: Wed, 18 Apr 2012 17:03:31 +0000 (-0700) Subject: pgmon: convert PGMonitor::prepare_command to our standard infrastructure. X-Git-Tag: v0.46~60^2~2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=882bd5b87923c75693d15712b7a8ea9f41e57dd4;p=ceph.git pgmon: convert PGMonitor::prepare_command to our standard infrastructure. So that I can add another command. Signed-off-by: Greg Farnum --- diff --git a/src/mon/PGMonitor.cc b/src/mon/PGMonitor.cc index 55c3ecad0f73a..a4bcc712d7960 100644 --- a/src/mon/PGMonitor.cc +++ b/src/mon/PGMonitor.cc @@ -39,6 +39,7 @@ #include "osd/PG.h" // yuck #include "common/config.h" +#include "common/errno.h" #include #define dout_subsys ceph_subsys_mon @@ -1031,44 +1032,43 @@ bool PGMonitor::prepare_command(MMonCommand *m) stringstream ss; pg_t pgid; epoch_t epoch = mon->osdmon()->osdmap.get_epoch(); + int r = -EINVAL; string rs; - if (m->cmd.size() <= 1 || m->cmd[1] != "force_create_pg") { - // nothing here yet - ss << "unrecognized command"; - goto out; - } - if (m->cmd.size() <= 2) { - ss << "usage: pg force_create_pg "; - goto out; - } - if (!pgid.parse(m->cmd[2].c_str())) { - ss << "pg " << m->cmd[2] << " invalid"; - goto out; - } - if (!pg_map.pg_stat.count(pgid)) { - ss << "pg " << pgid << " dne"; - goto out; - } - if (pg_map.creating_pgs.count(pgid)) { - ss << "pg " << pgid << " already creating"; - goto out; - } - { - pg_stat_t& s = pending_inc.pg_stat_updates[pgid]; - s.state = PG_STATE_CREATING; - s.created = epoch; - s.last_change = ceph_clock_now(g_ceph_context); + if (m->cmd.size() >= 1 && m->cmd[1] == "force_create_pg") { + if (m->cmd.size() <= 2) { + ss << "usage: pg force_create_pg "; + goto out; + } + if (!pgid.parse(m->cmd[2].c_str())) { + ss << "pg " << m->cmd[2] << " invalid"; + goto out; + } + if (!pg_map.pg_stat.count(pgid)) { + ss << "pg " << pgid << " dne"; + goto out; + } + if (pg_map.creating_pgs.count(pgid)) { + ss << "pg " << pgid << " already creating"; + goto out; + } + { + pg_stat_t& s = pending_inc.pg_stat_updates[pgid]; + s.state = PG_STATE_CREATING; + s.created = epoch; + s.last_change = ceph_clock_now(g_ceph_context); + } + ss << "pg " << m->cmd[2] << " now creating, ok"; + getline(ss, rs); + paxos->wait_for_commit(new Monitor::C_Command(mon, m, 0, rs, paxos->get_version())); + return true; } - ss << "pg " << m->cmd[2] << " now creating, ok"; - getline(ss, rs); - paxos->wait_for_commit(new Monitor::C_Command(mon, m, 0, rs, paxos->get_version())); - return true; out: - int err = -EINVAL; getline(ss, rs); - mon->reply_command(m, err, rs, paxos->get_version()); + if (r < 0 && rs.length() == 0) + rs = cpp_strerror(r); + mon->reply_command(m, r, rs, paxos->get_version()); return false; }