From mboxrd@z Thu Jan 1 00:00:00 1970 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 C6F42C433EF for ; Mon, 4 Apr 2022 19:31:57 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 358F66B0075; Mon, 4 Apr 2022 15:30:32 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 307376B0078; Mon, 4 Apr 2022 15:30:32 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 1CFA26B007B; Mon, 4 Apr 2022 15:30:32 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0159.hostedemail.com [216.40.44.159]) by kanga.kvack.org (Postfix) with ESMTP id 0E9946B0075 for ; Mon, 4 Apr 2022 15:30:32 -0400 (EDT) Received: from smtpin24.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay02.hostedemail.com (Postfix) with ESMTP id B07F3AD6C0 for ; Mon, 4 Apr 2022 19:30:21 +0000 (UTC) X-FDA: 79320187842.24.32F9CD8 Received: from casper.infradead.org (casper.infradead.org [90.155.50.34]) by imf29.hostedemail.com (Postfix) with ESMTP id 5502012002A for ; Mon, 4 Apr 2022 19:30:21 +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=uKUep2HlJ8UfbnV1THdQ1lp4KELm5uKT2Ceq2OpuL64=; b=ugdSQE+V5s7/a10CzLczHaUUdC e4mQ4OMUj9CfB+7TKiRhjZRHiXdMXguLBAsZ8WIpQa9Px1wfYf+PFchDyZcm+1ulH/t4Jl4K3zCCK hZwwUwPd97obXV+Q6NUj8/0rDA0Un9uzESsT5Oddimo9j1J9mjEJ7bhYZuFDzXur48mm7unqF5V1h D2AHz3zItU4VInOeFV5z/QvJlQt/b/Z5ar8FWbvKKrkTBH/i/Phep97ezEWGoLKcqvBdcYV6MTHfc wR5itOsztrj6qlNKuJbFiwBfOvRsL8Wcp8i//l6Q6Uf5WUrNaFya5UecAkmqGuAQ3+aY0iPJw0Tjt JR2RZYGg==; Received: from willy by casper.infradead.org with local (Exim 4.94.2 #2 (Red Hat Linux)) id 1nbSOv-005zqP-Ec; Mon, 04 Apr 2022 19:30:09 +0000 From: "Matthew Wilcox (Oracle)" To: linux-mm@kvack.org, Andrew Morton , Zi Yan Cc: "Matthew Wilcox (Oracle)" Subject: [PATCH 4/4] mm/mempolicy: Use vma_alloc_folio() in new_page() Date: Mon, 4 Apr 2022 20:30:06 +0100 Message-Id: <20220404193006.1429250-5-willy@infradead.org> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220404193006.1429250-1-willy@infradead.org> References: <20220404193006.1429250-1-willy@infradead.org> MIME-Version: 1.0 X-Rspamd-Server: rspam09 X-Rspam-User: X-Stat-Signature: ofq9bnxra4fdbaqe73nbwj9nacftsd7c Authentication-Results: imf29.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=ugdSQE+V; dmarc=none; spf=none (imf29.hostedemail.com: domain of willy@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=willy@infradead.org X-Rspamd-Queue-Id: 5502012002A X-HE-Tag: 1649100621-369097 Content-Transfer-Encoding: quoted-printable 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: Simplify new_page() by unifying the THP and base page cases, and handle orders other than 0 and HPAGE_PMD_ORDER correctly. Signed-off-by: Matthew Wilcox (Oracle) --- mm/mempolicy.c | 25 +++++++++++-------------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/mm/mempolicy.c b/mm/mempolicy.c index ec15f4f4b714..d6d7a95b0cce 100644 --- a/mm/mempolicy.c +++ b/mm/mempolicy.c @@ -1191,8 +1191,10 @@ int do_migrate_pages(struct mm_struct *mm, const n= odemask_t *from, */ static struct page *new_page(struct page *page, unsigned long start) { + struct folio *dst, *src =3D page_folio(page); struct vm_area_struct *vma; unsigned long address; + gfp_t gfp =3D GFP_HIGHUSER_MOVABLE | __GFP_RETRY_MAYFAIL; =20 vma =3D find_vma(current->mm, start); while (vma) { @@ -1202,24 +1204,19 @@ static struct page *new_page(struct page *page, u= nsigned long start) vma =3D vma->vm_next; } =20 - if (PageHuge(page)) { - return alloc_huge_page_vma(page_hstate(compound_head(page)), + if (folio_test_hugetlb(src)) { + return alloc_huge_page_vma(page_hstate(&src->page), vma, address); - } else if (PageTransHuge(page)) { - struct page *thp; - - thp =3D alloc_hugepage_vma(GFP_TRANSHUGE, vma, address, - HPAGE_PMD_ORDER); - if (!thp) - return NULL; - prep_transhuge_page(thp); - return thp; + } else if (folio_test_large(src)) { + gfp =3D GFP_TRANSHUGE; } + /* - * if !vma, alloc_page_vma() will use task or system default policy + * if !vma, vma_alloc_folio() will use task or system default policy */ - return alloc_page_vma(GFP_HIGHUSER_MOVABLE | __GFP_RETRY_MAYFAIL, - vma, address); + dst =3D vma_alloc_folio(gfp, folio_order(src), vma, address, + folio_test_large(src)); + return &dst->page; } #else =20 --=20 2.34.1