diff options
author | Andi Kleen <ak@linux.intel.com> | 2010-09-27 17:39:30 -0400 |
---|---|---|
committer | Andi Kleen <ak@linux.intel.com> | 2010-10-08 03:33:01 -0400 |
commit | a08c80ebb621a6dc277c91e029acb725f2f20254 (patch) | |
tree | cfd43f8deaed341e81623b693579e51c09809dc1 /mm/memory-failure.c | |
parent | 9033ae16407f46ae06f559f9374281f6e9d89efc (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/memory-failure.c')
-rw-r--r-- | mm/memory-failure.c | 15 |
1 files changed, 1 insertions, 14 deletions
diff --git a/mm/memory-failure.c b/mm/memory-failure.c index 88653c93e4ce..2044fe8920c2 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)); |