]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: copy object data if target bucket is in a different pool 2632/head
authorYehuda Sadeh <yehuda@redhat.com>
Tue, 12 Aug 2014 20:36:11 +0000 (13:36 -0700)
committerYehuda Sadeh <yehuda@redhat.com>
Fri, 3 Oct 2014 02:34:34 +0000 (19:34 -0700)
Fixes: #9039
Backport: firefly

The new manifest does not provide a way to put the head and the tail in
separate pools. In any case, if an object is copied between buckets in
different pools, we may really just want the object to be copied, rather
than reference counted.

Signed-off-by: Yehuda Sadeh <yehuda@redhat.com>
(cherry picked from commit 5d3a7e595f47455896304bf358e5251915d0f16f)

src/rgw/rgw_rados.cc

index 44ff649202fb0e9feaa1d1a02567a82c3bb6ba3d..62d44aad669319179b509033cdb8dc56d5409c8a 100644 (file)
@@ -3313,7 +3313,7 @@ set_err_state:
     return ret;
   }
 
-  bool copy_data = !astate->has_manifest;
+  bool copy_data = !astate->has_manifest || (src_obj.bucket.data_pool != dest_obj.bucket.data_pool);
   bool copy_first = false;
   if (astate->has_manifest) {
     if (!astate->manifest.has_tail()) {