]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: remove unnecessary loop in rgw_get_system_obj() 47083/head
authorCasey Bodley <cbodley@redhat.com>
Wed, 13 Jul 2022 15:20:28 +0000 (11:20 -0400)
committerCasey Bodley <cbodley@redhat.com>
Wed, 13 Jul 2022 18:24:30 +0000 (14:24 -0400)
the call to read() is no longer limited to 'request_len', so we don't
need to reallocate/retry

there's no reason to issue a separate stat() call either

Signed-off-by: Casey Bodley <cbodley@redhat.com>
src/rgw/rgw_tools.cc

index 85565ec8501bc6d6b9a6fc609fc3ac3af22f2ce9..81d6b88837c20f4af583b3972315091aedfbd86d 100644 (file)
@@ -154,55 +154,21 @@ int rgw_stat_system_obj(const DoutPrefixProvider *dpp, RGWSI_SysObj* svc_sysobj,
 
 
 int rgw_get_system_obj(RGWSI_SysObj* svc_sysobj, const rgw_pool& pool, const string& key, bufferlist& bl,
-                       RGWObjVersionTracker *objv_tracker, real_time *pmtime, optional_yield y, const DoutPrefixProvider *dpp, map<string, bufferlist> *pattrs,
+                       RGWObjVersionTracker *objv_tracker, real_time *pmtime, optional_yield y,
+                       const DoutPrefixProvider *dpp, map<string, bufferlist> *pattrs,
                        rgw_cache_entry_info *cache_info,
                       boost::optional<obj_version> refresh_version, bool raw_attrs)
 {
-  bufferlist::iterator iter;
-  int request_len = READ_CHUNK_LEN;
-  rgw_raw_obj obj(pool, key);
-
-  obj_version original_readv;
-  if (objv_tracker && !objv_tracker->read_version.empty()) {
-    original_readv = objv_tracker->read_version;
-  }
-
-  do {
-    auto sysobj = svc_sysobj->get_obj(obj);
-    auto rop = sysobj.rop();
-
-    int ret = rop.set_attrs(pattrs)
-                 .set_last_mod(pmtime)
-                 .set_objv_tracker(objv_tracker)
-                 .set_raw_attrs(raw_attrs)
-                 .stat(y, dpp);
-    if (ret < 0)
-      return ret;
-
-    ret = rop.set_cache_info(cache_info)
-             .set_refresh_version(refresh_version)
-             .read(dpp, &bl, y);
-    if (ret == -ECANCELED) {
-      /* raced, restart */
-      if (!original_readv.empty()) {
-        /* we were asked to read a specific obj_version, failed */
-        return ret;
-      }
-      if (objv_tracker) {
-        objv_tracker->read_version.clear();
-      }
-      continue;
-    }
-    if (ret < 0)
-      return ret;
-
-    if (ret < request_len)
-      break;
-    bl.clear();
-    request_len *= 2;
-  } while (true);
-
-  return 0;
+  const rgw_raw_obj obj(pool, key);
+  auto sysobj = svc_sysobj->get_obj(obj);
+  auto rop = sysobj.rop();
+  return rop.set_attrs(pattrs)
+            .set_last_mod(pmtime)
+            .set_objv_tracker(objv_tracker)
+            .set_raw_attrs(raw_attrs)
+            .set_cache_info(cache_info)
+            .set_refresh_version(refresh_version)
+            .read(dpp, &bl, y);
 }
 
 int rgw_delete_system_obj(const DoutPrefixProvider *dpp,