[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20110729085717.GC1843@barrios-desktop>
Date: Fri, 29 Jul 2011 17:57:17 +0900
From: Minchan Kim <minchan.kim@...il.com>
To: Alex Shi <alex.shi@...el.com>
Cc: majordomo@...ck.org, P@...igBrady.com, mgorman@...e.de,
linux-kernel@...r.kernel.org, andrea@...share.com,
tim.c.chen@...el.com, shaohua.li@...el.com,
akpm@...ux-foundation.org, riel@...hat.com, luto@....edu
Subject: Re: [PATCH] kswapd: assign new_order and new_classzone_idx after
wakeup in sleeping
On Fri, Jul 29, 2011 at 09:34:42AM +0800, Alex Shi wrote:
> There 2 place to read pgdat in kswapd. One is return from a successful
> balance, another is waked up from sleeping. But the new_order and
> new_classzone_idx are not assigned after kswapd_try_to_sleep(), that
> will cause a bug in the following scenario.
>
> After the last time successful balance, kswapd goes to sleep. So the
> new_order and new_classzone_idx were assigned to 0 and MAX-1 since there
> is no new wakeup during last time balancing. Now, a new wakeup came and
> finish balancing successful with order > 0. But since new_order is still
> 0, this time successful balancing were judged as a failed balance. so,
> if there is another new wakeup coming during balancing, kswapd cann't
> read this and still want to try to sleep. And if the new wakeup is a
> tighter request, kswapd may goes to sleep, not to do balancing. That is
> incorrect.
>
> So, to avoid above problem, the new_order and new_classzone_idx need to
> be assigned for later successful comparison.
>
> Paidrag Brady, Could like do a retry for your problem on this patch?
>
> Signed-off-by: Alex Shi <alex.shi@...el.com>
> Acked-by: Mel Gorman <mgorman@...e.de>
Reviewed-by: Minchan Kim <minchan.kim@...il.com>
--
Kind regards,
Minchan Kim
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists