diff --git a/src/add-ons/kernel/file_systems/bfs/Debug.cpp b/src/add-ons/kernel/file_systems/bfs/Debug.cpp index d93c0d10fe..15f147faa4 100644 --- a/src/add-ons/kernel/file_systems/bfs/Debug.cpp +++ b/src/add-ons/kernel/file_systems/bfs/Debug.cpp @@ -256,7 +256,7 @@ dump_inode(int argc, char **argv) Inode *inode = (Inode *)parse_expression(argv[1]); dump_inode(&inode->Node()); - return B_OK; + return 0; } @@ -275,7 +275,46 @@ dump_volume(int argc, char **argv) dump_super_block(&volume->SuperBlock()); - return B_OK; + return 0; +} + + +static int +dump_bplustree_node(int argc, char **argv) +{ + if (argc < 2 || argc > 4 || !strcmp(argv[1], "--help")) { + kprintf("usage: %s [ptr-to-header] [ptr-to-volume]\n", + argv[0]); + return 0; + } + + bplustree_node *node = (bplustree_node *)parse_expression(argv[1]); + bplustree_header *header = NULL; + Volume *volume = NULL; + + if (argc > 2) + header = (bplustree_header *)parse_expression(argv[2]); + if (argc > 3) + volume = (Volume *)parse_expression(argv[3]); + + dump_bplustree_node(node, header, volume); + + return 0; +} + + +static int +dump_bplustree_header(int argc, char **argv) +{ + if (argc != 2 || !strcmp(argv[1], "--help")) { + kprintf("usage: %s \n", argv[0]); + return 0; + } + + bplustree_header *header = (bplustree_header *)parse_expression(argv[1]); + dump_bplustree_header(header); + + return 0; } @@ -284,6 +323,8 @@ remove_debugger_commands() { remove_debugger_command("bfs_inode", dump_inode); remove_debugger_command("bfs_allocator", dump_block_allocator); + remove_debugger_command("bfs_btree_header", dump_bplustree_header); + remove_debugger_command("bfs_btree_node", dump_bplustree_node); remove_debugger_command("bfs", dump_volume); } @@ -293,7 +334,11 @@ add_debugger_commands() { add_debugger_command("bfs_inode", dump_inode, "dump an Inode object"); add_debugger_command("bfs_allocator", dump_block_allocator, - "dump a BFS block allocator."); + "dump a BFS block allocator"); + add_debugger_command("bfs_btree_header", dump_bplustree_header, + "dump a BFS B+tree header"); + add_debugger_command("bfs_btree_node", dump_bplustree_node, + "dump a BFS B+tree node"); add_debugger_command("bfs", dump_volume, "dump a BFS volume"); } diff --git a/src/add-ons/kernel/file_systems/bfs/Journal.cpp b/src/add-ons/kernel/file_systems/bfs/Journal.cpp index 38423984d1..ed04b24a4f 100644 --- a/src/add-ons/kernel/file_systems/bfs/Journal.cpp +++ b/src/add-ons/kernel/file_systems/bfs/Journal.cpp @@ -559,9 +559,9 @@ Journal::_WriteTransactionToLog() // a) abort the transaction - bad, because all changes are lost // b) carry out the changes, but don't use the log - even worse, // as it potentially creates a corrupted disk. - panic("transaction too large (%ld blocks, %ld main, log size %ld)!\n", - (long)_TransactionSize(), cache_blocks_in_main_transaction( - fVolume->BlockCache(), fTransactionID), (long)fLogSize); + dprintf("transaction too large (%d blocks, %d main, log size %d)!\n", + (int)_TransactionSize(), (int)cache_blocks_in_main_transaction( + fVolume->BlockCache(), fTransactionID), (int)fLogSize); return B_BUFFER_OVERFLOW; } }