2013-10-25 18:09:49

by KOSAKI Motohiro

[permalink] [raw]
Subject: [PATCH] Fix page_group_by_mobility_disabled breakage

From: KOSAKI Motohiro <[email protected]>

Currently, set_pageblock_migratetype screw up MIGRATE_CMA and
MIGRATE_ISOLATE if page_group_by_mobility_disabled is true. It
rewrite the argument to MIGRATE_UNMOVABLE and we lost these attribute.

The problem was introduced commit 49255c619f (page allocator: move
check for disabled anti-fragmentation out of fastpath). So, 4 years
lived issue may mean that nobody uses page_group_by_mobility_disabled.

But anyway, this patch fixes the problem.

Signed-off-by: KOSAKI Motohiro <[email protected]>
Cc: Mel Gorman <[email protected]>
---
mm/page_alloc.c | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index dd886fa..ef44d95 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -234,8 +234,8 @@ int page_group_by_mobility_disabled __read_mostly;

void set_pageblock_migratetype(struct page *page, int migratetype)
{
-
- if (unlikely(page_group_by_mobility_disabled))
+ if (unlikely(page_group_by_mobility_disabled &&
+ migratetype < MIGRATE_PCPTYPES))
migratetype = MIGRATE_UNMOVABLE;

set_pageblock_flags_group(page, (unsigned long)migratetype,
--
1.7.1


2013-10-30 15:25:16

by Mel Gorman

[permalink] [raw]
Subject: Re: [PATCH] Fix page_group_by_mobility_disabled breakage

On Fri, Oct 25, 2013 at 02:09:35PM -0400, [email protected] wrote:
> From: KOSAKI Motohiro <[email protected]>
>
> Currently, set_pageblock_migratetype screw up MIGRATE_CMA and
> MIGRATE_ISOLATE if page_group_by_mobility_disabled is true. It
> rewrite the argument to MIGRATE_UNMOVABLE and we lost these attribute.
>
> The problem was introduced commit 49255c619f (page allocator: move
> check for disabled anti-fragmentation out of fastpath). So, 4 years
> lived issue may mean that nobody uses page_group_by_mobility_disabled.
>

Nobody uses page_group_by_mobility_disabled with CMA at least.
page_group_by_mobility_disabled only kicks in automatically for small
machines so it's possible the condition is very rarely encountered.

Anyway

Acked-by: Mel Gorman <[email protected]>

--
Mel Gorman
SUSE Labs