From aa82faec86d8c538f7eae14a88effefb0f1ac6d5 Mon Sep 17 00:00:00 2001 From: Sun Yuechi Date: Fri, 26 Jun 2026 20:28:31 +0800 Subject: [PATCH] osd/ECOmapJournal: bind by reference when clearing omap keys The clear_omap loop bound each key_map entry by value, so update_value() mutated a copy and cached keys were never marked removed. As a result, clear_omap had no effect on already-cached keys: cleared omap keys retained stale values and were returned on read. Introduced-by: 7289e4d2ece ("osd: Add ECOmapJournal class and relocate OmapUpdateType enum class") Fixes: https://tracker.ceph.com/issues/77750 Signed-off-by: Sun Yuechi --- src/osd/ECOmapJournal.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/osd/ECOmapJournal.cc b/src/osd/ECOmapJournal.cc index c33af5ed70a..fef19671337 100644 --- a/src/osd/ECOmapJournal.cc +++ b/src/osd/ECOmapJournal.cc @@ -234,7 +234,7 @@ void ECOmapJournal::process_entries(const hobject_t &hoid) { // Clear omap if specified if (entry_iter->clear_omap) { // Mark all keys as removed - for (auto [_, value] : key_map[hoid]) { + for (auto &[_, value] : key_map[hoid]) { value.update_value(entry_iter->version, std::nullopt); } -- 2.47.3