]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
Merge pull request #59678 from jzhu116-bloomberg/wip-67959-squid
authorYuri Weinstein <yweinste@redhat.com>
Fri, 15 Nov 2024 16:56:08 +0000 (08:56 -0800)
committerGitHub <noreply@github.com>
Fri, 15 Nov 2024 16:56:08 +0000 (08:56 -0800)
squid: rgw/multipart: use cls_version to avoid racing between part upload and multipart complete

Reviewed-by: Adam Emerson <aemerson@redhat.com>
1  2 
src/rgw/driver/rados/rgw_bucket.cc
src/rgw/driver/rados/rgw_rados.cc
src/rgw/driver/rados/rgw_rados.h
src/rgw/rgw_op.cc

Simple merge
index 12e2515dfd908c7498fb8433b54c168aa4708e1e,2c83347e76c3a9cc8a372a8d68708eca997c2096..da9f62765ce83528ea7dfcdf20e773f5d912406f
@@@ -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;
  
Simple merge
Simple merge