RollbackOp(int n,
RadosTestContext *context,
const string &_oid,
- int snap,
TestOpStat *stat = 0)
: TestOp(n, context, stat),
oid(_oid),
- roll_back_to(snap), done(false)
+ roll_back_to(-1), done(false)
{}
void _begin()
context->state_lock.Unlock();
return;
}
+
+ if (context->snaps.empty()) {
+ context->kick();
+ context->state_lock.Unlock();
+ done = true;
+ return;
+ }
+
context->oid_in_use.insert(oid);
context->oid_not_in_use.erase(oid);
+
+ roll_back_to = rand_choose(context->snaps)->first;
context->snaps_in_use.insert(roll_back_to);
+ cout << "rollback oid " << oid << " to " << roll_back_to << std::endl;
+
context->roll_back(oid, roll_back_to);
uint64_t snap = context->snaps[roll_back_to];
}
case TEST_OP_ROLLBACK:
- if (context.snaps.empty()) {
- return NULL;
- }
{
- int snap = rand_choose(context.snaps)->first;
string oid = *(rand_choose(context.oid_not_in_use));
- cout << "rollback oid " << oid << " to " << snap << std::endl;
- return new RollbackOp(m_op, &context, oid, snap);
+ cout << "rollback oid " << oid << std::endl;
+ return new RollbackOp(m_op, &context, oid);
}
case TEST_OP_SETATTR: