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: v11.2.1~210^2~11 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=c5d462f3524f0e5eff1594d7ddf97c3c9c0882a8;p=ceph.git osd: DBOjectMap::check: Dump complete mapping when inconsistency found Signed-off-by: David Zafman (cherry picked from commit fcf1e17c645e8fad5216c3e59627c817e5c858c7) --- diff --git a/src/os/filestore/DBObjectMap.cc b/src/os/filestore/DBObjectMap.cc index 4afa9b1acf79c..0fd9ed7bff7a1 100644 --- a/src/os/filestore/DBObjectMap.cc +++ b/src/os/filestore/DBObjectMap.cc @@ -70,6 +70,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(); @@ -77,10 +78,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;