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 B14CAC38141 for ; Sat, 21 Jan 2023 06:58:21 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 4C3066B0078; Sat, 21 Jan 2023 01:58:21 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 473396B007B; Sat, 21 Jan 2023 01:58:21 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 2C67C6B007E; Sat, 21 Jan 2023 01:58:21 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id 1AAA76B0078 for ; Sat, 21 Jan 2023 01:58:21 -0500 (EST) Received: from smtpin06.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 885A9120F3E for ; Sat, 21 Jan 2023 06:58:20 +0000 (UTC) X-FDA: 80377902360.06.F63FE2C Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) by imf19.hostedemail.com (Postfix) with ESMTP id E5BDE1A000C for ; Sat, 21 Jan 2023 06:58:18 +0000 (UTC) Authentication-Results: imf19.hostedemail.com; dkim=pass header.d=infradead.org header.s=bombadil.20210309 header.b=G9w5jE7N; spf=none (imf19.hostedemail.com: domain of BATV+1651c3ebed9361b307e7+7090+infradead.org+hch@bombadil.srs.infradead.org has no SPF policy when checking 198.137.202.133) smtp.mailfrom=BATV+1651c3ebed9361b307e7+7090+infradead.org+hch@bombadil.srs.infradead.org; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1674284299; 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-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=dhtgDUov3OaCzjD6ZOk7Y/bvFnZoNJ17iYtVJ43FaOw=; b=RbQ36tzyQ0dh5KBH9lMChtaNnopO+iujJR0cMFQL/pRoAYOlQng340uMLKaI1q442yExgH AJQM01zfI0dI3DiCmraZi8PmTevDB4ycXaf2XK6phWvKx9HTerEPrnyWqv6RyZn+wkOuOV Cvi8a6/+Gi7mPZkNcGDxjkJ5NgTvcxw= ARC-Authentication-Results: i=1; imf19.hostedemail.com; dkim=pass header.d=infradead.org header.s=bombadil.20210309 header.b=G9w5jE7N; spf=none (imf19.hostedemail.com: domain of BATV+1651c3ebed9361b307e7+7090+infradead.org+hch@bombadil.srs.infradead.org has no SPF policy when checking 198.137.202.133) smtp.mailfrom=BATV+1651c3ebed9361b307e7+7090+infradead.org+hch@bombadil.srs.infradead.org; dmarc=none ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1674284299; a=rsa-sha256; cv=none; b=BxT59B6OFFEM6EwcaHX13jfjDvlh3Gx/GwpzbLjYr+W5C8CkF65QMbQMJArLfMQrCsAGKN mcOeNHmDhDhDs+/6NLzJehEx8LZxmVeTi9EAkRkiv6D8Xq8HD2Glfg+gm69p93e5uhdfVc jB2oQSJ3kOJCYTQPF2Xbttl4CBrW/SY= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20210309; 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=dhtgDUov3OaCzjD6ZOk7Y/bvFnZoNJ17iYtVJ43FaOw=; b=G9w5jE7NAr6MGb6I4pPFsKkkAm hVCeH1b4Wgh3QV9bwBJ8bkT95rJ46kFwdgWOYMTr+kI3hra+yQTnwpWBeCyMGYKam8JO8qWTMNbfe +lMtDZbvsZGFtOmweGumZ4lNQrAnjTiwAv5iagQOpIelFLsbE653QMuO963iXvXWjsa7djg1G7Lna NwBQGQb09jXICVz2SQmpO8/IoE027GRBPFi47VNrzL/u0CpYEfWlHyQHtI4Mhmzl0tdzD/VADXX4W A5WlMHN64X6E85Hc1LBuISuR6TXSib0ti87LzYDn3DbeXlzUVUlxSHuGfrDyaxa1F16tBiEQIms/d flCIkwBA==; Received: from [2001:4bb8:19a:2039:6754:cc81:9ace:36fc] (helo=localhost) by bombadil.infradead.org with esmtpsa (Exim 4.94.2 #2 (Red Hat Linux)) id 1pJ7pK-00DSQK-T2; Sat, 21 Jan 2023 06:58:11 +0000 From: Christoph Hellwig To: Andrew Morton , Matthew Wilcox , Hugh Dickins Cc: linux-afs@lists.infradead.org, linux-btrfs@vger.kernel.org, linux-ext4@vger.kernel.org, cluster-devel@redhat.com, linux-mm@kvack.org, linux-xfs@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-nilfs@vger.kernel.org Subject: [PATCH 5/7] shmem: open code the page cache lookup in shmem_get_folio_gfp Date: Sat, 21 Jan 2023 07:57:53 +0100 Message-Id: <20230121065755.1140136-6-hch@lst.de> X-Mailer: git-send-email 2.39.0 In-Reply-To: <20230121065755.1140136-1-hch@lst.de> References: <20230121065755.1140136-1-hch@lst.de> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org. See http://www.infradead.org/rpr.html X-Rspamd-Queue-Id: E5BDE1A000C X-Stat-Signature: nx9inkg57qqdcunqyah97whi836ehyo1 X-Rspam-User: X-Rspamd-Server: rspam08 X-HE-Tag: 1674284298-291292 X-HE-Meta: U2FsdGVkX1+0VjO5wdwU0WIwGibsxWnTzyebT/ih3w9dkKtMh68V0zhSkcVkXi1M+fnK8N1RG8PlwuAsJvqq1AsgbylTKVRLrQvBmbylqqm4gvCJ8DnRmf4CpW1yc/cdbNBd+P8O6BUMZrZIEwxhDhWL2JW6Wei5lOO5Ha3+LgkwwvO5jpSExSRchpq6jAPnwoAd/+SNncA6M1ey039Y1rvBpkRL+sr8wa5sV4GtmMfvhy750jWl3GQC8AYWgzo3faHtjPidmxL35bufJzIl4tci7UtZkWfbA03DNbxi2++ShcmHhjdSgfUYUJj59DNZQTGr/mjUIEGdQThy0WJ5EOWAOqOit2DElQgAhOacszMPPYTuB2x6+ZxsKKBntCi71G1nJVntmZSrTWWv2A0qPe4SCkT5uUdDiQ4rzkmPjb+PVcswZO0zA+XcNZ67m58BAEXAhUjN0w0jC11ASruyf2jqXEMmVOPCdwzI9t+pTD9yRgEIaI5IEP+Xsu1ZmPH2tYjcJ3KY4iaZ7JkuzuDd3wZyyosmQ9moGhw2MNiTKZ/uec0LabRmqfkLNBrp/IQDEBvL36p1d1VyGcYoUiE/BSBcykCamS4ZV4VkRUrZRhfQiYsBeVSEjlGTaCbwIHDs9Ul2I2CqpBPktxbyzzGcQ9/TqQcCleBC8JDgRLFwXdgQyCbhfRyUYI1faZqTdU1ybzKikCo5YusaZGs5c6SqgsU8ShQg6fUMmm8IOCnfd7k2U+peFCOQODhqd79ibUDggFPylhZH6vKs9+rHRq3J1HmnKIOXJldDdCeqkMowHn/HqfyMsNNWpOwuJzWQGNbI923rS2OPyOQpO7Y2FuOTG79uYuDPu5UEk+3An6iKYCngdk61ebEpm2Slfhj4mEGjBQyqXAl5AiDzLvpxNSyWyCC4+WVpRaZmu3rqr7eJzCaALkIfMqxrO24DceyNtEw9YbwD9vVhkN04VMnRHpu 2FxDbTz9 TH0yVWYIRv6EcAnYDRjh8qnpBV/niOvOm7DkAucBerqRF7Xs2D8xrszCLd3uROiHtZUiAml4MsJjvm/YcdijFkpWA9ARpTodmR6vVob3TyZsjybNN+4TTHzqwxV1PXUN7bdRWl1XHU4c60smBLqOXsHxomALJ+mlUpImx8XC4SNSvLNWgwAUTCg/uA03r97CXkBNIaCtkaoJRc1HoBAKKDAj3+P/NX5znONL6s1ay5iqNt9oh0zSgs2zMsGPSzQduXdJVwCePUpuO/yJDg7OMm7/ukL4nc8A6R02+Cde1mglZue50dFiXQF7mVh5X722WeM8WTCv49YLMD3H+x8QXc9Wx2lT2fvm1yzCLBX/OEOyyZYNSENSdha/C9lqj2lh96o8N/RxMbpV6agMnjJo6A2yShbDNzdV5z1PIiMy00v8w606o/LTI2mblYBxiVXPj3X08x7fMilr6KudaxpMuYctvcd2YJQTd08rh 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: Use the very low level filemap_get_entry helper to look up the entry in the xarray, and then: - don't bother locking the folio if only doing a userfault notification - open code locking the page and checking for truncation in a related code block This will allow to eventually remove the FGP_ENTRY flag. Signed-off-by: Christoph Hellwig --- mm/shmem.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/mm/shmem.c b/mm/shmem.c index a8371ffeeee54a..23d5cf8182cb1f 100644 --- a/mm/shmem.c +++ b/mm/shmem.c @@ -1856,12 +1856,10 @@ static int shmem_get_folio_gfp(struct inode *inode, pgoff_t index, sbinfo = SHMEM_SB(inode->i_sb); charge_mm = vma ? vma->vm_mm : NULL; - folio = __filemap_get_folio(mapping, index, FGP_ENTRY | FGP_LOCK, 0); + folio = filemap_get_entry(mapping, index); if (folio && vma && userfaultfd_minor(vma)) { - if (!xa_is_value(folio)) { - folio_unlock(folio); + if (!xa_is_value(folio)) folio_put(folio); - } *fault_type = handle_userfault(vmf, VM_UFFD_MINOR); return 0; } @@ -1877,6 +1875,14 @@ static int shmem_get_folio_gfp(struct inode *inode, pgoff_t index, } if (folio) { + folio_lock(folio); + + /* Has the page been truncated? */ + if (unlikely(folio->mapping != mapping)) { + folio_unlock(folio); + folio_put(folio); + goto repeat; + } if (sgp == SGP_WRITE) folio_mark_accessed(folio); if (folio_test_uptodate(folio)) -- 2.39.0