From patchwork Tue Sep 8 19:55:28 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Matthew Wilcox X-Patchwork-Id: 11764209 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id D244C59D for ; Tue, 8 Sep 2020 19:55:49 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 6C4182080C for ; Tue, 8 Sep 2020 19:55:49 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=infradead.org header.i=@infradead.org header.b="siIrylDE" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 6C4182080C Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=infradead.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id 671DE6B0003; Tue, 8 Sep 2020 15:55:48 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 621BE6B0037; Tue, 8 Sep 2020 15:55:48 -0400 (EDT) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 5381C6B0055; Tue, 8 Sep 2020 15:55:48 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0102.hostedemail.com [216.40.44.102]) by kanga.kvack.org (Postfix) with ESMTP id 3E3F56B0003 for ; Tue, 8 Sep 2020 15:55:48 -0400 (EDT) Received: from smtpin02.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay04.hostedemail.com (Postfix) with ESMTP id F32F61EF1 for ; Tue, 8 Sep 2020 19:55:47 +0000 (UTC) X-FDA: 77240949534.02.wing67_47068d9270d7 Received: from filter.hostedemail.com (10.5.16.251.rfc1918.com [10.5.16.251]) by smtpin02.hostedemail.com (Postfix) with ESMTP id CFB7210038015 for ; Tue, 8 Sep 2020 19:55:47 +0000 (UTC) X-Spam-Summary: 1,0,0,3836faea7b1a8747,d41d8cd98f00b204,willy@infradead.org,,RULES_HIT:41:355:379:541:800:960:966:973:988:989:1260:1311:1314:1345:1359:1515:1534:1539:1567:1711:1714:1730:1747:1777:1792:2196:2199:2393:2559:2562:3138:3139:3140:3141:3142:3874:3876:4385:5007:6117:6261:6653:8957:10004:11026:11473:11658:11914:12043:12296:12297:12438:12555:12895:13069:13311:13357:13894:14181:14384:14394:14721:21080:21451:21627:30054,0,RBL:90.155.50.34:@infradead.org:.lbl8.mailshell.net-62.8.15.100 64.201.201.201;04yrk7wasouak48ry14kdqdafny5topdg95whoxufrud6s1n67djq8os368991q.894dnf1i9y3q9q57wtucjmp7dzmrtmxon9ad8neo6x8dsazpyrgeeo8zdhopted.s-lbl8.mailshell.net-223.238.255.100,CacheIP:none,Bayesian:0.5,0.5,0.5,Netcheck:none,DomainCache:0,MSF:not bulk,SPF:fn,MSBL:0,DNSBL:neutral,Custom_rules:0:0:0,LFtime:23,LUA_SUMMARY:none X-HE-Tag: wing67_47068d9270d7 X-Filterd-Recvd-Size: 2336 Received: from casper.infradead.org (casper.infradead.org [90.155.50.34]) by imf01.hostedemail.com (Postfix) with ESMTP for ; Tue, 8 Sep 2020 19:55:47 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; h=Content-Transfer-Encoding:MIME-Version: References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender:Reply-To: Content-Type:Content-ID:Content-Description; bh=uQ1v1ZN6J1s7VCvADzjIvSaoII5GQuQCy7QbOI6LwDs=; b=siIrylDExxt8yCFvosLU/uNtnr 2bCcrJibECYBDF0BXLsTlMowKw0W6dVQLNaQ2UMiDncuGmBXu1NRkhrFumvN6du6uglM2qwcOysct doW6F9y+Vz7uxQ/Qp+Ca4UsvO1nQU0zOAC+cQ9h1EDytg+ceNEhaR22nxxTwjHqvA2psYVrSpsln3 dUB5HGUzFZehpBbfbBEfdodgsCXnaGBmeJhRyxkXCTu+0+g0F7h4/2ywi00GoyRA3OVaOrRpctvAC aF/ISkosbYd4lTtXi2H7/qc8B0dD2rHzPfJSgvSFvLOsoFm+Lb7EAVThjqrgbgIuVv3R7QLLFQgz3 DoWQTpzA==; Received: from willy by casper.infradead.org with local (Exim 4.92.3 #3 (Red Hat Linux)) id 1kFjiQ-0006lC-3a; Tue, 08 Sep 2020 19:55:42 +0000 From: "Matthew Wilcox (Oracle)" To: linux-mm@kvack.org, Andrew Morton Cc: "Matthew Wilcox (Oracle)" , "Kirill A . Shutemov" , Huang Ying Subject: [PATCH 01/11] mm/filemap: Fix page cache removal for arbitrary sized THPs Date: Tue, 8 Sep 2020 20:55:28 +0100 Message-Id: <20200908195539.25896-2-willy@infradead.org> X-Mailer: git-send-email 2.21.3 In-Reply-To: <20200908195539.25896-1-willy@infradead.org> References: <20200908195539.25896-1-willy@infradead.org> MIME-Version: 1.0 X-Rspamd-Queue-Id: CFB7210038015 X-Spamd-Result: default: False [0.00 / 100.00] X-Rspamd-Server: rspam03 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: page_cache_free_page() assumes THPs are PMD_SIZE; fix that assumption. Signed-off-by: Matthew Wilcox (Oracle) Acked-by: Kirill A. Shutemov Reviewed-by: SeongJae Park --- mm/filemap.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mm/filemap.c b/mm/filemap.c index 1aaea26556cc..c60b94fd74ec 100644 --- a/mm/filemap.c +++ b/mm/filemap.c @@ -249,7 +249,7 @@ static void page_cache_free_page(struct address_space *mapping, freepage(page); if (PageTransHuge(page) && !PageHuge(page)) { - page_ref_sub(page, HPAGE_PMD_NR); + page_ref_sub(page, thp_nr_pages(page)); VM_BUG_ON_PAGE(page_count(page) <= 0, page); } else { put_page(page); From patchwork Tue Sep 8 19:55:29 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Matthew Wilcox X-Patchwork-Id: 11764211 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id E519859D for ; Tue, 8 Sep 2020 19:55:51 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 8FEEA2137B for ; Tue, 8 Sep 2020 19:55:51 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=infradead.org header.i=@infradead.org header.b="fcBOZYLe" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 8FEEA2137B Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=infradead.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id 5D8526B0037; Tue, 8 Sep 2020 15:55:49 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 586156B0055; Tue, 8 Sep 2020 15:55:49 -0400 (EDT) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 44E9C6B005A; Tue, 8 Sep 2020 15:55:49 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0167.hostedemail.com [216.40.44.167]) by kanga.kvack.org (Postfix) with ESMTP id 2F5C96B0037 for ; Tue, 8 Sep 2020 15:55:49 -0400 (EDT) Received: from smtpin02.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay05.hostedemail.com (Postfix) with ESMTP id E11E0181AEF1A for ; Tue, 8 Sep 2020 19:55:48 +0000 (UTC) X-FDA: 77240949576.02.pain55_350c9ff270d7 Received: from filter.hostedemail.com (10.5.16.251.rfc1918.com [10.5.16.251]) by smtpin02.hostedemail.com (Postfix) with ESMTP id B82D710039B57 for ; Tue, 8 Sep 2020 19:55:48 +0000 (UTC) X-Spam-Summary: 1,0,0,f8dadc25ad000a8b,d41d8cd98f00b204,willy@infradead.org,,RULES_HIT:41:355:379:541:800:960:973:988:989:1260:1311:1314:1345:1359:1437:1515:1534:1540:1711:1730:1747:1777:1792:2198:2199:2393:2559:2562:2693:2892:3138:3139:3140:3141:3142:3352:3865:3866:3867:3870:4250:4321:5007:6119:6261:6653:8603:10004:11026:11473:11658:11914:12296:12297:12438:12555:12895:13069:13311:13357:13894:14096:14181:14384:14394:14721:21080:21451:21627:21990:30003:30054:30070:30075,0,RBL:90.155.50.34:@infradead.org:.lbl8.mailshell.net-64.201.201.201 62.8.15.100;04y88fsa773ncf89rdbwkuzr8rm5coceosxehsietbc9amfspj156g5xarj3opb.jstp1phb83bcx1wrm4ohk1fwrn7hd3akf44e43tsd1r4jt3195r7eokzmr7sx6z.y-lbl8.mailshell.net-223.238.255.100,CacheIP:none,Bayesian:0.5,0.5,0.5,Netcheck:none,DomainCache:0,MSF:not bulk,SPF:fn,MSBL:0,DNSBL:neutral,Custom_rules:0:0:0,LFtime:24,LUA_SUMMARY:none X-HE-Tag: pain55_350c9ff270d7 X-Filterd-Recvd-Size: 2566 Received: from casper.infradead.org (casper.infradead.org [90.155.50.34]) by imf18.hostedemail.com (Postfix) with ESMTP for ; Tue, 8 Sep 2020 19:55:48 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; h=Content-Transfer-Encoding:MIME-Version: References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender:Reply-To: Content-Type:Content-ID:Content-Description; bh=Bf1EQGAqs9MypbWrc2CFJ2Yy7A7oOmyAuK2c0gMPsI0=; b=fcBOZYLen3nzichgu6nWaUdSr2 Wbi8JMNMmPYV2CeoUtDUz/AOyu73VICr8WPWixJSL9ypva2NMZ/n/OENHJ7aWADEgQLwAunf5HH2B niqPm5WICPFPg2DEi+hs6oo45egkS+jVti4eAfsSo55ss8HD5jZvcH0dOyK5z41GsU0VLZeX26B/I T3gBn8c2OY4LJYoo979oCTVEl4wVecDBEEyxFqYyJzr/y1VfDZcC4Q+1Ph8I9ZS9kjiu9pzcED/4n BUZJFTrBysnpcGCby0iuqctcFA6NMr8bcoOn00eR40f9wH+2evIBr7ogtv2+fSNtRA4Mezd01QbvO 6Hytyz6w==; Received: from willy by casper.infradead.org with local (Exim 4.92.3 #3 (Red Hat Linux)) id 1kFjiR-0006lH-8m; Tue, 08 Sep 2020 19:55:43 +0000 From: "Matthew Wilcox (Oracle)" To: linux-mm@kvack.org, Andrew Morton Cc: "Matthew Wilcox (Oracle)" , "Kirill A . Shutemov" , Huang Ying Subject: [PATCH 02/11] mm/memory: Remove page fault assumption of compound page size Date: Tue, 8 Sep 2020 20:55:29 +0100 Message-Id: <20200908195539.25896-3-willy@infradead.org> X-Mailer: git-send-email 2.21.3 In-Reply-To: <20200908195539.25896-1-willy@infradead.org> References: <20200908195539.25896-1-willy@infradead.org> MIME-Version: 1.0 X-Rspamd-Queue-Id: B82D710039B57 X-Spamd-Result: default: False [0.00 / 100.00] X-Rspamd-Server: rspam02 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: A compound page in the page cache will not necessarily be of PMD size, so check explicitly. Signed-off-by: Matthew Wilcox (Oracle) --- mm/memory.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/mm/memory.c b/mm/memory.c index 602f4283122f..4b35b4e71e64 100644 --- a/mm/memory.c +++ b/mm/memory.c @@ -3562,13 +3562,14 @@ static vm_fault_t do_set_pmd(struct vm_fault *vmf, struct page *page) unsigned long haddr = vmf->address & HPAGE_PMD_MASK; pmd_t entry; int i; - vm_fault_t ret; + vm_fault_t ret = VM_FAULT_FALLBACK; if (!transhuge_vma_suitable(vma, haddr)) - return VM_FAULT_FALLBACK; + return ret; - ret = VM_FAULT_FALLBACK; page = compound_head(page); + if (page_order(page) != HPAGE_PMD_ORDER) + return ret; /* * Archs like ppc64 need additonal space to store information From patchwork Tue Sep 8 19:55:30 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Matthew Wilcox X-Patchwork-Id: 11764479 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 78D6859D for ; Tue, 8 Sep 2020 20:19:59 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 0A77E20936 for ; Tue, 8 Sep 2020 20:19:58 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=infradead.org header.i=@infradead.org header.b="hYO5/+nN" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 0A77E20936 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=infradead.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id E23B96B0073; Tue, 8 Sep 2020 16:19:57 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id DD21E6B0074; Tue, 8 Sep 2020 16:19:57 -0400 (EDT) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id D14556B0075; Tue, 8 Sep 2020 16:19:57 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0238.hostedemail.com [216.40.44.238]) by kanga.kvack.org (Postfix) with ESMTP id B79916B0073 for ; Tue, 8 Sep 2020 16:19:57 -0400 (EDT) Received: from smtpin29.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay04.hostedemail.com (Postfix) with ESMTP id 879431EF2 for ; Tue, 8 Sep 2020 20:19:57 +0000 (UTC) X-FDA: 77241010434.29.dust23_3312a54270d7 Received: from filter.hostedemail.com (10.5.16.251.rfc1918.com [10.5.16.251]) by smtpin29.hostedemail.com (Postfix) with ESMTP id 5971018086CCF for ; Tue, 8 Sep 2020 20:19:57 +0000 (UTC) X-Spam-Summary: 1,0,0,dfe76625a89399b8,d41d8cd98f00b204,willy@infradead.org,,RULES_HIT:41:355:379:541:800:960:973:988:989:1260:1311:1314:1345:1359:1437:1515:1534:1542:1711:1730:1747:1777:1792:2198:2199:2393:2559:2562:2693:2731:3138:3139:3140:3141:3142:3354:3865:3866:3867:3868:3870:4321:4605:5007:6261:6653:8603:8957:9010:10004:11026:11473:11658:11914:12043:12296:12297:12438:12555:12895:12986:13161:13229:13894:14096:14181:14394:14721:21080:21324:21451:21627:21990:30034:30054:30070,0,RBL:90.155.50.34:@infradead.org:.lbl8.mailshell.net-62.8.15.100 64.201.201.201;04y8p3g9he3yhmn4514ts8e9mjdb1ypngjq7qsbofysd5bxej8unf34ai75z6pd.86o8fan5krxbgc8pmd9zp9muexojo6ya7zjm4747mzcb498exdonr933xj4m43z.1-lbl8.mailshell.net-223.238.255.100,CacheIP:none,Bayesian:0.5,0.5,0.5,Netcheck:none,DomainCache:0,MSF:not bulk,SPF:fn,MSBL:0,DNSBL:neutral,Custom_rules:0:0:0,LFtime:23,LUA_SUMMARY:none X-HE-Tag: dust23_3312a54270d7 X-Filterd-Recvd-Size: 4658 Received: from casper.infradead.org (casper.infradead.org [90.155.50.34]) by imf17.hostedemail.com (Postfix) with ESMTP for ; Tue, 8 Sep 2020 20:19:56 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; h=Content-Transfer-Encoding:MIME-Version: References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender:Reply-To: Content-Type:Content-ID:Content-Description; bh=EynD56nWZMM4c+wodZ7nOQgIxm0ME9e8vivVA3QNXkA=; b=hYO5/+nN7qnfd2q2z+4ulXmAPy aKFo2JXk5k22K4/Zs9T3PZUOT738U2lps55+zpkZiCDsK4Hw0qOyyJh94fTFYd95mcSuCyBQ2/gVd bb4vgnN/4SH2ktLoNY51nNjwnOaIDL1Prlwfk62O07W9rHuAqvpDXmu6Dfa4nH0+9FVGntQ+YMFTH 0k0LPZzGOpMoAIKu7HeOTcpgeF4fjfEoGpc+snSurRPilBobmkhneiSrA15a4TQZLqiQJcBbikRbB UCHK/DQmL+5Z+D1VzQ5O1SjLtvV5UWZhQJbfQBxxrSB8EWWxulj4L6U5I0g2Lr27Zp56WawnE4WVH sU5Zu0lg==; Received: from willy by casper.infradead.org with local (Exim 4.92.3 #3 (Red Hat Linux)) id 1kFjiS-0006lV-45; Tue, 08 Sep 2020 19:55:44 +0000 From: "Matthew Wilcox (Oracle)" To: linux-mm@kvack.org, Andrew Morton Cc: "Matthew Wilcox (Oracle)" , "Kirill A . Shutemov" , Huang Ying Subject: [PATCH 03/11] mm/page_owner: Change split_page_owner to take a count Date: Tue, 8 Sep 2020 20:55:30 +0100 Message-Id: <20200908195539.25896-4-willy@infradead.org> X-Mailer: git-send-email 2.21.3 In-Reply-To: <20200908195539.25896-1-willy@infradead.org> References: <20200908195539.25896-1-willy@infradead.org> MIME-Version: 1.0 X-Rspamd-Queue-Id: 5971018086CCF X-Spamd-Result: default: False [0.00 / 100.00] X-Rspamd-Server: rspam01 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 implementation of split_page_owner() prefers a count rather than the old order of the page. When we support a variable size THP, we won't have the order at this point, but we will have the number of pages. So change the interface to what the caller and callee would prefer. Signed-off-by: Matthew Wilcox (Oracle) Acked-by: Kirill A. Shutemov Reviewed-by: SeongJae Park Signed-off-by: Matthew Wilcox (Oracle) --- include/linux/page_owner.h | 6 +++--- mm/huge_memory.c | 2 +- mm/page_owner.c | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/include/linux/page_owner.h b/include/linux/page_owner.h index 8679ccd722e8..3468794f83d2 100644 --- a/include/linux/page_owner.h +++ b/include/linux/page_owner.h @@ -11,7 +11,7 @@ extern struct page_ext_operations page_owner_ops; extern void __reset_page_owner(struct page *page, unsigned int order); extern void __set_page_owner(struct page *page, unsigned int order, gfp_t gfp_mask); -extern void __split_page_owner(struct page *page, unsigned int order); +extern void __split_page_owner(struct page *page, unsigned int nr); extern void __copy_page_owner(struct page *oldpage, struct page *newpage); extern void __set_page_owner_migrate_reason(struct page *page, int reason); extern void __dump_page_owner(struct page *page); @@ -31,10 +31,10 @@ static inline void set_page_owner(struct page *page, __set_page_owner(page, order, gfp_mask); } -static inline void split_page_owner(struct page *page, unsigned int order) +static inline void split_page_owner(struct page *page, unsigned int nr) { if (static_branch_unlikely(&page_owner_inited)) - __split_page_owner(page, order); + __split_page_owner(page, nr); } static inline void copy_page_owner(struct page *oldpage, struct page *newpage) { diff --git a/mm/huge_memory.c b/mm/huge_memory.c index 2ccff8472cd4..adc5a91d8fd4 100644 --- a/mm/huge_memory.c +++ b/mm/huge_memory.c @@ -2418,7 +2418,7 @@ static void __split_huge_page(struct page *page, struct list_head *list, ClearPageCompound(head); - split_page_owner(head, HPAGE_PMD_ORDER); + split_page_owner(head, HPAGE_PMD_NR); /* See comment in __split_huge_page_tail() */ if (PageAnon(head)) { diff --git a/mm/page_owner.c b/mm/page_owner.c index 360461509423..4ca3051a1035 100644 --- a/mm/page_owner.c +++ b/mm/page_owner.c @@ -204,7 +204,7 @@ void __set_page_owner_migrate_reason(struct page *page, int reason) page_owner->last_migrate_reason = reason; } -void __split_page_owner(struct page *page, unsigned int order) +void __split_page_owner(struct page *page, unsigned int nr) { int i; struct page_ext *page_ext = lookup_page_ext(page); @@ -213,7 +213,7 @@ void __split_page_owner(struct page *page, unsigned int order) if (unlikely(!page_ext)) return; - for (i = 0; i < (1 << order); i++) { + for (i = 0; i < nr; i++) { page_owner = get_page_owner(page_ext); page_owner->order = 0; page_ext = page_ext_next(page_ext); From patchwork Tue Sep 8 19:55:31 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Matthew Wilcox X-Patchwork-Id: 11764215 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id B980C59D for ; Tue, 8 Sep 2020 19:55:58 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 7E9AB2080C for ; Tue, 8 Sep 2020 19:55:58 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=infradead.org header.i=@infradead.org header.b="hXpYjLsh" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 7E9AB2080C Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=infradead.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id DC6546B005D; Tue, 8 Sep 2020 15:55:55 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id D7A416B0062; Tue, 8 Sep 2020 15:55:55 -0400 (EDT) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id C3F426B0068; Tue, 8 Sep 2020 15:55:55 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0129.hostedemail.com [216.40.44.129]) by kanga.kvack.org (Postfix) with ESMTP id AC51F6B005D for ; Tue, 8 Sep 2020 15:55:55 -0400 (EDT) Received: from smtpin18.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay02.hostedemail.com (Postfix) with ESMTP id 761B1348D for ; Tue, 8 Sep 2020 19:55:55 +0000 (UTC) X-FDA: 77240949870.18.lace71_150d412270d7 Received: from filter.hostedemail.com (10.5.16.251.rfc1918.com [10.5.16.251]) by smtpin18.hostedemail.com (Postfix) with ESMTP id 4BF93100ED0F5 for ; Tue, 8 Sep 2020 19:55:55 +0000 (UTC) X-Spam-Summary: 1,0,0,e1920fb204c1b882,d41d8cd98f00b204,willy@infradead.org,,RULES_HIT:41:355:379:541:800:960:973:988:989:1260:1311:1314:1345:1359:1437:1515:1534:1541:1711:1730:1747:1777:1792:2198:2199:2393:2553:2559:2562:2731:3138:3139:3140:3141:3142:3352:3866:3870:4321:5007:6117:6261:6653:7576:7875:8957:9010:10004:11026:11473:11658:11914:12043:12296:12297:12555:12895:12986:13069:13184:13229:13311:13357:13894:14181:14384:14394:14721:21080:21451:21627:21990:30054:30090,0,RBL:90.155.50.34:@infradead.org:.lbl8.mailshell.net-64.201.201.201 62.8.15.100;04yrfwnzt53gpsczbfc9xtbh39h5kop4pmp6tuic5x73utpjsq1uwoem9dj3ypz.ap36smrjepgjz3qtuwdyym89mpdf9itcx53533zph86994f4g67hzadsejjmso4.y-lbl8.mailshell.net-223.238.255.100,CacheIP:none,Bayesian:0.5,0.5,0.5,Netcheck:none,DomainCache:0,MSF:not bulk,SPF:fn,MSBL:0,DNSBL:neutral,Custom_rules:0:0:0,LFtime:24,LUA_SUMMARY:none X-HE-Tag: lace71_150d412270d7 X-Filterd-Recvd-Size: 2964 Received: from casper.infradead.org (casper.infradead.org [90.155.50.34]) by imf15.hostedemail.com (Postfix) with ESMTP for ; Tue, 8 Sep 2020 19:55:54 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; h=Content-Transfer-Encoding:MIME-Version: References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender:Reply-To: Content-Type:Content-ID:Content-Description; bh=5HK7gdVdE06xHS4ek1IW5f4Q4mUxJGwGtHLr9PWHU1M=; b=hXpYjLshV4IRI68PNBZ6K5wER8 MYziQDgRAPtmu/GXd26x0jUiYYiSinqJvgxu3nSrondTI5j7LzAh2sDCl5zx06Q0+y13rH85KaZg7 9lVBoyuS9pPVB+3T/+23oKG62aofM/mbSiqYmwXrJJByMNpGo8aeRgvtzbCbfG4vAF426+jrs4Gs/ HnLWj2rBp/iK7aYdOH88WQQ8UCf7eWDBee2LY3OqyJBtRrmiS7sxk+nQOx406j1jJrqqQ3ZyBjiQC lEkcM6NmtO1ia2xKmgJCUtIx/3AlY/oVSbm5qVCJpTNoo9cHpPdHRqIvLF3GOgJRDYxeyvMIRxtTH 9TWPRU+g==; Received: from willy by casper.infradead.org with local (Exim 4.92.3 #3 (Red Hat Linux)) id 1kFjiT-0006lg-KZ; Tue, 08 Sep 2020 19:55:46 +0000 From: "Matthew Wilcox (Oracle)" To: linux-mm@kvack.org, Andrew Morton Cc: "Kirill A. Shutemov" , Huang Ying , Matthew Wilcox Subject: [PATCH 04/11] mm/huge_memory: Fix total_mapcount assumption of page size Date: Tue, 8 Sep 2020 20:55:31 +0100 Message-Id: <20200908195539.25896-5-willy@infradead.org> X-Mailer: git-send-email 2.21.3 In-Reply-To: <20200908195539.25896-1-willy@infradead.org> References: <20200908195539.25896-1-willy@infradead.org> MIME-Version: 1.0 X-Rspamd-Queue-Id: 4BF93100ED0F5 X-Spamd-Result: default: False [0.00 / 100.00] X-Rspamd-Server: rspam01 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: From: "Kirill A. Shutemov" File THPs may now be of arbitrary order. Signed-off-by: Kirill A. Shutemov Signed-off-by: Matthew Wilcox (Oracle) Reviewed-by: SeongJae Park --- mm/huge_memory.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/mm/huge_memory.c b/mm/huge_memory.c index adc5a91d8fd4..a882d770a812 100644 --- a/mm/huge_memory.c +++ b/mm/huge_memory.c @@ -2458,7 +2458,7 @@ static void __split_huge_page(struct page *page, struct list_head *list, int total_mapcount(struct page *page) { - int i, compound, ret; + int i, compound, nr, ret; VM_BUG_ON_PAGE(PageTail(page), page); @@ -2466,16 +2466,17 @@ int total_mapcount(struct page *page) return atomic_read(&page->_mapcount) + 1; compound = compound_mapcount(page); + nr = compound_nr(page); if (PageHuge(page)) return compound; ret = compound; - for (i = 0; i < HPAGE_PMD_NR; i++) + for (i = 0; i < nr; i++) ret += atomic_read(&page[i]._mapcount) + 1; /* File pages has compound_mapcount included in _mapcount */ if (!PageAnon(page)) - return ret - compound * HPAGE_PMD_NR; + return ret - compound * nr; if (PageDoubleMap(page)) - ret -= HPAGE_PMD_NR; + ret -= nr; return ret; } From patchwork Tue Sep 8 19:55:32 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Matthew Wilcox X-Patchwork-Id: 11764213 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 0652459D for ; Tue, 8 Sep 2020 19:55:57 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id BD18720768 for ; Tue, 8 Sep 2020 19:55:53 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=infradead.org header.i=@infradead.org header.b="MBqUpgzd" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org BD18720768 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=infradead.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id BA1716B0055; Tue, 8 Sep 2020 15:55:50 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id B5A1F6B005A; Tue, 8 Sep 2020 15:55:50 -0400 (EDT) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 9A9856B005C; Tue, 8 Sep 2020 15:55:50 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0041.hostedemail.com [216.40.44.41]) by kanga.kvack.org (Postfix) with ESMTP id 80E506B0055 for ; Tue, 8 Sep 2020 15:55:50 -0400 (EDT) Received: from smtpin04.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay02.hostedemail.com (Postfix) with ESMTP id 448D1348D for ; Tue, 8 Sep 2020 19:55:50 +0000 (UTC) X-FDA: 77240949660.04.brick95_100beeb270d7 Received: from filter.hostedemail.com (10.5.16.251.rfc1918.com [10.5.16.251]) by smtpin04.hostedemail.com (Postfix) with ESMTP id 16CDA800343E for ; Tue, 8 Sep 2020 19:55:50 +0000 (UTC) X-Spam-Summary: 1,0,0,1d46d90d0df049b5,d41d8cd98f00b204,willy@infradead.org,,RULES_HIT:41:355:379:541:800:960:968:973:988:989:1260:1311:1314:1345:1359:1437:1515:1534:1542:1711:1730:1747:1777:1792:2393:2553:2559:2562:2898:3138:3139:3140:3141:3142:3353:3865:3866:3868:3870:3874:5007:6117:6261:6653:7576:7903:8603:8957:9010:10004:11026:11473:11658:11914:12043:12296:12297:12438:12555:12679:12895:13161:13184:13229:13894:14096:14181:14394:14721:21080:21451:21611:21627:21972:30034:30054:30070:30090,0,RBL:90.155.50.34:@infradead.org:.lbl8.mailshell.net-62.8.15.100 64.201.201.201;04y84w5ab17gkpznw6sw1i76ogaeaoccy3t4s434gy9sgydz171k8h88nh6bz6w.7caujmfjmad6x7b5agodob4tu59hoap5h1z9wuni5qictfaakxfdkenk9x4gaxa.h-lbl8.mailshell.net-223.238.255.100,CacheIP:none,Bayesian:0.5,0.5,0.5,Netcheck:none,DomainCache:0,MSF:not bulk,SPF:fn,MSBL:0,DNSBL:neutral,Custom_rules:0:0:0,LFtime:24,LUA_SUMMARY:none X-HE-Tag: brick95_100beeb270d7 X-Filterd-Recvd-Size: 4269 Received: from casper.infradead.org (casper.infradead.org [90.155.50.34]) by imf14.hostedemail.com (Postfix) with ESMTP for ; Tue, 8 Sep 2020 19:55:49 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; h=Content-Transfer-Encoding:MIME-Version: References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender:Reply-To: Content-Type:Content-ID:Content-Description; bh=ajhdp7uWm4tvObC49hvBR+DtDTTL5/ElgjL8eONIhng=; b=MBqUpgzdlW1flS7pA5+yw2grAQ Iv5tBaRSwSGotIswixBu8lguynUFkO7jAL0wcwNtdhTOcWiur4i0Yxg5jrMKaIiC9pjYQ5Mj0E0Zc fm+xLD8rhIWGM9RqQng/YIqaiodQLbDdN65nyQEU01HtBU5ozWpN7Apon9QpxKW4TjVUfFHm+bLr3 U6zHnlfItLqbqngHs+BGFEJtiTbDkAiqgp5h9TZy6n82AM6MX79g0nr2gLPkObdG0rptJCaQDbR1C AHEMj2kH/HwDFOABVVjvncrNPERhP9YDulfpUjykyGeVG3OlPzJ/CaMCRoSQUVWuoIIP9jifO4E5Q Mg6SDWwQ==; Received: from willy by casper.infradead.org with local (Exim 4.92.3 #3 (Red Hat Linux)) id 1kFjiU-0006m0-Tf; Tue, 08 Sep 2020 19:55:47 +0000 From: "Matthew Wilcox (Oracle)" To: linux-mm@kvack.org, Andrew Morton Cc: "Kirill A. Shutemov" , Huang Ying , Matthew Wilcox Subject: [PATCH 05/11] mm/huge_memory: Fix split assumption of page size Date: Tue, 8 Sep 2020 20:55:32 +0100 Message-Id: <20200908195539.25896-6-willy@infradead.org> X-Mailer: git-send-email 2.21.3 In-Reply-To: <20200908195539.25896-1-willy@infradead.org> References: <20200908195539.25896-1-willy@infradead.org> MIME-Version: 1.0 X-Rspamd-Queue-Id: 16CDA800343E X-Spamd-Result: default: False [0.00 / 100.00] X-Rspamd-Server: rspam04 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: From: "Kirill A. Shutemov" File THPs may now be of arbitrary size, and we can't rely on that size after doing the split so remember the number of pages before we start the split. Signed-off-by: Kirill A. Shutemov Signed-off-by: Matthew Wilcox (Oracle) Reviewed-by: SeongJae Park --- mm/huge_memory.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/mm/huge_memory.c b/mm/huge_memory.c index a882d770a812..7bf837c32e3f 100644 --- a/mm/huge_memory.c +++ b/mm/huge_memory.c @@ -2302,13 +2302,13 @@ static void unmap_page(struct page *page) VM_BUG_ON_PAGE(!unmap_success, page); } -static void remap_page(struct page *page) +static void remap_page(struct page *page, unsigned int nr) { int i; if (PageTransHuge(page)) { remove_migration_ptes(page, page, true); } else { - for (i = 0; i < HPAGE_PMD_NR; i++) + for (i = 0; i < nr; i++) remove_migration_ptes(page + i, page + i, true); } } @@ -2383,6 +2383,7 @@ static void __split_huge_page(struct page *page, struct list_head *list, struct lruvec *lruvec; struct address_space *swap_cache = NULL; unsigned long offset = 0; + unsigned int nr = thp_nr_pages(head); int i; lruvec = mem_cgroup_page_lruvec(head, pgdat); @@ -2398,7 +2399,7 @@ static void __split_huge_page(struct page *page, struct list_head *list, xa_lock(&swap_cache->i_pages); } - for (i = HPAGE_PMD_NR - 1; i >= 1; i--) { + for (i = nr - 1; i >= 1; i--) { __split_huge_page_tail(head, i, lruvec, list); /* Some pages can be beyond i_size: drop them from page cache */ if (head[i].index >= end) { @@ -2418,7 +2419,7 @@ static void __split_huge_page(struct page *page, struct list_head *list, ClearPageCompound(head); - split_page_owner(head, HPAGE_PMD_NR); + split_page_owner(head, nr); /* See comment in __split_huge_page_tail() */ if (PageAnon(head)) { @@ -2437,9 +2438,9 @@ static void __split_huge_page(struct page *page, struct list_head *list, spin_unlock_irqrestore(&pgdat->lru_lock, flags); - remap_page(head); + remap_page(head, nr); - for (i = 0; i < HPAGE_PMD_NR; i++) { + for (i = 0; i < nr; i++) { struct page *subpage = head + i; if (subpage == page) continue; @@ -2693,7 +2694,7 @@ int split_huge_page_to_list(struct page *page, struct list_head *list) fail: if (mapping) xa_unlock(&mapping->i_pages); spin_unlock_irqrestore(&pgdata->lru_lock, flags); - remap_page(head); + remap_page(head, thp_nr_pages(head)); ret = -EBUSY; } From patchwork Tue Sep 8 19:55:33 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Matthew Wilcox X-Patchwork-Id: 11764217 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 226341599 for ; Tue, 8 Sep 2020 19:56:02 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id D3BD621D40 for ; Tue, 8 Sep 2020 19:56:00 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=infradead.org header.i=@infradead.org header.b="nRpLywFj" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org D3BD621D40 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=infradead.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id B7E5C6B0062; Tue, 8 Sep 2020 15:55:57 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id AB82D6B0068; Tue, 8 Sep 2020 15:55:57 -0400 (EDT) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 958596B006C; Tue, 8 Sep 2020 15:55:57 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0096.hostedemail.com [216.40.44.96]) by kanga.kvack.org (Postfix) with ESMTP id 753286B0062 for ; Tue, 8 Sep 2020 15:55:57 -0400 (EDT) Received: from smtpin12.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay05.hostedemail.com (Postfix) with ESMTP id 38A94181AEF1A for ; Tue, 8 Sep 2020 19:55:57 +0000 (UTC) X-FDA: 77240949954.12.chalk09_37067e2270d7 Received: from filter.hostedemail.com (10.5.16.251.rfc1918.com [10.5.16.251]) by smtpin12.hostedemail.com (Postfix) with ESMTP id 055B0180054FD for ; Tue, 8 Sep 2020 19:55:56 +0000 (UTC) X-Spam-Summary: 1,0,0,18720199c0c2c183,d41d8cd98f00b204,willy@infradead.org,,RULES_HIT:41:355:379:541:800:960:973:988:989:1260:1311:1314:1345:1359:1437:1515:1534:1540:1711:1730:1747:1777:1792:2393:2559:2562:3138:3139:3140:3141:3142:3352:3865:3866:3871:3872:4250:5007:6119:6120:6261:6653:7901:8603:8957:10004:11026:11473:11658:11914:12043:12114:12297:12438:12555:12895:13069:13255:13311:13357:13894:14181:14384:14394:14721:21080:21451:21627:30054,0,RBL:90.155.50.34:@infradead.org:.lbl8.mailshell.net-64.201.201.201 62.8.15.100;04ygxzabpdwpwo7stt7ktisextudbocdx96bt98p8ri6ng6wyza9to5y3wpcf6j.71x45c1h34t36j7rz6s4ai8t8gcni8ufw37pq6r9hhwi3u4sagcdeia7gk81nfx.r-lbl8.mailshell.net-223.238.255.100,CacheIP:none,Bayesian:0.5,0.5,0.5,Netcheck:none,DomainCache:0,MSF:not bulk,SPF:fn,MSBL:0,DNSBL:neutral,Custom_rules:0:0:0,LFtime:24,LUA_SUMMARY:none X-HE-Tag: chalk09_37067e2270d7 X-Filterd-Recvd-Size: 2593 Received: from casper.infradead.org (casper.infradead.org [90.155.50.34]) by imf29.hostedemail.com (Postfix) with ESMTP for ; Tue, 8 Sep 2020 19:55:56 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; h=Content-Transfer-Encoding:MIME-Version: References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender:Reply-To: Content-Type:Content-ID:Content-Description; bh=paZjsA7KOGNnFTd2XUuVeoPxs0FJxkHM0Lg0ZSZ92aY=; b=nRpLywFjvP6Gxkydjah+VOoeb3 3rzdZlMmck7OfizZrMAUio2YWE+BK2STNHKxZSwMtTpviz/21yCdyFAvW7ssQNRor2IXV54bzIbsI Ftz0CztxAyqMFFnyvsqkJ8KgZqMAu7PSoCtuGzi5lH5m34Bl3f6DeYKd/eq4Yf0qhOOkpO5DS3HFj gb3bEvzP/T5qHRJftwH2YwQzBFTmioP4I30F76jcqh2r/aO24YzOzhzm2m/JC9LmztdsPW/nHM3XM Va1DBDmdKFHO4BElMYwYYnKJ/zkNK30Fc2z5GYb14x6ZA0SQYYYoTykfktoSP0jwTI4VoGDF5+e6W GFc3NtmA==; Received: from willy by casper.infradead.org with local (Exim 4.92.3 #3 (Red Hat Linux)) id 1kFjiV-0006mX-RL; Tue, 08 Sep 2020 19:55:48 +0000 From: "Matthew Wilcox (Oracle)" To: linux-mm@kvack.org, Andrew Morton Cc: "Matthew Wilcox (Oracle)" , "Kirill A . Shutemov" , Huang Ying Subject: [PATCH 06/11] mm/huge_memory: Fix page_trans_huge_mapcount assumption of THP size Date: Tue, 8 Sep 2020 20:55:33 +0100 Message-Id: <20200908195539.25896-7-willy@infradead.org> X-Mailer: git-send-email 2.21.3 In-Reply-To: <20200908195539.25896-1-willy@infradead.org> References: <20200908195539.25896-1-willy@infradead.org> MIME-Version: 1.0 X-Rspamd-Queue-Id: 055B0180054FD X-Spamd-Result: default: False [0.00 / 100.00] X-Rspamd-Server: rspam04 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: Ask the page what size it is instead of assuming it's PMD size. Signed-off-by: Matthew Wilcox (Oracle) Acked-by: Kirill A. Shutemov Reviewed-by: SeongJae Park --- mm/huge_memory.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mm/huge_memory.c b/mm/huge_memory.c index 7bf837c32e3f..e9503b10df8f 100644 --- a/mm/huge_memory.c +++ b/mm/huge_memory.c @@ -2522,14 +2522,14 @@ int page_trans_huge_mapcount(struct page *page, int *total_mapcount) page = compound_head(page); _total_mapcount = ret = 0; - for (i = 0; i < HPAGE_PMD_NR; i++) { + for (i = 0; i < thp_nr_pages(page); i++) { mapcount = atomic_read(&page[i]._mapcount) + 1; ret = max(ret, mapcount); _total_mapcount += mapcount; } if (PageDoubleMap(page)) { ret -= 1; - _total_mapcount -= HPAGE_PMD_NR; + _total_mapcount -= thp_nr_pages(page); } mapcount = compound_mapcount(page); ret += mapcount; From patchwork Tue Sep 8 19:55:34 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Matthew Wilcox X-Patchwork-Id: 11764487 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id EF7C6618 for ; Tue, 8 Sep 2020 20:20:13 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 9BD692166E for ; Tue, 8 Sep 2020 20:20:12 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=infradead.org header.i=@infradead.org header.b="gt+ByL88" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 9BD692166E Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=infradead.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id A03E86B007D; Tue, 8 Sep 2020 16:20:11 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 9DAAD6B007E; Tue, 8 Sep 2020 16:20:11 -0400 (EDT) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 8CB086B0080; Tue, 8 Sep 2020 16:20:11 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0246.hostedemail.com [216.40.44.246]) by kanga.kvack.org (Postfix) with ESMTP id 777B96B007D for ; Tue, 8 Sep 2020 16:20:11 -0400 (EDT) Received: from smtpin04.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay02.hostedemail.com (Postfix) with ESMTP id 3F7373624 for ; Tue, 8 Sep 2020 20:20:11 +0000 (UTC) X-FDA: 77241011022.04.seed56_070d031270d7 Received: from filter.hostedemail.com (10.5.16.251.rfc1918.com [10.5.16.251]) by smtpin04.hostedemail.com (Postfix) with ESMTP id 14724800CDFD for ; Tue, 8 Sep 2020 20:20:11 +0000 (UTC) X-Spam-Summary: 1,0,0,7b8bbde00f453437,d41d8cd98f00b204,willy@infradead.org,,RULES_HIT:41:355:379:541:800:960:973:988:989:1260:1311:1314:1345:1359:1437:1515:1534:1540:1711:1714:1730:1747:1777:1792:2393:2559:2562:3138:3139:3140:3141:3142:3351:3865:3866:3872:4250:4321:5007:6119:6120:6261:6653:7875:7901:8603:8957:10004:11026:11473:11658:11914:12297:12555:12895:12986:13069:13311:13357:13894:14096:14181:14384:14394:14721:21080:21451:21627:21990:30054,0,RBL:90.155.50.34:@infradead.org:.lbl8.mailshell.net-62.8.15.100 64.201.201.201;04ygmnpmtrgfx4dsj53gsbthtmboyypcjrpzskfetdbqhf1e4gzf3yyr8tacqka.ijeir6crf7hr3pnf4rug6qkjnabwk5f3pofmt73xgeks7c18fxj5oaffoythcaj.s-lbl8.mailshell.net-223.238.255.100,CacheIP:none,Bayesian:0.5,0.5,0.5,Netcheck:none,DomainCache:0,MSF:not bulk,SPF:fn,MSBL:0,DNSBL:neutral,Custom_rules:0:0:0,LFtime:23,LUA_SUMMARY:none X-HE-Tag: seed56_070d031270d7 X-Filterd-Recvd-Size: 2513 Received: from casper.infradead.org (casper.infradead.org [90.155.50.34]) by imf32.hostedemail.com (Postfix) with ESMTP for ; Tue, 8 Sep 2020 20:20:10 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; h=Content-Transfer-Encoding:MIME-Version: References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender:Reply-To: Content-Type:Content-ID:Content-Description; bh=jnoUhZZxf1Q4s5u+onqwnY2yiW65TOjoFeLylcVZCEo=; b=gt+ByL88wko6cnLMJzJQV9H7V+ MKhcOFf1L3bsYhu91fWvengrDr7/1S904Ow41LR65iOSCjzrBgD8oi+clVU6M4XJnrlrmSC1l4s0P vEepWq5WQ9gLTc+MpUlztJ2pgHWi1xB4TV1jg8NfCPnPl/Pk8vgy6QhzOd1o3SSxMNrntTQrqN7K+ vnLFCJws9KwMnfVUS0Tf/bNY3p59UGGQt39pRTHd0IuTt3SOmI14R4FUpfJQPovUbNX+Uoyqvzxra F0jPnIVAUg2oDh9Z1+kr11wSrhe3T8O7/jVTie424MJ73j5bcnSxYRk0PH5/KB6tCGmq5PUiYlc45 fJczRyUQ==; Received: from willy by casper.infradead.org with local (Exim 4.92.3 #3 (Red Hat Linux)) id 1kFjiW-0006mr-Vj; Tue, 08 Sep 2020 19:55:49 +0000 From: "Matthew Wilcox (Oracle)" To: linux-mm@kvack.org, Andrew Morton Cc: "Matthew Wilcox (Oracle)" , "Kirill A . Shutemov" , Huang Ying Subject: [PATCH 07/11] mm/huge_memory: Fix can_split_huge_page assumption of THP size Date: Tue, 8 Sep 2020 20:55:34 +0100 Message-Id: <20200908195539.25896-8-willy@infradead.org> X-Mailer: git-send-email 2.21.3 In-Reply-To: <20200908195539.25896-1-willy@infradead.org> References: <20200908195539.25896-1-willy@infradead.org> MIME-Version: 1.0 X-Rspamd-Queue-Id: 14724800CDFD X-Spamd-Result: default: False [0.00 / 100.00] X-Rspamd-Server: rspam04 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: Ask the page how many subpages it has instead of assuming it's PMD size. Signed-off-by: Matthew Wilcox (Oracle) Acked-by: Kirill A. Shutemov Reviewed-by: SeongJae Park Acked-by: "Huang, Ying" --- mm/huge_memory.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mm/huge_memory.c b/mm/huge_memory.c index e9503b10df8f..8bf8caf66923 100644 --- a/mm/huge_memory.c +++ b/mm/huge_memory.c @@ -2546,9 +2546,9 @@ bool can_split_huge_page(struct page *page, int *pextra_pins) /* Additional pins from page cache */ if (PageAnon(page)) - extra_pins = PageSwapCache(page) ? HPAGE_PMD_NR : 0; + extra_pins = PageSwapCache(page) ? thp_nr_pages(page) : 0; else - extra_pins = HPAGE_PMD_NR; + extra_pins = thp_nr_pages(page); if (pextra_pins) *pextra_pins = extra_pins; return total_mapcount(page) == page_count(page) - extra_pins - 1; From patchwork Tue Sep 8 19:55:35 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Matthew Wilcox X-Patchwork-Id: 11764485 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id C2147618 for ; Tue, 8 Sep 2020 20:20:11 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 7DB892145D for ; Tue, 8 Sep 2020 20:20:04 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=infradead.org header.i=@infradead.org header.b="rp3xthQ7" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 7DB892145D Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=infradead.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id 598326B0078; Tue, 8 Sep 2020 16:20:03 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 546AB6B007B; Tue, 8 Sep 2020 16:20:03 -0400 (EDT) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 4338E6B007D; Tue, 8 Sep 2020 16:20:03 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0216.hostedemail.com [216.40.44.216]) by kanga.kvack.org (Postfix) with ESMTP id 2B4BD6B0078 for ; Tue, 8 Sep 2020 16:20:03 -0400 (EDT) Received: from smtpin06.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay05.hostedemail.com (Postfix) with ESMTP id D9CE7181AEF10 for ; Tue, 8 Sep 2020 20:20:02 +0000 (UTC) X-FDA: 77241010644.06.debt52_38165e3270d7 Received: from filter.hostedemail.com (10.5.16.251.rfc1918.com [10.5.16.251]) by smtpin06.hostedemail.com (Postfix) with ESMTP id A99DD100BA381 for ; Tue, 8 Sep 2020 20:20:02 +0000 (UTC) X-Spam-Summary: 1,0,0,bf6a7429a6d26380,d41d8cd98f00b204,willy@infradead.org,,RULES_HIT:41:355:379:541:800:960:968:973:988:989:1260:1311:1314:1345:1359:1437:1515:1534:1542:1711:1730:1747:1777:1792:2393:2559:2562:3138:3139:3140:3141:3142:3354:3865:3866:3867:3871:3872:3874:4250:4321:5007:6117:6119:6120:6261:6653:7901:7903:8603:8957:10004:11026:11473:11658:11914:12043:12297:12438:12555:12895:12986:13894:14181:14394:14721:21080:21451:21627:30012:30054:30070,0,RBL:90.155.50.34:@infradead.org:.lbl8.mailshell.net-64.201.201.201 62.8.15.100;04ygzfgztgx35pwrxxxnq6s6rio9typjxbx1qr1h768kmgxyors6uobfy6q9dms.w9dgrbrq6cdixjbewibkro5ic5iw58hrbz8ced3ap8qub3wmhbgt7gtdj3qxspy.n-lbl8.mailshell.net-223.238.255.100,CacheIP:none,Bayesian:0.5,0.5,0.5,Netcheck:none,DomainCache:0,MSF:not bulk,SPF:fn,MSBL:0,DNSBL:neutral,Custom_rules:0:0:0,LFtime:23,LUA_SUMMARY:none X-HE-Tag: debt52_38165e3270d7 X-Filterd-Recvd-Size: 3730 Received: from casper.infradead.org (casper.infradead.org [90.155.50.34]) by imf19.hostedemail.com (Postfix) with ESMTP for ; Tue, 8 Sep 2020 20:20:02 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; h=Content-Transfer-Encoding:MIME-Version: References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender:Reply-To: Content-Type:Content-ID:Content-Description; bh=qfwFE8JZF/ndkNobTqTg1e4Cd81Vp7P88oLtxC5rLfk=; b=rp3xthQ7df7hpuHXfU8xJc/9q+ ke6IlQULa0XRIbP9KTw9/RLQlS5Yylfuz+GzSKioIzyGudbNWSDKxZFv2j08tI5bzkh+fhn4PGerU NbRvI9yPkCuQ4CtHP5p+0cIbAaa9cPWrktMtrbP0uSRlL1msd7R0LESYhLm+FwzK2X1HL2A50XBQt iAjNvxzMR8KI+z8rvrhN+pC6D8v3SZ+K+nDOqKivr48jK3ye88jc3kks5z1e+KG5E+n4szTQ2a2/d v0tvvzDAfTgUPL01SLK3N0xDpjpdgX7aKeRKR/fDA8eMSN3dPm0ZAHUoRmZcL1xyv0sDtvECC6H6+ q2YOkAAA==; Received: from willy by casper.infradead.org with local (Exim 4.92.3 #3 (Red Hat Linux)) id 1kFjia-0006nA-Av; Tue, 08 Sep 2020 19:55:52 +0000 From: "Matthew Wilcox (Oracle)" To: linux-mm@kvack.org, Andrew Morton Cc: "Matthew Wilcox (Oracle)" , "Kirill A . Shutemov" , Huang Ying Subject: [PATCH 08/11] mm/rmap: Fix assumptions of THP size Date: Tue, 8 Sep 2020 20:55:35 +0100 Message-Id: <20200908195539.25896-9-willy@infradead.org> X-Mailer: git-send-email 2.21.3 In-Reply-To: <20200908195539.25896-1-willy@infradead.org> References: <20200908195539.25896-1-willy@infradead.org> MIME-Version: 1.0 X-Rspamd-Queue-Id: A99DD100BA381 X-Spamd-Result: default: False [0.00 / 100.00] X-Rspamd-Server: rspam02 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: Ask the page what size it is instead of assuming it's PMD size. Do this for anon pages as well as file pages for when someone decides to support that. Leave the assumption alone for pages which are PMD mapped; we don't currently grow THPs beyond PMD size, so we don't need to change this code yet. Signed-off-by: Matthew Wilcox (Oracle) Acked-by: Kirill A. Shutemov Reviewed-by: SeongJae Park --- mm/rmap.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/mm/rmap.c b/mm/rmap.c index 83cc459edc40..10f93129648c 100644 --- a/mm/rmap.c +++ b/mm/rmap.c @@ -1205,7 +1205,7 @@ void page_add_file_rmap(struct page *page, bool compound) VM_BUG_ON_PAGE(compound && !PageTransHuge(page), page); lock_page_memcg(page); if (compound && PageTransHuge(page)) { - for (i = 0, nr = 0; i < HPAGE_PMD_NR; i++) { + for (i = 0, nr = 0; i < thp_nr_pages(page); i++) { if (atomic_inc_and_test(&page[i]._mapcount)) nr++; } @@ -1246,7 +1246,7 @@ static void page_remove_file_rmap(struct page *page, bool compound) /* page still mapped by someone else? */ if (compound && PageTransHuge(page)) { - for (i = 0, nr = 0; i < HPAGE_PMD_NR; i++) { + for (i = 0, nr = 0; i < thp_nr_pages(page); i++) { if (atomic_add_negative(-1, &page[i]._mapcount)) nr++; } @@ -1293,7 +1293,7 @@ static void page_remove_anon_compound_rmap(struct page *page) * Subpages can be mapped with PTEs too. Check how many of * them are still mapped. */ - for (i = 0, nr = 0; i < HPAGE_PMD_NR; i++) { + for (i = 0, nr = 0; i < thp_nr_pages(page); i++) { if (atomic_add_negative(-1, &page[i]._mapcount)) nr++; } @@ -1303,10 +1303,10 @@ static void page_remove_anon_compound_rmap(struct page *page) * page of the compound page is unmapped, but at least one * small page is still mapped. */ - if (nr && nr < HPAGE_PMD_NR) + if (nr && nr < thp_nr_pages(page)) deferred_split_huge_page(page); } else { - nr = HPAGE_PMD_NR; + nr = thp_nr_pages(page); } if (unlikely(PageMlocked(page))) From patchwork Tue Sep 8 19:55:36 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Matthew Wilcox X-Patchwork-Id: 11764481 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id F2F5B618 for ; Tue, 8 Sep 2020 20:20:02 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id BC0DB20936 for ; Tue, 8 Sep 2020 20:20:01 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=infradead.org header.i=@infradead.org header.b="oxs7jd6K" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org BC0DB20936 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=infradead.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id 856456B0074; Tue, 8 Sep 2020 16:20:00 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 82E906B0075; Tue, 8 Sep 2020 16:20:00 -0400 (EDT) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 76A0F6B0078; Tue, 8 Sep 2020 16:20:00 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0233.hostedemail.com [216.40.44.233]) by kanga.kvack.org (Postfix) with ESMTP id 619ED6B0074 for ; Tue, 8 Sep 2020 16:20:00 -0400 (EDT) Received: from smtpin10.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay05.hostedemail.com (Postfix) with ESMTP id 24EF3181AEF10 for ; Tue, 8 Sep 2020 20:20:00 +0000 (UTC) X-FDA: 77241010560.10.shoes87_3e16794270d7 Received: from filter.hostedemail.com (10.5.16.251.rfc1918.com [10.5.16.251]) by smtpin10.hostedemail.com (Postfix) with ESMTP id E896316A06B for ; Tue, 8 Sep 2020 20:19:59 +0000 (UTC) X-Spam-Summary: 1,0,0,3322dc7124294af5,d41d8cd98f00b204,willy@infradead.org,,RULES_HIT:41:355:379:541:800:960:968:973:988:989:1260:1311:1314:1345:1359:1437:1515:1534:1541:1711:1730:1747:1777:1792:2198:2199:2393:2553:2559:2562:2693:3138:3139:3140:3141:3142:3353:3865:3867:3868:3871:3872:3874:4250:4321:4419:5007:6261:6653:7903:8957:10004:11026:11473:11658:11914:12296:12297:12438:12555:12895:13069:13311:13357:13894:14096:14181:14384:14394:14721:21080:21324:21451:21627:21795:30051:30054:30090,0,RBL:90.155.50.34:@infradead.org:.lbl8.mailshell.net-64.201.201.201 62.8.15.100;04yg3msn3b371wgcwo8h1yyw8psunoppi6k7zwkd8x8y8uytrs7w3fqxbph5sew.roi4qujs8zuqbjo8dann49t9e8dedngyb75gh1ijrg1m11rkyc49wxd51mh7aur.4-lbl8.mailshell.net-223.238.255.100,CacheIP:none,Bayesian:0.5,0.5,0.5,Netcheck:none,DomainCache:0,MSF:not bulk,SPF:fn,MSBL:0,DNSBL:neutral,Custom_rules:0:0:0,LFtime:25,LUA_SUMMARY:none X-HE-Tag: shoes87_3e16794270d7 X-Filterd-Recvd-Size: 3179 Received: from casper.infradead.org (casper.infradead.org [90.155.50.34]) by imf09.hostedemail.com (Postfix) with ESMTP for ; Tue, 8 Sep 2020 20:19:59 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; h=Content-Transfer-Encoding:MIME-Version: References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender:Reply-To: Content-Type:Content-ID:Content-Description; bh=LjtV5wk6eIAid7tNJvpICxRfbTSJyHh+qMf4hAvSbBQ=; b=oxs7jd6KdExFLWT9Y2KQmjTTle AILKtncWkcHlsNdU9jaPP6SoLPnWf/LZPXDfxvggcfgwLRo7PI5tV5XswigVGDD6bEPav1NMDtkuB UmSnxSX6WYxhjisQezRwrz9ks/VU7l9vZDhw0cun8HHx65PSkwAJzHXz5H3Tmnxj1Ygv7uhw1Pqnd 8zzSAsSDORoAZt5Om8O5pxYh0O0bSbX0suV84Gb2g6aIML5jRJF6ewE00O/JuDNd3RQ9n+A8FAig2 qFHEPITUQqPnjbiwj0C8VSofVDvTmBG8PQF11iL5N6SicM1+7HrHNWLO4Jyg4C8HHAH4b72lCXZr3 cAZUloNg==; Received: from willy by casper.infradead.org with local (Exim 4.92.3 #3 (Red Hat Linux)) id 1kFjib-0006nW-L3; Tue, 08 Sep 2020 19:55:53 +0000 From: "Matthew Wilcox (Oracle)" To: linux-mm@kvack.org, Andrew Morton Cc: "Matthew Wilcox (Oracle)" , "Kirill A . Shutemov" , Huang Ying Subject: [PATCH 09/11] mm/truncate: Fix truncation for pages of arbitrary size Date: Tue, 8 Sep 2020 20:55:36 +0100 Message-Id: <20200908195539.25896-10-willy@infradead.org> X-Mailer: git-send-email 2.21.3 In-Reply-To: <20200908195539.25896-1-willy@infradead.org> References: <20200908195539.25896-1-willy@infradead.org> MIME-Version: 1.0 X-Rspamd-Queue-Id: E896316A06B X-Spamd-Result: default: False [0.00 / 100.00] X-Rspamd-Server: rspam02 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: Remove the assumption that a compound page is HPAGE_PMD_SIZE, and the assumption that any page is PAGE_SIZE. Signed-off-by: Matthew Wilcox (Oracle) Acked-by: Kirill A. Shutemov Reviewed-by: SeongJae Park --- mm/truncate.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mm/truncate.c b/mm/truncate.c index dd9ebc1da356..1cc93b57fb41 100644 --- a/mm/truncate.c +++ b/mm/truncate.c @@ -168,7 +168,7 @@ void do_invalidatepage(struct page *page, unsigned int offset, * becomes orphaned. It will be left on the LRU and may even be mapped into * user pagetables if we're racing with filemap_fault(). * - * We need to bale out if page->mapping is no longer equal to the original + * We need to bail out if page->mapping is no longer equal to the original * mapping. This happens a) when the VM reclaimed the page while we waited on * its lock, b) when a concurrent invalidate_mapping_pages got there first and * c) when tmpfs swizzles a page between a tmpfs inode and swapper_space. @@ -177,12 +177,12 @@ static void truncate_cleanup_page(struct address_space *mapping, struct page *page) { if (page_mapped(page)) { - pgoff_t nr = PageTransHuge(page) ? HPAGE_PMD_NR : 1; + unsigned int nr = thp_nr_pages(page); unmap_mapping_pages(mapping, page->index, nr, false); } if (page_has_private(page)) - do_invalidatepage(page, 0, PAGE_SIZE); + do_invalidatepage(page, 0, thp_size(page)); /* * Some filesystems seem to re-dirty the page even after From patchwork Tue Sep 8 19:55:37 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Matthew Wilcox X-Patchwork-Id: 11764477 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 2CB07618 for ; Tue, 8 Sep 2020 20:19:57 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id CA0EF2166E for ; Tue, 8 Sep 2020 20:19:56 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=infradead.org header.i=@infradead.org header.b="neJj6CQO" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org CA0EF2166E Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=infradead.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id F331A6B0068; Tue, 8 Sep 2020 16:19:55 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id EE3996B0073; Tue, 8 Sep 2020 16:19:55 -0400 (EDT) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id DAB296B0074; Tue, 8 Sep 2020 16:19:55 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0119.hostedemail.com [216.40.44.119]) by kanga.kvack.org (Postfix) with ESMTP id C5E7F6B0068 for ; Tue, 8 Sep 2020 16:19:55 -0400 (EDT) Received: from smtpin02.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay01.hostedemail.com (Postfix) with ESMTP id 7A684180AD80F for ; Tue, 8 Sep 2020 20:19:55 +0000 (UTC) X-FDA: 77241010350.02.bit76_5b04841270d7 Received: from filter.hostedemail.com (10.5.16.251.rfc1918.com [10.5.16.251]) by smtpin02.hostedemail.com (Postfix) with ESMTP id 4E7AA100BA1D2 for ; Tue, 8 Sep 2020 20:19:55 +0000 (UTC) X-Spam-Summary: 1,0,0,db208d3f9d56ed08,d41d8cd98f00b204,willy@infradead.org,,RULES_HIT:41:355:379:541:800:960:973:988:989:1260:1311:1314:1345:1359:1437:1515:1534:1539:1566:1711:1714:1730:1747:1777:1792:2393:2559:2562:3138:3139:3140:3141:3142:3865:3871:4321:5007:6261:6653:10004:11026:11473:11658:11914:12043:12114:12297:12438:12555:12895:13069:13161:13229:13311:13357:13894:14181:14384:14394:14721:21080:21324:21451:21627:30054,0,RBL:90.155.50.34:@infradead.org:.lbl8.mailshell.net-64.201.201.201 62.8.15.100;04yro6ykzhqiy6ukz6preprz9yk6sypywibghjq58st9zjm3yeck5st54gyey48.5ja5magz4me5inq8ddjhw5u6nzuu6t8n7594g78tr9cceao9y8w61gy77zttd9q.q-lbl8.mailshell.net-223.238.255.100,CacheIP:none,Bayesian:0.5,0.5,0.5,Netcheck:none,DomainCache:0,MSF:not bulk,SPF:fn,MSBL:0,DNSBL:neutral,Custom_rules:0:0:0,LFtime:24,LUA_SUMMARY:none X-HE-Tag: bit76_5b04841270d7 X-Filterd-Recvd-Size: 2312 Received: from casper.infradead.org (casper.infradead.org [90.155.50.34]) by imf15.hostedemail.com (Postfix) with ESMTP for ; Tue, 8 Sep 2020 20:19:54 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; h=Content-Transfer-Encoding:MIME-Version: References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender:Reply-To: Content-Type:Content-ID:Content-Description; bh=HGF7VWJvED/7UZMRt35VBn5dhGT03hgfd1h+bSk1jCs=; b=neJj6CQOwNofR5p2e94D2haPdM tmUU90aQT+PxNFTg15Niq5iyG43/1ZbsLDY13yCi2v/rjH8Vr50HwCztHHME9aE9OEZgkV4ak6878 3YVgJteqredJNMVm+jmC9m3xlG5+A+czYRxt0S8jC8DkAM1CknGNqM1UNoNBQCOesWJsp92UXKdCo NueIMayU5ssr5ywOM3Otmx2mtZojW2adMzt/Ez9MVzluewoTqZ/KjqzMbX58dOcAhR+xRjFJ0kda3 phnBRV54m6+TlKhNSQkLbjKvPzvutCMlxkUWzcrOgRbuTG/Q6XPGMxW4UODs14Vs2iA2nwWuulsbW MagGc0+A==; Received: from willy by casper.infradead.org with local (Exim 4.92.3 #3 (Red Hat Linux)) id 1kFjic-0006ns-DA; Tue, 08 Sep 2020 19:55:54 +0000 From: "Matthew Wilcox (Oracle)" To: linux-mm@kvack.org, Andrew Morton Cc: "Matthew Wilcox (Oracle)" , "Kirill A . Shutemov" , Huang Ying Subject: [PATCH 10/11] mm/page-writeback: Support tail pages in wait_for_stable_page Date: Tue, 8 Sep 2020 20:55:37 +0100 Message-Id: <20200908195539.25896-11-willy@infradead.org> X-Mailer: git-send-email 2.21.3 In-Reply-To: <20200908195539.25896-1-willy@infradead.org> References: <20200908195539.25896-1-willy@infradead.org> MIME-Version: 1.0 X-Rspamd-Queue-Id: 4E7AA100BA1D2 X-Spamd-Result: default: False [0.00 / 100.00] X-Rspamd-Server: rspam04 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: page->mapping is undefined for tail pages, so operate exclusively on the head page. Signed-off-by: Matthew Wilcox (Oracle) Acked-by: Kirill A. Shutemov Reviewed-by: SeongJae Park --- mm/page-writeback.c | 1 + 1 file changed, 1 insertion(+) diff --git a/mm/page-writeback.c b/mm/page-writeback.c index 4e4ddd67b71e..dac075e451d3 100644 --- a/mm/page-writeback.c +++ b/mm/page-writeback.c @@ -2849,6 +2849,7 @@ EXPORT_SYMBOL_GPL(wait_on_page_writeback); */ void wait_for_stable_page(struct page *page) { + page = thp_head(page); if (bdi_cap_stable_pages_required(inode_to_bdi(page->mapping->host))) wait_on_page_writeback(page); } From patchwork Tue Sep 8 19:55:38 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Matthew Wilcox X-Patchwork-Id: 11764483 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 7885359D for ; Tue, 8 Sep 2020 20:20:11 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 3D99D2166E for ; Tue, 8 Sep 2020 20:20:08 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=infradead.org header.i=@infradead.org header.b="LCqkdg4s" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 3D99D2166E Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=infradead.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id 437AB6B007B; Tue, 8 Sep 2020 16:20:07 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 40EB36B007D; Tue, 8 Sep 2020 16:20:07 -0400 (EDT) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 34B516B007E; Tue, 8 Sep 2020 16:20:07 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0066.hostedemail.com [216.40.44.66]) by kanga.kvack.org (Postfix) with ESMTP id 1CA106B007B for ; Tue, 8 Sep 2020 16:20:07 -0400 (EDT) Received: from smtpin02.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay01.hostedemail.com (Postfix) with ESMTP id DE428180AD806 for ; Tue, 8 Sep 2020 20:20:06 +0000 (UTC) X-FDA: 77241010812.02.wine54_260ba4b270d7 Received: from filter.hostedemail.com (10.5.16.251.rfc1918.com [10.5.16.251]) by smtpin02.hostedemail.com (Postfix) with ESMTP id B81FA100B79CC for ; Tue, 8 Sep 2020 20:20:06 +0000 (UTC) X-Spam-Summary: 1,0,0,8001292561ecbee0,d41d8cd98f00b204,willy@infradead.org,,RULES_HIT:41:355:379:541:800:960:966:968:973:988:989:1260:1311:1314:1345:1359:1437:1515:1534:1540:1711:1714:1730:1747:1777:1792:2196:2199:2393:2559:2562:3138:3139:3140:3141:3142:3351:3865:3868:3874:4385:4419:5007:6261:6653:7875:8957:10004:11026:11232:11473:11658:11914:12297:12438:12555:12895:13069:13161:13229:13311:13357:13894:14096:14181:14384:14394:14721:21080:21451:21627:21990:30054:30064,0,RBL:90.155.50.34:@infradead.org:.lbl8.mailshell.net-64.201.201.201 62.8.15.100;04yrp9mzoma1d8h8hhnfyiqo78kthopupprdyy7ecunu6g1cixhmm1zp8q6k6dm.kmort9iuurtxicgnqqmxufwehoct9rsx6o6gr1rqy7paq4cd59pf6oyqgcabbwp.w-lbl8.mailshell.net-223.238.255.100,CacheIP:none,Bayesian:0.5,0.5,0.5,Netcheck:none,DomainCache:0,MSF:not bulk,SPF:fn,MSBL:0,DNSBL:neutral,Custom_rules:0:0:0,LFtime:24,LUA_SUMMARY:none X-HE-Tag: wine54_260ba4b270d7 X-Filterd-Recvd-Size: 2467 Received: from casper.infradead.org (casper.infradead.org [90.155.50.34]) by imf13.hostedemail.com (Postfix) with ESMTP for ; Tue, 8 Sep 2020 20:20:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; h=Content-Transfer-Encoding:MIME-Version: References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender:Reply-To: Content-Type:Content-ID:Content-Description; bh=jlFGZxPiT84T3IC+JBo5UGv5Y++vp0Xd2e7vofu/WGg=; b=LCqkdg4s9l8BjbSrG1ZU4ZaZPp 6T4I4/8bXRmEBPvVvIQoBg4VZIr5lz6CJeeINyP4tWKGoEyOJ+5LSXR5Uhn27QMml9hLAf5rRyttO cu8A6PtUxWrcHgCPm5JfsRt3Ydy9a4q+bAZ2sZdrxaf08u0+8z/ZrlNMpMfpdbK52zy9vyXlssNRY fIn6IEAGjRWzEZkMs3R/09gEbmrRMH4tYmFB+RWKYDCFVDwjJ5yDhe0Of10qdRbBJAdQOBYIQCcrM uqGUHtUbUiK7YuQ4OYJJUbXm07rwr6vNzA8SNDjs46h49txSdGo24GjJO/+00cuF+I4cnRdElZMTg uVBk8vrQ==; Received: from willy by casper.infradead.org with local (Exim 4.92.3 #3 (Red Hat Linux)) id 1kFjid-0006o4-Ds; Tue, 08 Sep 2020 19:55:55 +0000 From: "Matthew Wilcox (Oracle)" To: linux-mm@kvack.org, Andrew Morton Cc: "Matthew Wilcox (Oracle)" , "Kirill A . Shutemov" , Huang Ying Subject: [PATCH 11/11] mm/vmscan: Allow arbitrary sized pages to be paged out Date: Tue, 8 Sep 2020 20:55:38 +0100 Message-Id: <20200908195539.25896-12-willy@infradead.org> X-Mailer: git-send-email 2.21.3 In-Reply-To: <20200908195539.25896-1-willy@infradead.org> References: <20200908195539.25896-1-willy@infradead.org> MIME-Version: 1.0 X-Rspamd-Queue-Id: B81FA100B79CC X-Spamd-Result: default: False [0.00 / 100.00] X-Rspamd-Server: rspam01 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: Remove the assumption that a compound page has HPAGE_PMD_NR pins from the page cache. Signed-off-by: Matthew Wilcox (Oracle) Cc: Huang Ying Acked-by: Kirill A. Shutemov Acked-by: "Huang, Ying" Reviewed-by: SeongJae Park --- mm/vmscan.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/mm/vmscan.c b/mm/vmscan.c index 99e1796eb833..91b787fff71a 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c @@ -722,8 +722,7 @@ static inline int is_page_cache_freeable(struct page *page) * that isolated the page, the page cache and optional buffer * heads at page->private. */ - int page_cache_pins = PageTransHuge(page) && PageSwapCache(page) ? - HPAGE_PMD_NR : 1; + int page_cache_pins = thp_nr_pages(page); return page_count(page) - page_has_private(page) == 1 + page_cache_pins; }