From: Yuri Weinstein Date: Tue, 25 Mar 2025 17:36:26 +0000 (-0700) Subject: Merge pull request #61092 from shashalu/fix-data-corruption-ETIMEDOUT-squid X-Git-Tag: v19.2.3~257 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=635ba3954c2682ef94fd381d2feb131d2dcb9e6b;p=ceph.git Merge pull request #61092 from shashalu/fix-data-corruption-ETIMEDOUT-squid squid: rgw: fix data corruption when rados op return ETIMEDOUT Reviewed-by: Casey Bodley --- 635ba3954c2682ef94fd381d2feb131d2dcb9e6b diff --cc src/rgw/driver/rados/rgw_putobj_processor.cc index 5716ad3113e5,d185fd76f620..a7e98f13e52b --- a/src/rgw/driver/rados/rgw_putobj_processor.cc +++ b/src/rgw/driver/rados/rgw_putobj_processor.cc @@@ -587,11 -583,14 +587,16 @@@ int MultipartObjectProcessor::complete( op = librados::ObjectWriteOperation{}; op.assert_exists(); // detect races with abort op.omap_set(m); + cls_version_inc(op); r = rgw_rados_operate(rctx.dpp, meta_obj_ref.ioctx, meta_obj_ref.obj.oid, &op, rctx.y); } + if (r < 0) { + if (r == -ETIMEDOUT) { + // The meta_obj_ref write may eventually succeed, clear the set of objects for deletion. if it + // doesn't ever succeed, we'll orphan any tail objects as if we'd crashed before that write + writer.clear_written(); + } return r == -ENOENT ? -ERR_NO_SUCH_UPLOAD : r; }