From 09ec0ad9c3a6df800816b8df6617dc9e30ba24ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Sat, 31 Mar 2012 11:10:51 +0200 Subject: [PATCH] Also report errors when the free list is broken. * This will cause the whole B+tree to be rewritten in that case, too. * Added a TODO comment that describes an alternative solution for this. --- src/add-ons/kernel/file_systems/bfs/BPlusTree.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/add-ons/kernel/file_systems/bfs/BPlusTree.cpp b/src/add-ons/kernel/file_systems/bfs/BPlusTree.cpp index ded3b14d47..2720f72d36 100644 --- a/src/add-ons/kernel/file_systems/bfs/BPlusTree.cpp +++ b/src/add-ons/kernel/file_systems/bfs/BPlusTree.cpp @@ -709,6 +709,9 @@ BPlusTree::Validate(bool repair, bool& _errorsFound) if (check.Visited(freeOffset)) { dprintf("inode %" B_PRIdOFF ": free node at %" B_PRIdOFF " circular!\n", fStream->ID(), freeOffset); + // TODO: if 'repair' is true, we could collect all unvisited nodes + // at the end, and put the into the free list + check.FoundError(); break; }