diff options
author | Yehuda Sadeh <yehuda@hq.newdream.net> | 2009-06-10 11:18:17 -0700 |
---|---|---|
committer | Yehuda Sadeh <yehuda@hq.newdream.net> | 2009-06-10 11:18:17 -0700 |
commit | a1b134ad2c13376e348a77967fe4fc9c5dbf55b5 (patch) | |
tree | 8e1d4844c9f70b57926403589f4dd159d6404352 /src/objclass | |
parent | 43439e2e53071da3265c18a91ca886170fab3df4 (diff) | |
download | ceph-a1b134ad2c13376e348a77967fe4fc9c5dbf55b5.tar.gz |
class: add cls_setxattr
Diffstat (limited to 'src/objclass')
-rw-r--r-- | src/objclass/class_api.cc | 20 | ||||
-rw-r--r-- | src/objclass/objclass.h | 2 |
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); |