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);
}
}
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;
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;
+}
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;
librbd::RBD* m_rbd;
librados::IoCtx* m_ioctx;
+ std::string m_pool_name;
float m_latency_multiplier;
bool m_readonly;
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;
}
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;
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()) {
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);
}