]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: simplify sysobj stat()
authorCasey Bodley <cbodley@redhat.com>
Tue, 12 Jul 2022 18:23:20 +0000 (14:23 -0400)
committerCasey Bodley <cbodley@redhat.com>
Tue, 12 Jul 2022 18:40:17 +0000 (14:40 -0400)
stop caching the results of raw_stat() in RGWSysObjectCtx

stat() calls raw_stat() directly

epoch and first_chunk were unused

Signed-off-by: Casey Bodley <cbodley@redhat.com>
src/rgw/services/svc_sys_obj_cache.cc
src/rgw/services/svc_sys_obj_cache.h
src/rgw/services/svc_sys_obj_core.cc
src/rgw/services/svc_sys_obj_core.h

index b64a6a9a491fbcf8ff0967fc65c4fa015ece6573..238db954dfe51cb86354297ff353ac06d5dc5ce0 100644 (file)
@@ -357,8 +357,9 @@ int RGWSI_SysObj_Cache::write_data(const DoutPrefixProvider *dpp,
   return ret;
 }
 
-int RGWSI_SysObj_Cache::raw_stat(const DoutPrefixProvider *dpp, const rgw_raw_obj& obj, uint64_t *psize, real_time *pmtime, uint64_t *pepoch,
-                                 map<string, bufferlist> *attrs, bufferlist *first_chunk,
+int RGWSI_SysObj_Cache::raw_stat(const DoutPrefixProvider *dpp, const rgw_raw_obj& obj,
+                                 uint64_t *psize, real_time *pmtime,
+                                 map<string, bufferlist> *attrs,
                                  RGWObjVersionTracker *objv_tracker,
                                  optional_yield y)
 {
@@ -370,7 +371,6 @@ int RGWSI_SysObj_Cache::raw_stat(const DoutPrefixProvider *dpp, const rgw_raw_ob
 
   uint64_t size;
   real_time mtime;
-  uint64_t epoch;
 
   ObjectCacheInfo info;
   uint32_t flags = CACHE_FLAG_META | CACHE_FLAG_XATTRS;
@@ -383,7 +383,6 @@ int RGWSI_SysObj_Cache::raw_stat(const DoutPrefixProvider *dpp, const rgw_raw_ob
 
     size = info.meta.size;
     mtime = info.meta.mtime;
-    epoch = info.epoch;
     if (objv_tracker)
       objv_tracker->read_version = info.version;
     goto done;
@@ -391,8 +390,8 @@ int RGWSI_SysObj_Cache::raw_stat(const DoutPrefixProvider *dpp, const rgw_raw_ob
   if (r == -ENODATA) {
     return -ENOENT;
   }
-  r = RGWSI_SysObj_Core::raw_stat(dpp, obj, &size, &mtime, &epoch, &info.xattrs,
-                                  first_chunk, objv_tracker, y);
+  r = RGWSI_SysObj_Core::raw_stat(dpp, obj, &size, &mtime, &info.xattrs,
+                                  objv_tracker, y);
   if (r < 0) {
     if (r == -ENOENT) {
       info.status = r;
@@ -401,7 +400,6 @@ int RGWSI_SysObj_Cache::raw_stat(const DoutPrefixProvider *dpp, const rgw_raw_ob
     return r;
   }
   info.status = 0;
-  info.epoch = epoch;
   info.meta.mtime = mtime;
   info.meta.size = size;
   info.flags = CACHE_FLAG_META | CACHE_FLAG_XATTRS;
@@ -415,8 +413,6 @@ done:
     *psize = size;
   if (pmtime)
     *pmtime = mtime;
-  if (pepoch)
-    *pepoch = epoch;
   if (attrs)
     *attrs = info.xattrs;
   return 0;
index 2bd89d45e2ab870d127f99ef706dd77d4de5c2fb..a3628d84cdd293d05f34139c6f08a44cafb71a21 100644 (file)
@@ -37,8 +37,9 @@ protected:
   int do_start(optional_yield, const DoutPrefixProvider *dpp) override;
   void shutdown() override;
 
-  int raw_stat(const DoutPrefixProvider *dpp, const rgw_raw_obj& obj, uint64_t *psize, real_time *pmtime, uint64_t *epoch,
-               std::map<std::string, bufferlist> *attrs, bufferlist *first_chunk,
+  int raw_stat(const DoutPrefixProvider *dpp, const rgw_raw_obj& obj,
+               uint64_t *psize, real_time *pmtime,
+               std::map<std::string, bufferlist> *attrs,
                RGWObjVersionTracker *objv_tracker,
                optional_yield y) override;
 
index e0b38dc03c04172d6aff79cc230ecc47441c41f8..32d11e9153c7384875f698567df87d3d5b475198 100644 (file)
@@ -53,68 +53,9 @@ int RGWSI_SysObj_Core::get_rados_obj(const DoutPrefixProvider *dpp,
   return 0;
 }
 
-int RGWSI_SysObj_Core::get_system_obj_state_impl(RGWSysObjectCtxBase *rctx,
-                                                 const rgw_raw_obj& obj,
-                                                 RGWSysObjState **state,
-                                                 RGWObjVersionTracker *objv_tracker,
-                                                 optional_yield y,
-                                                 const DoutPrefixProvider *dpp)
-{
-  if (obj.empty()) {
-    return -EINVAL;
-  }
-
-  RGWSysObjState *s = rctx->get_state(obj);
-  ldpp_dout(dpp, 20) << "get_system_obj_state: rctx=" << (void *)rctx << " obj=" << obj << " state=" << (void *)s << " s->prefetch_data=" << s->prefetch_data << dendl;
-  *state = s;
-  if (s->has_attrs) {
-    return 0;
-  }
-
-  s->obj = obj;
-
-  int r = raw_stat(dpp, obj, &s->size, &s->mtime, &s->epoch, &s->attrset,
-                   (s->prefetch_data ? &s->data : nullptr), objv_tracker, y);
-  if (r == -ENOENT) {
-    s->exists = false;
-    s->has_attrs = true;
-    s->mtime = real_time();
-    return 0;
-  }
-  if (r < 0)
-    return r;
-
-  s->exists = true;
-  s->has_attrs = true;
-  s->obj_tag = s->attrset[RGW_ATTR_ID_TAG];
-
-  if (s->obj_tag.length()) {
-    ldpp_dout(dpp, 20) << "get_system_obj_state: setting s->obj_tag to " << s->obj_tag.c_str() << dendl;
-  } else {
-    ldpp_dout(dpp, 20) << "get_system_obj_state: s->obj_tag was set empty" << dendl;
-  }
-
-  return 0;
-}
-
-int RGWSI_SysObj_Core::get_system_obj_state(RGWSysObjectCtxBase *rctx,
-                                            const rgw_raw_obj& obj,
-                                            RGWSysObjState **state,
-                                            RGWObjVersionTracker *objv_tracker,
-                                            optional_yield y,
-                                            const DoutPrefixProvider *dpp)
-{
-  int ret;
-
-  do {
-    ret = get_system_obj_state_impl(rctx, obj, state, objv_tracker, y, dpp);
-  } while (ret == -EAGAIN);
-
-  return ret;
-}
-
-int RGWSI_SysObj_Core::raw_stat(const DoutPrefixProvider *dpp, const rgw_raw_obj& obj, uint64_t *psize, real_time *pmtime, uint64_t *epoch,
-                                map<string, bufferlist> *attrs, bufferlist *first_chunk,
+int RGWSI_SysObj_Core::raw_stat(const DoutPrefixProvider *dpp, const rgw_raw_obj& obj,
+                                uint64_t *psize, real_time *pmtime,
+                                map<string, bufferlist> *attrs,
                                 RGWObjVersionTracker *objv_tracker,
                                 optional_yield y)
 {
@@ -135,16 +76,8 @@ int RGWSI_SysObj_Core::raw_stat(const DoutPrefixProvider *dpp, const rgw_raw_obj
   if (psize || pmtime) {
     op.stat2(&size, &mtime_ts, nullptr);
   }
-  if (first_chunk) {
-    op.read(0, cct->_conf->rgw_max_chunk_size, first_chunk, nullptr);
-  }
   bufferlist outbl;
   r = rados_obj.operate(dpp, &op, &outbl, y);
-
-  if (epoch) {
-    *epoch = rados_obj.get_last_version();
-  }
-
   if (r < 0)
     return r;
 
@@ -167,21 +100,19 @@ int RGWSI_SysObj_Core::stat(RGWSysObjectCtxBase& obj_ctx,
                             optional_yield y,
                             const DoutPrefixProvider *dpp)
 {
-  RGWSysObjState *astate = nullptr;
+  uint64_t size = 0;
+  ceph::real_time mtime;
+  std::map<std::string, bufferlist> attrset;
 
-  int r = get_system_obj_state(&obj_ctx, obj, &astate, objv_tracker, y, dpp);
+  int r = raw_stat(dpp, obj, &size, &mtime, &attrset, objv_tracker, y);
   if (r < 0)
     return r;
 
-  if (!astate->exists) {
-    return -ENOENT;
-  }
-
   if (attrs) {
     if (raw_attrs) {
-      *attrs = astate->attrset;
+      *attrs = std::move(attrset);
     } else {
-      rgw_filter_attrset(astate->attrset, RGW_ATTR_PREFIX, attrs);
+      rgw_filter_attrset(attrset, RGW_ATTR_PREFIX, attrs);
     }
     if (cct->_conf->subsys.should_gather<ceph_subsys_rgw, 20>()) {
       map<string, bufferlist>::iterator iter;
@@ -192,9 +123,9 @@ int RGWSI_SysObj_Core::stat(RGWSysObjectCtxBase& obj_ctx,
   }
 
   if (obj_size)
-    *obj_size = astate->size;
+    *obj_size = size;
   if (lastmod)
-    *lastmod = astate->mtime;
+    *lastmod = mtime;
 
   return 0;
 }
index 179e31633748c183eb6566626869bd3fcdfc81f3..6536d29c48e55955d49ade7416eb1490b5f979b8 100644 (file)
@@ -33,9 +33,9 @@ protected:
   }
   int get_rados_obj(const DoutPrefixProvider *dpp, RGWSI_Zone *zone_svc, const rgw_raw_obj& obj, RGWSI_RADOS::Obj *pobj);
 
-  virtual int raw_stat(const DoutPrefixProvider *dpp, const rgw_raw_obj& obj, uint64_t *psize,
-                       real_time *pmtime, uint64_t *epoch,
-                       std::map<std::string, bufferlist> *attrs, bufferlist *first_chunk,
+  virtual int raw_stat(const DoutPrefixProvider *dpp, const rgw_raw_obj& obj,
+                       uint64_t *psize, real_time *pmtime,
+                       std::map<std::string, bufferlist> *attrs,
                        RGWObjVersionTracker *objv_tracker,
                        optional_yield y);
 
@@ -127,18 +127,6 @@ protected:
   virtual int pool_list_objects_get_marker(RGWSI_SysObj::Pool::ListCtx& _ctx,
                                            std::string *marker);
 
-  /* wrappers */
-  int get_system_obj_state_impl(RGWSysObjectCtxBase *rctx,
-                                const rgw_raw_obj& obj, RGWSysObjState **state,
-                                RGWObjVersionTracker *objv_tracker,
-                                optional_yield y,
-                                const DoutPrefixProvider *dpp);
-  int get_system_obj_state(RGWSysObjectCtxBase *rctx, const rgw_raw_obj& obj,
-                           RGWSysObjState **state,
-                           RGWObjVersionTracker *objv_tracker,
-                           optional_yield y,
-                           const DoutPrefixProvider *dpp);
-
   int stat(RGWSysObjectCtxBase& obj_ctx,
            RGWSI_SysObj_Obj_GetObjState& state,
            const rgw_raw_obj& obj,