rgw_obj& src_obj,
RGWBucketInfo& dest_bucket_info,
RGWBucketInfo& src_bucket_info,
- const rgw_placement_rule *ptail_rule,
+ rgw_placement_rule *ptail_rule,
real_time *src_mtime,
real_time *mtime,
const real_time *mod_ptr,
if (astate->has_manifest) {
src_rule = &astate->manifest.get_tail_placement().placement_rule;
+ ldout(cct, 20) << __func__ << "(): manifest src_rule=" << src_rule->to_str() << dendl;
}
if (!src_rule || src_rule->empty()) {
if (!ptail_rule) {
ptail_rule = &dest_bucket_info.placement_rule;
+ } else {
+ ptail_rule->inherit_from(dest_bucket_info.placement_rule);
}
auto& dest_storage_class = ptail_rule->get_storage_class();
return -EIO;
}
+ ldout(cct, 20) << __func__ << "(): src_rule=" << src_rule->to_str() << " src_pool=" << src_pool
+ << " dest_rule=" << ptail_rule->to_str() << " dest_pool=" << dest_pool << dendl;
bool copy_data = !astate->has_manifest || (src_pool != dest_pool);
bool copy_first = false;
rgw_obj& src_obj,
RGWBucketInfo& dest_bucket_info,
RGWBucketInfo& src_bucket_info,
- const rgw_placement_rule *ptail_rule,
+ rgw_placement_rule *ptail_rule,
ceph::real_time *src_mtime,
ceph::real_time *mtime,
const ceph::real_time *mod_ptr,
(dest_bucket_name.compare(src_bucket_name) == 0) &&
(dest_object.compare(src_object.name) == 0) &&
src_object.instance.empty() &&
+ s->info.storage_class.storage_class.empty() &&
(attrs_mod != RGWRados::ATTRSMOD_REPLACE)) {
/* can only copy object into itself if replacing attrs */
s->err.message = "This copy request is illegal because it is trying to copy "