]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
crimson/osd: implement cls_cxx_map_set_val().
authorRadoslaw Zarzynski <rzarzyns@redhat.com>
Wed, 28 Aug 2019 15:10:08 +0000 (17:10 +0200)
committerRadoslaw Zarzynski <rzarzyns@redhat.com>
Fri, 13 Sep 2019 20:12:31 +0000 (22:12 +0200)
Signed-off-by: Radoslaw Zarzynski <rzarzyns@redhat.com>
src/crimson/osd/objclass.cc

index 1716160e3294b7f46d6c02934d619c44e5dd779b..2090fbe7c3d9ca06a15acf4b3cf2838f6213efd5 100644 (file)
@@ -363,7 +363,19 @@ int cls_cxx_map_set_val(cls_method_context_t hctx,
                         const string &key,
                         bufferlist *inbl)
 {
-  return 0;
+  OSDOp op{ CEPH_OSD_OP_OMAPSETVALS };
+  {
+    std::map<std::string, ceph::bufferlist> m;
+    m[key] = *inbl;
+    encode(m, op.indata);
+  }
+
+  try {
+    reinterpret_cast<ceph::osd::OpsExecuter*>(hctx)->do_osd_op(op).get();
+    return 0;
+  } catch (ceph::osd::error& e) {
+    return -e.code().value();
+  }
 }
 
 int cls_cxx_map_set_vals(cls_method_context_t hctx,