[Crash-utility] patch to read vmware vmss file

Dave Anderson anderson at redhat.com
Tue Feb 3 16:52:14 UTC 2015



----- Original Message -----
> hi,
> 
> vmss file is VMware virtual machine snapshot file and contains all the
> necessary memory dump that crash requires.
> there is public available parse to read the format.
> https://code.google.com/p/vmsnparser/
> there is vmss2core ( https://labs.vmware.com/flings/vmss2core ) to convert it
> to standard core file.
> and this patch just enables crash to read it directly.
> 
> rgds,
> Dyno

Hello Dyno,

Thank you very much for finally doing this.  It is a welcome addition.

I cannot do much but compile-test it, so it would be helpful
if you could provide a sample VMSS vmcore available for future
testing.  Can you make one available (preferably small but with
more than one cpu)? 

I have two small issues that I'd like you to address.  First,
please add is_vmware_vmss and vmware_vmss_init prototypes to 
the others you have placed in defs.h:

$ make warn
... [ cut ] ...
cc -c -g -DX86_64 -DLZO -DSNAPPY -DGDB_7_6  main.c -Wall -O2 -Wstrict-prototypes -Wmissing-prototypes -fstack-protector -Wformat-security  
main.c: In function 'main':
main.c:644:4: warning: implicit declaration of function 'is_vmware_vmss' [-Wimplicit-function-declaration]
... [ cut ] ...
cc -c -g -DX86_64 -DLZO -DSNAPPY -DGDB_7_6  filesys.c -Wall -O2 -Wstrict-prototypes -Wmissing-prototypes -fstack-protector -Wformat-security 
filesys.c: In function 'memory_source_init':
filesys.c:249:4: warning: implicit declaration of function 'vmware_vmss_init' [-Wimplicit-function-declaration]
...

Secondly, I do not want to separate out MEMORY_SOURCES2/VMWARE_VMSS as you
have done.  I understand that you did it because of the exhaustion
of pc->flags bits.  However, we can simply do the same thing that was done
when the SADUMP facility was added, which is to move one of the pre-existing 
pc->flags bits into pc->flags2.  There are several of them that can be
safely moved. 

I suggest moving GET_TIMESTAMP to pc->flags2.  Looking at its use from 
cscope, it is only used in these 3 places:

  C symbol: GET_TIMESTAMP

    File     Function    Line
  0 defs.h   <global>    207 #define GET_TIMESTAMP (0x100000ULL)
  1 kernel.c kernel_init 204 if (pc->flags & GET_TIMESTAMP) {
  2 main.c   main        340 pc->flags |= GET_TIMESTAMP;

So please move GET_TIMESTAMP to pc->flags2, fix kernel_init() and main(),
assign 0x100000ULL to VMWARE_VMSS, and put VMWARE_VMSS in MEMORY_SOURCES.

Again, I really appreciate your effort.  Can you repost this on short order?
I am planning on doing the crash-7.1.0 release by the end of the week, and
I would like to include this feature.

Thanks,
  Dave




More information about the Crash-utility mailing list