private static <K, V> void checkBtree( RecordManager recordManager, long btreeOffset,
Map<String, int[]> checkedPages ) throws Exception
{
PageIO[] btreeHeaderPageIos = recordManager.readPageIOs( btreeOffset, Long.MAX_VALUE );
long dataPos = 0L;
long btreeRevision = recordManager.readLong( btreeHeaderPageIos, dataPos );
dataPos += RecordManager.LONG_SIZE;
recordManager.readLong( btreeHeaderPageIos, dataPos );
dataPos += RecordManager.LONG_SIZE;
long rootPageOffset = recordManager.readLong( btreeHeaderPageIos, dataPos );
checkOffset( recordManager, rootPageOffset );
dataPos += RecordManager.LONG_SIZE;
long btreeInfoOffset = recordManager.readLong( btreeHeaderPageIos, dataPos );
checkOffset( recordManager, btreeInfoOffset );
BtreeInfo<K, V> btreeInfo = checkBtreeInfo( recordManager, checkedPages, btreeInfoOffset, btreeRevision );
updateCheckedPages( checkedPages.get( btreeInfo.btreeName ), recordManager.pageSize, btreeHeaderPageIos );
updateCheckedPages( checkedPages.get( GLOBAL_PAGES_NAME ), recordManager.pageSize, btreeHeaderPageIos );
checkBtreePage( recordManager, btreeInfo, checkedPages, rootPageOffset );
}