]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
RGW | fixed enqueueing the overwritten object for gc
authorAli Masarwa <amasarwa@redhat.com>
Tue, 12 Aug 2025 12:15:23 +0000 (15:15 +0300)
committerMatt Benjamin <mbenjamin@redhat.com>
Wed, 8 Oct 2025 14:22:38 +0000 (10:22 -0400)
Resolves: rhbz#2379914

Signed-off-by: Ali Masarwa <amasarwa@redhat.com>
(cherry picked from commit 69353cfe247f3757853c1964f1b607b2a4952d94)

src/rgw/driver/rados/rgw_rados.cc

index 0b5818cae51f4959f6e29db55dfb4facb4531e0a..77f455758cbe54e14fcbe51ede4800fa2b42b70b 100644 (file)
@@ -3257,9 +3257,8 @@ int RGWRados::Object::Write::_do_write_meta(uint64_t size, uint64_t accounted_si
     ptag = index_op->get_optag();
   }
 
-  r = target->get_state(rctx.dpp, &target->state, &target->manifest, false, rctx.y);
-  if (r < 0)
-    return r;
+  target->manifest = manifest;
+  target->state = state;
   RGWObjState* current_state = target->state;
   if (!target->obj.key.instance.empty()) {
     r = target->get_current_version_state(rctx.dpp, current_state, rctx.y);
@@ -6086,6 +6085,9 @@ int RGWRados::bucket_suspended(const DoutPrefixProvider *dpp, rgw_bucket& bucket
 
 int RGWRados::Object::complete_atomic_modification(const DoutPrefixProvider *dpp, bool keep_tail, optional_yield y)
 {
+  int r = get_state(dpp, &state, &manifest, false, y);
+  if (r < 0)
+    return r;
   if ((!manifest) || keep_tail)
     return 0;