]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
crimson/osd: Implement CEPH_OSD_OP_OMAPGETHEADER
authorAmnon Hanuhov <ahanukov@redhat.com>
Wed, 27 May 2020 09:41:35 +0000 (12:41 +0300)
committerAmnon Hanuhov <ahanukov@redhat.com>
Wed, 24 Jun 2020 13:18:34 +0000 (16:18 +0300)
Signed-off-by: Amnon Hanuhov <ahanukov@redhat.com>
src/crimson/osd/ops_executer.cc
src/crimson/osd/pg_backend.cc
src/crimson/osd/pg_backend.h

index 32b77f66e9a4c4f2501760a810da425e7d49cea0..06e8c0aa8a93ef52ee03cba41a4f8a07d3d97c16 100644 (file)
@@ -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);
index 9eef59a2ddbc411a79035ac03620ea13a62c9c12..327725aac5059bb54a6fd9c12fcc07683a912761 100644 (file)
@@ -521,6 +521,17 @@ seastar::future<ceph::bufferlist> 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
index 4a1442ab7e7585601cd94362b3f29e33adc40acf..48e98b863e9e324b6d1bbe49c58e2bc9c645c87e 100644 (file)
@@ -134,6 +134,9 @@ public:
   seastar::future<ceph::bufferlist> 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;