aboutsummaryrefslogtreecommitdiffstats
path: root/mm
diff options
context:
space:
mode:
authorAndi Kleen <ak@linux.intel.com>2010-09-27 17:39:30 -0400
committerAndi Kleen <ak@linux.intel.com>2010-10-08 03:33:01 -0400
commita08c80ebb621a6dc277c91e029acb725f2f20254 (patch)
treecfd43f8deaed341e81623b693579e51c09809dc1 /mm
parent9033ae16407f46ae06f559f9374281f6e9d89efc (diff)
HWPOISON: Remove retry loop for try_to_unmap
We don't reply in other temporary failure cases and there were no reports of replies happening. I think the original reason it was added was also just an early bug, not an observation of the race. So remove the loop for now, but keep a warning message. Signed-off-by: Andi Kleen <ak@linux.intel.com>
Diffstat (limited to 'mm')
-rw-r--r--mm/memory-failure.c15
1 files changed, 1 insertions, 14 deletions
diff --git a/mm/memory-failure.c b/mm/memory-failure.c
index 88653c93e4c..2044fe8920c 100644
--- a/mm/memory-failure.c
+++ b/mm/memory-failure.c
@@ -840,8 +840,6 @@ static int page_action(struct page_state *ps, struct page *p,
840 return (result == RECOVERED || result == DELAYED) ? 0 : -EBUSY; 840 return (result == RECOVERED || result == DELAYED) ? 0 : -EBUSY;
841} 841}
842 842
843#define N_UNMAP_TRIES 5
844
845/* 843/*
846 * Do all that is necessary to remove user space mappings. Unmap 844 * Do all that is necessary to remove user space mappings. Unmap
847 * the pages and send SIGBUS to the processes if the data was dirty. 845 * the pages and send SIGBUS to the processes if the data was dirty.
@@ -853,7 +851,6 @@ static int hwpoison_user_mappings(struct page *p, unsigned long pfn,
853 struct address_space *mapping; 851 struct address_space *mapping;
854 LIST_HEAD(tokill); 852 LIST_HEAD(tokill);
855 int ret; 853 int ret;
856 int i;
857 int kill = 1; 854 int kill = 1;
858 struct page *hpage = compound_head(p); 855 struct page *hpage = compound_head(p);
859 856
@@ -907,17 +904,7 @@ static int hwpoison_user_mappings(struct page *p, unsigned long pfn,
907 if (kill) 904 if (kill)
908 collect_procs(hpage, &tokill); 905 collect_procs(hpage, &tokill);
909 906
910 /* 907 ret = try_to_unmap(hpage, ttu);
911 * try_to_unmap can fail temporarily due to races.
912 * Try a few times (RED-PEN better strategy?)
913 */
914 for (i = 0; i < N_UNMAP_TRIES; i++) {
915 ret = try_to_unmap(hpage, ttu);
916 if (ret == SWAP_SUCCESS)
917 break;
918 pr_debug("MCE %#lx: try_to_unmap retry needed %d\n", pfn, ret);
919 }
920
921 if (ret != SWAP_SUCCESS) 908 if (ret != SWAP_SUCCESS)
922 printk(KERN_ERR "MCE %#lx: failed to unmap page (mapcount=%d)\n", 909 printk(KERN_ERR "MCE %#lx: failed to unmap page (mapcount=%d)\n",
923 pfn, page_mapcount(hpage)); 910 pfn, page_mapcount(hpage));