All of lore.kernel.org
 help / color / mirror / Atom feed
From: Petr Mladek <pmladek@suse.com>
To: John Ogness <john.ogness@linutronix.de>
Cc: Peter Zijlstra <peterz@infradead.org>,
	Sergey Senozhatsky <sergey.senozhatsky.work@gmail.com>,
	Sergey Senozhatsky <sergey.senozhatsky@gmail.com>,
	Steven Rostedt <rostedt@goodmis.org>,
	Linus Torvalds <torvalds@linux-foundation.org>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Andrea Parri <parri.andrea@gmail.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	Paul McKenney <paulmck@kernel.org>,
	kexec@lists.infradead.org, linux-kernel@vger.kernel.org
Subject: syslog size unread: was: [PATCH v3 3/3] printk: use the lockless ringbuffer
Date: Thu, 25 Jun 2020 17:20:42 +0200	[thread overview]
Message-ID: <20200625152042.GI8444@alley> (raw)
In-Reply-To: <20200618144919.9806-4-john.ogness@linutronix.de>

On Thu 2020-06-18 16:55:19, John Ogness wrote:
> Replace the existing ringbuffer usage and implementation with
> lockless ringbuffer usage. Even though the new ringbuffer does not
> require locking, all existing locking is left in place. Therefore,
> this change is purely replacing the underlining ringbuffer.
> --- a/kernel/printk/printk.c
> +++ b/kernel/printk/printk.c
> @@ -1609,11 +1633,15 @@ int do_syslog(int type, char __user *buf, int len, int source)
>  		break;
>  	/* Number of chars in the log buffer */
>  	case SYSLOG_ACTION_SIZE_UNREAD:
> +		if (source != SYSLOG_FROM_PROC) {
> +			text = kmalloc(LOG_LINE_MAX + PREFIX_MAX, GFP_KERNEL);
> +			if (!text)
> +				return -ENOMEM;

The buffer is needed only to count lines to count the size of
added prefixes. Could we use the new prb_read_valid_info() that
allows to get the number of lines without actually reading the buffer?

> +
> +		}
>  		logbuf_lock_irq();
> -		if (syslog_seq < log_first_seq) {
> +		if (syslog_seq < prb_first_seq(prb)) {
>  			/* messages are gone, move to first one */
> -			syslog_seq = log_first_seq;
> -			syslog_idx = log_first_idx;
> +			syslog_seq = prb_first_seq(prb);
>  			syslog_partial = 0;
>  		}
>  		if (source == SYSLOG_FROM_PROC) {

Best Regards,
Petr

WARNING: multiple messages have this Message-ID (diff)
From: Petr Mladek <pmladek@suse.com>
To: John Ogness <john.ogness@linutronix.de>
Cc: Andrea Parri <parri.andrea@gmail.com>,
	Sergey Senozhatsky <sergey.senozhatsky.work@gmail.com>,
	Paul McKenney <paulmck@kernel.org>,
	Peter Zijlstra <peterz@infradead.org>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	kexec@lists.infradead.org, linux-kernel@vger.kernel.org,
	Steven Rostedt <rostedt@goodmis.org>,
	Sergey Senozhatsky <sergey.senozhatsky@gmail.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	Linus Torvalds <torvalds@linux-foundation.org>
Subject: syslog size unread: was: [PATCH v3 3/3] printk: use the lockless ringbuffer
Date: Thu, 25 Jun 2020 17:20:42 +0200	[thread overview]
Message-ID: <20200625152042.GI8444@alley> (raw)
In-Reply-To: <20200618144919.9806-4-john.ogness@linutronix.de>

On Thu 2020-06-18 16:55:19, John Ogness wrote:
> Replace the existing ringbuffer usage and implementation with
> lockless ringbuffer usage. Even though the new ringbuffer does not
> require locking, all existing locking is left in place. Therefore,
> this change is purely replacing the underlining ringbuffer.
> --- a/kernel/printk/printk.c
> +++ b/kernel/printk/printk.c
> @@ -1609,11 +1633,15 @@ int do_syslog(int type, char __user *buf, int len, int source)
>  		break;
>  	/* Number of chars in the log buffer */
>  	case SYSLOG_ACTION_SIZE_UNREAD:
> +		if (source != SYSLOG_FROM_PROC) {
> +			text = kmalloc(LOG_LINE_MAX + PREFIX_MAX, GFP_KERNEL);
> +			if (!text)
> +				return -ENOMEM;

The buffer is needed only to count lines to count the size of
added prefixes. Could we use the new prb_read_valid_info() that
allows to get the number of lines without actually reading the buffer?

> +
> +		}
>  		logbuf_lock_irq();
> -		if (syslog_seq < log_first_seq) {
> +		if (syslog_seq < prb_first_seq(prb)) {
>  			/* messages are gone, move to first one */
> -			syslog_seq = log_first_seq;
> -			syslog_idx = log_first_idx;
> +			syslog_seq = prb_first_seq(prb);
>  			syslog_partial = 0;
>  		}
>  		if (source == SYSLOG_FROM_PROC) {

Best Regards,
Petr

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

  parent reply	other threads:[~2020-06-25 15:20 UTC|newest]

Thread overview: 74+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-06-18 14:49 [PATCH v3 0/3] printk: replace ringbuffer John Ogness
2020-06-18 14:49 ` John Ogness
2020-06-18 14:49 ` [PATCH v3 1/3] crash: add VMCOREINFO macro to define offset in a struct declared by typedef John Ogness
2020-06-18 14:49   ` John Ogness
2020-06-24  8:49   ` Petr Mladek
2020-06-24  8:49     ` Petr Mladek
2020-07-04  9:30   ` Baoquan He
2020-07-04  9:30     ` Baoquan He
2020-06-18 14:49 ` [PATCH v3 2/3] printk: add lockless ringbuffer John Ogness
2020-06-18 14:49   ` John Ogness
2020-06-29 15:32   ` Paul E. McKenney
2020-06-29 15:32     ` Paul E. McKenney
2020-07-02  8:35   ` Petr Mladek
2020-07-02  8:35     ` Petr Mladek
2020-06-18 14:49 ` [PATCH v3 3/3] printk: use the " John Ogness
2020-06-18 14:49   ` John Ogness
2020-06-18 18:23   ` kernel test robot
2020-06-18 18:23     ` kernel test robot
2020-06-18 18:23     ` kernel test robot
2020-06-18 18:23   ` [RFC PATCH] printk: _printk_rb_static_dict can be static kernel test robot
2020-06-18 18:23     ` kernel test robot
2020-06-18 18:23     ` kernel test robot
2020-06-19  6:49     ` John Ogness
2020-06-19  6:49       ` John Ogness
2020-06-19  6:49       ` John Ogness
2020-06-19 12:29       ` Steven Rostedt
2020-06-19 12:29         ` Steven Rostedt
2020-06-19 12:29         ` Steven Rostedt
2020-06-25  8:16   ` truncate dict: was: Re: [PATCH v3 3/3] printk: use the lockless ringbuffer Petr Mladek
2020-06-25  8:16     ` Petr Mladek
2020-06-26 13:48     ` John Ogness
2020-06-26 13:48       ` John Ogness
2020-06-25  8:28   ` buffer allocation: was: " Petr Mladek
2020-06-25  8:28     ` Petr Mladek
2020-06-26 15:02     ` John Ogness
2020-06-26 15:02       ` John Ogness
2020-06-29 14:04       ` Petr Mladek
2020-06-29 14:04         ` Petr Mladek
2020-06-29 21:57         ` John Ogness
2020-06-29 21:57           ` John Ogness
2020-07-02 13:27           ` Petr Mladek
2020-07-02 13:27             ` Petr Mladek
2020-06-25 12:09   ` record_printk_text tricks: " Petr Mladek
2020-06-25 12:09     ` Petr Mladek
2020-06-25 15:25     ` Petr Mladek
2020-06-25 15:25       ` Petr Mladek
2020-06-26 23:25     ` John Ogness
2020-06-26 23:25       ` John Ogness
2020-06-25 15:17   ` pending output optimization: " Petr Mladek
2020-06-25 15:17     ` Petr Mladek
2020-07-01 19:58     ` John Ogness
2020-07-01 19:58       ` John Ogness
2020-06-25 15:20   ` Petr Mladek [this message]
2020-06-25 15:20     ` syslog size unread: " Petr Mladek
2020-06-29 21:51     ` John Ogness
2020-06-29 21:51       ` John Ogness
2020-07-02  8:25   ` lijiang
2020-07-02  8:25     ` lijiang
2020-07-02  9:02     ` John Ogness
2020-07-02  9:02       ` John Ogness
2020-07-02  9:43       ` lijiang
2020-07-02  9:43         ` lijiang
2020-07-02 13:31         ` Petr Mladek
2020-07-02 13:31           ` Petr Mladek
2020-07-04  1:12           ` lijiang
2020-07-04  1:12             ` lijiang
2020-07-03 11:54         ` John Ogness
2020-07-03 11:54           ` John Ogness
2020-07-08  5:50           ` lijiang
2020-07-08  5:50             ` lijiang
2020-06-25  7:19 ` [PATCH v3 0/3] printk: replace ringbuffer Dave Young
2020-06-25  7:19   ` Dave Young
2020-06-25 14:13   ` John Ogness
2020-06-25 14:13     ` John Ogness

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=20200625152042.GI8444@alley \
    --to=pmladek@suse.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=john.ogness@linutronix.de \
    --cc=kexec@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=parri.andrea@gmail.com \
    --cc=paulmck@kernel.org \
    --cc=peterz@infradead.org \
    --cc=rostedt@goodmis.org \
    --cc=sergey.senozhatsky.work@gmail.com \
    --cc=sergey.senozhatsky@gmail.com \
    --cc=tglx@linutronix.de \
    --cc=torvalds@linux-foundation.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.