Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755465Ab3IYXTc (ORCPT ); Wed, 25 Sep 2013 19:19:32 -0400 Received: from e23smtp05.au.ibm.com ([202.81.31.147]:37249 "EHLO e23smtp05.au.ibm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755387Ab3IYXT3 (ORCPT ); Wed, 25 Sep 2013 19:19:29 -0400 From: "Srivatsa S. Bhat" Subject: [RFC PATCH v4 07/40] mm: Track the freepage migratetype of pages accurately To: akpm@linux-foundation.org, mgorman@suse.de, dave@sr71.net, hannes@cmpxchg.org, tony.luck@intel.com, matthew.garrett@nebula.com, riel@redhat.com, arjan@linux.intel.com, srinivas.pandruvada@linux.intel.com, willy@linux.intel.com, kamezawa.hiroyu@jp.fujitsu.com, lenb@kernel.org, rjw@sisk.pl Cc: gargankita@gmail.com, paulmck@linux.vnet.ibm.com, svaidy@linux.vnet.ibm.com, andi@firstfloor.org, isimatu.yasuaki@jp.fujitsu.com, santosh.shilimkar@ti.com, kosaki.motohiro@gmail.com, srivatsa.bhat@linux.vnet.ibm.com, linux-pm@vger.kernel.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org Date: Thu, 26 Sep 2013 04:45:12 +0530 Message-ID: <20130925231510.26184.13440.stgit@srivatsabhat.in.ibm.com> In-Reply-To: <20130925231250.26184.31438.stgit@srivatsabhat.in.ibm.com> References: <20130925231250.26184.31438.stgit@srivatsabhat.in.ibm.com> User-Agent: StGIT/0.14.3 MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit X-TM-AS-MML: No X-Content-Scanned: Fidelis XPS MAILER x-cbid: 13092523-1396-0000-0000-0000039C0E70 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1621 Lines: 42 Due to the region-wise ordering of the pages in the buddy allocator's free lists, whenever we want to delete a free pageblock from a free list (for ex: when moving blocks of pages from one list to the other), we need to be able to tell the buddy allocator exactly which migratetype it belongs to. For that purpose, we can use the page's freepage migratetype (which is maintained in the page's ->index field). So, while splitting up higher order pages into smaller ones as part of buddy operations, keep the new head pages updated with the correct freepage migratetype information (because we depend on tracking this info accurately, as outlined above). Signed-off-by: Srivatsa S. Bhat --- mm/page_alloc.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/mm/page_alloc.c b/mm/page_alloc.c index d48eb04..e31daf4 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -950,6 +950,13 @@ static inline void expand(struct zone *zone, struct page *page, add_to_freelist(&page[size], &area->free_list[migratetype]); area->nr_free++; set_page_order(&page[size], high); + + /* + * Freepage migratetype is tracked using the index field of the + * first page of the block. So we need to update the new first + * page, when changing the page order. + */ + set_freepage_migratetype(&page[size], migratetype); } } -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/