]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
cephtool: restore osdmap handler
authorSage Weil <sage@inktank.com>
Sat, 19 May 2012 16:44:00 +0000 (09:44 -0700)
committerSage Weil <sage@inktank.com>
Sat, 19 May 2012 16:44:00 +0000 (09:44 -0700)
Accidentally removed by 841372494f531c7481cf3eff1b673cedbab4d60d.

Signed-off-by: Sage Weil <sage@inktank.com>
src/tools/common.cc

index 752cf506dd2a7148823f28ccdf3d2f2890a13e7b..3b1cb741df2e54b25696809f01630fe1c0d9c6c9 100644 (file)
@@ -87,6 +87,19 @@ OSDMap *osdmap = 0;
 
 static set<int> registered, seen;
 
+static void handle_osd_map(CephToolCtx *ctx, MOSDMap *m)
+{
+  epoch_t e = m->get_first();
+  assert(m->maps.count(e));
+  ctx->lock.Lock();
+  delete osdmap;
+  osdmap = new OSDMap;
+  osdmap->decode(m->maps[e]);
+  cmd_cond.Signal();
+  ctx->lock.Unlock();
+  m->put();
+}
+
 static void handle_ack(CephToolCtx *ctx, MMonCommandAck *ack)
 {
   ctx->lock.Lock();
@@ -508,6 +521,9 @@ bool Admin::ms_dispatch(Message *m) {
   case CEPH_MSG_MON_MAP:
     m->put();
     break;
+  case CEPH_MSG_OSD_MAP:
+    handle_osd_map(ctx, (MOSDMap *)m);
+    break;
   case MSG_LOG:
    {
     MLog *mlog = (MLog*) m;