]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
crimson/osd: bring attr cache to ObjectContext
authorRadosław Zarzyński <rzarzyns@redhat.com>
Fri, 6 Oct 2023 14:42:20 +0000 (16:42 +0200)
committerRadoslaw Zarzynski <rzarzyns@redhat.com>
Tue, 27 Jan 2026 14:37:36 +0000 (14:37 +0000)
Signed-off-by: Radosław Zarzyński <rzarzyns@redhat.com>
src/crimson/osd/object_context.h
src/crimson/osd/object_context_loader.cc
src/crimson/osd/pg_backend.cc
src/crimson/osd/pg_backend.h

index 3d07c14cec3d38575fb2cbbe43599f8ff7e48c3e..415f428103511882dacac22fcb2d01f0e12dec97 100644 (file)
@@ -74,6 +74,9 @@ public:
   using watch_key_t = std::pair<uint64_t, entity_name_t>;
   std::map<watch_key_t, seastar::shared_ptr<crimson::osd::Watch>> watchers;
 
+  // attr cache. ECTransaction is the initial user
+  std::map<std::string, ceph::buffer::list, std::less<>> attr_cache;
+
   CommonOBCPipeline obc_pipeline;
 
   ObjectContext(hobject_t hoid) : lock(hoid.to_str()),
index d85e2584406295e84b604d30c600e31e07d51422..d7689a0455da366b629ad81e8a36d2033a78bb91 100644 (file)
@@ -169,6 +169,7 @@ ObjectContextLoader::load_obc(ObjectContextRef obc)
          // See set_clone_ssc
          obc->set_clone_state(std::move(md->os));
        }
+       obc->attr_cache = std::move(md->attr_cache);
        DEBUGDPP("loaded obc {} for {}", dpp, obc->obs.oi, obc->obs.oi.soid);
        return seastar::now();
       });
index 697f3e48aa41340603c377687dd2e29a5e2fd9d8..d61454dc11ec7ce1c0e409b712720bba954c6177 100644 (file)
@@ -145,7 +145,7 @@ PGBackend::load_metadata(const hobject_t& oid)
             return crimson::ct_error::object_corrupted::make();
           }
         }
-
+        ret->attr_cache = std::move(attrs);
         return load_metadata_ertr::make_ready_future<loaded_object_md_t::ref>(
           std::move(ret));
       }, crimson::ct_error::enoent::handle([oid] {
index 3ec46ad69b1358d5cd58345dc95bdef2198cf0d2..6c1abd0f3b371d36af016dfb59fde928481e76a8 100644 (file)
@@ -18,6 +18,7 @@
 #include "messages/MOSDOpReply.h"
 #include "os/Transaction.h"
 #include "osd/osd_types.h"
+#include "crimson/os/futurized_store.h"
 #include "crimson/osd/object_context.h"
 #include "crimson/osd/osd_operation.h"
 #include "crimson/osd/osd_operations/osdop_params.h"
@@ -451,6 +452,7 @@ public:
   struct loaded_object_md_t {
     ObjectState os;
     crimson::osd::SnapSetContextRef ssc;
+    crimson::os::FuturizedStore::Shard::attrs_t attr_cache;
     using ref = std::unique_ptr<loaded_object_md_t>;
   };
   load_metadata_iertr::future<loaded_object_md_t::ref>