Re: [PATCH] net/skbuff: silence warnings under memory pressure
From: Sergey Senozhatsky <hidden>
Date: 2019-09-09 01:10:25
Also in:
linux-mm, lkml
On (09/06/19 17:32), Petr Mladek wrote:
quoted
[..]quoted
I mean, really, do we need to keep calling wake up if it probably never even executed?I guess ratelimiting you are talking about ("if it probably never even executed") would be to check if we have already called wake up on the log_wait ->head. For that we need to, at least, take log_wait spin_lock and check that ->head is still in TASK_INTERRUPTIBLE; which is (quite, but not exactly) close to what wake_up_interruptible() does - it doesn't wake up the same task twice, it bails out on `p->state & state' check.I have just realized that only sleeping tasks are in the waitqueue. It is already handled by waitqueue_active() check.
Yes.
I am afraid that we could not ratelimit the wakeups. The userspace loggers might then miss the last lines for a long.
That's my concern as well.
We could move wake_up_klogd() back to console_unlock(). But it might end up with a back-and-forth games according to who is currently complaining.
We still don't need irq_work, tho. If we can do printk()->console_unlock()->up()->try_to_wake_up() then we can also do printk() -> try_to_wake_up() It's LOGLEVEL_SCHED which tells us if we can try_to_wake_up() or cannot.
Sigh, I still suggest to ratelimit the warning about failed allocation.
Hard to imagine how many printk()-s we will have to ratelimit. To imagine NET maintainers being OK with this is even harder. -ss