]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
src/test: make TierFlushOp to set snapshot
authormyoungwon oh <ohmyoungwon@gmail.com>
Wed, 10 Feb 2021 02:55:12 +0000 (11:55 +0900)
committermyoungwon oh <ohmyoungwon@gmail.com>
Mon, 29 Mar 2021 08:11:24 +0000 (17:11 +0900)
Signed-off-by: Myoungwon Oh <myoungwon.oh@samsung.com>
src/test/osd/RadosModel.h

index f19d63bb711f8abc08f554e6f50b5c7f213ef5a1..22c6501121d9fc2e52aff29d8750362182b975e1 100644 (file)
@@ -2756,6 +2756,7 @@ public:
   librados::ObjectReadOperation op;
   string oid;
   std::shared_ptr<int> in_use;
+  int snap;
 
   TierFlushOp(int n,
               RadosTestContext *context,
@@ -2763,7 +2764,8 @@ public:
               TestOpStat *stat)
     : TestOp(n, context, stat),
       completion(NULL),
-      oid(oid)
+      oid(oid),
+      snap(-1)
   {}
 
   void _begin() override
@@ -2773,6 +2775,17 @@ public:
     context->oid_in_use.insert(oid);
     context->oid_not_in_use.erase(oid);
 
+    if (0 && !(rand() % 4) && !context->snaps.empty()) {
+      snap = rand_choose(context->snaps)->first;
+      in_use = context->snaps_in_use.lookup_or_create(snap, snap);
+    } else {
+      snap = -1;
+    }
+
+    if (snap >= 0) {
+      context->io_ctx.snap_set_read(context->snaps[snap]);
+    }
+
     pair<TestOp*, TestOp::CallbackInfo*> *cb_arg =
       new pair<TestOp*, TestOp::CallbackInfo*>(this,
                                               new TestOp::CallbackInfo(0));
@@ -2785,6 +2798,10 @@ public:
     int r = context->io_ctx.aio_operate(context->prefix+oid, completion,
                                        &op, flags, NULL);
     ceph_assert(!r);
+
+    if (snap >= 0) {
+      context->io_ctx.snap_set_read(0);
+    }
   }
 
   void _finish(CallbackInfo *info) override
@@ -2800,7 +2817,7 @@ public:
     } else {
       ceph_abort_msg("shouldn't happen");
     }
-    context->update_object_version(oid, completion->get_version64());
+    context->update_object_version(oid, completion->get_version64(), snap);
     context->oid_in_use.erase(oid);
     context->oid_not_in_use.insert(oid);
     context->kick();