diff options
author | Ingo Molnar <mingo@kernel.org> | 2012-12-08 09:25:06 -0500 |
---|---|---|
committer | Ingo Molnar <mingo@kernel.org> | 2012-12-08 09:25:06 -0500 |
commit | f0b9abfb044649bc452fb2fb975ff2fd599cc6a3 (patch) | |
tree | 7800081c5cb16a4dfee1e57a70f3be90f7b50d9a /mm/memory-failure.c | |
parent | adc1ef1e37358d3c17d1a74a58b2e104fc0bda15 (diff) | |
parent | 1b3c393cd43f22ead8a6a2f839efc6df8ebd7465 (diff) |
Merge branch 'linus' into perf/core
Conflicts:
tools/perf/Makefile
tools/perf/builtin-test.c
tools/perf/perf.h
tools/perf/tests/parse-events.c
tools/perf/util/evsel.h
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'mm/memory-failure.c')
-rw-r--r-- | mm/memory-failure.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/mm/memory-failure.c b/mm/memory-failure.c index 6c5899b9034a..8b20278be6a6 100644 --- a/mm/memory-failure.c +++ b/mm/memory-failure.c | |||
@@ -1476,9 +1476,17 @@ int soft_offline_page(struct page *page, int flags) | |||
1476 | { | 1476 | { |
1477 | int ret; | 1477 | int ret; |
1478 | unsigned long pfn = page_to_pfn(page); | 1478 | unsigned long pfn = page_to_pfn(page); |
1479 | struct page *hpage = compound_trans_head(page); | ||
1479 | 1480 | ||
1480 | if (PageHuge(page)) | 1481 | if (PageHuge(page)) |
1481 | return soft_offline_huge_page(page, flags); | 1482 | return soft_offline_huge_page(page, flags); |
1483 | if (PageTransHuge(hpage)) { | ||
1484 | if (PageAnon(hpage) && unlikely(split_huge_page(hpage))) { | ||
1485 | pr_info("soft offline: %#lx: failed to split THP\n", | ||
1486 | pfn); | ||
1487 | return -EBUSY; | ||
1488 | } | ||
1489 | } | ||
1482 | 1490 | ||
1483 | ret = get_any_page(page, pfn, flags); | 1491 | ret = get_any_page(page, pfn, flags); |
1484 | if (ret < 0) | 1492 | if (ret < 0) |