]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
rgw: make rollback refcount tag match
authorJ. Eric Ivancich <ivancich@redhat.com>
Thu, 29 Aug 2019 14:41:53 +0000 (10:41 -0400)
committerJ. Eric Ivancich <ivancich@redhat.com>
Thu, 29 Aug 2019 14:47:42 +0000 (10:47 -0400)
When the refcount does a "get", the tag ends with a null character,
but during a rollback, when the tag is "put" it does not end with a
null character, so the same tag is not being manipulated and the
refcounts are therefore off, preventing future deletion of an rgw
object. This adds the null character to the "put" operation.

This change was originally submitted by lltlo <120680451@qq.com> but
wasn't signed-off.

Signed-off-by: J. Eric Ivancich <ivancich@redhat.com>
src/rgw/rgw_rados.cc

index 2b543d95b81dbffaa67f237833f884313a75db96..3d0eb6a274d4b94ab10645d6efd9517edb4f9278 100644 (file)
@@ -4152,9 +4152,10 @@ done_ret:
     vector<rgw_raw_obj>::iterator riter;
 
     /* rollback reference */
+    string ref_tag = tag + '\0';
     for (riter = ref_objs.begin(); riter != ref_objs.end(); ++riter) {
       ObjectWriteOperation op;
-      cls_refcount_put(op, tag, true);
+      cls_refcount_put(op, ref_tag, true);
 
       ref.pool.ioctx().locator_set_key(riter->loc);