int64_t poolid = ref.ioctx.get_id();
if (r >= 0) {
- r = index_op.complete_del(poolid, ref.ioctx.get_last_version(), params.remove_objs);
+ r = index_op.complete_del(poolid, ref.ioctx.get_last_version(), state->mtime, params.remove_objs);
} else {
int ret = index_op.cancel();
if (ret < 0) {
RGWRados::Bucket bop(this, bucket_info);
RGWRados::Bucket::UpdateIndex index_op(&bop, obj, NULL);
- int r = index_op.complete_del(-1 /* pool */, 0, NULL);
+ real_time removed_mtime;
+ int r = index_op.complete_del(-1 /* pool */, 0, removed_mtime, NULL);
return r;
}
}
int RGWRados::Bucket::UpdateIndex::complete_del(int64_t poolid, uint64_t epoch,
+ real_time& removed_mtime,
list<rgw_obj_key> *remove_objs)
{
if (blind) {
return ret;
}
- ret = store->cls_obj_complete_del(*bs, optag, poolid, epoch, obj, remove_objs, bilog_flags);
+ ret = store->cls_obj_complete_del(*bs, optag, poolid, epoch, obj, removed_mtime, remove_objs, bilog_flags);
int r = store->data_log->add_entry(bs->bucket, bs->shard_id);
if (r < 0) {
int RGWRados::cls_obj_complete_del(BucketShard& bs, string& tag,
int64_t pool, uint64_t epoch,
rgw_obj& obj,
+ real_time& removed_mtime,
list<rgw_obj_key> *remove_objs,
uint16_t bilog_flags)
{
RGWObjEnt ent;
+ ent.mtime = removed_mtime;
obj.get_index_key(&ent.key);
return cls_obj_complete_op(bs, CLS_RGW_OP_DEL, tag, pool, epoch, ent, RGW_OBJ_CATEGORY_NONE, remove_objs, bilog_flags);
}
bufferlist *acl_bl, RGWObjCategory category,
list<rgw_obj_key> *remove_objs);
int complete_del(int64_t poolid, uint64_t epoch,
+ ceph::real_time& removed_mtime, /* mtime of removed object */
list<rgw_obj_key> *remove_objs);
int cancel();
};
int cls_obj_complete_add(BucketShard& bs, string& tag, int64_t pool, uint64_t epoch, RGWObjEnt& ent,
RGWObjCategory category, list<rgw_obj_key> *remove_objs, uint16_t bilog_flags);
int cls_obj_complete_del(BucketShard& bs, string& tag, int64_t pool, uint64_t epoch, rgw_obj& obj,
- list<rgw_obj_key> *remove_objs, uint16_t bilog_flags);
+ ceph::real_time& removed_mtime, list<rgw_obj_key> *remove_objs, uint16_t bilog_flags);
int cls_obj_complete_cancel(BucketShard& bs, string& tag, rgw_obj& obj, uint16_t bilog_flags);
int cls_obj_set_bucket_tag_timeout(rgw_bucket& bucket, uint64_t timeout);
int cls_bucket_list(rgw_bucket& bucket, int shard_id, rgw_obj_key& start, const string& prefix,