[haiku-commits] haiku: hrev43922 - src/add-ons/kernel/file_systems/bfs

  • From: axeld@xxxxxxxxxxxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Sat, 31 Mar 2012 23:13:38 +0200 (CEST)

hrev43922 adds 1 changeset to branch 'master'
old head: e109dcf97b6b2e77132c171908af021468004485
new head: dcfb930a98e6a04c1f02147380cc3039f2316d22

----------------------------------------------------------------------------

dcfb930: Improved bfs_inode KDL command.

                                   [ Axel Dörfler <axeld@xxxxxxxxxxxxxxxx> ]

----------------------------------------------------------------------------

Revision:    hrev43922
Commit:      dcfb930a98e6a04c1f02147380cc3039f2316d22
URL:         http://cgit.haiku-os.org/haiku/commit/?id=dcfb930
Author:      Axel Dörfler <axeld@xxxxxxxxxxxxxxxx>
Date:        Sat Mar 31 21:13:05 2012 UTC

----------------------------------------------------------------------------

1 files changed, 26 insertions(+), 5 deletions(-)
src/add-ons/kernel/file_systems/bfs/Debug.cpp |   31 +++++++++++++++++---

----------------------------------------------------------------------------

diff --git a/src/add-ons/kernel/file_systems/bfs/Debug.cpp 
b/src/add-ons/kernel/file_systems/bfs/Debug.cpp
index 67cbf1f..3864f62 100644
--- a/src/add-ons/kernel/file_systems/bfs/Debug.cpp
+++ b/src/add-ons/kernel/file_systems/bfs/Debug.cpp
@@ -277,23 +277,44 @@ static int
 dump_inode(int argc, char** argv)
 {
        bool block = false;
-       if (argc == 3 && !strcmp(argv[1], "-b"))
+       if (argc >= 3 && !strcmp(argv[1], "-b"))
                block = true;
 
-       if (argc != 2 + (block ? 1 : 0) || !strcmp(argv[1], "--help")) {
-               kprintf("usage: bfsinode [-b] <ptr-to-inode>\n"
+       if (argc > 3 || !strcmp(argv[1], "--help")) {
+               kprintf("usage: bfsinode [-b] <ptr-to-inode> [<offset>]\n"
                        "  -b the address is regarded as pointer to a block 
instead of one "
-                       "to an inode.\n");
+                       "to an inode.\n"
+                       "  If <offset> is given, the block_run containing the 
offset in "
+                       "the data stream is printed -- this does not work with 
-b.\n");
                return 0;
        }
 
-       addr_t address = parse_expression(argv[argc - 1]);
+       addr_t address = parse_expression(argv[block ? 2 : 1]);
        bfs_inode* node;
        if (block)
                node = (bfs_inode*)address;
        else {
                Inode* inode = (Inode*)address;
 
+               if (argc == 3) {
+                       off_t offset = parse_expression(argv[2]);
+                       if (offset < 0) {
+                               kprintf("invalid offset %" B_PRIdOFF "\n", 
offset);
+                               return 0;
+                       }
+                       off_t baseOffset;
+                       block_run run;
+                       status_t status = inode->FindBlockRun(offset, run, 
baseOffset);
+                       if (status != B_OK) {
+                               kprintf("find block run failed: %s\n", 
strerror(status));
+                               return 0;
+                       }
+
+                       dump_block_run("block run:   ", run);
+                       kprintf("base offset: %" B_PRIdOFF "\n", baseOffset);
+                       return 0;
+               }
+
                kprintf("INODE %p\n", inode);
                kprintf("  rw lock:           %p\n", &inode->Lock());
                kprintf("  tree:              %p\n", inode->Tree());


Other related posts:

  • » [haiku-commits] haiku: hrev43922 - src/add-ons/kernel/file_systems/bfs - axeld