diff options
author | Yehuda Sadeh <yehuda@hq.newdream.net> | 2012-01-31 13:43:32 -0800 |
---|---|---|
committer | Yehuda Sadeh <yehuda@hq.newdream.net> | 2012-01-31 13:43:32 -0800 |
commit | 4622556235afd86406bfc2ed60a7213e33eeb355 (patch) | |
tree | d989cffa90dbab384049798479522c2e8eb7f042 | |
parent | 1fe75ee64191f762861ec90f172db22764d2bb31 (diff) | |
download | ceph-4622556235afd86406bfc2ed60a7213e33eeb355.tar.gz |
osd: handle set-expire op
A new osd op to set expiration time on an object
Signed-off-by: Yehuda Sadeh <yehuda@hq.newdream.net>
-rw-r--r-- | src/include/ceph_strings.cc | 1 | ||||
-rw-r--r-- | src/include/rados.h | 1 | ||||
-rw-r--r-- | src/osd/ReplicatedPG.cc | 10 |
3 files changed, 12 insertions, 0 deletions
diff --git a/src/include/ceph_strings.cc b/src/include/ceph_strings.cc index cc03e3f43b2..a3c95ee3542 100644 --- a/src/include/ceph_strings.cc +++ b/src/include/ceph_strings.cc @@ -57,6 +57,7 @@ const char *ceph_osd_op_name(int op) case CEPH_OSD_OP_RESETXATTRS: return "resetxattrs"; case CEPH_OSD_OP_RMXATTR: return "rmxattr"; case CEPH_OSD_OP_CMPXATTR: return "cmpxattr"; + case CEPH_OSD_OP_SET_EXPIRATION: return "set-expiration"; case CEPH_OSD_OP_PULL: return "pull"; case CEPH_OSD_OP_PUSH: return "push"; diff --git a/src/include/rados.h b/src/include/rados.h index b7aa8d4b328..d8d915b967c 100644 --- a/src/include/rados.h +++ b/src/include/rados.h @@ -213,6 +213,7 @@ enum { CEPH_OSD_OP_SETXATTRS = CEPH_OSD_OP_MODE_WR | CEPH_OSD_OP_TYPE_ATTR | 2, CEPH_OSD_OP_RESETXATTRS = CEPH_OSD_OP_MODE_WR|CEPH_OSD_OP_TYPE_ATTR | 3, CEPH_OSD_OP_RMXATTR = CEPH_OSD_OP_MODE_WR | CEPH_OSD_OP_TYPE_ATTR | 4, + CEPH_OSD_OP_SET_EXPIRATION = CEPH_OSD_OP_MODE_WR | CEPH_OSD_OP_TYPE_ATTR | 5, /** subop **/ CEPH_OSD_OP_PULL = CEPH_OSD_OP_MODE_SUB | 1, diff --git a/src/osd/ReplicatedPG.cc b/src/osd/ReplicatedPG.cc index ddab37feb24..d120fc5ec75 100644 --- a/src/osd/ReplicatedPG.cc +++ b/src/osd/ReplicatedPG.cc @@ -1995,6 +1995,16 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector<OSDOp>& ops) ctx->delta_stats.num_wr++; } break; + + case CEPH_OSD_OP_SET_EXPIRATION: + { + bufferlist expire_bl; + bp.copy(op.xattr.value_len, expire_bl); + string attr = "expiration"; + t.setattr(coll, soid, attr, expire_bl); + ctx->delta_stats.num_wr++; + } + break; // -- fancy writers -- |