Re: [PATCH] mm: memory-failure: cleanup try_to_split_thp_page()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On 2022/8/2 10:12, Kefeng Wang wrote:
Since commit 5d1fd5dc877b ("mm,hwpoison: introduce MF_MSG_UNSPLIT_THP"),
the action_result() called to show memory error event in memory_failure(),
action_result(,MF_MSG_UNSPLIT_THP,)
so the pr_info() in try_to_split_thp_page() is only needed in
soft_offline_in_use_page().

Signed-off-by: Kefeng Wang <wangkefeng.wang@xxxxxxxxxx>
---
  mm/memory-failure.c | 23 ++++++++++++-----------
  1 file changed, 12 insertions(+), 11 deletions(-)

diff --git a/mm/memory-failure.c b/mm/memory-failure.c
index f0e1961d4482..59633a617a0a 100644
--- a/mm/memory-failure.c
+++ b/mm/memory-failure.c
@@ -1524,20 +1524,18 @@ static int identify_page_state(unsigned long pfn, struct page *p,
  	return page_action(ps, p, pfn);
  }
-static int try_to_split_thp_page(struct page *page, const char *msg)
+static int try_to_split_thp_page(struct page *page)
  {
+	int ret;
+
  	lock_page(page);
-	if (unlikely(split_huge_page(page))) {
-		unsigned long pfn = page_to_pfn(page);
+	ret = split_huge_page(page);
+	unlock_page(page);
- unlock_page(page);
-		pr_info("%s: %#lx: thp split failed\n", msg, pfn);
+	if (unlikely(ret))
  		put_page(page);
-		return -EBUSY;
-	}
-	unlock_page(page);
- return 0;
+	return ret;
  }
static void unmap_and_kill(struct list_head *to_kill, unsigned long pfn,
@@ -2079,7 +2077,7 @@ int memory_failure(unsigned long pfn, int flags)
  		 * page is a valid handlable page.
  		 */
  		SetPageHasHWPoisoned(hpage);
-		if (try_to_split_thp_page(p, "Memory Failure") < 0) {
+		if (try_to_split_thp_page(p) < 0) {
  			action_result(pfn, MF_MSG_UNSPLIT_THP, MF_IGNORED);
  			res = -EBUSY;
  			goto unlock_mutex;
@@ -2503,8 +2501,11 @@ static int soft_offline_in_use_page(struct page *page)
  	struct page *hpage = compound_head(page);
if (!PageHuge(page) && PageTransHuge(hpage))
-		if (try_to_split_thp_page(page, "soft offline") < 0)
+		if (try_to_split_thp_page(page) < 0) {
+			pr_info("soft offline: %#lx: thp split failed\n",
+				page_to_pfn(page));
  			return -EBUSY;
+		}
  	return __soft_offline_page(page);
  }




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux