From patchwork Thu Apr 7 13:03:50 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Miaohe Lin X-Patchwork-Id: 12805221 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 92B2FC433EF for ; Thu, 7 Apr 2022 13:05:11 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 0BBDF6B0074; Thu, 7 Apr 2022 09:03:39 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id CE42A6B007D; Thu, 7 Apr 2022 09:03:38 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 89C2E6B0074; Thu, 7 Apr 2022 09:03:38 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0217.hostedemail.com [216.40.44.217]) by kanga.kvack.org (Postfix) with ESMTP id 608626B0078 for ; Thu, 7 Apr 2022 09:03:38 -0400 (EDT) Received: from smtpin25.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay01.hostedemail.com (Postfix) with ESMTP id 0772018446BB7 for ; Thu, 7 Apr 2022 13:03:28 +0000 (UTC) X-FDA: 79330099296.25.A31FEB3 Received: from szxga01-in.huawei.com (szxga01-in.huawei.com [45.249.212.187]) by imf26.hostedemail.com (Postfix) with ESMTP id DA53214000C for ; Thu, 7 Apr 2022 13:03:26 +0000 (UTC) Received: from canpemm500002.china.huawei.com (unknown [172.30.72.57]) by szxga01-in.huawei.com (SkyGuard) with ESMTP id 4KZ1l22cf4zdZhx; Thu, 7 Apr 2022 21:02:54 +0800 (CST) Received: from huawei.com (10.175.124.27) by canpemm500002.china.huawei.com (7.192.104.244) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.24; Thu, 7 Apr 2022 21:03:22 +0800 From: Miaohe Lin To: , CC: , , , , , Subject: [PATCH 1/3] mm/memory-failure.c: avoid false-postive PageSwapCache test Date: Thu, 7 Apr 2022 21:03:50 +0800 Message-ID: <20220407130352.15618-2-linmiaohe@huawei.com> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20220407130352.15618-1-linmiaohe@huawei.com> References: <20220407130352.15618-1-linmiaohe@huawei.com> MIME-Version: 1.0 X-Originating-IP: [10.175.124.27] X-ClientProxiedBy: dggems706-chm.china.huawei.com (10.3.19.183) To canpemm500002.china.huawei.com (7.192.104.244) X-CFilter-Loop: Reflected X-Rspamd-Server: rspam05 X-Rspamd-Queue-Id: DA53214000C X-Stat-Signature: 3mq8znb9pj9px1i5hz51fzityxm89scg X-Rspam-User: Authentication-Results: imf26.hostedemail.com; dkim=none; dmarc=pass (policy=quarantine) header.from=huawei.com; spf=pass (imf26.hostedemail.com: domain of linmiaohe@huawei.com designates 45.249.212.187 as permitted sender) smtp.mailfrom=linmiaohe@huawei.com X-HE-Tag: 1649336606-810727 X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: PageSwapCache is only reliable when PageAnon is true because PG_swapcache serves as PG_owner_priv_1 which can be used by fs if it's pagecache page. So we should test PageAnon to distinguish pagecache page from swapcache page to avoid false-postive PageSwapCache test. Signed-off-by: Miaohe Lin --- mm/memory-failure.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mm/memory-failure.c b/mm/memory-failure.c index ef402b490663..2e97302d62e4 100644 --- a/mm/memory-failure.c +++ b/mm/memory-failure.c @@ -2262,7 +2262,7 @@ static int __soft_offline_page(struct page *page) return 0; } - if (!PageHuge(page) && PageLRU(page) && !PageSwapCache(page)) + if (!PageHuge(page) && PageLRU(page) && !PageAnon(page)) /* * Try to invalidate first. This should work for * non dirty unmapped page cache pages. From patchwork Thu Apr 7 13:03:51 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Miaohe Lin X-Patchwork-Id: 12805219 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 94609C433F5 for ; Thu, 7 Apr 2022 13:04:05 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id ABE916B0071; Thu, 7 Apr 2022 09:03:38 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 7B4296B0073; Thu, 7 Apr 2022 09:03:38 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 4CDDB6B0074; Thu, 7 Apr 2022 09:03:38 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0126.hostedemail.com [216.40.44.126]) by kanga.kvack.org (Postfix) with ESMTP id 3126F6B0073 for ; Thu, 7 Apr 2022 09:03:38 -0400 (EDT) Received: from smtpin28.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay05.hostedemail.com (Postfix) with ESMTP id DEE011809FDF6 for ; Thu, 7 Apr 2022 13:03:27 +0000 (UTC) X-FDA: 79330099254.28.FA64AFE Received: from szxga08-in.huawei.com (szxga08-in.huawei.com [45.249.212.255]) by imf23.hostedemail.com (Postfix) with ESMTP id 34893140014 for ; Thu, 7 Apr 2022 13:03:27 +0000 (UTC) Received: from canpemm500002.china.huawei.com (unknown [172.30.72.53]) by szxga08-in.huawei.com (SkyGuard) with ESMTP id 4KZ1l31llVz1HBd3; Thu, 7 Apr 2022 21:02:55 +0800 (CST) Received: from huawei.com (10.175.124.27) by canpemm500002.china.huawei.com (7.192.104.244) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.24; Thu, 7 Apr 2022 21:03:22 +0800 From: Miaohe Lin To: , CC: , , , , , Subject: [PATCH 2/3] mm/memory-failure.c: minor cleanup for HWPoisonHandlable Date: Thu, 7 Apr 2022 21:03:51 +0800 Message-ID: <20220407130352.15618-3-linmiaohe@huawei.com> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20220407130352.15618-1-linmiaohe@huawei.com> References: <20220407130352.15618-1-linmiaohe@huawei.com> MIME-Version: 1.0 X-Originating-IP: [10.175.124.27] X-ClientProxiedBy: dggems706-chm.china.huawei.com (10.3.19.183) To canpemm500002.china.huawei.com (7.192.104.244) X-CFilter-Loop: Reflected X-Rspam-User: Authentication-Results: imf23.hostedemail.com; dkim=none; spf=pass (imf23.hostedemail.com: domain of linmiaohe@huawei.com designates 45.249.212.255 as permitted sender) smtp.mailfrom=linmiaohe@huawei.com; dmarc=pass (policy=quarantine) header.from=huawei.com X-Rspamd-Server: rspam03 X-Rspamd-Queue-Id: 34893140014 X-Stat-Signature: 83jw6aqb8zue74py47o8mkcis75k6om9 X-HE-Tag: 1649336607-119287 X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: The local variable movable can be removed by returning true directly. Also fix typo 'mirgate'. No functional change intended. Signed-off-by: Miaohe Lin Reviewed-by: David Hildenbrand Reviewed-by: Yang Shi Acked-by: Naoya Horiguchi --- mm/memory-failure.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/mm/memory-failure.c b/mm/memory-failure.c index 2e97302d62e4..bd563f47630c 100644 --- a/mm/memory-failure.c +++ b/mm/memory-failure.c @@ -1180,13 +1180,11 @@ void ClearPageHWPoisonTakenOff(struct page *page) */ static inline bool HWPoisonHandlable(struct page *page, unsigned long flags) { - bool movable = false; - - /* Soft offline could mirgate non-LRU movable pages */ + /* Soft offline could migrate non-LRU movable pages */ if ((flags & MF_SOFT_OFFLINE) && __PageMovable(page)) - movable = true; + return true; - return movable || PageLRU(page) || is_free_buddy_page(page); + return PageLRU(page) || is_free_buddy_page(page); } static int __get_hwpoison_page(struct page *page, unsigned long flags) From patchwork Thu Apr 7 13:03:52 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Miaohe Lin X-Patchwork-Id: 12805220 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id F0927C433EF for ; Thu, 7 Apr 2022 13:04:38 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id D6AAF6B0073; Thu, 7 Apr 2022 09:03:38 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 9D6AF6B007B; Thu, 7 Apr 2022 09:03:38 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 67B9E6B007D; Thu, 7 Apr 2022 09:03:38 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (relay.a.hostedemail.com [64.99.140.24]) by kanga.kvack.org (Postfix) with ESMTP id 469176B0071 for ; Thu, 7 Apr 2022 09:03:38 -0400 (EDT) Received: from smtpin15.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 0E7E054AF for ; Thu, 7 Apr 2022 13:03:28 +0000 (UTC) X-FDA: 79330099296.15.B4A14C4 Received: from szxga02-in.huawei.com (szxga02-in.huawei.com [45.249.212.188]) by imf28.hostedemail.com (Postfix) with ESMTP id B94A6C0007 for ; Thu, 7 Apr 2022 13:03:26 +0000 (UTC) Received: from canpemm500002.china.huawei.com (unknown [172.30.72.55]) by szxga02-in.huawei.com (SkyGuard) with ESMTP id 4KZ1hv5s5wzFpbF; Thu, 7 Apr 2022 21:01:03 +0800 (CST) Received: from huawei.com (10.175.124.27) by canpemm500002.china.huawei.com (7.192.104.244) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.24; Thu, 7 Apr 2022 21:03:23 +0800 From: Miaohe Lin To: , CC: , , , , , Subject: [PATCH 3/3] mm/memory-failure.c: dissolve truncated hugetlb page Date: Thu, 7 Apr 2022 21:03:52 +0800 Message-ID: <20220407130352.15618-4-linmiaohe@huawei.com> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20220407130352.15618-1-linmiaohe@huawei.com> References: <20220407130352.15618-1-linmiaohe@huawei.com> MIME-Version: 1.0 X-Originating-IP: [10.175.124.27] X-ClientProxiedBy: dggems706-chm.china.huawei.com (10.3.19.183) To canpemm500002.china.huawei.com (7.192.104.244) X-CFilter-Loop: Reflected X-Rspamd-Server: rspam05 X-Rspamd-Queue-Id: B94A6C0007 X-Stat-Signature: y8wekhsbmtfgxegb9dt5okw6bbqujzsq X-Rspam-User: Authentication-Results: imf28.hostedemail.com; dkim=none; dmarc=pass (policy=quarantine) header.from=huawei.com; spf=pass (imf28.hostedemail.com: domain of linmiaohe@huawei.com designates 45.249.212.188 as permitted sender) smtp.mailfrom=linmiaohe@huawei.com X-HE-Tag: 1649336606-90993 X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: If me_huge_page meets a truncated huge page, hpage won't be dissolved even if we hold the last refcnt. It's because the truncated huge page has NULL page_mapping while it's not anonymous page too. Thus we lose the last chance to dissolve it into buddy to save healthy subpages. Remove PageAnon check to handle these huge pages too. Signed-off-by: Miaohe Lin --- mm/memory-failure.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/mm/memory-failure.c b/mm/memory-failure.c index bd563f47630c..3f054dbb169d 100644 --- a/mm/memory-failure.c +++ b/mm/memory-failure.c @@ -1046,8 +1046,7 @@ static int me_huge_page(struct page_state *ps, struct page *p) * hugepage, so we can free and dissolve it into buddy to * save healthy subpages. */ - if (PageAnon(hpage)) - put_page(hpage); + put_page(hpage); if (__page_handle_poison(p)) { page_ref_inc(p); res = MF_RECOVERED;