From 3e621e4e1bd41ce9058c3cfc6f70c392169114fd Mon Sep 17 00:00:00 2001 From: Radoslaw Zarzynski Date: Thu, 17 Oct 2019 11:05:05 +0200 Subject: [PATCH] crimson: _load_{os,ss} return errorated future to avoid copying. Signed-off-by: Radoslaw Zarzynski --- src/crimson/osd/pg_backend.cc | 16 ++++++++-------- src/crimson/osd/pg_backend.h | 4 ++-- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/crimson/osd/pg_backend.cc b/src/crimson/osd/pg_backend.cc index 506d5b21c2f..319fd756da5 100644 --- a/src/crimson/osd/pg_backend.cc +++ b/src/crimson/osd/pg_backend.cc @@ -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 { // 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 { 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::get_os_errorator::future PGBackend::_load_os(const hobject_t& oid) { if (auto found = os_cache.find(oid); found) { - return seastar::make_ready_future(std::move(found)); + return get_os_errorator::make_ready_future(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::get_os_errorator::future PGBackend::_load_ss(const hobject_t& oid) { if (auto found = ss_cache.find(oid); found) { - return seastar::make_ready_future(std::move(found)); + return get_os_errorator::make_ready_future(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)); diff --git a/src/crimson/osd/pg_backend.h b/src/crimson/osd/pg_backend.h index 234715d2551..6530ef11602 100644 --- a/src/crimson/osd/pg_backend.h +++ b/src/crimson/osd/pg_backend.h @@ -126,9 +126,9 @@ protected: private: using cached_ss_t = boost::local_shared_ptr; SharedLRU ss_cache; - seastar::future _load_ss(const hobject_t& oid); + get_os_errorator::future _load_ss(const hobject_t& oid); SharedLRU os_cache; - seastar::future _load_os(const hobject_t& oid); + get_os_errorator::future _load_os(const hobject_t& oid); virtual ll_read_errorator::future _read( const hobject_t& hoid, size_t offset, -- 2.39.5