]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
crimson/osd: handle retieval of RADOS xattrs from attr_cache regardless of PG backend
authorRadoslaw Zarzynski <rzarzyns@redhat.com>
Mon, 1 Dec 2025 14:41:24 +0000 (14:41 +0000)
committerRadoslaw Zarzynski <rzarzyns@redhat.com>
Tue, 27 Jan 2026 19:43:00 +0000 (19:43 +0000)
Signed-off-by: Radoslaw Zarzynski <rzarzyns@redhat.com>
src/crimson/osd/pg_backend.cc

index 8071efc94ab4917838c12fb02b351191d78b240c..02453e1858627d857726e89daa3a5fa072b87bd9 100644 (file)
@@ -1169,29 +1169,21 @@ PGBackend::get_attr_ierrorator::future<> PGBackend::get_xattrs(
   OSDOp& osd_op,
   object_stat_sum_t& delta_stats) const
 {
-  auto get_attrs_maybe_from_cache =
-    [&] () -> get_attr_errorator::future<crimson::os::FuturizedStore::Shard::attrs_t> {
-    if (!std::empty(attr_cache)) {
-      return get_attr_errorator::make_ready_future<
-       crimson::os::FuturizedStore::Shard::attrs_t>(attr_cache);
-    }
+  if (std::empty(attr_cache)) {
     return crimson::ct_error::enodata::make();
-  };
-  return get_attrs_maybe_from_cache().safe_then(
-    [&delta_stats, &osd_op](auto&& attrs) {
-    std::vector<std::pair<std::string, bufferlist>> user_xattrs;
-    ceph::bufferlist bl;
-    for (auto& [key, val] : attrs) {
-      if (key.size() > 1 && key[0] == '_') {
-       bl.append(std::move(val));
-       user_xattrs.emplace_back(key.substr(1), std::move(bl));
-      }
+  }
+  std::vector<std::pair<std::string, bufferlist>> user_xattrs;
+  ceph::bufferlist bl;
+  for (auto& [key, val] : attr_cache) {
+    if (key.size() > 1 && key[0] == '_') {
+      bl.append(std::move(val));
+      user_xattrs.emplace_back(key.substr(1), std::move(bl));
     }
-    ceph::encode(user_xattrs, osd_op.outdata);
-    delta_stats.num_rd++;
-    delta_stats.num_rd_kb += shift_round_up(bl.length(), 10);
-    return get_attr_errorator::now();
-  });
+  }
+  ceph::encode(user_xattrs, osd_op.outdata);
+  delta_stats.num_rd++;
+  delta_stats.num_rd_kb += shift_round_up(bl.length(), 10);
+  return get_attr_errorator::now();
 }
 
 namespace {