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 72B53C433F5 for ; Wed, 5 Jan 2022 07:06:34 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id A922B6B0071; Wed, 5 Jan 2022 02:06:33 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id A1BCA6B0073; Wed, 5 Jan 2022 02:06:33 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 86D796B0074; Wed, 5 Jan 2022 02:06:33 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0086.hostedemail.com [216.40.44.86]) by kanga.kvack.org (Postfix) with ESMTP id 721736B0071 for ; Wed, 5 Jan 2022 02:06:33 -0500 (EST) Received: from smtpin08.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay04.hostedemail.com (Postfix) with ESMTP id 300169526A for ; Wed, 5 Jan 2022 07:06:33 +0000 (UTC) X-FDA: 78995350266.08.BAC5FC2 Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2049.outbound.protection.outlook.com [40.107.244.49]) by imf10.hostedemail.com (Postfix) with ESMTP id D290DC000A for ; Wed, 5 Jan 2022 07:06:19 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=U+cxqRlAA1gbzsCIjD7qHBRuprg1rkyeI3fFH1tPcgOnZJfg36kwaJdVe0Nb++ZwLemzSjty4gi9vNamqWpi+0r3M8xEynDPLnWVZ6LsuiovJahixgt7md3JjHLATDvDq4uwQdqCWr59lmWpQ0+N43imesbKO2aWk8lqeBhTEQGJvrcLA97VtE3t67zDdTyeW3q5mx0EGMK9dhCQejWW2NTu1tFSYz4lgPMn1UmLhsoJDW1Ld+G5apeQQg+wJ8gwDpUzpBki+fjHclYvA8xJzASB0+wTnO7BTQqnIJqY+CF6OELoLbsQ2izoJhLIvTEr1PDU2ZTgmdE02iDy1seVhg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=xo3cVpzj/ImCK9fNn1w6zEtoOQ00/ZPzJThJw5tzU3A=; b=dYqWATHVM0Vtcd4qDi01ZJlFIH01PDDHowjs8hF9HWMxgrEcw1QOniu2FKJ5LeRFZhnpQnsXeOcDBihvpDIGgwX91V5ECVg7G19SDxqWLIAC4x48Juw1NvjeoXysZp8IKQ6HvwQ0Y8ASwR+N/Zz+PFQKlNw+H/t2A9MY6Sc4p7G/7FybpWPr8yOQPonI0I3hjd2clDt9iGYYU3wJTdaQO/hQ7BtEkOfe6NPdRWODp/zju7ecOkwx1kgc5iZX4Z1UsqFsJ8f0ffEebgk75qtCykaRyeP5R/NKy/Kug8ZYM8C8XRiYTvyXHt//TaU5jOQa3i1fkd+DEjXK8ZFAD5AJ/g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=xo3cVpzj/ImCK9fNn1w6zEtoOQ00/ZPzJThJw5tzU3A=; b=NrSA3ZOPn1i5Ci0m+OCigEpXdyi+sylG/tsf93KqpwUiKNO9AqpO5n+LNVi4Gu5MC+TPNRA2uctH7xu73oHbK6h+O1By7cHAKl+/1yjG+zFMqVcJnvxT1vXs7zo0ddkp1s6vKwfirX7YLPSFcNCYjBAkuHACry+Sez0giyBS0MWdvPu/B0Vv1DOexYeSkuKbIkRUh2SLSZgWyl/Q8PklW3VAaIjW6eTOsCUgQmM8xb28YQ7zh3FAv5mJTQ0ixsOvph7cHxWAKVRVVsFB73DvEBVYFQSTn7mMryPMbf21P8KDYZhrdethe7D4kieMYqId8tZd0UVnAbTLNBY/S6mngw== Received: from BY5PR12MB4130.namprd12.prod.outlook.com (2603:10b6:a03:20b::16) by BY5PR12MB4035.namprd12.prod.outlook.com (2603:10b6:a03:206::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4867.7; Wed, 5 Jan 2022 07:06:30 +0000 Received: from BY5PR12MB4130.namprd12.prod.outlook.com ([fe80::8496:16fd:65c5:4af7]) by BY5PR12MB4130.namprd12.prod.outlook.com ([fe80::8496:16fd:65c5:4af7%4]) with mapi id 15.20.4844.015; Wed, 5 Jan 2022 07:06:30 +0000 Message-ID: <5d71c4ac-2fd5-8fa9-79d2-507f15c16e9f@nvidia.com> Date: Tue, 4 Jan 2022 23:06:28 -0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.4.1 Subject: Re: [PATCH 08/17] gup: Add try_grab_folio() Content-Language: en-US To: "Matthew Wilcox (Oracle)" , linux-mm@kvack.org Cc: Andrew Morton References: <20220102215729.2943705-1-willy@infradead.org> <20220102215729.2943705-9-willy@infradead.org> From: John Hubbard In-Reply-To: <20220102215729.2943705-9-willy@infradead.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-ClientProxiedBy: BY3PR05CA0051.namprd05.prod.outlook.com (2603:10b6:a03:39b::26) To BY5PR12MB4130.namprd12.prod.outlook.com (2603:10b6:a03:20b::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: df33a534-d97e-46e7-e182-08d9d019e620 X-MS-TrafficTypeDiagnostic: BY5PR12MB4035:EE_ X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:7219; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: GxJL/4FYQIExgsbgu5miqhNQqfL0AgCOZkugZ5E+Ze3mBvld3JBdtc+OZq2ICtDlA5HU9gDuxDbXZTyGHZstBwb5oBUEFXGEbqQD6S39HipjiNmBwioTLKb9Hz3bn/iM8vYWhz46g3Ft/duBM4JMqTcg+YEtrlZN90o7oECShGj6lFpOTcLldFYr4YcZLxf+HcCUNCvShkhgFLDdUYDXXt8A3ww54FK4EFF7HOknwAjVew8f2v74bR/p04atde2iVWtyD4YiAB8L2uVN6Mh+qKkKNf5Ufrm8Tc354WrzLfG46K07WO98lSC1j3uARHnY0DXokUyMYyzVDS2YLyCwM1jC2HmpPRlX52xYCiKyjiMXAntdf+MoZgREApXh8jp9lhJCl1o0cieTbhVFSdZQ9uCEXaeIfsxM+xCCATdHR6vt5VKoEmpLyri+YJ2heQvODmU5MzLErk4qQY6ciOCZ/W4eCIT+Lx9RKqIY5hWpx8QHM9LTrD4TBEAHRDSf/KvMUZE88j9XlRHDuu5PXossdnj05PO/7ahbCf1JlNJIrBVi1OdlS5I3SRls8O2dg1J1pjqaMV6Aq/0exsaXwiORsvl7uo4jC4uGlyzMK07zk3ifQkGAF4hxd7NXIZmICHX8iFZzQ5KjjZNBVS76yD7BnDpgbYzj6a2CX+Ekh+YpFa5vZJGtHB6GVbOLsHV550pvyJYs6MStnHEtvk20xwKOs7KVvU1LqvGHaifK52K2dYg= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BY5PR12MB4130.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(366004)(8936002)(508600001)(316002)(2906002)(36756003)(31686004)(186003)(86362001)(4326008)(38100700002)(6506007)(6486002)(83380400001)(66946007)(66476007)(5660300002)(31696002)(2616005)(26005)(53546011)(66556008)(8676002)(6512007)(43740500002)(45980500001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?d1FlcElXQWNEMDBzMnB1OXM0TjdHMEFPVnBPcTdLTXpOUmZmOEhFcnM4Rlh1?= =?utf-8?B?b0V3dGZzR3UydSs0VVNja2xxcFQ3ZmRQWVRiSDJ0UDQycklVUHhYNm54aHNx?= =?utf-8?B?M1JYSTFwcjh2WTd6aGx2UCtmVFpJUzhDeUM3cHJZeXFtOXEvUFVpQi9CYTZj?= =?utf-8?B?VHE3am5MR1JqcEhvcTZSYVdzWlR4NnZyYnFPbWd3Wm1ZZDJQa2J1ajZCVEl2?= =?utf-8?B?TkNuK2JOZ1ArSngwSXYzOUVEcHR3eE5EMzRKdDVJVndHc0VTMEJWRFBHMGlP?= =?utf-8?B?bHVqd0MvTUtTcGEwL1JEWTcveUVJaUt6cGhLWEUxOUtWbG1CSVUyUlpEeUhV?= =?utf-8?B?QXZkMlFiZm9JZWt5bVdjcEZaUGtDQllOeExidjZxN3RuVFlWM0JkRXdvelYx?= =?utf-8?B?VFB1RHVwOUpLT0lNK1RXSytEUXltTVI0bXh3eXRMWE4zclYrRjlXZU5WeFlD?= =?utf-8?B?RVJQSU9leCttRjVHdncwODMvaDR0SUFMbTVPdW00djFMZUZoRTlGRDBZcThJ?= =?utf-8?B?SFpVNkZETnI5RUFtRHQ4YjQ2enczVlNuaUl6VWVkcEMxV25GcFZvcHN4cy9r?= =?utf-8?B?QXNCZnhqc2w2UUd1b2RFKzNZZGVIQ3lKUlhXSkxMUlorNjYzUW5Ja2JmK0xk?= =?utf-8?B?a0FVSG1JWmtmdjdvQXAyMkM4WXhNZ0lCUE9hekdoaUR6ZTdLV3RlT0FPci9N?= =?utf-8?B?UHlhWUw3NmdnVFhRTHBJdlNsN2xPSFpEdkZ3bm05UHkwMG5PRXhJSHZOZGhx?= =?utf-8?B?RlJDZWNaSGttNnViS2l4OWZMcEtnR3ovSkgzSTFSWnJ1Z0t4a2ZQNXh0eU1U?= =?utf-8?B?ZWQxNGt1aWxOOVlyOWsvTGVPblkzSnBIQkdxL2V2Kzd6UDFwQllhMkMwQWhs?= =?utf-8?B?emhkTlBDcnpSOWQxeVJERGJRQWljVW15SHRDNVpGUHc1Ym1UUjZDd0FvM0du?= =?utf-8?B?dHF3NFlyQWVxbURKOGQzeFhHUHU2aUd3OG9WTXFOREJoU0xuVzc5OUgxT24z?= =?utf-8?B?b3cyZUdWZmlBaFF3ZEY1Y2I4bHJqUXl4ZUVEMHlDaWRLZzhNS0hrR1pBZFJC?= =?utf-8?B?aVJhNm1wYnBxZ2pWRmFCd0pKYWhEWnJDN3Evb3Z5QUQwMGlLSjRmdVRobno1?= =?utf-8?B?L2FlcklHT1BOM1FxMzBhYTJVQ3NmeVlBSkQ5UmYyaVpKUFJCQ2ltTEwyQnhx?= =?utf-8?B?WlFrSXQwaUlicUI4STJ6YXlJbndva0EvODVHQitHejI2Ky9jRXFoeFRTL3oz?= =?utf-8?B?SGxxczNsZDNLRTN3bEplYWViTCtwUTVDN3FBQ1VSYVZ6T3ZuWlU1NUs5RUg3?= =?utf-8?B?RjRaR0pDcit1N2pJOERlSDFES3FmZGV5Rk0vMVNkZ2tudFFEWlF0Sk1oWnRw?= =?utf-8?B?RlVyOUN6M3pOb0ZQVi9DMEJhSUN5T3NKOWxVZkJuWU9xOXRYVld6OCtCNk9V?= =?utf-8?B?ejZHbHNHZXZXaVU3bW1zQys4MjNZMEpMbjBLYjFURm1kR0xkUEc0TW1TM1RO?= =?utf-8?B?THVqOXdmR2ZuQlc4RVBEa1Z6UCthYURVMHF3SklkYUdBT2hjeEsrV3dVY0Vu?= =?utf-8?B?SWlUUThIZXo4VmhlTTZaRElsRGdkNjJrOVJXMnlIcFppLytoby9DeXBaMDFs?= =?utf-8?B?blN2cW9tQzA5UG5OU2ZXQWo2WFNhNHdCNEo3T0FjSXdPMWVMbVJYNFpxRnNx?= =?utf-8?B?SGtUSHZwY3JFeURkNU4wK1hOcitjaGlDRjgrSUVISkZCbEJQa3J3WHJqWmRq?= =?utf-8?B?Ryswd1JUcjEvVDgvZ0VIeTZJeklydFF2WnVRVlhaWUlRTnRQTkFJdE1tK1Jt?= =?utf-8?B?bGtnR1JyUUVNQlJVeHBGdUhGa3NDeEljOVVFTEo1c2U2ZE9OYXlLeFZsbnor?= =?utf-8?B?cERKckpPSmVQYlRKVWlBUk8yenUxbDVFV2g1RWdqMkxSV0FtaTJzNUlXTzhs?= =?utf-8?B?TnJwOVFFVmgxQ1BpWktxdDdmWG5QUFBIR0xuL0FOT1FZcnBIWmNCTVZJa2pY?= =?utf-8?B?N0VWbkkwV21XQ0czVCtrVkhvcXY5RGdnbHRocS82TUVTYndnTnpJclE0SnFn?= =?utf-8?B?VVlaZ0Zqb29UWU8yVGRSY0dDZjBPOFlnazhIamJtNG1FdndPVnJGQy94NHJX?= =?utf-8?B?TkJzZGtIV2JqcWNiclBZbXF6bVd2RjBhTVlEYk5OVG0zODJHamM1bFBOZENO?= =?utf-8?Q?TJnCnJepCJU2nx9O+xe3FBc=3D?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: df33a534-d97e-46e7-e182-08d9d019e620 X-MS-Exchange-CrossTenant-AuthSource: BY5PR12MB4130.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jan 2022 07:06:30.4872 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 5VNFbNZJsJFlv6Y7F6m2oVSCUpAO+IhQ4pztl1zAx5RxipbWbejdFM7lwbjfu2SjfYhuo6ylOLzsNb8paCka+w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY5PR12MB4035 X-Rspamd-Queue-Id: D290DC000A X-Stat-Signature: tn7i7p6kc4rke5u3a4fsgqcfmi5u7ggg Authentication-Results: imf10.hostedemail.com; dkim=pass header.d=Nvidia.com header.s=selector2 header.b=NrSA3ZOP; dmarc=pass (policy=reject) header.from=nvidia.com; spf=none (imf10.hostedemail.com: domain of jhubbard@nvidia.com has no SPF policy when checking 40.107.244.49) smtp.mailfrom=jhubbard@nvidia.com X-Rspamd-Server: rspam11 X-HE-Tag: 1641366379-987159 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: On 1/2/22 13:57, Matthew Wilcox (Oracle) wrote: > try_grab_compound_head() is turned into a call to try_grab_folio(). > Convert the two callers who only care about a boolean success/fail. > > Signed-off-by: Matthew Wilcox (Oracle) > --- > include/linux/mm.h | 4 +--- > mm/gup.c | 25 +++++++++++++------------ > mm/hugetlb.c | 7 +++---- > 3 files changed, 17 insertions(+), 19 deletions(-) > Reviewed-by: John Hubbard thanks, -- John Hubbard NVIDIA > diff --git a/include/linux/mm.h b/include/linux/mm.h > index 602de23482ef..4e763a590c9c 100644 > --- a/include/linux/mm.h > +++ b/include/linux/mm.h > @@ -1202,9 +1202,7 @@ static inline void get_page(struct page *page) > } > > bool __must_check try_grab_page(struct page *page, unsigned int flags); > -struct page *try_grab_compound_head(struct page *page, int refs, > - unsigned int flags); > - > +struct folio *try_grab_folio(struct page *page, int refs, unsigned int flags); > > static inline __must_check bool try_get_page(struct page *page) > { > diff --git a/mm/gup.c b/mm/gup.c > index 6d827f7d66d8..2307b2917055 100644 > --- a/mm/gup.c > +++ b/mm/gup.c > @@ -76,12 +76,8 @@ static inline struct folio *try_get_folio(struct page *page, int refs) > } > > /** > - * try_grab_compound_head() - attempt to elevate a page's refcount, by a > + * try_grab_folio() - attempt to elevate a page's refcount, by a > * flags-dependent amount. > - * > - * Even though the name includes "compound_head", this function is still > - * appropriate for callers that have a non-compound @page to get. > - * > * @page: pointer to page to be grabbed > * @refs: the value to (effectively) add to the page's refcount > * @flags: gup flags: these are the FOLL_* flag values. > @@ -102,16 +98,15 @@ static inline struct folio *try_get_folio(struct page *page, int refs) > * FOLL_PIN on normal pages, or compound pages that are two pages long: > * page's refcount will be incremented by @refs * GUP_PIN_COUNTING_BIAS. > * > - * Return: head page (with refcount appropriately incremented) for success, or > + * Return: folio (with refcount appropriately incremented) for success, or > * NULL upon failure. If neither FOLL_GET nor FOLL_PIN was set, that's > * considered failure, and furthermore, a likely bug in the caller, so a warning > * is also emitted. > */ > -struct page *try_grab_compound_head(struct page *page, > - int refs, unsigned int flags) > +struct folio *try_grab_folio(struct page *page, int refs, unsigned int flags) > { > if (flags & FOLL_GET) > - return &try_get_folio(page, refs)->page; > + return try_get_folio(page, refs); > else if (flags & FOLL_PIN) { > struct folio *folio; > > @@ -150,13 +145,19 @@ struct page *try_grab_compound_head(struct page *page, > > node_stat_mod_folio(folio, NR_FOLL_PIN_ACQUIRED, refs); > > - return &folio->page; > + return folio; > } > > WARN_ON_ONCE(1); > return NULL; > } > > +static inline struct page *try_grab_compound_head(struct page *page, > + int refs, unsigned int flags) > +{ > + return &try_grab_folio(page, refs, flags)->page; > +} > + > static void gup_put_folio(struct folio *folio, int refs, unsigned int flags) > { > if (flags & FOLL_PIN) { > @@ -188,7 +189,7 @@ static void put_compound_head(struct page *page, int refs, unsigned int flags) > * @flags: gup flags: these are the FOLL_* flag values. > * > * Either FOLL_PIN or FOLL_GET (or neither) may be set, but not both at the same > - * time. Cases: please see the try_grab_compound_head() documentation, with > + * time. Cases: please see the try_grab_folio() documentation, with > * "refs=1". > * > * Return: true for success, or if no action was required (if neither FOLL_PIN > @@ -200,7 +201,7 @@ bool __must_check try_grab_page(struct page *page, unsigned int flags) > if (!(flags & (FOLL_GET | FOLL_PIN))) > return true; > > - return try_grab_compound_head(page, 1, flags); > + return try_grab_folio(page, 1, flags); > } > > /** > diff --git a/mm/hugetlb.c b/mm/hugetlb.c > index abcd1785c629..ab67b13c4a71 100644 > --- a/mm/hugetlb.c > +++ b/mm/hugetlb.c > @@ -6072,7 +6072,7 @@ long follow_hugetlb_page(struct mm_struct *mm, struct vm_area_struct *vma, > > if (pages) { > /* > - * try_grab_compound_head() should always succeed here, > + * try_grab_folio() should always succeed here, > * because: a) we hold the ptl lock, and b) we've just > * checked that the huge page is present in the page > * tables. If the huge page is present, then the tail > @@ -6081,9 +6081,8 @@ long follow_hugetlb_page(struct mm_struct *mm, struct vm_area_struct *vma, > * any way. So this page must be available at this > * point, unless the page refcount overflowed: > */ > - if (WARN_ON_ONCE(!try_grab_compound_head(pages[i], > - refs, > - flags))) { > + if (WARN_ON_ONCE(!try_grab_folio(pages[i], refs, > + flags))) { > spin_unlock(ptl); > remainder = 0; > err = -ENOMEM;