[haiku-development] Re: Cannot boot current revision

David McPaul <dlmcpaul@xxxxxxxxx> wrote:
> Trying to update from revision 31022 to current revision 31795.
> However, the boot process stops at the ram icon and the last message 
> written is
> 
> bfs: Find:1854 Bad argument type passed to function.
> 
> Looking at BPlusTree.cpp where this error is raised from it is
> indicating that the function is being called on a bfs system that
> allows duplicates.

It's not a "bfs system" that allows duplicates, but the B+tree is used 
either in a directory (which doesn't support duplicates, obviously), 
and in an index which does support duplicates.

> Is there anyway I can track this further or tell my build to not make
> a file system that allows duplicates?

You should find out what inode the tree belongs to, and then dump it 
via the kernel debugger ("bfs_inode <pointer to inode>"), as well as 
the B+tree header ("bfs_btree_header <pointer to header>") - you get 
the pointer to the header by looking at the first direct block run (for 
example 19,552,32) and then passing that number to the "bfs" command 
("bfs <pointer to volume> 19,552") - this will give you a block number. 
The "bfs" command without the block run will also show you the address 
of the block cache, which you can then use to get the pointer to the 
header ("block_cache <pointer to block cache> <block number>"), the 
"current" pointer is the block you are looking for, and the one which 
you should pass to the bfs_btree_header command.
The volume pointer can be retrieved via the "mount" command. If it's 
the dev_t 3, "mount 3" shows you the volume pointer (accessible 
afterwards via the variable _volume).

This will then allow to see why the tree is considered allowing 
duplicates when it shouldn't.

HTH.

Bye,
   Axel.


Other related posts: