public inbox for kexec@lists.infradead.org
 help / color / mirror / Atom feed
From: Jingbai Ma <jingbai.ma@hp.com>
To: HATAYAMA Daisuke <d.hatayama@jp.fujitsu.com>
Cc: Baoquan He <bhe@redhat.com>,
	Daisuke Nishimura <nishimura@mxp.nes.nec.co.jp>,
	usui@mxm.nes.nec.co.jp, WANG Chao <chaowang@redhat.com>,
	lisa mitchell <lisa.mitchell@hp.com>,
	RuiRui Yang <ruyang@redhat.com>,
	Masaki Tachibana <tachibana@mxm.nes.nec.co.jp>,
	Dave Anderson <anderson@redhat.com>,
	Vivek Goyal <vgoyal@redhat.com>,
	kumagai-atsushi <kumagai-atsushi@mxc.nes.nec.co.jp>,
	kexec@lists.infradead.org, Jingbai Ma <jingbai.ma@hp.com>,
	"Discussion list for crash utility usage,
	maintenance and development" <crash-utility@redhat.com>
Subject: Re: [BUG] [compressed kdump / SADUMP] makedumpfile header truncation error
Date: Tue, 17 Sep 2013 15:12:04 +0800	[thread overview]
Message-ID: <523800C4.6070809@hp.com> (raw)
In-Reply-To: <5237FCEC.8000608@jp.fujitsu.com>

On 09/17/2013 02:55 PM, HATAYAMA Daisuke wrote:
> (2013/09/17 13:36), Jingbai Ma wrote:
> <cut>
>>>
>>> And when these header structures change, the crash utility will need
>>> to be changed accordingly.
>>>
>>> Preferably for backwards-compatibility, a new header_version can be
>>> created, with the new expanded field located in the kdump_sub_header
>>> so that the original base structure can remain as-is. But I leave that
>>> up to the maintainers.
>>>
>>> Thanks,
>>> Dave
>>>
>>> _______________________________________________
>>> kexec mailing list
>>> kexec@lists.infradead.org
>>> http://lists.infradead.org/mailman/listinfo/kexec
>>>
>>
>> For the persistent data structures, we should use more precision
>> declaration int32_t, int64_t, uint64_t instead of ambiguous int, long
>> int, long long int.
>> For example, we can change structure disk_dump_header as below:
>> struct disk_dump_header {
>> char signature[SIG_LEN]; /* = "KDUMP " */
>> int32_t header_version; /* Dump header version */
>> struct new_utsname utsname; /* copy of system_utsname */
>> struct timeval timestamp; /* Time stamp */
>> uint32_t status; /* Above flags */
>> int32_t block_size; /* Size of a block in byte */
>> int32_t sub_hdr_size; /* Size of arch dependent
>> header in blocks */
>> uint32_t bitmap_blocks; /* Size of Memory bitmap in
>> block */
>> uint64_t max_mapnr; /* = max_mapnr */
>> uint32_t total_ram_blocks;/* Number of blocks should be
>> written */
>> uint32_t device_blocks; /* Number of total blocks in
>> * the dump device */
>> uint32_t written_blocks; /* Number of written blocks */
>> uint32_t current_cpu; /* CPU# which handles dump */
>> int32_t nr_cpus; /* Number of CPUs */
>> struct task_struct *tasks[0];
>> };
>>
>>
>
> Looking at arch directory, this structure is used on x86, x86_64, ppc,
> ppc64, s390
> and ia64. Does this definition work well on all the architectures?
>
> tasks member has obviously different length in each architecture but
> this member
> is never used now.
>
> More worse is kdump_sub_header structure. Obviously, unsigned long has
> different
> length on x86 and x86_64, though you have already noticed this. I don't
> know ABI on
> other architectures. Sorry.
>
> /*
> * Sub header for KDUMP
> * But Common header of KDUMP is disk_dump_header of diskdump.
> */
> struct kdump_sub_header {
> unsigned long phys_base;
> int dump_level; /* header_version 1 and later */
> int split; /* header_version 2 and later */
> unsigned long start_pfn; /* header_version 2 and later */
> unsigned long end_pfn; /* header_version 2 and later */
> off_t offset_vmcoreinfo;/* header_version 3 and later */
> unsigned long size_vmcoreinfo; /* header_version 3 and later */
> off_t offset_note; /* header_version 4 and later */
> unsigned long size_note; /* header_version 4 and later */
> off_t offset_eraseinfo; /* header_version 5 and later */
> unsigned long size_eraseinfo; /* header_version 5 and later */
> };
>

int32_t, int64_t, uint64_t, etc ... are parts of C99 standard:
http://en.wikipedia.org/wiki/C_data_types
All there types have been supported by GCC, so them should work on all 
the architectures.

Although change these persistent data structure will affect both 
makedumpfile and crash utility, but we will benefit from the consistent 
data structures independent from architectures. We can analyze a 
dumpfile on a OS with different architecture than the crashed OS.


-- 
Thanks,
Jingbai Ma

_______________________________________________
kexec mailing list
kexec@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/kexec

  reply	other threads:[~2013-09-17  7:12 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <50924626.13720007.1379359322944.JavaMail.root@redhat.com>
2013-09-16 19:45 ` [BUG] [compressed kdump / SADUMP] makedumpfile header truncation error Dave Anderson
2013-09-17  4:36   ` Jingbai Ma
2013-09-17  6:55     ` HATAYAMA Daisuke
2013-09-17  7:12       ` Jingbai Ma [this message]
2013-09-17  7:33         ` HATAYAMA Daisuke
2013-09-17  8:21           ` Jingbai Ma
2013-09-17 13:23             ` Dave Anderson
2013-09-18 10:30               ` Jingbai Ma
2013-09-18 14:17                 ` Dave Anderson
2013-09-19 12:55                   ` Ma, Jingbai (Kingboard)
2013-09-19 13:07                   ` Ma, Jingbai (Kingboard)
2013-09-17  6:41   ` HATAYAMA Daisuke

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=523800C4.6070809@hp.com \
    --to=jingbai.ma@hp.com \
    --cc=anderson@redhat.com \
    --cc=bhe@redhat.com \
    --cc=chaowang@redhat.com \
    --cc=crash-utility@redhat.com \
    --cc=d.hatayama@jp.fujitsu.com \
    --cc=kexec@lists.infradead.org \
    --cc=kumagai-atsushi@mxc.nes.nec.co.jp \
    --cc=lisa.mitchell@hp.com \
    --cc=nishimura@mxp.nes.nec.co.jp \
    --cc=ruyang@redhat.com \
    --cc=tachibana@mxm.nes.nec.co.jp \
    --cc=usui@mxm.nes.nec.co.jp \
    --cc=vgoyal@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox