From d98d96e9e502c22e8bd53bc92abdff21f7d92a65 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Mon, 6 Mar 2006 13:39:04 +0000 Subject: [PATCH] Added debugger command that dumps info about the vnode usage. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16607 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/system/kernel/fs/vfs.cpp | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/system/kernel/fs/vfs.cpp b/src/system/kernel/fs/vfs.cpp index 93827d4f4a..1c7d7bccad 100644 --- a/src/system/kernel/fs/vfs.cpp +++ b/src/system/kernel/fs/vfs.cpp @@ -2292,6 +2292,27 @@ dump_io_context(int argc, char **argv) return 0; } + +int +dump_vnode_usage(int argc, char **argv) +{ + kprintf("Unused vnodes: %ld (max unused %ld)\n", sUnusedVnodes, kMaxUnusedVnodes); + + struct hash_iterator iterator; + hash_open(sVnodeTable, &iterator); + + uint32 count = 0; + struct vnode *vnode; + while ((vnode = (struct vnode *)hash_next(sVnodeTable, &iterator)) != NULL) { + count++; + } + + hash_close(sVnodeTable, &iterator, false); + + kprintf("%lu vnodes total (%ld in use).\n", count, count - sUnusedVnodes); + return 0; +} + #endif // ADD_DEBUGGER_COMMANDS @@ -3186,6 +3207,7 @@ vfs_init(kernel_args *args) add_debugger_command("mount", &dump_mount, "info about the specified fs_mount"); add_debugger_command("mounts", &dump_mounts, "list all fs_mounts"); add_debugger_command("io_context", &dump_io_context, "info about the I/O context"); + add_debugger_command("vnode_usage", &dump_vnode_usage, "info about vnode usage"); #endif register_low_memory_handler(&vnode_low_memory_handler, NULL, 0);