]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
test/osd/RadosModel.h: select and reserve roll_back_to atomically
authorSamuel Just <sam.just@inktank.com>
Wed, 30 Oct 2013 23:12:19 +0000 (16:12 -0700)
committerSage Weil <sage@inktank.com>
Fri, 1 Nov 2013 23:00:12 +0000 (16:00 -0700)
Signed-off-by: Samuel Just <sam.just@inktank.com>
Reviewed-by: Sage Weil <sage@inktank.com>
src/test/osd/RadosModel.h
src/test/osd/TestRados.cc

index ac2f336f1101e1c72c74cb2d2af95cb328e160f0..902d4b970c3df06babd51ed7625a85e4e1adecc3 100644 (file)
@@ -1325,11 +1325,10 @@ public:
   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()
@@ -1340,10 +1339,22 @@ public:
       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];
 
index 842f9d2bca3e1c2d936e20cd77aa4f231bd2b216..0c1d55c7777e6affa23c749b1b51003b59b5bc2f 100644 (file)
@@ -123,14 +123,10 @@ private:
       }
 
     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: