From: Radoslaw Zarzynski Date: Mon, 1 Dec 2025 14:41:24 +0000 (+0000) Subject: crimson/osd: handle retieval of RADOS xattrs from attr_cache regardless of PG backend X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=2a478cc223d05d1313d224f8d51fdc985eb8d508;p=ceph-ci.git crimson/osd: handle retieval of RADOS xattrs from attr_cache regardless of PG backend Signed-off-by: Radoslaw Zarzynski --- diff --git a/src/crimson/osd/pg_backend.cc b/src/crimson/osd/pg_backend.cc index 8071efc94ab..02453e18586 100644 --- a/src/crimson/osd/pg_backend.cc +++ b/src/crimson/osd/pg_backend.cc @@ -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 { - 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> 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> 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 {