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 51079C3DA4A for ; Mon, 19 Aug 2024 11:02:53 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id C0A2D6B007B; Mon, 19 Aug 2024 07:02:52 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id BBA3B6B0082; Mon, 19 Aug 2024 07:02:52 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id AA90D6B0083; Mon, 19 Aug 2024 07:02:52 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id 90A436B007B for ; Mon, 19 Aug 2024 07:02:52 -0400 (EDT) Received: from smtpin12.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 448A2A11B5 for ; Mon, 19 Aug 2024 11:02:52 +0000 (UTC) X-FDA: 82468707384.12.BA935B9 Received: from szxga05-in.huawei.com (szxga05-in.huawei.com [45.249.212.191]) by imf06.hostedemail.com (Postfix) with ESMTP id 7B9A5180025 for ; Mon, 19 Aug 2024 11:02:49 +0000 (UTC) Authentication-Results: imf06.hostedemail.com; dkim=none; spf=pass (imf06.hostedemail.com: domain of wangkefeng.wang@huawei.com designates 45.249.212.191 as permitted sender) smtp.mailfrom=wangkefeng.wang@huawei.com; dmarc=pass (policy=quarantine) header.from=huawei.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1724065332; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=jmFJYGvOwDYerHNtYZj1tOwplGmYMjEOWJpqrEoks5E=; b=WXtOnx/Fy/hzJfB1J4ZZd231b+0oUO1hamgSY+t7WOx8qnitDZKTHlJJlaxGhdfZVdRywq EG6kwqbAQJ6OrJyFoTkILomattGHF0E6rTsHH/UTDpa4PMqgBPW7CVu+G4SzTIJMNkHvuc VLP6syBNgXIYKa8xcgRPBastjm0h0fA= ARC-Authentication-Results: i=1; imf06.hostedemail.com; dkim=none; spf=pass (imf06.hostedemail.com: domain of wangkefeng.wang@huawei.com designates 45.249.212.191 as permitted sender) smtp.mailfrom=wangkefeng.wang@huawei.com; dmarc=pass (policy=quarantine) header.from=huawei.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1724065332; a=rsa-sha256; cv=none; b=oBnjzi9h2SpCrCLsAuxTSLUDKKZGI/dN74xd60BKVEWnIBUA/bFds7BO1NFASoaoWtzOr2 2/Qr1VJi43YsQXEiyXimVcw1IYbJaCSm9lmxSGcwb3kb9aBESQMoldpBxLF3FJdTzNIUzW YVhexADIac1cf+BQMrEoSaRUCCKisVw= Received: from mail.maildlp.com (unknown [172.19.163.44]) by szxga05-in.huawei.com (SkyGuard) with ESMTP id 4WnV3V1T7xz1HGnZ; Mon, 19 Aug 2024 18:59:34 +0800 (CST) Received: from dggpemf100008.china.huawei.com (unknown [7.185.36.138]) by mail.maildlp.com (Postfix) with ESMTPS id 183EB1401F2; Mon, 19 Aug 2024 19:02:44 +0800 (CST) Received: from [10.174.177.243] (10.174.177.243) by dggpemf100008.china.huawei.com (7.185.36.138) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.11; Mon, 19 Aug 2024 19:02:43 +0800 Message-ID: <646f8a48-820f-40ae-bf96-7d554bf4493a@huawei.com> Date: Mon, 19 Aug 2024 19:02:43 +0800 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH 1/5] mm: remove find_subpage() Content-Language: en-US To: Andrew Morton CC: Matthew Wilcox , Alexander Viro , David Hildenbrand , Sidhartha Kumar , References: <20240817095122.2460977-1-wangkefeng.wang@huawei.com> <20240817095122.2460977-2-wangkefeng.wang@huawei.com> From: Kefeng Wang In-Reply-To: <20240817095122.2460977-2-wangkefeng.wang@huawei.com> Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: 8bit X-Originating-IP: [10.174.177.243] X-ClientProxiedBy: dggems702-chm.china.huawei.com (10.3.19.179) To dggpemf100008.china.huawei.com (7.185.36.138) X-Rspamd-Server: rspam03 X-Rspam-User: X-Rspamd-Queue-Id: 7B9A5180025 X-Stat-Signature: pa37smwbo1pdiz33oztnphpkmzmog5fd X-HE-Tag: 1724065369-630967 X-HE-Meta: U2FsdGVkX1+v0hWKIoPBAXko9tKge6FmDxQY8RcJHjt9mHs6LjgPbi6RKCjYVNMA65SzphB0JK8KzszhtpNi+pfDeGQK0fKICGL6BzEwZzJkxgAs0GszmC0Y5dMxARbOs/KKFY/ZHHkR7K5263S/WDQNWGCdidrRpFwGYHamWdLEF+U6ddYBnAoxQSPzmfycUVIAAwp/8dYhPa7AJZaWRQioZ0HvuYy5uiD2gdLgVWQjGl8o/X4ErK6mvLubH6hiToolGqgFxjyX6hdWSNtO7xrPRO0YPq9N9aFHIJlPrJWlHo93HD1G+4e4nqSI89u20+uCU/jtSssDK/xB7ddEyLEc/MfYiKoDA8eQXrkaPq51ycieB2ebHPJXrmuBmtasCzjqWCN7WBdOCwkn4/wucWv8QAFAkwY63OW2ecjdpDISB++93jqzAHgcWUwXm0WnbF+QXaa4ANElkxWBTe5bw5cLsGSD80bdwabgSLUqP3QIfxkDv4UFE3v5vcx+9zbISXijxxfaEoXu2et4VyWMNFIndru772AbGq0QR0nnsnVIAD2xofJBAahSkxfQRsGklND9h39pCxRAwvAdDB94ziuKiguM9XGNN3pbYwp4HvKxy5F2xl/Z6FFspdxfn5dQ+rwHQ3AZNVDB4jSk8EFdya1ltZ3pQFfg8eV+LV+RF+We0zrfWZ7aFkgsQWUX9OdM9qaLI5wdsGvPATCYJ7sfARs2WiHJCv0PN/jbZ21nZI0KojaPEshQH0pt5NzldfFTjaBbjBv7zRT9Qv5iXy60ySxrs/ArAg/OFjlTxxNDwigL0lFJC4YzP9MkN2K3H5RILM2wemgzeLKezuA00EyjPmsLmnEgjsKoecvG+wYEs80om5P9+lv+IaoJ3eMKIe0di6IPyyifQbfkhIb/d6LgzhKc6UCeyrFX49MNYulZoyQNcOpIqkqefoybBMMOAfNxQwu2WgQirNK9fG88s3N nMbCi3Y0 janm9NhvZQR4q3Ei7E2QDSPNAGn5zExhOVhS7Iy/eT5aEmmd0lHz0Hs7AHvPOB/baGPfkFteIUAglsrCnju+Jle0lGI0YWbMHyumLlgG20Nt3xioM/reJFBvMOijgbrRvHwx4jvq774l2QQ62PbtACQBZ275YjLPce6P6eP/aUH3qd4r1BGaWbnXeFIE831kt3acRVKVZZDfhvKmwOSFBps4cFsV6pq3YQlV2K1epM7cgOhY= 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: List-Subscribe: List-Unsubscribe: On 2024/8/17 17:51, Kefeng Wang wrote: > After commit a08c7193e4f1 ("mm/filemap: remove hugetlb special casing > in filemap.c"), the find_subpage() should remove hugetlb case as the > folio_file_page(), furthermore, we could convert to use folio_file_page() > to remove find_subpage(). There are some comments from David to the non-public send(forget to cc list), the problem of find_subpage() is not described , so adding some here, see commit a08c7193e4f1, --- a/include/linux/pagemap.h +++ b/include/linux/pagemap.h @@ -789,9 +789,6 @@ static inline pgoff_t folio_next_index(struct folio *folio) */ static inline struct page *folio_file_page(struct folio *folio, pgoff_t index) { - /* HugeTLBfs indexes the page cache in units of hpage_size */ - if (folio_test_hugetlb(folio)) - return &folio->page; return folio_page(folio, index & (folio_nr_pages(folio) - 1)); } It changes the granularity of ->index to the base page size rather than the huge page size, so for hugetlb, the special handling(return head page) is removed from folio_file_page(), so we need remove special hugetlb handling find_subpage() too, maybe this is a bugfix as a separate patch. And after removing hugetlb handling in find_subpage(), there is another issue about "head + (index & (thp_nr_pages(head) - 1))", for hugetlb without sparsemem vmemmap, struct page is not guaranteed to be contiguous beyond a section, so we need to use nth_page(head, (index & (thp_nr_pages(head) - 1)) and in order to reduce code maintain between folio_file_page() and find_subpage(), just use folio_file_page() in find_subpage() to fix above two issue. diff --git a/include/linux/pagemap.h b/include/linux/pagemap.h index d9c7edb6422b..e2553e4ac3ef 100644 --- a/include/linux/pagemap.h +++ b/include/linux/pagemap.h @@ -866,11 +866,9 @@ static inline bool folio_contains(struct folio *folio, pgoff_t index) */ static inline struct page *find_subpage(struct page *head, pgoff_t index) { - /* HugeTLBfs wants the head page regardless */ - if (PageHuge(head)) - return head; + struct folio *folio = (struct folio *)head; - return head + (index & (thp_nr_pages(head) - 1)); + return folio_file_page(folio); } And this will correctly handle head/tail page, correct me if I am wrong. Thanks.