]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
objclass: add cls_cxx_truncate method
authorMykola Golub <mgolub@suse.com>
Fri, 31 May 2019 07:11:04 +0000 (08:11 +0100)
committerMykola Golub <mgolub@suse.com>
Sun, 23 Jun 2019 09:06:45 +0000 (10:06 +0100)
Signed-off-by: Mykola Golub <mgolub@suse.com>
src/objclass/class_api.cc
src/objclass/objclass.h
src/test/librados_test_stub/LibradosTestStub.cc

index c27c0fe0b46603192f2163f6ef5efadac355c268..1f2780913375d5c862e89576704796af512d233f 100644 (file)
@@ -336,6 +336,16 @@ int cls_cxx_replace(cls_method_context_t hctx, int ofs, int len, bufferlist *inb
   return (*pctx)->pg->do_osd_ops(*pctx, ops);
 }
 
+int cls_cxx_truncate(cls_method_context_t hctx, int ofs)
+{
+  PrimaryLogPG::OpContext **pctx = (PrimaryLogPG::OpContext **)hctx;
+  vector<OSDOp> ops(1);
+  ops[0].op.op = CEPH_OSD_OP_TRUNCATE;
+  ops[0].op.extent.offset = ofs;
+  ops[0].op.extent.length = 0;
+  return (*pctx)->pg->do_osd_ops(*pctx, ops);
+}
+
 int cls_cxx_getxattr(cls_method_context_t hctx, const char *name,
                      bufferlist *outbl)
 {
index 947679476a3920b90a613dd63b57784b28d3003e..2cc0cd22ef198270835538c94ef0ed3f54b30d4d 100644 (file)
@@ -123,6 +123,7 @@ extern int cls_cxx_getxattrs(cls_method_context_t hctx, std::map<std::string,
                             ceph::buffer::list> *attrset);
 extern int cls_cxx_replace(cls_method_context_t hctx, int ofs, int len,
                           ceph::buffer::list *bl);
+extern int cls_cxx_truncate(cls_method_context_t hctx, int ofs);
 extern int cls_cxx_snap_revert(cls_method_context_t hctx, snapid_t snapid);
 extern int cls_cxx_map_clear(cls_method_context_t hctx);
 extern int cls_cxx_map_get_all_vals(cls_method_context_t hctx,
index 7b7093f857158fa20d1ce2e1e65cabae6b073200..9a3a0cb4a7dd7f6b0330c0784551dce4d390214d 100644 (file)
@@ -1389,6 +1389,12 @@ int cls_cxx_replace(cls_method_context_t hctx, int ofs, int len,
   return ctx->io_ctx_impl->write(ctx->oid, *inbl, len, ofs, ctx->snapc);
 }
 
+int cls_cxx_truncate(cls_method_context_t hctx, int ofs) {
+  librados::TestClassHandler::MethodContext *ctx =
+    reinterpret_cast<librados::TestClassHandler::MethodContext*>(hctx);
+  return ctx->io_ctx_impl->truncate(ctx->oid, ofs, ctx->snapc);
+}
+
 int cls_cxx_list_watchers(cls_method_context_t hctx,
                          obj_list_watch_response_t *watchers) {
   librados::TestClassHandler::MethodContext *ctx =