]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
crimson/osd: implement cls_cxx_write_full().
authorRadoslaw Zarzynski <rzarzyns@redhat.com>
Sat, 3 Aug 2019 07:14:00 +0000 (09:14 +0200)
committerRadoslaw Zarzynski <rzarzyns@redhat.com>
Sat, 24 Aug 2019 01:33:57 +0000 (03:33 +0200)
Signed-off-by: Radoslaw Zarzynski <rzarzyns@redhat.com>
src/crimson/osd/objclass.cc

index 4544212393b6a7c38bcd797a1081fec55eafb3d1..73d4032c50cddf72e9117b977aa7fdd1fd05edbb 100644 (file)
@@ -120,9 +120,19 @@ int cls_cxx_write2(cls_method_context_t hctx,
   return 0;
 }
 
-int cls_cxx_write_full(cls_method_context_t hctx, bufferlist *inbl)
+int cls_cxx_write_full(cls_method_context_t hctx, bufferlist * const inbl)
 {
-  return 0;
+  OSDOp op;
+  op.op.op = CEPH_OSD_OP_WRITEFULL;
+  op.op.extent.offset = 0;
+  op.op.extent.length = inbl->length();
+  op.indata = *inbl;
+  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_replace(cls_method_context_t hctx,