summaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorDave Hansen <dave@sr71.net>2014-01-23 15:52:49 -0800
committerLinus Torvalds <torvalds@linux-foundation.org>2014-01-23 16:36:50 -0800
commitf0b791a34cb3cffd2bbc3ca4365c9b719fa2c9f3 (patch)
treec4aa42cd8ecd15eca056a944788f5457e3a370ef /include
parent12ab028be0008640de712ca890dc1a9ae224934d (diff)
downloadlinux-f0b791a34cb3cffd2bbc3ca4365c9b719fa2c9f3.tar.gz
linux-f0b791a34cb3cffd2bbc3ca4365c9b719fa2c9f3.tar.bz2
linux-f0b791a34cb3cffd2bbc3ca4365c9b719fa2c9f3.zip
mm: print more details for bad_page()
bad_page() is cool in that it prints out a bunch of data about the page. But, I can never remember which page flags are good and which are bad, or whether ->index or ->mapping is required to be NULL. This patch allows bad/dump_page() callers to specify a string about why they are dumping the page and adds explanation strings to a number of places. It also adds a 'bad_flags' argument to bad_page(), which it then dumps out separately from the flags which are actually set. This way, the messages will show specifically why the page was bad, *specifically* which flags it is complaining about, if it was a page flag combination which was the problem. [akpm@linux-foundation.org: switch to pr_alert] Signed-off-by: Dave Hansen <dave.hansen@linux.intel.com> Reviewed-by: Christoph Lameter <cl@linux.com> Cc: Andi Kleen <andi@firstfloor.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'include')
-rw-r--r--include/linux/mm.h4
1 files changed, 3 insertions, 1 deletions
diff --git a/include/linux/mm.h b/include/linux/mm.h
index a512dd836931..03bbcb84d96e 100644
--- a/include/linux/mm.h
+++ b/include/linux/mm.h
@@ -2029,7 +2029,9 @@ extern void shake_page(struct page *p, int access);
extern atomic_long_t num_poisoned_pages;
extern int soft_offline_page(struct page *page, int flags);
-extern void dump_page(struct page *page);
+extern void dump_page(struct page *page, char *reason);
+extern void dump_page_badflags(struct page *page, char *reason,
+ unsigned long badflags);
#if defined(CONFIG_TRANSPARENT_HUGEPAGE) || defined(CONFIG_HUGETLBFS)
extern void clear_huge_page(struct page *page,