]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
crimson: _load_{os,ss} return errorated future to avoid copying.
authorRadoslaw Zarzynski <rzarzyns@redhat.com>
Thu, 17 Oct 2019 09:05:05 +0000 (11:05 +0200)
committerRadoslaw Zarzynski <rzarzyns@redhat.com>
Wed, 20 Nov 2019 19:37:44 +0000 (20:37 +0100)
Signed-off-by: Radoslaw Zarzynski <rzarzyns@redhat.com>
src/crimson/osd/pg_backend.cc
src/crimson/osd/pg_backend.h

index 506d5b21c2fc66198ba058942bf95f0379e4c825..319fd756da5774d46bb6ba0e8acb938dfa262f79 100644 (file)
@@ -68,7 +68,7 @@ PGBackend::get_object_state(const hobject_t& oid)
     return _load_os(oid);
   } else {
     // we want a snap
-    return get_os_errorator::errorize{_load_ss(oid)}.then(
+    return _load_ss(oid).safe_then(
       [oid,this](cached_ss_t ss) -> get_os_errorator::future<cached_os_t> {
         // head?
         if (oid.snap > ss->seq) {
@@ -83,7 +83,7 @@ PGBackend::get_object_state(const hobject_t& oid)
           // clone
           auto soid = oid;
           soid.snap = *clone;
-          return get_os_errorator::errorize{_load_ss(soid)}.then(
+          return _load_ss(soid).safe_then(
             [soid,this](cached_ss_t ss) -> get_os_errorator::future<cached_os_t> {
               auto clone_snap = ss->clone_snaps.find(soid.snap);
               assert(clone_snap != end(ss->clone_snaps));
@@ -107,17 +107,17 @@ PGBackend::get_object_state(const hobject_t& oid)
   }
 }
 
-seastar::future<PGBackend::cached_os_t>
+PGBackend::get_os_errorator::future<PGBackend::cached_os_t>
 PGBackend::_load_os(const hobject_t& oid)
 {
   if (auto found = os_cache.find(oid); found) {
-    return seastar::make_ready_future<cached_os_t>(std::move(found));
+    return get_os_errorator::make_ready_future<cached_os_t>(std::move(found));
   }
   return store->get_attr(coll,
                          ghobject_t{oid, ghobject_t::NO_GEN, shard},
                          OI_ATTR)
   .safe_then(
-    [oid, this] (ceph::bufferptr bp) {
+    [oid, this] (ceph::bufferptr&& bp) {
       // decode existing OI_ATTR's value
       ceph::bufferlist bl;
       bl.push_back(std::move(bp));
@@ -132,17 +132,17 @@ PGBackend::_load_os(const hobject_t& oid)
     }));
 }
 
-seastar::future<PGBackend::cached_ss_t>
+PGBackend::get_os_errorator::future<PGBackend::cached_ss_t>
 PGBackend::_load_ss(const hobject_t& oid)
 {
   if (auto found = ss_cache.find(oid); found) {
-    return seastar::make_ready_future<cached_ss_t>(std::move(found));
+    return get_os_errorator::make_ready_future<cached_ss_t>(std::move(found));
   }
   return store->get_attr(coll,
                          ghobject_t{oid, ghobject_t::NO_GEN, shard},
                          SS_ATTR)
   .safe_then(
-    [oid, this] (ceph::bufferptr bp) {
+    [oid, this] (ceph::bufferptr&& bp) {
       // decode existing SS_ATTR's value
       ceph::bufferlist bl;
       bl.push_back(std::move(bp));
index 234715d2551519fff71fc3b63a443aecf72273ca..6530ef11602d83aa221b86fc4728d3b43bbbad6f 100644 (file)
@@ -126,9 +126,9 @@ protected:
 private:
   using cached_ss_t = boost::local_shared_ptr<SnapSet>;
   SharedLRU<hobject_t, SnapSet> ss_cache;
-  seastar::future<cached_ss_t> _load_ss(const hobject_t& oid);
+  get_os_errorator::future<cached_ss_t> _load_ss(const hobject_t& oid);
   SharedLRU<hobject_t, ObjectState> os_cache;
-  seastar::future<cached_os_t> _load_os(const hobject_t& oid);
+  get_os_errorator::future<cached_os_t> _load_os(const hobject_t& oid);
   virtual ll_read_errorator::future<ceph::bufferlist> _read(
     const hobject_t& hoid,
     size_t offset,