From: David Zafman Date: Thu, 9 Feb 2017 02:55:48 +0000 (-0800) Subject: osd: DBOjectMap::check: Dump complete mapping when inconsistency found X-Git-Tag: v12.0.2~296^2~11 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=fcf1e17c645e8fad5216c3e59627c817e5c858c7;p=ceph.git osd: DBOjectMap::check: Dump complete mapping when inconsistency found Signed-off-by: David Zafman --- diff --git a/src/os/filestore/DBObjectMap.cc b/src/os/filestore/DBObjectMap.cc index ec99addce4712..de71db8926e42 100644 --- a/src/os/filestore/DBObjectMap.cc +++ b/src/os/filestore/DBObjectMap.cc @@ -71,6 +71,7 @@ int DBObjectMap::check(std::ostream &out) parent_to_actual_num_children[header.seq] = header.num_children; // Check complete table + bool complete_error = false; boost::optional prev; KeyValueDB::Iterator complete_iter = db->get_iterator(USER_PREFIX + header_key(header.seq) + COMPLETE_PREFIX); for (complete_iter->seek_to_first(); complete_iter->valid(); @@ -78,10 +79,18 @@ int DBObjectMap::check(std::ostream &out) if (prev && prev >= complete_iter->key()) { out << "Bad complete for " << header.oid << std::endl; errors++; + complete_error = true; break; } prev = string(complete_iter->value().c_str(), complete_iter->value().length() - 1); } + if (complete_error) { + out << "Complete mapping:" << std::endl; + for (complete_iter->seek_to_first(); complete_iter->valid(); + complete_iter->next()) { + out << complete_iter->key() << " -> " << string(complete_iter->value().c_str(), complete_iter->value().length() - 1) << std::endl; + } + } if (header.parent == 0) break;