From: Yuri Weinstein Date: Fri, 15 Nov 2024 16:56:08 +0000 (-0800) Subject: Merge pull request #59678 from jzhu116-bloomberg/wip-67959-squid X-Git-Tag: v19.2.1~62 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=165663cac581f5a213c7d67a239091df02f19d43;p=ceph.git Merge pull request #59678 from jzhu116-bloomberg/wip-67959-squid squid: rgw/multipart: use cls_version to avoid racing between part upload and multipart complete Reviewed-by: Adam Emerson --- 165663cac581f5a213c7d67a239091df02f19d43 diff --cc src/rgw/driver/rados/rgw_rados.cc index 12e2515dfd90,2c83347e76c3..da9f62765ce8 --- a/src/rgw/driver/rados/rgw_rados.cc +++ b/src/rgw/driver/rados/rgw_rados.cc @@@ -5846,9 -5842,12 +5846,13 @@@ int RGWRados::Object::Delete::delete_ob store->remove_rgw_head_obj(op); + if (params.check_objv != nullptr) { + cls_version_check(op, *params.check_objv, VER_COND_EQ); + } + auto& ioctx = ref.ioctx; - r = rgw_rados_operate(dpp, ioctx, ref.obj.oid, &op, y); + version_t epoch = 0; + r = rgw_rados_operate(dpp, ioctx, ref.obj.oid, &op, y, 0, nullptr, &epoch); /* raced with another operation, object state is indeterminate */ const bool need_invalidate = (r == -ECANCELED); @@@ -8679,8 -8682,14 +8687,9 @@@ int RGWRados::raw_obj_stat(const DoutPr if (first_chunk) { op.read(0, cct->_conf->rgw_max_chunk_size, first_chunk, NULL); } + bufferlist outbl; - r = rgw_rados_operate(dpp, ref.ioctx, ref.obj.oid, &op, &outbl, y); - - if (epoch) { - *epoch = ref.ioctx.get_last_version(); - } - + r = rgw_rados_operate(dpp, ref.ioctx, ref.obj.oid, &op, &outbl, y, 0, nullptr, epoch); if (r < 0) return r;