From 4c4a06ff525d9fa2271099db73701c7994054d36 Mon Sep 17 00:00:00 2001 From: David Zafman Date: Wed, 8 Feb 2017 18:55:48 -0800 Subject: [PATCH] osd: DBOjectMap::check: Dump complete mapping when inconsistency found Signed-off-by: David Zafman (cherry picked from commit fcf1e17c645e8fad5216c3e59627c817e5c858c7) --- src/os/filestore/DBObjectMap.cc | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/os/filestore/DBObjectMap.cc b/src/os/filestore/DBObjectMap.cc index 11f1480273c3..7a4ea28681b1 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; -- 2.47.3