Skip to content

Commit d100313

Browse files
gormanmLinus Torvalds
authored andcommitted
Fix calculation in move_freepages_block for counting pages
move_freepages_block() returns the number of blocks moved. This value is used to determine if a block of pages should be stolen for the exclusive use of a migrate type or not. However, the value returned is being used correctly. This patch fixes the calculation to return the number of base pages that have been moved. This should be considered a fix to the patch move-free-pages-between-lists-on-steal.patch Credit to Andy Whitcroft for spotting the problem. Signed-off-by: Mel Gorman <mel@csn.ul.ie> Acked-by: Andy Whitcroft <apw@shadowen.org> Acked-by: Christoph Lameter <clameter@sgi.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
1 parent 64c5e13 commit d100313

File tree

1 file changed

+4
-4
lines changed

1 file changed

+4
-4
lines changed

mm/page_alloc.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -718,7 +718,7 @@ int move_freepages(struct zone *zone,
718718
{
719719
struct page *page;
720720
unsigned long order;
721-
int blocks_moved = 0;
721+
int pages_moved = 0;
722722

723723
#ifndef CONFIG_HOLES_IN_ZONE
724724
/*
@@ -747,10 +747,10 @@ int move_freepages(struct zone *zone,
747747
list_add(&page->lru,
748748
&zone->free_area[order].free_list[migratetype]);
749749
page += 1 << order;
750-
blocks_moved++;
750+
pages_moved += 1 << order;
751751
}
752752

753-
return blocks_moved;
753+
return pages_moved;
754754
}
755755

756756
int move_freepages_block(struct zone *zone, struct page *page, int migratetype)
@@ -833,7 +833,7 @@ static struct page *__rmqueue_fallback(struct zone *zone, int order,
833833
start_migratetype);
834834

835835
/* Claim the whole block if over half of it is free */
836-
if ((pages << current_order) >= (1 << (MAX_ORDER-2)))
836+
if (pages >= (1 << (MAX_ORDER-2)))
837837
set_pageblock_migratetype(page,
838838
start_migratetype);
839839

0 commit comments

Comments
 (0)