summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYehuda Sadeh <yehuda@hq.newdream.net>2012-01-31 13:43:32 -0800
committerYehuda Sadeh <yehuda@hq.newdream.net>2012-01-31 13:43:32 -0800
commit4622556235afd86406bfc2ed60a7213e33eeb355 (patch)
treed989cffa90dbab384049798479522c2e8eb7f042
parent1fe75ee64191f762861ec90f172db22764d2bb31 (diff)
downloadceph-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.cc1
-rw-r--r--src/include/rados.h1
-rw-r--r--src/osd/ReplicatedPG.cc10
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 --