Re: [RFC PATCH v4 9/9] printk: use a new ringbuffer implementation

John Ogness
2019-08-16T09:41:50Z

On 2019-08-16, Dave Young <dyoung@redhat.com> wrote:
> John, can you cc kexec list for your later series?

Sure.

> On 08/08/19 at 12:32am, John Ogness wrote:
>> This is a major change because the API (and underlying workings) of
>> the new ringbuffer are completely different than the previous
>> ringbuffer. Since there are several components of the printk
>> infrastructure that use the ringbuffer API (console, /dev/kmsg,
>> syslog, kmsg_dump), there are quite a few changes throughout the
>> printk implementation.
>>
>> This is also a conservative change because it continues to use the
>> logbuf_lock raw spinlock even though the new ringbuffer is lockless.
>>
>> The externally visible changes are:
>>
>> 1. The exported vmcore info has changed:
>>
>> - VMCOREINFO_SYMBOL(log_buf);
>> - VMCOREINFO_SYMBOL(log_buf_len);
>> - VMCOREINFO_SYMBOL(log_first_idx);
>> - VMCOREINFO_SYMBOL(clear_idx);
>> - VMCOREINFO_SYMBOL(log_next_idx);
>> + VMCOREINFO_SYMBOL(printk_rb_static);
>> + VMCOREINFO_SYMBOL(printk_rb_dynamic);
>
> I assumed this needs some userspace work in kexec, how did you test
> them?

I did not test any direct userspace access to the ringbuffer structures.

> makedumpfile should need changes to dump the kernel log.
>
> Also kexec-tools includes a vmcore-dmesg.c to extrace dmesg from
> /proc/vmcore.

Thanks for the heads up. I'll take a look at it. The code changes should
be straight forward. I expect there will need to be backwards
compatibility. Perhaps it would check first for "printk_rb_*" then
fallback to "log_*"?

John Ogness