]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
ceph_test_rados: add --localize_reads option
authorSage Weil <sage@redhat.com>
Thu, 22 Aug 2019 21:29:39 +0000 (16:29 -0500)
committerSamuel Just <sjust@redhat.com>
Fri, 20 Dec 2019 01:35:36 +0000 (17:35 -0800)
Same as balance_reads, but sets the LOCALIZE_READS op flag on read ops.

Signed-off-by: Sage Weil <sage@redhat.com>
src/test/osd/RadosModel.h
src/test/osd/TestRados.cc

index c6a6cd3633cd2c0df62133c26fdd39928a7efa0e..0825ae93863fbdf050e03de9f15a849cf2653361 100644 (file)
@@ -1204,6 +1204,7 @@ public:
   ObjectDesc old_value;
   int snap;
   bool balance_reads;
+  bool localize_reads;
 
   std::shared_ptr<int> in_use;
 
@@ -1230,12 +1231,14 @@ public:
         RadosTestContext *context,
         const string &oid,
         bool balance_reads,
+        bool localize_reads,
         TestOpStat *stat = 0)
     : TestOp(n, context, stat),
       completions(3),
       oid(oid),
       snap(0),
       balance_reads(balance_reads),
+      localize_reads(localize_reads),
       results(3),
       retvals(3),
       extent_results(3),
@@ -1339,6 +1342,8 @@ public:
     unsigned flags = 0;
     if (balance_reads)
       flags |= librados::OPERATION_BALANCE_READS;
+    if (localize_reads)
+      flags |= librados::OPERATION_LOCALIZE_READS;
 
     ceph_assert(!context->io_ctx.aio_operate(context->prefix+oid, completions[0], &op,
                                        flags, NULL));
@@ -1985,6 +1990,7 @@ public:
   ObjectDesc tgt_value;
   int snap;
   bool balance_reads;
+  bool localize_reads;
 
   std::shared_ptr<int> in_use;
 
@@ -2006,12 +2012,14 @@ public:
         const string &oid,
         const string &tgt_pool_name,
         bool balance_reads,
+        bool localize_reads,
         TestOpStat *stat = 0)
     : TestOp(n, context, stat),
       completions(2),
       oid(oid),
       snap(0),
       balance_reads(balance_reads),
+      localize_reads(localize_reads),
       results(2),
       retvals(2),
       waiting_on(0),
@@ -2106,6 +2114,8 @@ public:
     unsigned flags = 0;
     if (balance_reads)
       flags |= librados::OPERATION_BALANCE_READS;
+    if (localize_reads)
+      flags |= librados::OPERATION_LOCALIZE_READS;
 
     ceph_assert(!context->io_ctx.aio_operate(context->prefix+oid, completions[0], &op,
                                        flags, NULL));
index dc6b42c80bad3f29cc1eed5d42485dd7d1a5b955..6bee4e44391e7775a617d23b7e9147f95a82f698 100644 (file)
@@ -29,6 +29,7 @@ public:
                        int max_seconds,
                        bool ec_pool,
                        bool balance_reads,
+                       bool localize_reads,
                        bool set_redirect,
                        bool set_chunk,
                        bool enable_dedup) :
@@ -37,6 +38,7 @@ public:
     m_total_weight(0),
     m_ec_pool(ec_pool),
     m_balance_reads(balance_reads),
+    m_localize_reads(localize_reads),
     m_set_redirect(set_redirect),
     m_set_chunk(set_chunk),
     m_enable_dedup(enable_dedup)
@@ -282,7 +284,8 @@ private:
     switch (type) {
     case TEST_OP_READ:
       oid = *(rand_choose(context.oid_not_in_use));
-      return new ReadOp(m_op, &context, oid, m_balance_reads, m_stats);
+      return new ReadOp(m_op, &context, oid, m_balance_reads, m_localize_reads,
+                       m_stats);
 
     case TEST_OP_WRITE:
       oid = *(rand_choose(context.oid_not_in_use));
@@ -455,6 +458,7 @@ private:
   unsigned int m_total_weight;
   bool m_ec_pool;
   bool m_balance_reads;
+  bool m_localize_reads;
   bool m_set_redirect;
   bool m_set_chunk;
   bool m_enable_dedup;
@@ -511,6 +515,7 @@ int main(int argc, char **argv)
   bool no_omap = false;
   bool no_sparse = false;
   bool balance_reads = false;
+  bool localize_reads = false;
   bool set_redirect = false;
   bool set_chunk = false;
   bool enable_dedup = false;
@@ -538,6 +543,8 @@ int main(int argc, char **argv)
       no_sparse = true;
     else if (strcmp(argv[i], "--balance_reads") == 0)
       balance_reads = true;
+    else if (strcmp(argv[i], "--localize_reads") == 0)
+      localize_reads = true;
     else if (strcmp(argv[i], "--pool-snaps") == 0)
       pool_snaps = true;
     else if (strcmp(argv[i], "--write-fadvise-dontneed") == 0)
@@ -665,7 +672,8 @@ int main(int argc, char **argv)
   WeightedTestGenerator gen = WeightedTestGenerator(
     ops, objects,
     op_weights, &stats, max_seconds,
-    ec_pool, balance_reads, set_redirect, set_chunk, enable_dedup);
+    ec_pool, balance_reads, localize_reads,
+    set_redirect, set_chunk, enable_dedup);
   int r = context.init();
   if (r < 0) {
     cerr << "Error initializing rados test context: "