]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
dumper: rework slightly to prevent incorrect usage of g_conf.id.
authorGreg Farnum <gregory.farnum@dreamhost.com>
Tue, 25 Jan 2011 22:07:48 +0000 (14:07 -0800)
committerGreg Farnum <gregory.farnum@dreamhost.com>
Tue, 25 Jan 2011 22:12:32 +0000 (14:12 -0800)
Signed-off-by: Greg Farnum <gregory.farnum@dreamhost.com>
src/cmds.cc
src/mds/Dumper.cc
src/mds/Dumper.h

index 8bed0f7d5af027f76368d1a9707d0684ba23d206..647155b3ac0c8f20b8d1cd568f5f63b2a8f4ec32 100644 (file)
@@ -38,11 +38,14 @@ using namespace std;
 
 void usage()
 {
-  derr << "usage: cmds -i name [flags] [--mds rank] [[--journal_check]|[--hot-standby][rank]]\n"
+  derr << "usage: cmds -i name [flags] [[--journal_check]|[--hot-standby][rank]]\n"
        << "  -m monitorip:port\n"
        << "        connect to monitor at given address\n"
        << "  --debug_mds n\n"
-       << "        debug MDS level (e.g. 10)\n" << dendl;
+       << "        debug MDS level (e.g. 10)\n"
+       << "  --dump-journal rank [filename]"
+       << "        dump the MDS journal for rank. Defaults to mds.journal.dump"
+       << dendl;
   generic_server_usage();
 }
 
@@ -70,10 +73,18 @@ int main(int argc, const char **argv)
     if (!strcmp(args[i], "--dump-journal")) {
       if (i + 1 < args.size() &&
           (args[i+1][0] != '-')) { // another argument?
-        dump_file = args[i+1];
+        shadow = strtol(args[i+1], 0, 0);
+        if (i + 2 < args.size() &&
+            (args[i+2][0] != '-')) {
+          dump_file = args[i+2];
+          ++i;
+        } else
+          dump_file = "mds.journal.dump";
         ++i;
-      } else
-        dump_file = "mds.journal.dump";
+      } else {
+        cout << "must specify rank of mds to dump!" << std::endl;
+        return -1;
+      }
       dump_journal = true;
       dout(0) << "dumping journal" << dendl;
     } else if (!strcmp(args[i], "--journal_check")) {
@@ -118,7 +129,7 @@ int main(int argc, const char **argv)
       usage();
     }
   }
-  if (!g_conf.id) {
+  if (!g_conf.id && !dump_journal) {
     derr << "must specify '-i name' with the cmds instance name" << dendl;
     usage();
   }
@@ -135,7 +146,7 @@ int main(int argc, const char **argv)
   messenger->bind();
   if (dump_journal) {
     Dumper *journal_dumper = new Dumper(messenger, &mc);
-    journal_dumper->init();
+    journal_dumper->init(shadow);
     journal_dumper->dump(dump_file);
     mc.shutdown();
   } else {
index 93c810ea39d4ff0ca62c363e38a41bfdea9c0bcf..6a30dfc7bfd7af9b07be144b6c0de430152d1699 100644 (file)
@@ -36,9 +36,9 @@ bool Dumper::ms_get_authorizer(int dest_type, AuthAuthorizer **authorizer,
   return *authorizer != NULL;
 }
 
-void Dumper::init() 
+void Dumper::init(int rank
 {
-  inodeno_t ino = MDS_INO_LOG_OFFSET + strtol(g_conf.id, 0, 0);
+  inodeno_t ino = MDS_INO_LOG_OFFSET + rank;
   unsigned pg_pool = CEPH_METADATA_RULE;
   osdmap = new OSDMap();
   objecter = new Objecter(messenger, monc, osdmap, lock, timer);
index c4a53f06dbb70e2cdc0cc82d17a7bd36f5f83443..580455060950ddc976e90b232760849c231f2ee6 100644 (file)
@@ -71,7 +71,7 @@ public:
   void ms_handle_remote_reset(Connection *con) {}
   bool ms_get_authorizer(int dest_type, AuthAuthorizer **authorizer,
                          bool force_new);
-  void init();
+  void init(int rank);
   void shutdown();
   void dump(const char *dumpfile);
 };