From: Mykola Golub Date: Fri, 31 May 2019 07:11:04 +0000 (+0100) Subject: objclass: add cls_cxx_truncate method X-Git-Tag: v15.1.0~2357^2~5 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=e7ab66b952ac5f8b8d4833755c658410ffacef92;p=ceph-ci.git objclass: add cls_cxx_truncate method Signed-off-by: Mykola Golub --- diff --git a/src/objclass/class_api.cc b/src/objclass/class_api.cc index c27c0fe0b46..1f278091337 100644 --- a/src/objclass/class_api.cc +++ b/src/objclass/class_api.cc @@ -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 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) { diff --git a/src/objclass/objclass.h b/src/objclass/objclass.h index 947679476a3..2cc0cd22ef1 100644 --- a/src/objclass/objclass.h +++ b/src/objclass/objclass.h @@ -123,6 +123,7 @@ extern int cls_cxx_getxattrs(cls_method_context_t hctx, std::map *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, diff --git a/src/test/librados_test_stub/LibradosTestStub.cc b/src/test/librados_test_stub/LibradosTestStub.cc index 7b7093f8571..9a3a0cb4a7d 100644 --- a/src/test/librados_test_stub/LibradosTestStub.cc +++ b/src/test/librados_test_stub/LibradosTestStub.cc @@ -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(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 =