From patchwork Fri May 3 09:53:48 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Luis Chamberlain X-Patchwork-Id: 13652565 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 6D6BEC10F16 for ; Fri, 3 May 2024 09:54:16 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id EBE626B009D; Fri, 3 May 2024 05:54:06 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id D60046B00A3; Fri, 3 May 2024 05:54:06 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 8CB196B00A4; Fri, 3 May 2024 05:54:06 -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 598EC6B00A1 for ; Fri, 3 May 2024 05:54:06 -0400 (EDT) Received: from smtpin02.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 21D3080D7B for ; Fri, 3 May 2024 09:54:06 +0000 (UTC) X-FDA: 82076623692.02.38918D6 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) by imf01.hostedemail.com (Postfix) with ESMTP id 08A7540003 for ; Fri, 3 May 2024 09:54:02 +0000 (UTC) Authentication-Results: imf01.hostedemail.com; dkim=pass header.d=infradead.org header.s=bombadil.20210309 header.b=zmPDneZ5; spf=none (imf01.hostedemail.com: domain of mcgrof@infradead.org has no SPF policy when checking 198.137.202.133) smtp.mailfrom=mcgrof@infradead.org; dmarc=fail reason="No valid SPF, DKIM not aligned (relaxed)" header.from=kernel.org (policy=none) ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1714730043; h=from:from:sender: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=nRtRAstCK6XovsdzKMdtb1ZkfTlghtD3bCyykPEedow=; b=UxWqFJJOhi/7fcdcD1UgWTu5mmwh+xXXPJiqBdeeeNuc15xSMgje1e8AGdIt02dNHJbaPf BqzGMdxYGiLwIDwXAQWRKJfeyXcrm9qFC1pmtqdMj5+wi3R7j9nZxIBPg6a3rnPAa3rDgw NR/xDhWm+cb4iMHsSemhjFXm9vTo0Sg= ARC-Authentication-Results: i=1; imf01.hostedemail.com; dkim=pass header.d=infradead.org header.s=bombadil.20210309 header.b=zmPDneZ5; spf=none (imf01.hostedemail.com: domain of mcgrof@infradead.org has no SPF policy when checking 198.137.202.133) smtp.mailfrom=mcgrof@infradead.org; dmarc=fail reason="No valid SPF, DKIM not aligned (relaxed)" header.from=kernel.org (policy=none) ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1714730043; a=rsa-sha256; cv=none; b=vuDjxAA5qnaWR2fxlHzmZa46/yilZ11XKZzBYOEhhXyh8gvOYcYDN0iDUKoDAFlGNRFHSk tgsLP6gaqPmgJ3vl/7aiVaFxuilr33eDdxQM3EcysFiB1exoFQXhSRcOg2GZZHpeXNQPLw R2e08rq5FkOFFOeSZgFFU93myw2rcHA= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20210309; h=Sender:Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From: Reply-To:Content-Type:Content-ID:Content-Description; bh=nRtRAstCK6XovsdzKMdtb1ZkfTlghtD3bCyykPEedow=; b=zmPDneZ5u8fBg/U/VAf8Y7kMBk fQGPvx0dr0ft+5FRbv17vC+ZfyDY57TML0UL79hvywkUDniQVm42l2NU77zPURlD7PLhUZwSMII6f oT8WI3l17HyIhiidVzG5MbYxHBIg1IO9TW97dY91khyxpxfGge6PYXZ5wRcmDxNocwnBofxjWGkGJ cdkPPx3tGWUb+f0BP6Zd8Z6UO5C/uidhgWvihvgQiUe+YBsvKchXmMh9IK8782IVekKoLzhla5IJ/ YlGKXVfR7z0SDjI9IJ553dElW0MtF1thN2w8y13fwkPOCvSmXhjcsyZlu++C8Cc78J8JuuOA116uR ODRZgDaA==; Received: from mcgrof by bombadil.infradead.org with local (Exim 4.97.1 #2 (Red Hat Linux)) id 1s2pc3-0000000Fw3k-12zt; Fri, 03 May 2024 09:53:55 +0000 From: Luis Chamberlain To: akpm@linux-foundation.org, willy@infradead.org, djwong@kernel.org, brauner@kernel.org, david@fromorbit.com, chandan.babu@oracle.com Cc: hare@suse.de, ritesh.list@gmail.com, john.g.garry@oracle.com, ziy@nvidia.com, linux-fsdevel@vger.kernel.org, linux-xfs@vger.kernel.org, linux-mm@kvack.org, linux-block@vger.kernel.org, gost.dev@samsung.com, p.raghav@samsung.com, kernel@pankajraghav.com, mcgrof@kernel.org Subject: [PATCH v5 06/11] filemap: cap PTE range to be created to allowed zero fill in folio_map_range() Date: Fri, 3 May 2024 02:53:48 -0700 Message-ID: <20240503095353.3798063-7-mcgrof@kernel.org> X-Mailer: git-send-email 2.44.0 In-Reply-To: <20240503095353.3798063-1-mcgrof@kernel.org> References: <20240503095353.3798063-1-mcgrof@kernel.org> MIME-Version: 1.0 X-Rspam-User: X-Rspamd-Queue-Id: 08A7540003 X-Rspamd-Server: rspam06 X-Stat-Signature: b15egjjq8xf8y9cq3g4ogn7ozes4ypuw X-HE-Tag: 1714730042-710836 X-HE-Meta: U2FsdGVkX18jQv0p7pZTUeAGNb83sCh8W8Xh+8abKpgWbKoLAiC0XIMyPK1QUwYsVxSyOhjWioKGl/LgsHg+qR3WYma6gpMfNZiZxSte+1jKYMLaMoBvJFwghQBUdqQTLbacyUcurMrMe4mdIUR1FxfB2Kbc6oRQ6ATbs0ORFII9Dy0sjIwzot4o6p6IOqCA74xQTiXbQNl7bdVUvnGoI1Seir58jWhJWM8+XL/PiAtImEq4aBhIhMIh5nU5m/4Og61eNTpLWJamI0sRkcuSwCEX2gpeniW4aYrYkXAt7kh/EnzQWOkmyI9NAOJLuWqaDOWOr8/SQi666GQ68YkgnvHrBNHUqkGsiBGjTaW7Cff4DBc0MMR32Ml3lE8RHaLir4j6SArEba9b2Jw9naMitrPauMmNGET1XVvSsi9GsTZP2hATmZ2UnTpjy4Cl+MqpSzyJ/pMVCE6uCr3DpMqTStdlqC/AN1KF+C3gYwBq8S2UdQ/7KghwyDvd0yrYTpFYzlg9WET1fsHzjfTwBdlDOrhjT1RN9vWyqzB/E4z8HddOSQ6kKr1ZYEIsLLekWrrKboQQv0p+mNZKWzFMP/fxccPeradfWCHGa9I+fdPuYYF9CZPWq3rh12sLmfgxRCl0/P5rPLmXeMPNtMm+Q8y3NUpkytHcrokEZhFGErp3MWyHt0GwVUZmU3ofqLZrpHJGCZBA1tWykjAa+RToGF7QOcGl7dctsx5ZZAbl6QZE+1JJUyRGXC/FlZJkrK3YacC4xCgVvlMl7phCGhsnV6idItGLJu+VK05aTDgH2JNspu5xhw6Uj88OUucDIWn5XvDqdpf869u1ZVTeqsAaEyGm7T+cDvKJidsd3EK1iyHo/+tNrrVFZpf47zb4afcdnn+14quuYH/erLLEFraXW5XDJOrIqyli4YCploCKH/eLII98SAGqt6EvRT43lmlh8OtYsUkIwjZn/DoQx4SYzYg /4rp4UuX AROfbYJ9dCN30+DJj7oAbozwjGI1FeROGpcM4aDbku46fU8QPBu6KO8k8sL8+W8LD+Gheju/ijOcfMBDpcBjgKcksqOU/RErfaMYJ6h/Zui2hSFhm3d/D0P0Z7RdKT5y1XqFLELlsY9BVOPTkrtbp3TxY4UOfep9ulwqGuot9idMSraaXwBixmIq0snSiNQ2YWngzh47EPdtCKbyyuSYL242OAja75MmlaPvz2qkvaa1su2mdPSGZKrxOmkTJQYvb7d4igmkNXywg8TXiTWrdO6acMRGewRNS4DiwA4itIofDxygEMywvFdwf3WhTBJA1i2OiXG9BO+++KHTNrWdtGu/eJBcGs78S6WUSfDMitjcKxhdPRlvXOwy1/y1cZ3BcDjgPiMXK5kKyNm2YS69GWxKiVa5kFBEguB7vVGk4SAyENYszETt/u1XCyoKD4k3okX5kc+mPDeJ6XQJntH1F+ID1qcuvDuhCC8S5qXldrHyiPsURqVm+Y914AeBUWwwAV0x2QAWNUIwrecOLUgbM4OVDaybXUzvAyUch 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: From: Pankaj Raghav Usually the page cache does not extend beyond the size of the inode, therefore, no PTEs are created for folios that extend beyond the size. But with LBS support, we might extend page cache beyond the size of the inode as we need to guarantee folios of minimum order. Cap the PTE range to be created for the page cache up to the max allowed zero-fill file end, which is aligned to the PAGE_SIZE. An fstests test has been created to trigger this edge case [0]. [0] https://lore.kernel.org/fstests/20240415081054.1782715-1-mcgrof@kernel.org/ Signed-off-by: Pankaj Raghav Signed-off-by: Luis Chamberlain --- mm/filemap.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/mm/filemap.c b/mm/filemap.c index f0c0cfbbd134..a727d8a4bac0 100644 --- a/mm/filemap.c +++ b/mm/filemap.c @@ -3574,7 +3574,7 @@ vm_fault_t filemap_map_pages(struct vm_fault *vmf, struct vm_area_struct *vma = vmf->vma; struct file *file = vma->vm_file; struct address_space *mapping = file->f_mapping; - pgoff_t last_pgoff = start_pgoff; + pgoff_t file_end, last_pgoff = start_pgoff; unsigned long addr; XA_STATE(xas, &mapping->i_pages, start_pgoff); struct folio *folio; @@ -3598,6 +3598,11 @@ vm_fault_t filemap_map_pages(struct vm_fault *vmf, folio_put(folio); goto out; } + + file_end = DIV_ROUND_UP(i_size_read(mapping->host), PAGE_SIZE) - 1; + if (end_pgoff > file_end) + end_pgoff = file_end; + do { unsigned long end;