]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mon: allow 'mds dump [epoch]'
authorSage Weil <sage@newdream.net>
Fri, 13 Mar 2009 22:23:25 +0000 (15:23 -0700)
committerSage Weil <sage@newdream.net>
Fri, 13 Mar 2009 22:23:25 +0000 (15:23 -0700)
So we can examine old mdsmap epochs...

src/mon/MDSMonitor.cc

index b2bf3e524a4d0ec990998345003ace4c456d0818..67c14fee994a7d7bd801b82933c5dd24e46b724a 100644 (file)
@@ -362,11 +362,28 @@ bool MDSMonitor::preprocess_command(MMonCommand *m)
       r = 0;
     } 
     else if (m->cmd[1] == "dump") {
-      stringstream ds;
-      mdsmap.print(ds);
-      rdata.append(ds);
-      ss << "dumped mdsmap epoch " << mdsmap.get_epoch();
-      r = 0;
+      MDSMap *p = &mdsmap;
+      if (m->cmd.size() > 2) {
+       epoch_t e = atoi(m->cmd[2].c_str());
+       bufferlist b;
+       mon->store->get_bl_sn(b,"mdsmap",e);
+       if (!b.length()) {
+         p = 0;
+         r = -ENOENT;
+       } else {
+         p = new MDSMap;
+         p->decode(b);
+       }
+      }
+      if (p) {
+       stringstream ds;
+       p->print(ds);
+       rdata.append(ds);
+       ss << "dumped mdsmap epoch " << p->get_epoch();
+       if (p != &mdsmap)
+         delete p;
+       r = 0;
+      }
     }
     else if (m->cmd[1] == "getmap") {
       mdsmap.encode(rdata);