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 8B59DC02183 for ; Tue, 14 Jan 2025 21:09:17 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 1284528000C; Tue, 14 Jan 2025 16:09:17 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 0D868280007; Tue, 14 Jan 2025 16:09:17 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id F0A5128000C; Tue, 14 Jan 2025 16:09:16 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id D1390280007 for ; Tue, 14 Jan 2025 16:09:16 -0500 (EST) Received: from smtpin05.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 55D471A0462 for ; Tue, 14 Jan 2025 21:09:16 +0000 (UTC) X-FDA: 83007297912.05.F1051A8 Received: from sxb1plsmtpa01-07.prod.sxb1.secureserver.net (sxb1plsmtpa01-07.prod.sxb1.secureserver.net [188.121.53.73]) by imf18.hostedemail.com (Postfix) with ESMTP id 679501C0009 for ; Tue, 14 Jan 2025 21:09:14 +0000 (UTC) Authentication-Results: imf18.hostedemail.com; dkim=none; dmarc=none; spf=pass (imf18.hostedemail.com: domain of phillip@squashfs.org.uk designates 188.121.53.73 as permitted sender) smtp.mailfrom=phillip@squashfs.org.uk ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1736888954; a=rsa-sha256; cv=none; b=5AK49bPYJMNLvv+PZGYmg6ikKb58Jxxz6bJnsJTL594Scpqno3cM9l9+hbz0d2Dx+hyOcF cCjikTpHK/HrNdsGiX7sa6AVK2Pi/eU9qeDo3YEy1nGtCfQfnwJ4jaED2fZ7jIV+ToK7st Pkut50yWD5rHkyUZQ0uJiPao6QiZCLc= ARC-Authentication-Results: i=1; imf18.hostedemail.com; dkim=none; dmarc=none; spf=pass (imf18.hostedemail.com: domain of phillip@squashfs.org.uk designates 188.121.53.73 as permitted sender) smtp.mailfrom=phillip@squashfs.org.uk ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1736888954; 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=lcBnLQp2OmUCXohLsXqlSZnXEXPjgMxCIw8dn/1ghFA=; b=eqqMOZmdz0FnoephTpGjtjClLLNzC+WLM19VhPnG8JH/aff0sYbHda3CK9VfqDtbLPCDwK 5tlXZX7eS7X+DFNQ3D0820lyaY664O3+C7JVOljBQlM/zVIjvJRGQ/5vQbk9IWxDNk627+ YZhjFv1Olfx605X19Fj8AGtOBu35Owo= Received: from [192.168.178.95] ([82.69.79.175]) by :SMTPAUTH: with ESMTPSA id Xo9qtxqGXOmR4Xo9rteqgO; Tue, 14 Jan 2025 14:09:07 -0700 X-SECURESERVER-ACCT: phillip@squashfs.org.uk Message-ID: <41ed0b22-099a-40dd-b7e7-1e8719241fcc@squashfs.org.uk> Date: Tue, 14 Jan 2025 21:08:41 +0000 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH 5/5] squashfs: Convert squashfs_fill_page() to take a folio To: "Matthew Wilcox (Oracle)" Cc: linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-mm@kvack.org References: <20241216162701.57549-1-willy@infradead.org> <20241216162701.57549-5-willy@infradead.org> Content-Language: en-US From: Phillip Lougher In-Reply-To: <20241216162701.57549-5-willy@infradead.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-CMAE-Envelope: MS4xfCXhunHkNxoWSf35AGq1AS2ZxNymf8dCK3R07SZLZu5nJ3RksmXsoJ7y4Qe8N7NdOtLSSNf75fiveT2/Grvw4TiGMgYrUuXkMPybT+Y/pgWAFcw0fAXo B90QsaVPRVGjqebSFlXyXfphndQ6V4ctkTSj1nGGmCp2oE6BuVkiU4SA/4qaxfT95QIolXgQOpoV3yelLaIBJQbLhvGX04BL48giWtrg1sShrGMwfOoP+kyD HqKvjUYcGSzFxdyeEoUdtXaiQ3mm8T52snXv7rR/88RzGKJ7K9ifqjRLjS+nkzyf/vlQpmRdKMa5PoHSVteBmA== X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: 679501C0009 X-Stat-Signature: 41b5tpfe7bry1trh7ya6c9p79d3x37dx X-Rspam-User: X-CMAE-Analysis: v=2.4 cv=ZKfRm27b c=1 sm=1 tr=0 ts=6786d27a a=ihQzeRfjwRPOfp7uBE/9pQ==:117 a=84ok6UeoqCVsigPHarzEiQ==:17 a=sbqGhzo7vaogXqIfg0wwtJZuoPc=:19 a=IkcTkHD0fZMA:10 a=VdSt8ZQiCzkA:10 a=JfrnYn6hAAAA:8 a=FXvPX3liAAAA:8 a=W2xiLW0GlORWcRYWJokA:9 a=QEXdDO2ut3YA:10 a=1CNFftbPRP8L7MoqJWF3:22 a=UObqyxdv-6Yh2QiB9mM_:22 X-HE-Tag: 1736888954-369603 X-HE-Meta: U2FsdGVkX190n6XhaFBQzLSFekKrs867LiDC19a6ptsf+F38689iJ0gutOYarO4Y685CbuwJuB8gyJc3Ra+I9ItJdqGYcruS/rMnRAebqvo6k6rt9s5JQ6anoQZcmiUDu/jMHOxbAziuOxx0fDCZP6weZINotd+QRsKnbdSgeYLfDw6G6T/0gGDUNep+LlGWTYjJbHLQFe+yKgTLygwX9ueznqJARhOSS93ytryuh4vwE/bw48dWL3IokbuQphOB+Iu7N/TX9J1wpwLC8ul7QD4i140o+CP6PbL7JQv2H6ghAGt+BLF5csW3rNl1yZOPQw1cC831u7jworL86yuYKHXZ9/4+yJybcYOTlL78gVvshf8ujA9MUFkXubqlqQWnzdZTQYWRFr38dfR0dd2isW4fGlgiymmhPvRc9HCVgUsiMuAEmqjmQPeupgSes470kRT0fk0XVTv4gmIeNZqI5LhINhqw1RxEmlP1DdAUiWg5MxSalwd/foVw1Y5P+7iZrojiOj7TrS2KAIa6638HWC1G40IcpJBp3WTlu6ZgzFmnZWhQ6SvUPaEP+4tsyLXcmvVsNEdlzUWVbWNE5qg2Y63o5rOYvv/htZtLtX4PiZsrChhCbztax2XSlrSvcwAfke7ERwBJ9ocX+hzPatTu1HLW9MogNuMSg89UvyRZNpUBnG7RFAvEaBCmV7IClQ2bfU8XDl3as891KjvuU72RwM1fWrYCzQ4hV2hc1YQ9gpzWKX6xOQb+CozKHJP3XbDrPxe71w0kIUq+UpEyNW69mIpluMxjQtVXTPLXNsSoNNl8gunNlDQabqaSuDNi5c3e0CXKLllsoDV0IvVJxPu6IMp/HuNFToZNWieyYc1lKKxHmPDXtp2fMoZT1oErVNReev+twAJysD5agxSuu6muqeINNQr4cLSfK/f9+kD+4d/KUgaTbJ8PTBKhp9zYNRUedTVM8Gv99kOd/bRnIiw VbGm9LEB i9MEHstd3pTqvLs6VB22jixY7y6IKJFvn8Rje7pAmXm+ikyFoqFZ0ORWiW1iHB6VKrn4Rx/jRi/Ns8UqbVx9p84mpwpndFC4eL8zBIIf/AxmZjZ/EaR+PrbmkODTEOF12Jw1O/fRwah3fl/yDQlgNFDiWPRUvFG8/gWLUVhE4SvUhDAV/UlLOmQm0N2XpDRZB7ohh8hK5ewwXZL8uop991Ncze7gfL+6HinAw7rbSe4YkP77kJ2f8qDsFm4qhO7weOvKuXGYKf7CRj62Mm0ZYwl2Aszkv0lY8ZnH1UFAL+sEsCM3lUV7wlo50yGVAHMHRz4RXAgZyot5c94Ba5l9vNAQO8j2G7Y1Mkn3BGFjEXXfK9XoqTxbBD2qkPWGcsfaUSTKj5lzIBkH2nGzXJDAF22GsGxQBY++NINI6Uthsc9rHbpGhTO/ZSdZ8sl2ujn8YiXI1dma8MdQkuGJmDuidyQsi4XGrnmzccvtc9nviPqnjLr9dP3fpakWxcLirPbvN3gRkT83L4srEOKxbC9Ik77g2wfAPe14ikZxy21dPISBJh9fOvB5KSliNziMlaLiBuNsmyCtjrCoNSVxEOK4Qi3YOHFEFdzrvcOv9fBnvTu1xUG4A5zx0CVHuL+5zJJQyuF6aZOsBmBa+ESslveLw3tMGJpMXiglhRDHfdxJpS+n3WKw3+OoADteOJAsNO9IUsKysvDdVerFyDh9+iHcB7P4ND22xpEb3ie0i 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 12/16/24 16:26, Matthew Wilcox (Oracle) wrote: > squashfs_fill_page is only used in this file, so make it static. > Use kmap_local instead of kmap_atomic, and return a bool so that > the caller can use folio_end_read() which saves an atomic operation > over calling folio_mark_uptodate() followed by folio_unlock(). > > Signed-off-by: Matthew Wilcox (Oracle) Reviewed-by: Phillip Lougher Tested-by: Phillip Lougher > --- > fs/squashfs/file.c | 21 ++++++++++++--------- > fs/squashfs/squashfs.h | 1 - > 2 files changed, 12 insertions(+), 10 deletions(-) > > diff --git a/fs/squashfs/file.c b/fs/squashfs/file.c > index 1f27e8161319..d363fb26c2c8 100644 > --- a/fs/squashfs/file.c > +++ b/fs/squashfs/file.c > @@ -362,19 +362,21 @@ static int read_blocklist(struct inode *inode, int index, u64 *block) > return squashfs_block_size(size); > } > > -void squashfs_fill_page(struct page *page, struct squashfs_cache_entry *buffer, int offset, int avail) > +static bool squashfs_fill_page(struct folio *folio, > + struct squashfs_cache_entry *buffer, size_t offset, > + size_t avail) > { > - int copied; > + size_t copied; > void *pageaddr; > > - pageaddr = kmap_atomic(page); > + pageaddr = kmap_local_folio(folio, 0); > copied = squashfs_copy_data(pageaddr, buffer, offset, avail); > memset(pageaddr + copied, 0, PAGE_SIZE - copied); > - kunmap_atomic(pageaddr); > + kunmap_local(pageaddr); > > - flush_dcache_page(page); > - if (copied == avail) > - SetPageUptodate(page); > + flush_dcache_folio(folio); > + > + return copied == avail; > } > > /* Copy data into page cache */ > @@ -398,6 +400,7 @@ void squashfs_copy_cache(struct folio *folio, > bytes -= PAGE_SIZE, offset += PAGE_SIZE) { > struct folio *push_folio; > size_t avail = buffer ? min(bytes, PAGE_SIZE) : 0; > + bool filled = false; > > TRACE("bytes %zu, i %d, available_bytes %zu\n", bytes, i, avail); > > @@ -412,9 +415,9 @@ void squashfs_copy_cache(struct folio *folio, > if (folio_test_uptodate(push_folio)) > goto skip_folio; > > - squashfs_fill_page(&push_folio->page, buffer, offset, avail); > + filled = squashfs_fill_page(push_folio, buffer, offset, avail); > skip_folio: > - folio_unlock(push_folio); > + folio_end_read(folio, filled); > if (i != folio->index) > folio_put(push_folio); > } > diff --git a/fs/squashfs/squashfs.h b/fs/squashfs/squashfs.h > index 9295556ecfd0..37f3518a804a 100644 > --- a/fs/squashfs/squashfs.h > +++ b/fs/squashfs/squashfs.h > @@ -67,7 +67,6 @@ extern __le64 *squashfs_read_fragment_index_table(struct super_block *, > u64, u64, unsigned int); > > /* file.c */ > -void squashfs_fill_page(struct page *, struct squashfs_cache_entry *, int, int); > void squashfs_copy_cache(struct folio *, struct squashfs_cache_entry *, > size_t bytes, size_t offset); >