]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
Merge remote-tracking branch 'origin/master' into wip-ceph-cli
authorDan Mick <dan.mick@inktank.com>
Tue, 4 Jun 2013 20:12:08 +0000 (13:12 -0700)
committerDan Mick <dan.mick@inktank.com>
Tue, 4 Jun 2013 20:12:08 +0000 (13:12 -0700)
Conflicts:
src/mon/OSDMonitor.cc
src/osd/OSD.cc
src/osd/ReplicatedPG.cc

12 files changed:
1  2 
debian/control
src/Makefile.am
src/mon/ConfigKeyService.cc
src/mon/MonClient.cc
src/mon/Monitor.cc
src/mon/Monitor.h
src/mon/MonmapMonitor.cc
src/mon/OSDMonitor.cc
src/osd/OSD.cc
src/osd/ReplicatedPG.cc
src/test/encoding/types.h
src/vstart.sh

diff --cc debian/control
Simple merge
diff --cc src/Makefile.am
Simple merge
Simple merge
Simple merge
index a7f78f5dd32d6f3cc6f7578766974dfc13e44605,72fd3777a8cacaa479a6173f54921758e67efc51..4e849156794d7b13654038be2e4ba90da7c2543c
@@@ -172,12 -170,12 +172,12 @@@ Monitor::Monitor(CephContext* cct_, str
    paxos_service[PAXOS_LOG] = new LogMonitor(this, paxos, "logm");
    paxos_service[PAXOS_AUTH] = new AuthMonitor(this, paxos, "auth");
  
-   health_monitor = QuorumServiceRef(new HealthMonitor(this));
-   config_key_service = ConfigKeyServiceRef(new ConfigKeyService(this, paxos));
+   health_monitor = new HealthMonitor(this);
+   config_key_service = new ConfigKeyService(this, paxos);
  
 -  mon_caps = new MonCaps();
 -  mon_caps->set_allow_all(true);
 -  mon_caps->text = "allow *";
 +  mon_caps = new MonCap();
 +  bool r = mon_caps->parse("allow *", NULL);
 +  assert(r);
  
    exited_quorum = ceph_clock_now(g_ceph_context);
  }
index 992ffa465f87e3b41fced671b6f666231b419958,b9203ae1e6150d824d837409e569cbc0503a3c62..6830a4eedf9b1a22e0627ccd67e29d013585cff3
  #include <memory>
  #include <tr1/memory>
  #include <errno.h>
- #include <boost/intrusive_ptr.hpp>
- // Because intusive_ptr clobbers our assert...
- #include "include/assert.h"
  
  
 -#define CEPH_MON_PROTOCOL     10 /* cluster internal */
 +#define CEPH_MON_PROTOCOL     11 /* cluster internal */
  
  
  enum {
Simple merge
Simple merge
diff --cc src/osd/OSD.cc
index 65e07f1287a19b6f3ab99fb31e274f9120c32e87,ef2b58a5de2204751438d7e61bcf2ea6e579afaa..205d5a5f64f1883bf7365bcd324e36ac00238dba
@@@ -3648,77 -3631,72 +3774,79 @@@ void OSD::do_command(Connection *con, t
        ss << "failed to open file '" << file_name << "'";
        r = -EINVAL;
        goto out;
 -      }
 +    }
  
 -      std::set <pg_t> keys;
 -      for (hash_map<pg_t, PG*>::const_iterator pg_map_e = pg_map.begin();
 -         pg_map_e != pg_map.end(); ++pg_map_e) {
 -      keys.insert(pg_map_e->first);
 +    std::set <pg_t> keys;
 +    for (hash_map<pg_t, PG*>::const_iterator pg_map_e = pg_map.begin();
 +       pg_map_e != pg_map.end(); ++pg_map_e) {
 +      keys.insert(pg_map_e->first);
 +    }
 +
 +    fout << "*** osd " << whoami << ": dump_missing ***" << std::endl;
 +    for (std::set <pg_t>::iterator p = keys.begin();
 +       p != keys.end(); ++p) {
 +      hash_map<pg_t, PG*>::iterator q = pg_map.find(*p);
 +      assert(q != pg_map.end());
 +      PG *pg = q->second;
 +      pg->lock();
 +
 +      fout << *pg << std::endl;
-       std::map<hobject_t, pg_missing_t::item>::iterator mend = pg->missing.missing.end();
-       std::map<hobject_t, pg_missing_t::item>::iterator mi = pg->missing.missing.begin();
++      std::map<hobject_t, pg_missing_t::item>::const_iterator mend =
++      pg->pg_log.get_missing().missing.end();
++      std::map<hobject_t, pg_missing_t::item>::const_iterator mi =
++      pg->pg_log.get_missing().missing.begin();
 +      for (; mi != mend; ++mi) {
 +      fout << mi->first << " -> " << mi->second << std::endl;
 +      map<hobject_t, set<int> >::const_iterator mli =
 +        pg->missing_loc.find(mi->first);
 +      if (mli == pg->missing_loc.end())
 +        continue;
 +      const set<int> &mls(mli->second);
 +      if (mls.empty())
 +        continue;
 +      fout << "missing_loc: " << mls << std::endl;
        }
 -
 -      fout << "*** osd " << whoami << ": dump_missing ***" << std::endl;
 -      for (std::set <pg_t>::iterator p = keys.begin();
 -         p != keys.end(); ++p) {
 -      hash_map<pg_t, PG*>::iterator q = pg_map.find(*p);
 -      assert(q != pg_map.end());
 -      PG *pg = q->second;
 -      pg->lock();
 -
 -      fout << *pg << std::endl;
 -      std::map<hobject_t, pg_missing_t::item>::const_iterator mend =
 -        pg->pg_log.get_missing().missing.end();
 -      std::map<hobject_t, pg_missing_t::item>::const_iterator mi =
 -        pg->pg_log.get_missing().missing.begin();
 -      for (; mi != mend; ++mi) {
 -        fout << mi->first << " -> " << mi->second << std::endl;
 -        map<hobject_t, set<int> >::const_iterator mli =
 -          pg->missing_loc.find(mi->first);
 -        if (mli == pg->missing_loc.end())
 -          continue;
 -        const set<int> &mls(mli->second);
 -        if (mls.empty())
 -          continue;
 -        fout << "missing_loc: " << mls << std::endl;
 -      }
 -      pg->unlock();
 -      fout << std::endl;
 -      }
 -
 -      fout.close();
 +      pg->unlock();
 +      fout << std::endl;
      }
 -    else if (cmd.size() == 3 && cmd[1] == "kick_recovery_wq") {
 -      r = g_conf->set_val("osd_recovery_delay_start", cmd[2].c_str());
 -      if (r != 0) {
 -      ss << "kick_recovery_wq: error setting "
 -         << "osd_recovery_delay_start to '" << cmd[2] << "': error "
 -         << r;
 -      goto out;
 -      }
 -      g_conf->apply_changes(NULL);
 -      ss << "kicking recovery queue. set osd_recovery_delay_start "
 -       << "to " << g_conf->osd_recovery_delay_start;
 -      defer_recovery_until = ceph_clock_now(g_ceph_context);
 -      defer_recovery_until += g_conf->osd_recovery_delay_start;
 -      recovery_wq.wake();
 +
 +    fout.close();
 +  }
 +  else if (prefix == "debug kick_recovery_wq") {
 +    int64_t delay;
 +    cmd_getval(g_ceph_context, cmdmap, "delay", delay);
 +    ostringstream oss;
 +    oss << delay;
 +    r = g_conf->set_val("osd_recovery_delay_start", oss.str().c_str());
 +    if (r != 0) {
 +      ss << "kick_recovery_wq: error setting "
 +       << "osd_recovery_delay_start to '" << delay << "': error "
 +       << r;
 +      goto out;
      }
 +    g_conf->apply_changes(NULL);
 +    ss << "kicking recovery queue. set osd_recovery_delay_start "
 +       << "to " << g_conf->osd_recovery_delay_start;
 +    defer_recovery_until = ceph_clock_now(g_ceph_context);
 +    defer_recovery_until += g_conf->osd_recovery_delay_start;
 +    recovery_wq.wake();
    }
  
 -  else if (cmd[0] == "cpu_profiler") {
 -    cpu_profiler_handle_command(cmd, ss);
 +  else if (prefix == "cpu_profiler") {
 +    string arg;
 +    cmd_getval(g_ceph_context, cmdmap, "arg", arg);
 +    vector<string> argvec;
 +    get_str_vec(arg, argvec);
 +    cpu_profiler_handle_command(argvec, ds);
    }
  
 -  else if (cmd[0] == "dump_pg_recovery_stats") {
 +  else if (prefix == "dump_pg_recovery_stats") {
      stringstream s;
      pg_recovery_stats.dump(s);
 -    ss << "dump pg recovery stats: " << s.str();
 +    ds << "dump pg recovery stats: " << s.str();
    }
  
 -  else if (cmd[0] == "reset_pg_recovery_stats") {
 +  else if (prefix == "reset_pg_recovery_stats") {
      ss << "reset pg recovery stats";
      pg_recovery_stats.reset();
    }
index fff754a1d76a47bc2ac5f1b9a419261b7b3ceddf,91241fa26cbf5569cc0b0a8333e81152a693e885..aa3dedca9a8853fc25aab4d7713e33f2131febbe
@@@ -264,30 -264,9 +266,30 @@@ int ReplicatedPG::get_pgls_filter(buffe
  int ReplicatedPG::do_command(vector<string>& cmd, ostream& ss,
                             bufferlist& idata, bufferlist& odata)
  {
+   const pg_missing_t &missing = pg_log.get_missing();
 +  map<string, cmd_vartype> cmdmap;
 +  string prefix;
  
 -  if (cmd.size() && cmd[0] == "query") {
 +  if (cmd.empty()) {
 +    ss << "no command given";
 +    return -EINVAL;
 +  }
 +
 +  stringstream ss2;
 +  if (!cmdmap_from_json(cmd, &cmdmap, ss2)) {
 +    ss << ss2.str();
 +    return -EINVAL;
 +  }
 +
 +  cmd_getval(g_ceph_context, cmdmap, "prefix", prefix);
 +  if (prefix != "pg") {
 +    ss << "ReplicatedPG::do_command: not pg command";
 +    return -EINVAL;
 +  }
 +
 +  string command;
 +  cmd_getval(g_ceph_context, cmdmap, "cmd", command);
 +  if (command == "query") {
      JSONFormatter jsf(true);
      jsf.open_object_section("pg");
      jsf.dump_string("state", pg_state_string(get_state()));
Simple merge
diff --cc src/vstart.sh
Simple merge