mm/page_alloc: add informative debugging message in page_outside_zone_boundaries()
authorCody P Schafer <cody@linux.vnet.ibm.com>
Sat, 23 Feb 2013 00:35:28 +0000 (16:35 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Sun, 24 Feb 2013 01:50:20 +0000 (17:50 -0800)
Add a debug message which prints when a page is found outside of the
boundaries of the zone it should belong to. Format is:
"page $pfn outside zone [ $start_pfn - $end_pfn ]"

[akpm@linux-foundation.org: s/pr_debug/pr_err/]
Signed-off-by: Cody P Schafer <cody@linux.vnet.ibm.com>
Cc: David Hansen <dave@linux.vnet.ibm.com>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Johannes Weiner <hannes@cmpxchg.org>
Cc: Mel Gorman <mel@csn.ul.ie>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
mm/page_alloc.c

index 9614aabee8c5bb20af749eebb68c9f61f8e027be..a40b2f1cac2fb3fb5f82ca5f84f51f7182680685 100644 (file)
@@ -247,13 +247,20 @@ static int page_outside_zone_boundaries(struct zone *zone, struct page *page)
        int ret = 0;
        unsigned seq;
        unsigned long pfn = page_to_pfn(page);
+       unsigned long sp, start_pfn;
 
        do {
                seq = zone_span_seqbegin(zone);
+               start_pfn = zone->zone_start_pfn;
+               sp = zone->spanned_pages;
                if (!zone_spans_pfn(zone, pfn))
                        ret = 1;
        } while (zone_span_seqretry(zone, seq));
 
+       if (ret)
+               pr_err("page %lu outside zone [ %lu - %lu ]\n",
+                       pfn, start_pfn, start_pfn + sp);
+
        return ret;
 }