]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
ntfs3: use folios more in ntfs_compress_write()
authorMatthew Wilcox (Oracle) <willy@infradead.org>
Wed, 14 May 2025 17:06:03 +0000 (18:06 +0100)
committerAndrew Morton <akpm@linux-foundation.org>
Sun, 1 Jun 2025 05:46:07 +0000 (22:46 -0700)
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().

Link: https://lkml.kernel.org/r/20250514170607.3000994-3-willy@infradead.org
Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
Cc: Konstantin Komarov <almaz.alexandrovich@paragon-software.com>
Cc: Alexander Viro <viro@zeniv.linux.org.uk>
Cc: Hugh Dickins <hughd@google.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
fs/ntfs3/file.c

index 9b6a3f8d2e7c5c4c40da52250404d28518a749f9..bc6062e0668e3ee0b767bd8310985cdee297ad0b 100644 (file)
@@ -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);