]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
include: codify the ownership change of the map
authorPatrick Donnelly <pdonnell@redhat.com>
Thu, 12 Dec 2019 18:44:50 +0000 (10:44 -0800)
committerPatrick Donnelly <pdonnell@redhat.com>
Mon, 16 Dec 2019 21:16:41 +0000 (13:16 -0800)
Caller must explicitly std::move it.

Signed-off-by: Patrick Donnelly <pdonnell@redhat.com>
src/include/interval_set.h
src/osd/PGBackend.h
src/osd/PrimaryLogPG.cc
src/osd/ReplicatedBackend.cc
src/osd/ReplicatedBackend.h

index 35c842b66b2bf1704e81c771d2d9ca7bdc6ba089..3b7b0b82b7e3635dcdd23e9adcb3bb7cf3f906f7 100644 (file)
@@ -160,7 +160,7 @@ class interval_set {
   };
 
   interval_set() : _size(0) {}
-  interval_set(Map& other) {
+  interval_set(Map&& other) {
     m.swap(other);
     _size = 0;
     for (auto& i : m) {
index 513c62763352db7d1694ffcb1bdbbf8011ef8e4b..67ce20118c11e46d4e6fe183821ae759d57c2b47 100644 (file)
@@ -565,7 +565,7 @@ typedef std::shared_ptr<const OSDMap> OSDMapRef;
 
    virtual int objects_readv_sync(
      const hobject_t &hoid,
-     map<uint64_t, uint64_t>& m,
+     map<uint64_t, uint64_t>&& m,
      uint32_t op_flags,
      bufferlist *bl) {
      return -EOPNOTSUPP;
index 579b023914b24ed1a86cec4c35e9355f715bc59f..bab42a1ab8cb98a1d056411bf8ed73d5b4a8c64b 100644 (file)
@@ -5574,7 +5574,7 @@ int PrimaryLogPG::do_sparse_read(OpContext *ctx, OSDOp& osd_op) {
     }
 
     bufferlist data_bl;
-    r = pgbackend->objects_readv_sync(soid, m, op.flags, &data_bl);
+    r = pgbackend->objects_readv_sync(soid, std::move(m), op.flags, &data_bl);
     if (r == -EIO) {
       r = rep_repair_primary_object(soid, ctx);
     }
index 3a345107354f8359c3d8c5033c41560019fdceba..ae06235a9c72a65cf03510e9dffe02daaee6ec67 100644 (file)
@@ -257,11 +257,11 @@ int ReplicatedBackend::objects_read_sync(
 
 int ReplicatedBackend::objects_readv_sync(
   const hobject_t &hoid,
-  map<uint64_t, uint64_t>& m,
+  map<uint64_t, uint64_t>&& m,
   uint32_t op_flags,
   bufferlist *bl)
 {
-  interval_set<uint64_t> im(m);
+  interval_set<uint64_t> im(std::move(m));
   auto r = store->readv(ch, ghobject_t(hoid), im, *bl, op_flags);
   if (r >= 0) {
     m = std::move(im).detach();
@@ -2081,7 +2081,7 @@ int ReplicatedBackend::build_push_op(const ObjectRecoveryInfo &recovery_info,
       int r = store->fiemap(ch, ghobject_t(recovery_info.soid), 0,
                             copy_subset.range_end(), m);
       if (r >= 0)  {
-        interval_set<uint64_t> fiemap_included(m);
+        interval_set<uint64_t> fiemap_included(std::move(m));
         copy_subset.intersection_of(fiemap_included);
       } else {
         // intersection of copy_subset and empty interval_set would be empty anyway
index 4e272e492ee947b65c4fa5bdcf328165413402c1..e6beffcc91648ae6c10878735002ead64d73d908 100644 (file)
@@ -151,7 +151,7 @@ public:
 
   int objects_readv_sync(
     const hobject_t &hoid,
-    map<uint64_t, uint64_t>& m,
+    map<uint64_t, uint64_t>&& m,
     uint32_t op_flags,
     bufferlist *bl) override;