]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
Adding cls interface for CEPH_OSD_OP_ZERO.
authorPritha Srivastava <prsrivas@redhat.com>
Thu, 20 Jun 2019 08:00:45 +0000 (13:30 +0530)
committerPritha Srivastava <prsrivas@redhat.com>
Tue, 15 Oct 2019 15:32:06 +0000 (21:02 +0530)
Signed-off-by: Pritha Srivastava <prsrivas@redhat.com>
src/crimson/osd/objclass.cc
src/objclass/objclass.h
src/osd/objclass.cc
src/test/librados_test_stub/LibradosTestStub.cc

index e95c38967374faf279b79031f292972838eed6d6..c5d75d963148930973fa7b59fb7e545ea03f5faa 100644 (file)
@@ -223,6 +223,19 @@ int cls_cxx_truncate(cls_method_context_t hctx, int ofs)
   }
 }
 
+int cls_cxx_write_zero(cls_method_context_t hctx, int ofs, int len)
+{
+  OSDOp op{CEPH_OSD_OP_ZERO};
+  op.op.extent.offset = ofs;
+  op.op.extent.length = len;
+  try {
+    reinterpret_cast<ceph::osd::OpsExecuter*>(hctx)->execute_osd_op(op).get();
+    return 0;
+  } catch (ceph::osd::error& e) {
+    return -e.code().value();
+  }
+}
+
 int cls_cxx_getxattr(cls_method_context_t hctx,
                      const char *name,
                      bufferlist *outbl)
index de43905e29fdc9aad57b8aa2acfafa990b18eade..4f9f4f7b781b7707d9139fd5c41a1288f69175fa 100644 (file)
@@ -95,6 +95,7 @@ extern int cls_cxx_getxattrs(cls_method_context_t hctx, std::map<std::string,
 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_write_zero(cls_method_context_t hctx, int ofs, int len);
 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 2ac65fac5e23829e7a4fd6930a7caa528d1808ca..1cc63fbb1451d9292cadc9d4ed44c54a6e35a946 100644 (file)
@@ -250,6 +250,16 @@ int cls_cxx_truncate(cls_method_context_t hctx, int ofs)
   return (*pctx)->pg->do_osd_ops(*pctx, ops);
 }
 
+int cls_cxx_write_zero(cls_method_context_t hctx, int ofs, int len)
+{
+  PrimaryLogPG::OpContext **pctx = (PrimaryLogPG::OpContext **)hctx;
+  vector<OSDOp> ops(1);
+  ops[0].op.op = CEPH_OSD_OP_ZERO;
+  ops[0].op.extent.offset = ofs;
+  ops[0].op.extent.length = len;
+  return (*pctx)->pg->do_osd_ops(*pctx, ops);
+}
+
 int cls_cxx_getxattr(cls_method_context_t hctx, const char *name,
                      bufferlist *outbl)
 {
index c2f73a4d4913fc3e2139d6b93832f0fcc4b9634d..c4345fcc5f482b84c496b5fb965fc54ed93b7385 100644 (file)
@@ -1408,6 +1408,12 @@ int cls_cxx_truncate(cls_method_context_t hctx, int ofs) {
   return ctx->io_ctx_impl->truncate(ctx->oid, ofs, ctx->snapc);
 }
 
+int cls_cxx_write_zero(cls_method_context_t hctx, int ofs, int len) {
+  librados::TestClassHandler::MethodContext *ctx =
+    reinterpret_cast<librados::TestClassHandler::MethodContext*>(hctx);
+  return ctx->io_ctx_impl->zero(ctx->oid, len, ofs, ctx->snapc);
+}
+
 int cls_cxx_list_watchers(cls_method_context_t hctx,
                          obj_list_watch_response_t *watchers) {
   librados::TestClassHandler::MethodContext *ctx =