[haiku-development] Re: Cannot boot current revision
- From: "Axel Dörfler" <axeld@xxxxxxxxxxxxxxxx>
- To: haiku-development@xxxxxxxxxxxxx
- Date: Tue, 28 Jul 2009 12:21:09 +0200 CEST
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: