Sorry to trouble you all. I found the right way: I should use the -o option when I create cow image files. Then hexdump can give full info.
~> touch testcow # maked up backing_file ahead to get non-0s .mtime ~> qemu-img create -f cow -o backing_file=testcow,size=1M dummy Formatting 'dummy', fmt=cow size=1048576 backing_file='testcow' ~> hexdump -C dummy 00000000 4f 4f 4f 4d 00 00 00 02 74 65 73 74 63 6f 77 00 |OOOM....testcow.| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| * 00000400 00 00 00 00 00 00 00 00 54 08 66 e8 00 00 00 00 |........T.f.....| 00000410 00 10 00 00 00 00 02 00 00 00 00 00 00 00 00 00 |................| 00000420 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| * 00000510 00 00 00 00 00 00 00 00 |........| 00000518 -- Regards, shhuiw At 2014-09-03 01:27:00, "shhuiw" <shh...@163.com> wrote: > >Hi, > >I'm reading the source code of cow.c: >https://github.com/qemu/qemu/blob/master/block/cow.c >and try to understand the format better. > >I created a cow format imagefile and can run 'qume-img info' to query the >header info >------------------------------------------------------------------------------- >-bash-4.1$ qemu-img create -f cow dummy 1M >Formatting 'test/dummy', fmt=cow size=1048576 >-bash-4.1$ qemu-img info dummy >image: dummy >file format: cow >virtual size: 1.0M (1048576 bytes) >disk size: 4.0K > > >But when I used hexdump to dis the header part, I cannot find all info >recorded: >(compared the define of struct cow_header_v2 and cow_create()) >------------------------------------------------------------------------------ >1) recognize the magic and version info: >-bash-4.1$ hexdump -C dummy -n 8 >00000000 4f 4f 4f 4d 00 00 00 02 |OOOM....| >00000008 > >2) backing_file and mtime fields are 0s: > # I think the "dummy" should be recorded >-bash-4.1$ hexdump -C dummy -n 1032 >00000000 4f 4f 4f 4d 00 00 00 02 00 00 00 00 00 00 00 00 |OOOM............| >00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| >* >00000400 00 00 00 00 00 00 00 00 |........| >00000408 >-bash-4.1$ hexdump -C dummy -n 1036 >00000000 4f 4f 4f 4d 00 00 00 02 00 00 00 00 00 00 00 00 |OOOM............| >00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| >* >00000400 00 00 00 00 00 00 00 00 00 00 00 00 |............| >0000040c > >3) size field is 0s: >-bash-4.1$ hexdump -C dummy -n 1044 > # size should be 1M >00000000 4f 4f 4f 4d 00 00 00 02 00 00 00 00 00 00 00 00 |OOOM............| >00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| >* >00000410 00 00 00 00 |....| >00000414 > >4) sectorsize is 512: >-bash-4.1$ hexdump -C dummy -n 1048 >00000000 4f 4f 4f 4d 00 00 00 02 00 00 00 00 00 00 00 00 |OOOM............| >00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| >* >00000410 00 00 00 00 00 10 00 00 |........| >00000418 > > >Can anyone help to explain this? Or how to debug further? > >-- > >Regards, >shhuiw