summaryrefslogtreecommitdiff
path: root/src/objclass
diff options
context:
space:
mode:
authorYehuda Sadeh <yehuda@hq.newdream.net>2010-06-10 15:26:08 -0700
committerYehuda Sadeh <yehuda@hq.newdream.net>2010-06-10 15:26:08 -0700
commit5d2e85d24a85b0c6074e5349a36f769538edf950 (patch)
tree538125973248b418a4ccc7fbe06995d9b4c30857 /src/objclass
parentf34c5b9197eec2924175fe7cebf3a34552010f6b (diff)
downloadceph-5d2e85d24a85b0c6074e5349a36f769538edf950.tar.gz
class: implement write_full interface
Diffstat (limited to 'src/objclass')
-rw-r--r--src/objclass/class_api.cc12
-rw-r--r--src/objclass/objclass.h1
2 files changed, 13 insertions, 0 deletions
diff --git a/src/objclass/class_api.cc b/src/objclass/class_api.cc
index bb0d6de725e..2bfe212c983 100644
--- a/src/objclass/class_api.cc
+++ b/src/objclass/class_api.cc
@@ -195,6 +195,18 @@ int cls_cxx_write(cls_method_context_t hctx, int ofs, int len, bufferlist *inbl)
return (*pctx)->pg->do_osd_ops(*pctx, ops, outbl);
}
+int cls_cxx_write_full(cls_method_context_t hctx, bufferlist *inbl)
+{
+ ReplicatedPG::OpContext **pctx = (ReplicatedPG::OpContext **)hctx;
+ vector<OSDOp> ops(1);
+ ops[0].op.op = CEPH_OSD_OP_WRITEFULL;
+ ops[0].op.extent.offset = 0;
+ ops[0].op.extent.length = inbl->length();
+ ops[0].data = *inbl;
+ bufferlist outbl;
+ return (*pctx)->pg->do_osd_ops(*pctx, ops, outbl);
+}
+
int cls_cxx_replace(cls_method_context_t hctx, int ofs, int len, bufferlist *inbl)
{
ReplicatedPG::OpContext **pctx = (ReplicatedPG::OpContext **)hctx;
diff --git a/src/objclass/objclass.h b/src/objclass/objclass.h
index 911a05129d6..ad09f4912f6 100644
--- a/src/objclass/objclass.h
+++ b/src/objclass/objclass.h
@@ -88,6 +88,7 @@ extern int cls_register_cxx_method(cls_handle_t hclass, const char *method, int
extern int cls_cxx_read(cls_method_context_t hctx, int ofs, int len, bufferlist *bl);
extern int cls_cxx_write(cls_method_context_t hctx, int ofs, int len, bufferlist *bl);
+extern int cls_cxx_write_full(cls_method_context_t hctx, bufferlist *bl);
extern int cls_cxx_replace(cls_method_context_t hctx, int ofs, int len, bufferlist *bl);
extern int cls_cxx_snap_revert(cls_method_context_t hctx, snapid_t snapid);