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 309F8C3DA4A for ; Wed, 14 May 2025 17:06:20 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 934E16B01A1; Wed, 14 May 2025 13:06:17 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 8E4746B01A3; Wed, 14 May 2025 13:06:17 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 787386B01A4; Wed, 14 May 2025 13:06:17 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 571686B01A1 for ; Wed, 14 May 2025 13:06:17 -0400 (EDT) Received: from smtpin24.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id BE5331C8341 for ; Wed, 14 May 2025 17:06:18 +0000 (UTC) X-FDA: 83442141636.24.F605E9B Received: from casper.infradead.org (casper.infradead.org [90.155.50.34]) by imf09.hostedemail.com (Postfix) with ESMTP id 1AB19140019 for ; Wed, 14 May 2025 17:06:16 +0000 (UTC) Authentication-Results: imf09.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=mBKt8ER4; dmarc=none; spf=none (imf09.hostedemail.com: domain of willy@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=willy@infradead.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1747242377; a=rsa-sha256; cv=none; b=IvIKEUXeYBfdsr++vvzsUqiFVh52sOgpqJ++3ABT2OB5g2PDPN4w9A513C8/dhMdmKo+MR ASSkPwdNyhEza6noz5Sb7TPndVctF5td/A9yOkDCF64l57759UO42Ox7pii/qvw9LXKsbq gcx/9HRYjNtBjPnKH+Q2MbmbuvBfPxg= ARC-Authentication-Results: i=1; imf09.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=mBKt8ER4; dmarc=none; spf=none (imf09.hostedemail.com: domain of willy@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=willy@infradead.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1747242377; 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=0ObYEzeGaSZX4ivCXibNuorLDdF24fdziBtN69sHkFw=; b=1d/FmG/RC7pn+d/KGx1IfqVRaELn5CwMPSa+N/ClsTf0IY2kSxr/kSMU0e1O4IOA7g5bAg +1lE0VNqhq5p/90AaVAA5VhQ/l8wCkfR7dAzaAqhfxYpDw85p2HFGRHSlNWb0XxCNvpAIj CQYysjQr3cTcPcOoIgmgHRi6jZQpINY= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; 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=0ObYEzeGaSZX4ivCXibNuorLDdF24fdziBtN69sHkFw=; b=mBKt8ER4Ztw4U6DWrV3z0UZ8aF ugEbly/LvVcAn2zZJ0M9NuBNzOO42aVchXrLt+0ojuOA7Z08d3KijzC4WVgRUJPdc3VPX1QerQdVm BgGtE+VKa29iil9xL1lM4aXF1GNfFAZZDApIeUfqNf2FMBbpK3gvwYY9+YWuWzztJzj09G5AaYnWG gXstThby14wNQOCP+0PBjs6B2qavaQgJi8MLEvWGXrf4HxAtGGmQVAn0pr5tv6lc/ltCUIHNJJQi6 C5owuwbXzfnnQ2mq/EmEVSd/0bSPlHiXzsYeY922xT9rARGQX04mZZFge8N9bJYpdBzkMHf6lx1nG geeGXCDg==; Received: from willy by casper.infradead.org with local (Exim 4.98.2 #2 (Red Hat Linux)) id 1uFFYW-0000000CahT-31eh; Wed, 14 May 2025 17:06:08 +0000 From: "Matthew Wilcox (Oracle)" To: Andrew Morton Cc: "Matthew Wilcox (Oracle)" , ntfs3@lists.linux.dev, linux-mm@kvack.org, Alexander Viro , linux-fsdevel@vger.kernel.org, Hugh Dickins Subject: [PATCH 2/3] ntfs3: Use folios more in ntfs_compress_write() Date: Wed, 14 May 2025 18:06:03 +0100 Message-ID: <20250514170607.3000994-3-willy@infradead.org> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250514170607.3000994-1-willy@infradead.org> References: <20250514170607.3000994-1-willy@infradead.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Stat-Signature: 7yuftwrr9mofzpoki5haw3guypuxhjqu X-Rspam-User: X-Rspamd-Queue-Id: 1AB19140019 X-Rspamd-Server: rspam06 X-HE-Tag: 1747242376-669172 X-HE-Meta: U2FsdGVkX1/D/GLdYHjqdXM9J23QkHlnv5NZjk+cwMF31uzq6anTITU6Xqv9tYLUCtrNXXZZQPD12TpLN39uPcW3sYS/PBTUnziB6WmU2pUtbLxQTeHe7sp16ZhieTEMSRHLf5/IlGzLiiRBdnAdRErPif/TqA8R1jtmg2z7I2BT7rWZo9e3qYzUhfJvDSS0wRNTZGitoZd42Muh0i7LYNuHDfI0mXY3X88MRJwKoTbMHpmEMEQgx0ivu8lSHLTJCpjwlwnbNa6lVzC2EPgi2L59h2mz9BYaEO00NIpvcwJI11yEWEXy2KrPiBTlkbfs6MCPa7RLXYrSyP/ONB+3WRUvLNXJhiKWYwrPHVCoxmY1OrZ+DzpRcABqWktK06qn1s7NmXZXBIK0hvY/Mk4xmDtkg7NLo0D4LTpCZnMZDfPp6fT5+GUVcVuRZcx1MwjwlpA+kVpVFXZhfuPicZxbnmRxsSZ57bXiWKVrnmNLOTFzUuDpHkHHH2O+IqCBHDGe/j3cPwxGt6qo/xYzOeo++RWd+rO1XbIYN2sjoWQEp/EGR5TnP+l5B60A7RxtGaLx/GUMaWHodQXQX4SkRGWzjDFZW8hUIscZshsa28IzMtE25107Vd7kXrumLa+bVyg2F9tuheLmKJ5g0iLTVjEWLukBILYxG2ikF81PDlHpxVT3FjEY8975MR40IfigMnXzQrmOvGx3y8cloXeHG+C7RvkrrQsXdYaOLeiOgTfdyT0gN4DRNMj+UDp+DBcI7Cv6t+dotBGOy0txXpwVkFVdkjeHFrgQp2LR4j9GoFLakTF9KiusUONkXF/ubCaOwlXWXchjOsNebPYIfLs9h6plLPhksiCWn8hLvSCnBsXryehHDsq7gs/h7HrxGw/bUdJk3YV7dQQPmbiQHJGGCM9uQ+xmofrNltY/+IKKmampRiTo8+mg7Z2Z3nIj7QCrsTLEW1vdyUHoiGa6xbYczLO ZC2szxPP vwJeMD1GB17SXvdIocCfMp0M5hhfaV6sc+xqdf39pK4MbMghPBBGX4tQYd1uoWcPSL1Jy/zfLrKw6LGwCfbkuX/DTv30iFgDpSLx88mPiUWVWYxn+QQuR4Vcx/askJX8Au16bPf+c0+8IPVkBpqhVJWKA/KyK7Trxvho97R/ithoUGeGwXlEy3T7+CuSmpwiA4O+I71He4Ntai7FMt8INXA0N6nUljErPhTOuPF/EtIbUstWVbXHeXdQRYmHulKsKPBvO7PSHrydNwOBjyUKGffgVuiqNkNAXlVzu 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: Remove the local 'page' variable and do everything in terms of folios. Removes the last user of copy_page_from_iter_atomic() and a hidden call to compound_head() in ClearPageDirty(). Signed-off-by: Matthew Wilcox (Oracle) --- fs/ntfs3/file.c | 31 +++++++++++++------------------ 1 file changed, 13 insertions(+), 18 deletions(-) diff --git a/fs/ntfs3/file.c b/fs/ntfs3/file.c index 9b6a3f8d2e7c..bc6062e0668e 100644 --- a/fs/ntfs3/file.c +++ b/fs/ntfs3/file.c @@ -998,7 +998,8 @@ static ssize_t ntfs_compress_write(struct kiocb *iocb, struct iov_iter *from) struct ntfs_inode *ni = ntfs_i(inode); u64 valid = ni->i_valid; struct ntfs_sb_info *sbi = ni->mi.sbi; - struct page *page, **pages = NULL; + struct page **pages = NULL; + struct folio *folio; size_t written = 0; u8 frame_bits = NTFS_LZNT_CUNIT + sbi->cluster_bits; u32 frame_size = 1u << frame_bits; @@ -1008,7 +1009,6 @@ static ssize_t ntfs_compress_write(struct kiocb *iocb, struct iov_iter *from) u64 frame_vbo; pgoff_t index; bool frame_uptodate; - struct folio *folio; if (frame_size < PAGE_SIZE) { /* @@ -1062,8 +1062,7 @@ static ssize_t ntfs_compress_write(struct kiocb *iocb, struct iov_iter *from) pages_per_frame); if (err) { for (ip = 0; ip < pages_per_frame; ip++) { - page = pages[ip]; - folio = page_folio(page); + folio = page_folio(pages[ip]); folio_unlock(folio); folio_put(folio); } @@ -1074,10 +1073,9 @@ static ssize_t ntfs_compress_write(struct kiocb *iocb, struct iov_iter *from) ip = off >> PAGE_SHIFT; off = offset_in_page(valid); for (; ip < pages_per_frame; ip++, off = 0) { - page = pages[ip]; - folio = page_folio(page); - zero_user_segment(page, off, PAGE_SIZE); - flush_dcache_page(page); + folio = page_folio(pages[ip]); + folio_zero_segment(folio, off, PAGE_SIZE); + flush_dcache_folio(folio); folio_mark_uptodate(folio); } @@ -1086,8 +1084,7 @@ static ssize_t ntfs_compress_write(struct kiocb *iocb, struct iov_iter *from) ni_unlock(ni); for (ip = 0; ip < pages_per_frame; ip++) { - page = pages[ip]; - folio = page_folio(page); + folio = page_folio(pages[ip]); folio_mark_uptodate(folio); folio_unlock(folio); folio_put(folio); @@ -1131,8 +1128,7 @@ static ssize_t ntfs_compress_write(struct kiocb *iocb, struct iov_iter *from) if (err) { for (ip = 0; ip < pages_per_frame; ip++) { - page = pages[ip]; - folio = page_folio(page); + folio = page_folio(pages[ip]); folio_unlock(folio); folio_put(folio); } @@ -1150,10 +1146,10 @@ static ssize_t ntfs_compress_write(struct kiocb *iocb, struct iov_iter *from) for (;;) { size_t cp, tail = PAGE_SIZE - off; - page = pages[ip]; - cp = copy_page_from_iter_atomic(page, off, + folio = page_folio(pages[ip]); + cp = copy_folio_from_iter_atomic(folio, off, min(tail, bytes), from); - flush_dcache_page(page); + flush_dcache_folio(folio); copied += cp; bytes -= cp; @@ -1173,9 +1169,8 @@ static ssize_t ntfs_compress_write(struct kiocb *iocb, struct iov_iter *from) ni_unlock(ni); for (ip = 0; ip < pages_per_frame; ip++) { - page = pages[ip]; - ClearPageDirty(page); - folio = page_folio(page); + folio = page_folio(pages[ip]); + folio_clear_dirty(folio); folio_mark_uptodate(folio); folio_unlock(folio); folio_put(folio); -- 2.47.2