[RFC PATCH v3 29/35] mm: Update the freepage migratetype of pages during region allocation

2013-08-30 Thread Srivatsa S. Bhat
The freepage migratetype is used to determine which freelist a given
page should be added to, upon getting freed. To ensure that the page
goes to the right freelist, set the freepage migratetype of all
the pages of a region, when allocating freepages from the region allocator.

This helps ensure that upon freeing the pages or during buddy expansion,
the pages are added back to the freelists of the migratetype for which
the pages were originally requested from the region allocator.

Signed-off-by: Srivatsa S. Bhat 
---

 mm/page_alloc.c |3 +++
 1 file changed, 3 insertions(+)

diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index 3749e2a..a62730b 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -1022,6 +1022,9 @@ static int del_from_region_allocator(struct zone *zone, 
unsigned int order,
reg_area = _alloc->region[next_region].region_area[order];
ralloc_list = _area->list;
 
+   list_for_each_entry(page, ralloc_list, lru)
+   set_freepage_migratetype(page, migratetype);
+
free_list = >free_area[order].free_list[migratetype];
 
nr_pages = add_to_freelist_bulk(ralloc_list, free_list, order,

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[RFC PATCH v3 29/35] mm: Update the freepage migratetype of pages during region allocation

2013-08-30 Thread Srivatsa S. Bhat
The freepage migratetype is used to determine which freelist a given
page should be added to, upon getting freed. To ensure that the page
goes to the right freelist, set the freepage migratetype of all
the pages of a region, when allocating freepages from the region allocator.

This helps ensure that upon freeing the pages or during buddy expansion,
the pages are added back to the freelists of the migratetype for which
the pages were originally requested from the region allocator.

Signed-off-by: Srivatsa S. Bhat srivatsa.b...@linux.vnet.ibm.com
---

 mm/page_alloc.c |3 +++
 1 file changed, 3 insertions(+)

diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index 3749e2a..a62730b 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -1022,6 +1022,9 @@ static int del_from_region_allocator(struct zone *zone, 
unsigned int order,
reg_area = reg_alloc-region[next_region].region_area[order];
ralloc_list = reg_area-list;
 
+   list_for_each_entry(page, ralloc_list, lru)
+   set_freepage_migratetype(page, migratetype);
+
free_list = zone-free_area[order].free_list[migratetype];
 
nr_pages = add_to_freelist_bulk(ralloc_list, free_list, order,

--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/