|
@@ -781,16 +781,16 @@ static struct page_state {
|
|
|
{ compound, compound, "huge", me_huge_page },
|
|
|
#endif
|
|
|
|
|
|
- { sc|dirty, sc|dirty, "swapcache", me_swapcache_dirty },
|
|
|
- { sc|dirty, sc, "swapcache", me_swapcache_clean },
|
|
|
+ { sc|dirty, sc|dirty, "dirty swapcache", me_swapcache_dirty },
|
|
|
+ { sc|dirty, sc, "clean swapcache", me_swapcache_clean },
|
|
|
|
|
|
- { unevict|dirty, unevict|dirty, "unevictable LRU", me_pagecache_dirty},
|
|
|
- { unevict, unevict, "unevictable LRU", me_pagecache_clean},
|
|
|
+ { unevict|dirty, unevict|dirty, "dirty unevictable LRU", me_pagecache_dirty },
|
|
|
+ { unevict, unevict, "clean unevictable LRU", me_pagecache_clean },
|
|
|
|
|
|
- { mlock|dirty, mlock|dirty, "mlocked LRU", me_pagecache_dirty },
|
|
|
- { mlock, mlock, "mlocked LRU", me_pagecache_clean },
|
|
|
+ { mlock|dirty, mlock|dirty, "dirty mlocked LRU", me_pagecache_dirty },
|
|
|
+ { mlock, mlock, "clean mlocked LRU", me_pagecache_clean },
|
|
|
|
|
|
- { lru|dirty, lru|dirty, "LRU", me_pagecache_dirty },
|
|
|
+ { lru|dirty, lru|dirty, "dirty LRU", me_pagecache_dirty },
|
|
|
{ lru|dirty, lru, "clean LRU", me_pagecache_clean },
|
|
|
|
|
|
/*
|
|
@@ -812,14 +812,14 @@ static struct page_state {
|
|
|
#undef slab
|
|
|
#undef reserved
|
|
|
|
|
|
+/*
|
|
|
+ * "Dirty/Clean" indication is not 100% accurate due to the possibility of
|
|
|
+ * setting PG_dirty outside page lock. See also comment above set_page_dirty().
|
|
|
+ */
|
|
|
static void action_result(unsigned long pfn, char *msg, int result)
|
|
|
{
|
|
|
- struct page *page = pfn_to_page(pfn);
|
|
|
-
|
|
|
- printk(KERN_ERR "MCE %#lx: %s%s page recovery: %s\n",
|
|
|
- pfn,
|
|
|
- PageDirty(page) ? "dirty " : "",
|
|
|
- msg, action_name[result]);
|
|
|
+ pr_err("MCE %#lx: %s page recovery: %s\n",
|
|
|
+ pfn, msg, action_name[result]);
|
|
|
}
|
|
|
|
|
|
static int page_action(struct page_state *ps, struct page *p,
|