Gitweb: http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=d100313fd615cc30374ff92e0b3facb053838330 Commit: d100313fd615cc30374ff92e0b3facb053838330 Parent: 64c5e135bf5a2a7f0ededb3435a31adbe0202f0c Author: Mel Gorman <[EMAIL PROTECTED]> AuthorDate: Tue Oct 16 01:26:00 2007 -0700 Committer: Linus Torvalds <[EMAIL PROTECTED]> CommitDate: Tue Oct 16 09:43:00 2007 -0700
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 <[EMAIL PROTECTED]> Acked-by: Andy Whitcroft <[EMAIL PROTECTED]> Acked-by: Christoph Lameter <[EMAIL PROTECTED]> Signed-off-by: Andrew Morton <[EMAIL PROTECTED]> Signed-off-by: Linus Torvalds <[EMAIL PROTECTED]> --- mm/page_alloc.c | 8 ++++---- 1 files changed, 4 insertions(+), 4 deletions(-) diff --git a/mm/page_alloc.c b/mm/page_alloc.c index ac8fc51..942498f 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -718,7 +718,7 @@ int move_freepages(struct zone *zone, { struct page *page; unsigned long order; - int blocks_moved = 0; + int pages_moved = 0; #ifndef CONFIG_HOLES_IN_ZONE /* @@ -747,10 +747,10 @@ int move_freepages(struct zone *zone, list_add(&page->lru, &zone->free_area[order].free_list[migratetype]); page += 1 << order; - blocks_moved++; + pages_moved += 1 << order; } - return blocks_moved; + return pages_moved; } 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, start_migratetype); /* Claim the whole block if over half of it is free */ - if ((pages << current_order) >= (1 << (MAX_ORDER-2))) + if (pages >= (1 << (MAX_ORDER-2))) set_pageblock_migratetype(page, start_migratetype); - To unsubscribe from this list: send the line "unsubscribe git-commits-head" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html