]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: fix self-comparison for RGWCopyObj optimization 43710/head
authorCasey Bodley <cbodley@redhat.com>
Thu, 28 Oct 2021 19:20:26 +0000 (15:20 -0400)
committerCasey Bodley <cbodley@redhat.com>
Thu, 28 Oct 2021 19:20:29 +0000 (15:20 -0400)
when RGWCopyObj is copying an object onto itself (for example,
's3cmd modify' does this to add/remove metadata), we can avoid
the need to increment the reference count of each tail object.
this self-comparison check was broken during zipper refactoring,
comparing raw pointers instead of the object keys

Fixes: https://tracker.ceph.com/issues/53003
Signed-off-by: Casey Bodley <cbodley@redhat.com>
src/rgw/rgw_rados.cc

index cf16234849ac507699c69cf3432aadf37e57ebf4..e5d452063c369a1e77dd3bddb30fdb64d248c1a3 100644 (file)
@@ -4480,7 +4480,7 @@ int RGWRados::copy_obj(RGWObjectCtx& obj_ctx,
 
   bufferlist first_chunk;
 
-  bool copy_itself = (dest_obj == src_obj);
+  const bool copy_itself = (dest_obj->get_obj() == src_obj->get_obj());
   RGWObjManifest *pmanifest; 
   ldpp_dout(dpp, 20) << "dest_obj=" << dest_obj << " src_obj=" << src_obj << " copy_itself=" << (int)copy_itself << dendl;