From: xie xingguo Date: Sat, 31 Mar 2018 01:48:23 +0000 (+0800) Subject: osd/PGBackend: fix large_omap_objects checking X-Git-Tag: v13.1.0~380^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=5638f3319c5921846c06662057158752a78b45d1;p=ceph.git osd/PGBackend: fix large_omap_objects checking We should avoid creating **new** objects into shard's map, because replicas may get divergent view of objects they should have with each other, though the chance is rare. Signed-off-by: xie xingguo --- diff --git a/src/osd/PGBackend.cc b/src/osd/PGBackend.cc index da87d2fd66b3..c332c672af3a 100644 --- a/src/osd/PGBackend.cc +++ b/src/osd/PGBackend.cc @@ -1121,7 +1121,10 @@ void PGBackend::be_large_omap_check(const map &maps, // Iterate through objects and check large omap object flag for (const auto& k : master_set) { for (const auto& map : maps) { - ScrubMap::object& obj = map.second->objects[k]; + auto it = map.second->objects.find(k); + if (it == map.second->objects.end()) + continue; + ScrubMap::object& obj = it->second; if (obj.large_omap_object_found) { large_omap_objects++; warnstream << "Large omap object found. Object: " << k << " Key count: "