From: Kefu Chai Date: Tue, 28 Jul 2020 14:39:21 +0000 (+0800) Subject: crimson/osd: implement cls_cxx_map_get_vals() X-Git-Tag: v16.1.0~1608^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F36328%2Fhead;p=ceph.git crimson/osd: implement cls_cxx_map_get_vals() Signed-off-by: Kefu Chai --- diff --git a/src/crimson/osd/objclass.cc b/src/crimson/osd/objclass.cc index 9c02c5c746ee..0e9d53c2b539 100644 --- a/src/crimson/osd/objclass.cc +++ b/src/crimson/osd/objclass.cc @@ -291,6 +291,24 @@ int cls_cxx_map_get_vals(cls_method_context_t hctx, return vals->size(); } +int cls_cxx_map_get_vals(cls_method_context_t hctx, + const std::set &keys, + std::map *vals) +{ + OSDOp op{CEPH_OSD_OP_OMAPGETVALSBYKEYS}; + encode(keys, op.indata); + if (const auto ret = execute_osd_op(hctx, op); ret < 0) { + return ret; + } + try { + auto iter = op.outdata.cbegin(); + decode(*vals, iter); + } catch (buffer::error&) { + return -EIO; + } + return 0; +} + int cls_cxx_map_read_header(cls_method_context_t hctx, bufferlist *outbl) { OSDOp op{CEPH_OSD_OP_OMAPGETHEADER};