lkml.org 
[lkml]   [2015]   [Mar]   [26]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [patch 05/12] mm: oom_kill: generalize OOM progress waitqueue
On Wed 25-03-15 02:17:09, Johannes Weiner wrote:
> It turns out that the mechanism to wait for exiting OOM victims is
> less generic than it looks: it won't issue wakeups unless the OOM
> killer is disabled.
>
> The reason this check was added was the thought that, since only the
> OOM disabling code would wait on this queue, wakeup operations could
> be saved when that specific consumer is known to be absent.
>
> However, this is quite the handgrenade. Later attempts to reuse the
> waitqueue for other purposes will lead to completely unexpected bugs
> and the failure mode will appear seemingly illogical. Generally,
> providers shouldn't make unnecessary assumptions about consumers.
>
> This could have been replaced with waitqueue_active(), but it only
> saves a few instructions in one of the coldest paths in the kernel.
> Simply remove it.
>
> Signed-off-by: Johannes Weiner <hannes@cmpxchg.org>

Acked-by: Michal Hocko <mhocko@suse.cz>

> ---
> mm/oom_kill.c | 6 +-----
> 1 file changed, 1 insertion(+), 5 deletions(-)
>
> diff --git a/mm/oom_kill.c b/mm/oom_kill.c
> index 88aa9ba40fa5..d3490b019d46 100644
> --- a/mm/oom_kill.c
> +++ b/mm/oom_kill.c
> @@ -437,11 +437,7 @@ void exit_oom_victim(void)
> {
> clear_thread_flag(TIF_MEMDIE);
>
> - /*
> - * There is no need to signal the lasst oom_victim if there
> - * is nobody who cares.
> - */
> - if (!atomic_dec_return(&oom_victims) && oom_killer_disabled)
> + if (!atomic_dec_return(&oom_victims))
> wake_up_all(&oom_victims_wait);
> }
>
> --
> 2.3.3
>

--
Michal Hocko
SUSE Labs


\
 
 \ /
  Last update: 2015-03-26 14:21    [W:0.367 / U:0.692 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site