On Tue 2018-10-02 11:38:35, Sergey Senozhatsky wrote:
> From: Sergey Senozhatsky <[email protected]>
> 
> Prior to 5c2992ee7fd8a29 ("printk: remove console flushing special
> cases for partial buffered lines") we would do console_cont_flush()
> for each pr_cont() to print cont fragments, so console_unlock() would
> actually print data:
> 
>       pr_cont();
>        console_lock();
>        console_unlock()
>         console_cont_flush(); // print cont fragment
>       ...
>       pr_cont();
>        console_lock();
>        console_unlock()
>         console_cont_flush(); // print cont fragment
> 
> We don't do console_cont_flush() anymore, so when we do pr_cont()
> console_unlock() does nothing (unless we flushed the cont buffer):
> 
>       pr_cont();
>        console_lock();
>        console_unlock();      // noop
>       ...
>       pr_cont();
>        console_lock();
>        console_unlock();      // noop
>       ...
>       pr_cont();
>         cont_flush();
>           console_lock();
>           console_unlock();   // print data
> 
> We also wakeup klogd purposelessly for pr_cont() output - un-flushed
> cont buffer is not stored in log_buf; there is nothing to pull.
> 
> Thus we can console_lock()/console_unlock()/wake_up_klogd() only when
> we know that we log_store()-ed a message and there is something to
> print to the consoles/syslog.
> 
> Signed-off-by: Sergey Senozhatsky <[email protected]>
> ---
>  kernel/printk/printk.c | 10 +++++++---
>  1 file changed, 7 insertions(+), 3 deletions(-)

The patch makes perfect sense. It looks a bit hacky but I can't
think about any less hacky one.

I wonder if it is worth it. But if nobody else is against it
I am going to push it.

I just hope that we will get rid of it with the buffered printk
rather sooner than later.

Best Regards,
Petr

Reply via email to