map<int, map<string,ObjectDesc> > pool_obj_cont;
set<string> oid_in_use;
set<string> oid_not_in_use;
+ set<string> oid_flushing;
+ set<string> oid_not_flushing;
SharedPtrRegistry<int, int> snaps_in_use;
int current_snap;
string pool_name;
// leave object in unused list so that we race with other operations
//context->oid_in_use.insert(oid);
//context->oid_not_in_use.erase(oid);
+ context->oid_flushing.insert(oid);
+ context->oid_not_flushing.erase(oid);
context->state_lock.Unlock();
unsigned flags = librados::OPERATION_IGNORE_CACHE;
assert(completion->is_complete());
//context->oid_in_use.erase(oid);
//context->oid_not_in_use.insert(oid);
+ context->oid_flushing.erase(oid);
+ context->oid_not_flushing.insert(oid);
int r = completion->get_return_value();
cout << num << ": got " << cpp_strerror(r) << std::endl;
if (r == 0) {
stringstream oid;
oid << m_op;
cout << m_op << ": write initial oid " << oid.str() << std::endl;
+ context.oid_not_flushing.insert(oid.str());
return new WriteOp(m_op, &context, oid.str());
} else if (m_op >= m_ops) {
return NULL;
case TEST_OP_IS_DIRTY:
{
- oid = *(rand_choose(context.oid_not_in_use));
+ oid = *(rand_choose(context.oid_not_flushing));
cout << "is_dirty oid " << oid << std::endl;
return new IsDirtyOp(m_op, &context, oid, m_stats);
}