From: Amnon Hanuhov Date: Wed, 27 May 2020 09:41:35 +0000 (+0300) Subject: crimson/osd: Implement CEPH_OSD_OP_OMAPGETHEADER X-Git-Tag: v16.1.0~1839^2~7 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=77c0b37b8bc166e11db3f74fd95feea3b1a7eee0;p=ceph.git crimson/osd: Implement CEPH_OSD_OP_OMAPGETHEADER Signed-off-by: Amnon Hanuhov --- diff --git a/src/crimson/osd/ops_executer.cc b/src/crimson/osd/ops_executer.cc index 32b77f66e9a4..06e8c0aa8a93 100644 --- a/src/crimson/osd/ops_executer.cc +++ b/src/crimson/osd/ops_executer.cc @@ -741,6 +741,10 @@ OpsExecuter::execute_osd_op(OSDOp& osd_op) return do_read_op([&osd_op] (auto& backend, const auto& os) { return backend.omap_get_vals(os, osd_op); }); + case CEPH_OSD_OP_OMAPGETHEADER: + return do_read_op([&osd_op] (auto& backend, const auto& os) { + return backend.omap_get_header(os, osd_op); + }); case CEPH_OSD_OP_OMAPGETVALSBYKEYS: return do_read_op([&osd_op] (auto& backend, const auto& os) { return backend.omap_get_vals_by_keys(os, osd_op); diff --git a/src/crimson/osd/pg_backend.cc b/src/crimson/osd/pg_backend.cc index 9eef59a2ddbc..327725aac505 100644 --- a/src/crimson/osd/pg_backend.cc +++ b/src/crimson/osd/pg_backend.cc @@ -521,6 +521,17 @@ seastar::future PGBackend::omap_get_header( return store->omap_get_header(c, oid); } +seastar::future<> PGBackend::omap_get_header( + const ObjectState& os, + OSDOp& osd_op) const +{ + return omap_get_header(coll, ghobject_t{os.oi.soid}).then( + [&osd_op] (ceph::bufferlist&& header) { + osd_op.outdata = std::move(header); + return seastar::now(); + }); +} + seastar::future<> PGBackend::omap_get_keys( const ObjectState& os, OSDOp& osd_op) const diff --git a/src/crimson/osd/pg_backend.h b/src/crimson/osd/pg_backend.h index 4a1442ab7e75..48e98b863e9e 100644 --- a/src/crimson/osd/pg_backend.h +++ b/src/crimson/osd/pg_backend.h @@ -134,6 +134,9 @@ public: seastar::future omap_get_header( crimson::os::CollectionRef& c, const ghobject_t& oid); + seastar::future<> omap_get_header( + const ObjectState& os, + OSDOp& osd_op) const; virtual void got_rep_op_reply(const MOSDRepOpReply&) {} virtual seastar::future<> stop() = 0;