]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
rgw: fix rewrite a versioning object create a new object bug
authorEnming Zhang <enming.zhang@umcloud.com>
Tue, 31 Oct 2017 07:21:21 +0000 (15:21 +0800)
committerEnming Zhang <enming.zhang@umcloud.com>
Fri, 1 Dec 2017 13:31:23 +0000 (21:31 +0800)
Fixes: http://tracker.ceph.com/issues/21984
Signed-off-by: Enming Zhang <enming.zhang@umcloud.com>
src/rgw/rgw_rados.cc

index 9054f11182adf6a9b6a56d3491b613fa11f97013..653c0dc383074d94bb2f37f0831448eb418e87c3 100644 (file)
@@ -7445,7 +7445,9 @@ int RGWRados::rewrite_obj(RGWBucketInfo& dest_bucket_info, rgw_obj& obj)
   attrset.erase(RGW_ATTR_TAIL_TAG);
 
   return copy_obj_data(rctx, dest_bucket_info, read_op, obj_size - 1, obj, NULL, mtime, attrset,
-                       0, real_time(), NULL, NULL);
+                       0, real_time(),
+                       (obj.key.instance.empty() ? NULL : &(obj.key.instance)),
+                       NULL);
 }
 
 struct obj_time_weight {
@@ -8232,7 +8234,7 @@ int RGWRados::copy_obj_data(RGWObjectCtx& obj_ctx,
   append_rand_alpha(cct, tag, tag, 32);
 
   RGWPutObjProcessor_Atomic processor(obj_ctx,
-                                      dest_bucket_info, dest_obj.bucket, dest_obj.get_oid(),
+                                      dest_bucket_info, dest_obj.bucket, dest_obj.key.name,
                                       cct->_conf->rgw_obj_stripe_size, tag, dest_bucket_info.versioning_enabled());
   if (version_id) {
     processor.set_version_id(*version_id);