[PATCH v2 0/7][next] printk: reimplement LOG_CONT handling

From: John Ogness
Date: Mon Aug 24 2020 - 06:35:56 EST


Hello,

Here is v2 for the second series to rework the printk subsystem.
(The v1 is here [0].) This series implements a new ringbuffer
feature that allows the last record to be extended. Petr Mladek
provided the initial proof of concept [1] for this.

Using the record extension feature, LOG_CONT is re-implemented
in a way that exactly preserves its behavior, but avoids the
need for an extra buffer. In particular, it avoids the need for
any synchronization that such a buffer requires.

This series deviates from the agreements [2] made at the meeting
during LPC2019 in Lisbon. The test results of the v1 series
showed that the effects on existing userspace tools using
/dev/kmsg (journalctl, dmesg) were not acceptable [3]. That is
why a new decision [4] was made to preserve the current LOG_CONT
behavior.

Patch 5 introduces two new memory barriers. However, both are
alternate path memory barriers. They exactly match the purpose
and context of the two existing memory barriers that they
provide an alternate path for. For this reason, I do not
believe that a new memory barrier review is necessary.
Nevertheless, I have included the memory barrier experts CC.

Patch 6 assumes that the gdb script series [5] for the new
printk ringbuffer has been applied.

John Ogness

[0] https://lkml.kernel.org/r/20200717234818.8622-1-john.ogness@xxxxxxxxxxxxx
[1] https://lkml.kernel.org/r/20200812163908.GH12903@alley
[2] https://lkml.kernel.org/r/87k1acz5rx.fsf@xxxxxxxxxxxxx
[3] https://lkml.kernel.org/r/20200811160551.GC12903@alley
[4] https://lkml.kernel.org/r/CAHk-=wj_b6Bh=d-Wwh0xYqoQBhHkYeExhszkpxdRA6GjTvkRiQ@xxxxxxxxxxxxxx
[5] https://lkml.kernel.org/r/20200814212525.6118-1-john.ogness@xxxxxxxxxxxxx

John Ogness (7):
printk: ringbuffer: rename DESC_COMMITTED_MASK flag
printk: ringbuffer: change representation of reusable
printk: ringbuffer: relocate get_data()
printk: ringbuffer: add BLK_DATALESS() macro
printk: ringbuffer: add finalization/extension support
printk: reimplement log_cont using record extension
scripts/gdb: support printk finalized records

Documentation/admin-guide/kdump/gdbmacros.txt | 10 +-
kernel/printk/printk.c | 98 +---
kernel/printk/printk_ringbuffer.c | 496 +++++++++++++++---
kernel/printk/printk_ringbuffer.h | 12 +-
scripts/gdb/linux/dmesg.py | 10 +-
5 files changed, 453 insertions(+), 173 deletions(-)

--
2.20.1