From a8f39ccf443b4388ef9a6f3a415372cab1a73d10 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Fri, 13 Mar 2009 15:23:25 -0700 Subject: [PATCH] mon: allow 'mds dump [epoch]' So we can examine old mdsmap epochs... --- src/mon/MDSMonitor.cc | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/src/mon/MDSMonitor.cc b/src/mon/MDSMonitor.cc index b2bf3e524a4d0..67c14fee994a7 100644 --- a/src/mon/MDSMonitor.cc +++ b/src/mon/MDSMonitor.cc @@ -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); -- 2.39.5