[Crash-utility] Adding a new command rbtree

Dave Anderson anderson at redhat.com
Mon May 21 19:56:46 UTC 2012



----- Original Message -----
> The patch has been modified.

 
This command doesn't seem to work on RHEL5.  When I try to mimic
the radix_tree example that your help page shows:
  
    crash> help tree
    ...
    Display radix tree's address and position information only:
  
      crash> tree -t radix -o address_space.page_tree -p ffff88004e749de0
      ffffea0000c3da60
      position: root/0/0
      ffffea0000062a48
      position: root/0/1
      ffffea0000062a10
      position: root/0/2
      ffffea0000c39f88
      position: root/0/3
      ffffea0000071ab0
      position: root/0/4
      ...
  
The example above seems pretty straight-forward, where the address_space 
structure has a radix_tree_root "page_tree" member:
  
  crash> address_space.page_tree
  struct address_space {
     [0x8] struct radix_tree_root page_tree;
  }
  
So if I pick out my own address_space structure by looking at the crash 
utility's address space:
  
  crash> vm -p
  PID: 20739  TASK: ffff8100190330c0  CPU: 1   COMMAND: "crash"
         MM               PGD          RSS    TOTAL_VM
  ffff81003ceaeb00  ffff810023f9f000  111440k  190736k 
        VMA           START       END     FLAGS FILE
  ffff8100346e88c8     400000     a32000   1875 /var/CVS/crash-6.0.6/crash
  VIRTUAL     PHYSICAL
  400000       8d3e000
  401000      3ec23000
  402000      146a4000
  ...
  
If I do a "vtop" on the first user-space address above, its associated
address_space (page.mapping) is shown at the bottom:
  
  crash> vtop 400000
  VIRTUAL     PHYSICAL        
  400000      8d3e000         
  
     PML: 23f9f000 => 2cda8067
     PUD: 2cda8000 => 39f81067
     PMD: 39f81010 => 1448d067
     PTE: 1448d000 => 8d3e025
    PAGE: 8d3e000
  
    PTE    PHYSICAL  FLAGS
  8d3e025   8d3e000  (PRESENT|USER|ACCESSED)
  
        VMA           START       END     FLAGS FILE
  ffff8100346e88c8     400000     a32000   1875 /var/CVS/crash-6.0.6/crash
  
        PAGE       PHYSICAL      MAPPING       INDEX CNT FLAGS
  ffff8100008d4590  8d3e000 ffff81001b23eb08        0  3 808000000086c
  crash> 
  
which shows this:
  
  crash> address_space ffff81001b23eb08
  struct address_space {
    host = 0xffff81001b23e9f8, 
    page_tree = {
      height = 0x2, 
      gfp_mask = 0x220, 
      rnode = 0xffff81001d52f0d0
    }, 
  ...
  
But using your example to dump the pages in the address_space, 
I always see something like this:
  
  crash> tree -t radix -o address_space.page_tree -p ffff81001b23eb08
  radix_tree_node at ffff81001d52f0d0
  struct radix_tree_node {
    count = 0x18, 
    slots = {0xffff81001fa7dce0, 0xffff810025e266d8, 0xffff81000c939718, 0xffff81000ac41718, 0xffff81002eba3b48, 0xffff81002fc73050
  , 0xffff81000ee6d2a8, 0xffff81000842a2e8, 0xffff81000ed5f500, 0xffff81003246cda0, 0xffff810016305da0, 0xffff81002008dce0, 0xffff8
  1001fb02970, 0xffff81002aa77ce0, 0xffff81003292f090, 0xffff8100071e28b0, 0xffff8100364b3050, 0xffff810026d72ac8, 0xffff81000d6b04
  c0, 0xffff810033eda480, 0xffff81000bad1540, 0x0, 0xffff8100392786d8, 0x0, 0xffff810036a85758, 0xffff810031b92698, 0x0, 0x0, 0x0, 
  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
   0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, 
    tags = {{0x0}, {0x0}}
  }
  tree: height 6251 is greater than height_to_maxindex[]                  index 12
  crash>
  
What's going on there?  It happens on all RHEL5 dumpfiles I test.

Dave

  




More information about the Crash-utility mailing list