Merge tag 'afs-fixes-20190117' of git://git.kernel.org/pub/scm/linux/kernel/git/dhowe...
[linux-2.6-block.git] / mm / debug.c
index cdacba12e09aeebdcd4c2e5c904a59d8e940aaeb..0abb987dad9b3d697f252469d2111dc61f530913 100644 (file)
@@ -17,7 +17,7 @@
 
 #include "internal.h"
 
-char *migrate_reason_names[MR_TYPES] = {
+const char *migrate_reason_names[MR_TYPES] = {
        "compaction",
        "memory_failure",
        "memory_hotplug",
@@ -44,6 +44,7 @@ const struct trace_print_flags vmaflag_names[] = {
 
 void __dump_page(struct page *page, const char *reason)
 {
+       struct address_space *mapping = page_mapping(page);
        bool page_poisoned = PagePoisoned(page);
        int mapcount;
 
@@ -53,7 +54,7 @@ void __dump_page(struct page *page, const char *reason)
         * dump_page() when detected.
         */
        if (page_poisoned) {
-               pr_emerg("page:%px is uninitialized and poisoned", page);
+               pr_warn("page:%px is uninitialized and poisoned", page);
                goto hex_only;
        }
 
@@ -64,27 +65,39 @@ void __dump_page(struct page *page, const char *reason)
         */
        mapcount = PageSlab(page) ? 0 : page_mapcount(page);
 
-       pr_emerg("page:%px count:%d mapcount:%d mapping:%px index:%#lx",
+       pr_warn("page:%px count:%d mapcount:%d mapping:%px index:%#lx",
                  page, page_ref_count(page), mapcount,
                  page->mapping, page_to_pgoff(page));
        if (PageCompound(page))
                pr_cont(" compound_mapcount: %d", compound_mapcount(page));
        pr_cont("\n");
+       if (PageAnon(page))
+               pr_warn("anon ");
+       else if (PageKsm(page))
+               pr_warn("ksm ");
+       else if (mapping) {
+               pr_warn("%ps ", mapping->a_ops);
+               if (mapping->host->i_dentry.first) {
+                       struct dentry *dentry;
+                       dentry = container_of(mapping->host->i_dentry.first, struct dentry, d_u.d_alias);
+                       pr_warn("name:\"%pd\" ", dentry);
+               }
+       }
        BUILD_BUG_ON(ARRAY_SIZE(pageflag_names) != __NR_PAGEFLAGS + 1);
 
-       pr_emerg("flags: %#lx(%pGp)\n", page->flags, &page->flags);
+       pr_warn("flags: %#lx(%pGp)\n", page->flags, &page->flags);
 
 hex_only:
-       print_hex_dump(KERN_ALERT, "raw: ", DUMP_PREFIX_NONE, 32,
+       print_hex_dump(KERN_WARNING, "raw: ", DUMP_PREFIX_NONE, 32,
                        sizeof(unsigned long), page,
                        sizeof(struct page), false);
 
        if (reason)
-               pr_alert("page dumped because: %s\n", reason);
+               pr_warn("page dumped because: %s\n", reason);
 
 #ifdef CONFIG_MEMCG
        if (!page_poisoned && page->mem_cgroup)
-               pr_alert("page->mem_cgroup:%px\n", page->mem_cgroup);
+               pr_warn("page->mem_cgroup:%px\n", page->mem_cgroup);
 #endif
 }