: TestFileStoreState(NULL),
m_num_ops(-1),
m_destroy_coll_every_nr_runs(def_destroy_coll_every_nr_runs),
- m_nr_runs(0),
- m_num_colls(def_num_colls),
- m_lock("State Lock")
+ m_num_colls(def_num_colls)
{
int err = 0;
+ m_nr_runs.set(0);
+
init_args(args);
dout(0) << "data = " << g_conf->osd_data << dendl;
dout(0) << "journal = " << g_conf->osd_journal << dendl;
size_t bytes = get_random_byte_amount(min_write_bytes, max_write_bytes);
bufferlist bl;
get_filled_byte_array(bl, bytes);
+
+ dout(0) << __func__ << " " << coll << "/" << obj
+ << " size " << bl.length() << dendl;
t->write(coll, obj, 0, bl.length(), bl);
}
bufferlist bl;
get_filled_byte_array(bl, size);
+
+ dout(0) << __func__ << " " << coll << "/" << obj << " size " << size << dendl;
t->setattr(coll, obj, "objxattr", bl);
}
bufferlist bl;
get_filled_byte_array(bl, size);
+ dout(0) << __func__ << " coll " << coll << " size " << size << dendl;
t->collection_setattr(coll, "collxattr", bl);
}
{
bufferlist bl;
get_filled_byte_array(bl, log_append_bytes);
-// hobject_t log_obj = get_coll_meta_object(coll);
hobject_t log_obj = entry->m_meta_obj;
+
+ dout(0) << __func__ << " coll " << entry->m_coll << " "
+ << META_COLL << " /" << log_obj << " (" << bl.length() << ")" << dendl;
+
uint64_t s = pg_log_size[entry->m_coll];
t->write(META_COLL, log_obj, s, bl.length(), bl);
pg_log_size[entry->m_coll] += bl.length();
void WorkloadGenerator::do_destroy_collection(ObjectStore::Transaction *t,
coll_entry_t *entry)
{
- m_nr_runs = 0;
+ m_nr_runs.set(0);
entry->m_osr.flush();
vector<hobject_t> ls;
m_store->collection_list(entry->m_coll, ls);
- dout(0) << "Destroying collection '" << entry->m_coll.to_str()
- << "' (" << ls.size() << " objects)" << dendl;
+ dout(0) << __func__ << " coll " << entry->m_coll
+ << " (" << ls.size() << " objects)" << dendl;
vector<hobject_t>::iterator it;
for (it = ls.begin(); it < ls.end(); it++) {
break;
}
- m_lock.Lock();
+ dout(5) << __func__
+ << " m_finished_lock is-locked: " << m_finished_lock.is_locked()
+ << " in-flight: " << m_in_flight.read()
+ << dendl;
+
wait_for_ready();
ObjectStore::Transaction *t = new ObjectStore::Transaction;
queue_tx:
m_store->queue_transaction(&(entry->m_osr), t, c);
- m_in_flight++;
- m_lock.Unlock();
+
+ inc_in_flight();
ops_run ++;
} while (true);
+ dout(0) << __func__ << " waiting for "
+ << m_in_flight.read() << " in-flight transactions" << dendl;
+
wait_for_done();
+
+ dout(0) << __func__ << " finishing" << dendl;
}
void WorkloadGenerator::print_results()
def_args.push_back("--osd-data");
def_args.push_back("workload_gen_dir");
def_args.push_back("--osd-journal");
- def_args.push_back("workload_gen_journal");
+ def_args.push_back("workload_gen_dir/journal");
argv_to_vec(argc, argv, args);
global_init(&def_args, args,
private:
int m_num_ops;
int m_destroy_coll_every_nr_runs;
- int m_nr_runs;
+ atomic_t m_nr_runs;
int m_num_colls;
map<coll_t, uint64_t> pg_log_size;
- Mutex m_lock;
- Cond m_cond;
-
void init_args(vector<const char*> args);
int get_uniform_random_value(int min, int max);
void do_append_log(ObjectStore::Transaction *t, coll_entry_t *entry);
bool should_destroy_collection() {
- return (m_nr_runs >= m_destroy_coll_every_nr_runs);
+ return ((int)m_nr_runs.read() >= m_destroy_coll_every_nr_runs);
}
void do_destroy_collection(ObjectStore::Transaction *t, coll_entry_t *entry);
coll_entry_t *do_create_collection(ObjectStore::Transaction *t);
void finish(int r)
{
TestFileStoreState::C_OnFinished::finish(r);
- Mutex::Locker locker(wrkldgen_state->m_lock);
- wrkldgen_state->m_nr_runs++;
+ wrkldgen_state->m_nr_runs.inc();
}
};