}
}
if (need_rewrite) {
- ret = store->rewrite_obj(bucket_info.owner, obj);
+ ret = store->rewrite_obj(bucket_info, obj);
if (ret < 0) {
cerr << "ERROR: object rewrite returned: " << cpp_strerror(-ret) << std::endl;
return -ret;
if (!need_rewrite) {
formatter->dump_string("status", "Skipped");
} else {
- r = store->rewrite_obj(bucket_info.owner, obj);
+ r = store->rewrite_obj(bucket_info, obj);
if (r == 0) {
formatter->dump_string("status", "Success");
} else {
}
};
-int RGWRados::rewrite_obj(const string& bucket_owner, rgw_obj& obj)
+int RGWRados::rewrite_obj(RGWBucketInfo& dest_bucket_info, rgw_obj& obj)
{
map<string, bufferlist> attrset;
off_t ofs = 0;
return ret;
}
- return copy_obj_data((void *)&rctx, bucket_owner, &handle, end, obj, obj, max_chunk_size, NULL, mtime, attrset, RGW_OBJ_CATEGORY_MAIN, NULL, NULL, NULL);
+ return copy_obj_data((void *)&rctx, dest_bucket_info, &handle, end, obj, obj, max_chunk_size, NULL, mtime, attrset, RGW_OBJ_CATEGORY_MAIN, NULL, NULL, NULL);
}
/**
}
if (copy_data) { /* refcounting tail wouldn't work here, just copy the data */
- return copy_obj_data(ctx, dest_bucket_info.owner, &handle, end, dest_obj, src_obj, max_chunk_size, mtime, 0, src_attrs, category, ptag, petag, err);
+ return copy_obj_data(ctx, dest_bucket_info, &handle, end, dest_obj, src_obj,
+ max_chunk_size, mtime, 0, src_attrs, category, ptag, petag, err);
}
RGWObjManifest::obj_iterator miter = astate->manifest.obj_begin();
int RGWRados::copy_obj_data(void *ctx,
- const string& owner,
+ RGWBucketInfo& dest_bucket_info,
void **handle, off_t end,
rgw_obj& dest_obj,
rgw_obj& src_obj,
string tag;
append_rand_alpha(cct, tag, tag, 32);
- RGWPutObjProcessor_Atomic processor(owner, dest_obj.bucket, dest_obj.get_object(),
- cct->_conf->rgw_obj_stripe_size, tag);
+ RGWPutObjProcessor_Atomic processor(dest_bucket_info.owner, dest_obj.bucket, dest_obj.get_object(),
+ cct->_conf->rgw_obj_stripe_size, tag, dest_bucket_info.versioning_enabled);
int ret = processor.prepare(this, ctx, NULL);
if (ret < 0)
return ret;
if (objs.size() == 1) {
map<uint64_t, RGWObjManifestPart>::iterator iter = objs.begin();
rgw_obj& obj = iter->second.loc;
- return head_obj.object != obj.object;
+ return !(head_obj == obj);
}
return (objs.size() >= 2);
}
return clone_objs(ctx, dst_obj, v, attrs, category, pmtime, truncate_dest, exclusive, xattr_cond);
}
- int rewrite_obj(const string& bucket_owner, rgw_obj& obj);
+ int rewrite_obj(RGWBucketInfo& dest_bucket_info, rgw_obj& obj);
/**
* Copy an object.
* dest_obj: the object to copy into
void *progress_data);
int copy_obj_data(void *ctx,
- const string& owner,
+ RGWBucketInfo& dest_bucket_info,
void **handle, off_t end,
rgw_obj& dest_obj,
rgw_obj& src_obj,