[Crash-utility] new printk ringbuffer interface

Dave Anderson anderson at redhat.com
Fri Apr 24 13:16:35 UTC 2020



----- Original Message -----
> On 2020-04-23, HAGIO KAZUHITO(萩尾 一仁) <k-hagio-ab at nec.com> wrote:
> >> Should all struct sizes and field offsets be exported? It
> >> would look something like this:
> >>
> >>         VMCOREINFO_SYMBOL(prb);
> >>
> >>         VMCOREINFO_STRUCT_SIZE(printk_ringbuffer);
> >>         VMCOREINFO_OFFSET(printk_ringbuffer, desc_ring);
> >>         VMCOREINFO_OFFSET(printk_ringbuffer, text_data_ring);
> >>         VMCOREINFO_OFFSET(printk_ringbuffer, dict_data_ring);
> >>         VMCOREINFO_OFFSET(printk_ringbuffer, fail);
> >>
> >>         VMCOREINFO_STRUCT_SIZE(prb_desc_ring);
> >>         VMCOREINFO_OFFSET(prb_desc_ring, count_bits);
> >>         VMCOREINFO_OFFSET(prb_desc_ring, descs);
> >>         VMCOREINFO_OFFSET(prb_desc_ring, head_id);
> >>         VMCOREINFO_OFFSET(prb_desc_ring, tail_id);
> >>
> >>         VMCOREINFO_STRUCT_SIZE(prb_desc);
> >>         VMCOREINFO_OFFSET(prb_desc, info);
> >>         VMCOREINFO_OFFSET(prb_desc, state_var);
> >>         VMCOREINFO_OFFSET(prb_desc, text_blk_lpos);
> >>         VMCOREINFO_OFFSET(prb_desc, dict_blk_lpos);
> >>
> >>         VMCOREINFO_STRUCT_SIZE(prb_data_blk_lpos);
> >>         VMCOREINFO_OFFSET(prb_data_blk_lpos, begin);
> >>         VMCOREINFO_OFFSET(prb_data_blk_lpos, next);
> >>
> >>         VMCOREINFO_STRUCT_SIZE(printk_info);
> >>         VMCOREINFO_OFFSET(printk_info, seq);
> >>         VMCOREINFO_OFFSET(printk_info, ts_nsec);
> >>         VMCOREINFO_OFFSET(printk_info, text_len);
> >>         VMCOREINFO_OFFSET(printk_info, dict_len);
> >>         VMCOREINFO_OFFSET(printk_info, caller_id);
> >>
> >>         VMCOREINFO_STRUCT_SIZE(prb_data_ring);
> >>         VMCOREINFO_OFFSET(prb_data_ring, size_bits);
> >>         VMCOREINFO_OFFSET(prb_data_ring, data);
> >>         VMCOREINFO_OFFSET(prb_data_ring, head_id);
> >>         VMCOREINFO_OFFSET(prb_data_ring, tail_id);
> >
> > If there is no efficient way, we will need all of the entries in
> > VMCOREINFO.
> 
> It seems like a lot to export everything, but I don't have a problem
> with it. If we decide to export everything (which I expect we will need
> to do), then I would change my crash(8) implementation to also rely only
> on the VMCOREINFO. I see no point in having some implementations using
> debug data and other implementations using VMCOREINFO data, if
> VMCOREINFO has everything that is needed.

Please don't -- the crash utility supports ~15 different dumpfile
formats, the majority of which do *not* contain VMCOREINFO data.

For that reason, I try to avoid using VMCOREINFO data whenever possible,
precisely because the relevant data can be gathered from the vmlinux symbol
table and debuginfo data.

Dave





More information about the Crash-utility mailing list