At 2012-5-22 4:21, Dave Anderson wrote:
 ----- Original Message -----
> The patch has been modified.
 Whereas the radix_tree problem I showed in my last email seems to
 be RHEL5-related, I cannot dump a red-black tree from an rb_root on
 RHEL5, RHEL6 or Fedora. 
I didn't explain the address clearly.
<cut>
The meaning of the "start" argument, which can be expressed either
symbolically or in hexadecimal format, depends upon whether the -N
option is pre-pended or not:
         start  The address of the structure where radix_tree_root(radix
                tree) or rb_node(red-black tree) is embeded.
      -N start  The address of the structure radix_tree_node(radix tree)
                or rb_node(red-black tree)
<cut>
So you can only specified rb_node's related address. The following is
about why the command doesn't support your situation.
In your situation, the offset you offered is the offset of rb_root.
struct rb_root
{
         struct rb_node *rb_node;
};
So I can get the address of root node, then get the address of its
offspring nodes. But now, I cannot convert the address of an
rb_node(offspring node) to its related structure's information. In
details, the rb_node may be embeded in a structure, but the offset of
rb_node is not offered. So the offset should be the offset of rb_node.
 For example, taking an mm_struct, it has an "mm_rb" rb_root:
    crash>  mm_struct.mm_rb
    struct mm_struct {
        [0x8] struct rb_root mm_rb;
    }
 Therefore I should be able to dump it with:
    crash>  tree -t rb -o mm_struct.mm_rb<mm-struct-address>
 I get the mm_struct address like so:
    crash>  vm
    PID: 20739  TASK: ffff8100190330c0  CPU: 3   COMMAND: "crash"
           MM               PGD          RSS    TOTAL_VM
    ffff81003ceaeb00  ffff810023f9f000  111452k  190736k
    ...
 But it always fails like this on RHEL5:
    crash>  tree -t rb -o mm_struct.mm_rb ffff81003ceaeb00
    ffff81003ceaeb08
    ffffffff8006fe65
    6508ec8348f38948
    tree: invalid kernel virtual address: 6508ec8348f38958  type: "rb_node
rb_left"
    crash>
 The same thing happens on RHEL6:
    crash>  vm
    PID: 14353  TASK: ffff88003a93c080  CPU: 3   COMMAND: "crash"
           MM               PGD          RSS    TOTAL_VM
    ffff880037b65840  ffff88001c31b000  153552k  288936k
    ...
    crash>  tree -t rb -o mm_struct.mm_rb ffff880037b65840
    ffff880037b65848
    ffffffff81010800
    f075894ce86d894c
    tree: invalid kernel virtual address: f075894ce86d895c  type: "rb_node
rb_left"
    crash>
 And on a Fedora 3.3.1-3.fc16 kernel:
    crash>  vm
    PID: 1175   TASK: ffff88003acb9730  CPU: 2   COMMAND: "crash"
           MM               PGD          RSS    TOTAL_VM
    ffff880038495c00  ffff88003ac5a000  181580k  335436k
    ...
    crash>  tree -t rb -o mm_struct.mm_rb ffff880038495c00
    ffff880038495c08
    ffffffff81018ce0
    f075894ce86d894c
    tree: invalid kernel virtual address: f075894ce86d895c  type: "rb_node
rb_left"
    crash>
 What's going on there?
 Dave
 --
 Crash-utility mailing list
 Crash-utility(a)redhat.com
 
https://www.redhat.com/mailman/listinfo/crash-utility
 
-- 
--
Regards
Qiao Nuohan