From 6f8cc6111aa89d37b1434888b23fe3a29eb92a9a Mon Sep 17 00:00:00 2001 From: Igor Fedotov Date: Tue, 7 Jun 2016 16:24:13 +0300 Subject: [PATCH] os/BlueStore: Adds checkes for lextent range overlaps to _fsck Signed-off-by: Igor Fedotov --- src/os/bluestore/BlueStore.cc | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/os/bluestore/BlueStore.cc b/src/os/bluestore/BlueStore.cc index 7f8c8fcf81bc9..637a12344961a 100644 --- a/src/os/bluestore/BlueStore.cc +++ b/src/os/bluestore/BlueStore.cc @@ -2549,7 +2549,18 @@ int BlueStore::fsck() } // lextents map local_blobs; + uint64_t lext_next_offset = 0, lext_prev_offset = 0; for (auto& l : o->onode.extent_map) { + if(l.first < lext_next_offset) { + derr << " " << oid << " lextent at 0x" + << std::hex << l.first + << "overlaps with the previous one 0x" + << lext_prev_offset << "~" << (lext_next_offset - lext_prev_offset) + << std::dec << dendl; + ++errors; + } + lext_next_offset = l.first + l.second.length; + lext_prev_offset = l.first; if (l.second.blob >= 0) { local_blobs[l.second.blob].get(l.second.offset, l.second.length); } else { -- 2.39.5