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);
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
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;