[Crash-utility] [PATCH 1/1] CLI list command, print deep structure members

Dave Anderson anderson at redhat.com
Tue Apr 28 13:44:43 UTC 2015



----- Original Message -----
> 
> 
> ----- Original Message -----
> > Hi Dave,
> > 
> > I found it useful to be able listing structure's fields which are resided
> > deeper than the first level:
> > 
> > crash> list super_block.s_list -s
> > super_block.s_id,s_dquot.info[1].dqi_dirty_list,s_dquot.dqonoff_mutex.count.counter
> > -H 0xc0a9c800
> > de805c00
> > s_id =
> > "sysfs\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000",
> > s_dquot.info[1].dqi_dirty_list = {
> >   next = 0x0,
> >   prev = 0x0
> > },
> > s_dquot.dqonoff_mutex.count.counter = 1
> > de805800
> > s_id =
> > "rootfs\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000",
> > s_dquot.info[1].dqi_dirty_list = {
> >   next = 0x0,
> >   prev = 0x0
> > },
> > s_dquot.dqonoff_mutex.count.counter = 1
> > 
> > Here is a draft patch which contains corresponding logic.
> > I will appreciate your comments and suggestions.
> > 
> > Best regards,
> > Alexandr
> 
> Hi Alexandr,
> 
> This looks quite useful.
> 
> I haven't looked at the details, but this kind of change modifies an a critical
> area of usage that I cannot risk breaking.
> 
> To prevent any kind of possible regression/breakage or other unexpected behavior,
> would it be possible to call parse_for_member_new() *only* if it is required?
> In other words, if the commented-out MEMBER_EXISTS() call fails, then you could
> set a flag to force it to attempt parse_for_member_new().  Otherwise, it could
> continue to use the older/simpler parse_for_member() function.
> 
> I'll dig into the patch later, test it out, etc., and it's entirely possible
> that I'll change my mind, but paranoia forces me to err on the side of caution.
> 
> Dave
 
Another issue that comes to mind is that there are several other instances
in the crash utility command set besides the "list" command that specify 
arguments that can be expressed in the "struct.member" format.  

By any chance, did you also attempt to fit this capability into the "struct"
command itself?  And then there's also "tree", "task -R", "waitq", etc.

Dave




 




More information about the Crash-utility mailing list