Revert "mm: compaction: handle incorrect MIGRATE_UNMOVABLE type pageblocks"
This reverts commit 5ceb9ce6fe
.
That commit seems to be the cause of the mm compation list corruption
issues that Dave Jones reported. The locking (or rather, absense
there-of) is dubious, as is the use of the 'page' variable once it has
been found to be outside the pageblock range.
So revert it for now, we can re-visit this for 3.6. If we even need to:
as Minchan Kim says, "The patch wasn't a bug fix and even test workload
was very theoretical".
Reported-and-tested-by: Dave Jones <davej@redhat.com>
Acked-by: Hugh Dickins <hughd@google.com>
Acked-by: KOSAKI Motohiro <kosaki.motohiro@gmail.com>
Acked-by: Minchan Kim <minchan@kernel.org>
Cc: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
Cc: Kyungmin Park <kyungmin.park@samsung.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
@@ -94,9 +94,6 @@ extern void putback_lru_page(struct page *page);
|
||||
/*
|
||||
* in mm/page_alloc.c
|
||||
*/
|
||||
extern void set_pageblock_migratetype(struct page *page, int migratetype);
|
||||
extern int move_freepages_block(struct zone *zone, struct page *page,
|
||||
int migratetype);
|
||||
extern void __free_pages_bootmem(struct page *page, unsigned int order);
|
||||
extern void prep_compound_page(struct page *page, unsigned long order);
|
||||
#ifdef CONFIG_MEMORY_FAILURE
|
||||
@@ -104,7 +101,6 @@ extern bool is_free_buddy_page(struct page *page);
|
||||
#endif
|
||||
|
||||
#if defined CONFIG_COMPACTION || defined CONFIG_CMA
|
||||
#include <linux/compaction.h>
|
||||
|
||||
/*
|
||||
* in mm/compaction.c
|
||||
@@ -123,14 +119,11 @@ struct compact_control {
|
||||
unsigned long nr_migratepages; /* Number of pages to migrate */
|
||||
unsigned long free_pfn; /* isolate_freepages search base */
|
||||
unsigned long migrate_pfn; /* isolate_migratepages search base */
|
||||
enum compact_mode mode; /* Compaction mode */
|
||||
bool sync; /* Synchronous migration */
|
||||
|
||||
int order; /* order a direct compactor needs */
|
||||
int migratetype; /* MOVABLE, RECLAIMABLE etc */
|
||||
struct zone *zone;
|
||||
|
||||
/* Number of UNMOVABLE destination pageblocks skipped during scan */
|
||||
unsigned long nr_pageblocks_skipped;
|
||||
};
|
||||
|
||||
unsigned long
|
||||
|
Reference in New Issue
Block a user