]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
objclass: add cls_cxx_read2/cls_cxx_write2
authorJason Dillaman <dillaman@redhat.com>
Wed, 30 Mar 2016 20:13:51 +0000 (16:13 -0400)
committerJason Dillaman <dillaman@redhat.com>
Wed, 30 Mar 2016 22:38:09 +0000 (18:38 -0400)
These new methods support passing op flags (e.g. cache hints).

Signed-off-by: Jason Dillaman <dillaman@redhat.com>
src/objclass/class_api.cc
src/objclass/objclass.h

index 1dd05c2086933b8d7f09abb368d8de67a56a8388..d0d0827690aaad76758b6bc3b30fe69e3d2f6c26 100644 (file)
@@ -268,6 +268,12 @@ int cls_cxx_stat2(cls_method_context_t hctx, uint64_t *size, ceph::real_time *mt
 }
 
 int cls_cxx_read(cls_method_context_t hctx, int ofs, int len, bufferlist *outbl)
+{
+  return cls_cxx_read2(hctx, ofs, len, outbl, 0);
+}
+
+int cls_cxx_read2(cls_method_context_t hctx, int ofs, int len,
+                  bufferlist *outbl, uint32_t op_flags)
 {
   ReplicatedPG::OpContext **pctx = (ReplicatedPG::OpContext **)hctx;
   vector<OSDOp> ops(1);
@@ -275,6 +281,7 @@ int cls_cxx_read(cls_method_context_t hctx, int ofs, int len, bufferlist *outbl)
   ops[0].op.op = CEPH_OSD_OP_SYNC_READ;
   ops[0].op.extent.offset = ofs;
   ops[0].op.extent.length = len;
+  ops[0].op.flags = op_flags;
   ret = (*pctx)->pg->do_osd_ops(*pctx, ops);
   if (ret < 0)
     return ret;
@@ -283,12 +290,19 @@ int cls_cxx_read(cls_method_context_t hctx, int ofs, int len, bufferlist *outbl)
 }
 
 int cls_cxx_write(cls_method_context_t hctx, int ofs, int len, bufferlist *inbl)
+{
+  return cls_cxx_write2(hctx, ofs, len, inbl, 0);
+}
+
+int cls_cxx_write2(cls_method_context_t hctx, int ofs, int len,
+                   bufferlist *inbl, uint32_t op_flags)
 {
   ReplicatedPG::OpContext **pctx = (ReplicatedPG::OpContext **)hctx;
   vector<OSDOp> ops(1);
   ops[0].op.op = CEPH_OSD_OP_WRITE;
   ops[0].op.extent.offset = ofs;
   ops[0].op.extent.length = len;
+  ops[0].op.flags = op_flags;
   ops[0].indata = *inbl;
   return (*pctx)->pg->do_osd_ops(*pctx, ops);
 }
index 08a9d2382022a9d79370eb2dae4c7eef3539140e..8bc3a0a6eae95424ab7e52976481e3f415e6c995 100644 (file)
@@ -145,7 +145,11 @@ extern int cls_cxx_remove(cls_method_context_t hctx);
 extern int cls_cxx_stat(cls_method_context_t hctx, uint64_t *size, time_t *mtime);
 extern int cls_cxx_stat2(cls_method_context_t hctx, uint64_t *size, ceph::real_time *mtime);
 extern int cls_cxx_read(cls_method_context_t hctx, int ofs, int len, bufferlist *bl);
+extern int cls_cxx_read2(cls_method_context_t hctx, int ofs, int len,
+                         bufferlist *bl, uint32_t op_flags);
 extern int cls_cxx_write(cls_method_context_t hctx, int ofs, int len, bufferlist *bl);
+extern int cls_cxx_write2(cls_method_context_t hctx, int ofs, int len,
+                          bufferlist *bl, uint32_t op_flags);
 extern int cls_cxx_write_full(cls_method_context_t hctx, bufferlist *bl);
 extern int cls_cxx_getxattr(cls_method_context_t hctx, const char *name,
                             bufferlist *outbl);