summaryrefslogtreecommitdiff
path: root/src/objclass
diff options
context:
space:
mode:
authorYehuda Sadeh <yehuda@hq.newdream.net>2009-06-10 11:18:17 -0700
committerYehuda Sadeh <yehuda@hq.newdream.net>2009-06-10 11:18:17 -0700
commita1b134ad2c13376e348a77967fe4fc9c5dbf55b5 (patch)
tree8e1d4844c9f70b57926403589f4dd159d6404352 /src/objclass
parent43439e2e53071da3265c18a91ca886170fab3df4 (diff)
downloadceph-a1b134ad2c13376e348a77967fe4fc9c5dbf55b5.tar.gz
class: add cls_setxattr
Diffstat (limited to 'src/objclass')
-rw-r--r--src/objclass/class_api.cc20
-rw-r--r--src/objclass/objclass.h2
2 files changed, 22 insertions, 0 deletions
diff --git a/src/objclass/class_api.cc b/src/objclass/class_api.cc
index 15c86ea7400..c7d9343d853 100644
--- a/src/objclass/class_api.cc
+++ b/src/objclass/class_api.cc
@@ -135,6 +135,26 @@ int cls_getxattr(cls_method_context_t hctx, const char *name,
return r;
}
+int cls_setxattr(cls_method_context_t hctx, const char *name,
+ const char *value, int val_len)
+{
+ ReplicatedPG::OpContext **pctx = (ReplicatedPG::OpContext **)hctx;
+ bufferlist name_data;
+ bufferlist odata;
+ vector<OSDOp> nops(1);
+ OSDOp& op = nops[0];
+ int r;
+
+ op.op.op = CEPH_OSD_OP_SETXATTR;
+ op.data.append(name);
+ op.data.append(value);
+ op.op.name_len = strlen(name);
+ op.op.value_len = val_len;
+ r = (*pctx)->pg->do_osd_ops(*pctx, nops, odata);
+
+ return r;
+}
+
int cls_read(cls_method_context_t hctx, int ofs, int len,
char **outdata, int *outdatalen)
{
diff --git a/src/objclass/objclass.h b/src/objclass/objclass.h
index 32a3b60b781..c74c91f6130 100644
--- a/src/objclass/objclass.h
+++ b/src/objclass/objclass.h
@@ -41,6 +41,8 @@ extern int cls_rdcall(cls_method_context_t hctx, const char *cls, const char *me
char **outdata, int *outdatalen);
extern int cls_getxattr(cls_method_context_t hctx, const char *name,
char **outdata, int *outdatalen);
+extern int cls_setxattr(cls_method_context_t hctx, const char *name,
+ const char *value, int val_len);
/* class registration api */
extern int cls_register(const char *name, cls_handle_t *handle);