]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
rbd-replay: Add --pool option
authorAdam Crume <adamcrume@gmail.com>
Tue, 22 Jul 2014 23:09:29 +0000 (16:09 -0700)
committerSage Weil <sage@redhat.com>
Thu, 21 Aug 2014 17:57:31 +0000 (10:57 -0700)
Signed-off-by: Adam Crume <adamcrume@gmail.com>
src/rbd_replay/Replayer.cc
src/rbd_replay/Replayer.hpp
src/rbd_replay/rbd-replay.cc

index afd45ec59a40e252983fa5e2b74e04c5591a956a..c7de2062b1e1bf066fa7e784839e04e5ea24215f 100644 (file)
@@ -130,7 +130,8 @@ bool Worker::readonly() const {
 
 
 Replayer::Replayer(int num_action_trackers)
-  : m_num_action_trackers(num_action_trackers),
+  : m_pool_name("rbd"),
+    m_num_action_trackers(num_action_trackers),
     m_action_trackers(new action_tracker_d[m_num_action_trackers]) {
   assertf(num_action_trackers > 0, "num_action_trackers = %d", num_action_trackers);
 }
@@ -159,8 +160,7 @@ void Replayer::run(const std::string replay_file) {
     }
     m_ioctx = new librados::IoCtx();
     {
-      const char* pool_name = "rbd";
-      r = rados.ioctx_create(pool_name, *m_ioctx);
+      r = rados.ioctx_create(m_pool_name.c_str(), *m_ioctx);
       if (r) {
        cerr << "Unable to create IoCtx: " << r << std::endl;
        goto out2;
@@ -296,3 +296,11 @@ bool Replayer::readonly() const {
 void Replayer::set_readonly(bool readonly) {
   m_readonly = readonly;
 }
+
+string Replayer::pool_name() const {
+  return m_pool_name;
+}
+
+void Replayer::set_pool_name(string pool_name) {
+  m_pool_name = pool_name;
+}
index f88eb55194d268ea4d5d69d76f191ea963bf9fab..870fabf2ecc80036b5d8e3475631dd22f74697c7 100644 (file)
@@ -96,6 +96,10 @@ public:
 
   void wait_for_actions(const std::vector<dependency_d> &deps);
 
+  std::string pool_name() const;
+
+  void set_pool_name(std::string pool_name);
+
   void set_latency_multiplier(float f);
 
   bool readonly() const;
@@ -120,6 +124,7 @@ private:
 
   librbd::RBD* m_rbd;
   librados::IoCtx* m_ioctx;
+  std::string m_pool_name;
   float m_latency_multiplier;
   bool m_readonly;
 
index 94be674662caed83f9b142a32dfc5def1272b0fe..bb95787fa4af1bdbcbc6de64d7bc628f1444bcfc 100644 (file)
@@ -36,6 +36,7 @@ static const char* get_remainder(const char *string, const char *prefix) {
 static void usage(const char* program) {
   cout << "Usage: " << program << " --conf=<config_file> <replay_file>" << std::endl;
   cout << "Options:" << std::endl;
+  cout << "  -p, --pool-name <pool>          Name of the pool to use.  Default: rbd" << std::endl;
   cout << "  --latency-multiplier <float>    Multiplies inter-request latencies.  Default: 1" << std::endl;
   cout << "  --read-only                     Only perform non-destructive operations." << std::endl;
 }
@@ -48,6 +49,7 @@ int main(int argc, const char **argv) {
   global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0);
 
   std::vector<const char*>::iterator i;
+  string pool_name = "rbd";
   float latency_multiplier = 1;
   bool readonly = false;
   std::string val;
@@ -55,6 +57,8 @@ int main(int argc, const char **argv) {
   for (i = args.begin(); i != args.end(); ) {
     if (ceph_argparse_double_dash(args, i)) {
       break;
+    } else if (ceph_argparse_witharg(args, i, &val, "-p", "--pool", (char*)NULL)) {
+      pool_name = val;
     } else if (ceph_argparse_withfloat(args, i, &latency_multiplier, &err, "--latency-multiplier",
                                     (char*)NULL)) {
       if (!err.str().empty()) {
@@ -89,6 +93,7 @@ int main(int argc, const char **argv) {
   unsigned int nthreads = boost::thread::hardware_concurrency();
   Replayer replayer(2 * nthreads + 1);
   replayer.set_latency_multiplier(latency_multiplier);
+  replayer.set_pool_name(pool_name);
   replayer.set_readonly(readonly);
   replayer.run(replay_file);
 }