From patchwork Tue Oct 13 23:56:39 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Morton X-Patchwork-Id: 11836507 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 B2D2661C for ; Tue, 13 Oct 2020 23:56:43 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 78E292222E for ; Tue, 13 Oct 2020 23:56:43 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=kernel.org header.i=@kernel.org header.b="yUJcoNVZ" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 78E292222E Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=linux-foundation.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id 1DD4B94000B; Tue, 13 Oct 2020 19:56:42 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 18D23940007; Tue, 13 Oct 2020 19:56:42 -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 07CC494000B; Tue, 13 Oct 2020 19:56:42 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0236.hostedemail.com [216.40.44.236]) by kanga.kvack.org (Postfix) with ESMTP id CE848940007 for ; Tue, 13 Oct 2020 19:56:41 -0400 (EDT) Received: from smtpin27.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay02.hostedemail.com (Postfix) with ESMTP id 86FF03623 for ; Tue, 13 Oct 2020 23:56:41 +0000 (UTC) X-FDA: 77368564602.27.apple58_4a07ef027207 Received: from filter.hostedemail.com (10.5.16.251.rfc1918.com [10.5.16.251]) by smtpin27.hostedemail.com (Postfix) with ESMTP id 622093D663 for ; Tue, 13 Oct 2020 23:56:41 +0000 (UTC) X-Spam-Summary: 1,0,0,1f1ad9391bff93be,d41d8cd98f00b204,akpm@linux-foundation.org,,RULES_HIT:41:69:355:379:800:960:965:966:967:973:988:989:1260:1345:1359:1381:1431:1437:1534:1541:1711:1730:1747:1777:1792:2196:2198:2199:2200:2393:2525:2559:2564:2682:2685:2859:2898:2902:2933:2937:2939:2942:2945:2947:2951:2954:3022:3138:3139:3140:3141:3142:3352:3865:3866:3868:3870:3934:3936:3938:3941:3944:3947:3950:3953:3956:3959:4321:4385:4390:4395:5007:6261:6653:7576:9010:9025:9545:10004:11026:11658:11914:12043:12048:12297:12438:12517:12519:12555:12679:12986:13069:13161:13229:13311:13357:14181:14384:14721:21080:21451:21627:21939:21990:30054:30064:30070,0,RBL:198.145.29.99:@linux-foundation.org:.lbl8.mailshell.net-64.100.201.201 62.2.0.100;04ygddzdf87on9nr74pzg4jjtrdzyocxufzt4o5hmf63n99g8wmbiusjffj9r18.sojbimgcnk4jo89uzpe5ozigheajkkrmnfqrxjmbij9i8p7f7xx85cdfibfbm5c.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:fp,MSBL:0,DNSBL :neutral X-HE-Tag: apple58_4a07ef027207 X-Filterd-Recvd-Size: 3320 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by imf21.hostedemail.com (Postfix) with ESMTP for ; Tue, 13 Oct 2020 23:56:40 +0000 (UTC) Received: from localhost.localdomain (c-73-231-172-41.hsd1.ca.comcast.net [73.231.172.41]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 1612D2222E; Tue, 13 Oct 2020 23:56:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1602633400; bh=vraTFkAyU3iWIqq4aMcctztFK+Kn+g4VWSaDarwk7+E=; h=Date:From:To:Subject:In-Reply-To:From; b=yUJcoNVZZJUQGF2dOzPzmD/0HfIW74rmn9PbxFOUiNg7rJx5E3uWjgZ4qha8oGa2Z TqVKjyHxNXbN2MoFeDpt333fxT5G480+U/bN2Go00SzjNXrB/6rjsvtgr0vDUcQgbR 9no3D0A3JrkwyKhJygoVec+6idiXs6vPofNSCmB8= Date: Tue, 13 Oct 2020 16:56:39 -0700 From: Andrew Morton To: akpm@linux-foundation.org, bhe@redhat.com, linux-mm@kvack.org, mike.kravetz@oracle.com, mm-commits@vger.kernel.org, richard.weiyang@linux.alibaba.com, torvalds@linux-foundation.org, vbabka@suse.cz Subject: [patch 150/181] mm/hugetlb: take the free hpage during the iteration directly Message-ID: <20201013235639.j6ScZKibf%akpm@linux-foundation.org> In-Reply-To: <20201013164658.3bfd96cc224d8923e66a9f4e@linux-foundation.org> User-Agent: s-nail v14.8.16 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: Wei Yang Subject: mm/hugetlb: take the free hpage during the iteration directly Function dequeue_huge_page_node_exact() iterates the free list and return the first valid free hpage. Instead of break and check the loop variant, we could return in the loop directly. This could reduce some redundant check. [mike.kravetz@oracle.com: points out a logic error] [richard.weiyang@linux.alibaba.com: v4] Link: https://lkml.kernel.org/r/20200901014636.29737-8-richard.weiyang@linux.alibaba.com Link: https://lkml.kernel.org/r/20200831022351.20916-8-richard.weiyang@linux.alibaba.com Signed-off-by: Wei Yang Cc: Baoquan He Cc: Mike Kravetz Cc: Vlastimil Babka Signed-off-by: Andrew Morton --- mm/hugetlb.c | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) --- a/mm/hugetlb.c~mm-hugetlb-take-the-free-hpage-during-the-iteration-directly +++ a/mm/hugetlb.c @@ -1040,21 +1040,17 @@ static struct page *dequeue_huge_page_no if (nocma && is_migrate_cma_page(page)) continue; - if (!PageHWPoison(page)) - break; + if (PageHWPoison(page)) + continue; + + list_move(&page->lru, &h->hugepage_activelist); + set_page_refcounted(page); + h->free_huge_pages--; + h->free_huge_pages_node[nid]--; + return page; } - /* - * if 'non-isolated free hugepage' not found on the list, - * the allocation fails. - */ - if (&h->hugepage_freelists[nid] == &page->lru) - return NULL; - list_move(&page->lru, &h->hugepage_activelist); - set_page_refcounted(page); - h->free_huge_pages--; - h->free_huge_pages_node[nid]--; - return page; + return NULL; } static struct page *dequeue_huge_page_nodemask(struct hstate *h, gfp_t gfp_mask, int nid,