Skip to content

Commit 4d89b67

Browse files
Matthew Wilcox (Oracle)aalexandrovich
authored andcommitted
ntfs3: Convert ni_readpage_cmpr() to take a folio
We still use an array of pages for the decompression, but this removes a few calls to compound_head(). Signed-off-by: Matthew Wilcox (Oracle) <[email protected]> Signed-off-by: Konstantin Komarov <[email protected]>
1 parent 584f60b commit 4d89b67

File tree

3 files changed

+9
-8
lines changed

3 files changed

+9
-8
lines changed

fs/ntfs3/frecord.c

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2087,12 +2087,12 @@ int ni_fiemap(struct ntfs_inode *ni, struct fiemap_extent_info *fieinfo,
20872087
* When decompressing, we typically obtain more than one page per reference.
20882088
* We inject the additional pages into the page cache.
20892089
*/
2090-
int ni_readpage_cmpr(struct ntfs_inode *ni, struct page *page)
2090+
int ni_readpage_cmpr(struct ntfs_inode *ni, struct folio *folio)
20912091
{
20922092
int err;
20932093
struct ntfs_sb_info *sbi = ni->mi.sbi;
2094-
struct address_space *mapping = page->mapping;
2095-
pgoff_t index = page->index;
2094+
struct address_space *mapping = folio->mapping;
2095+
pgoff_t index = folio->index;
20962096
u64 frame_vbo, vbo = (u64)index << PAGE_SHIFT;
20972097
struct page **pages = NULL; /* Array of at most 16 pages. stack? */
20982098
u8 frame_bits;
@@ -2102,7 +2102,8 @@ int ni_readpage_cmpr(struct ntfs_inode *ni, struct page *page)
21022102
struct page *pg;
21032103

21042104
if (vbo >= i_size_read(&ni->vfs_inode)) {
2105-
SetPageUptodate(page);
2105+
folio_zero_range(folio, 0, folio_size(folio));
2106+
folio_mark_uptodate(folio);
21062107
err = 0;
21072108
goto out;
21082109
}
@@ -2126,7 +2127,7 @@ int ni_readpage_cmpr(struct ntfs_inode *ni, struct page *page)
21262127
goto out;
21272128
}
21282129

2129-
pages[idx] = page;
2130+
pages[idx] = &folio->page;
21302131
index = frame_vbo >> PAGE_SHIFT;
21312132
gfp_mask = mapping_gfp_mask(mapping);
21322133

@@ -2156,7 +2157,7 @@ int ni_readpage_cmpr(struct ntfs_inode *ni, struct page *page)
21562157
out:
21572158
/* At this point, err contains 0 or -EIO depending on the "critical" page. */
21582159
kfree(pages);
2159-
unlock_page(page);
2160+
folio_unlock(folio);
21602161

21612162
return err;
21622163
}

fs/ntfs3/inode.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -727,7 +727,7 @@ static int ntfs_read_folio(struct file *file, struct folio *folio)
727727

728728
if (is_compressed(ni)) {
729729
ni_lock(ni);
730-
err = ni_readpage_cmpr(ni, &folio->page);
730+
err = ni_readpage_cmpr(ni, folio);
731731
ni_unlock(ni);
732732
return err;
733733
}

fs/ntfs3/ntfs_fs.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -564,7 +564,7 @@ int ni_write_inode(struct inode *inode, int sync, const char *hint);
564564
#define _ni_write_inode(i, w) ni_write_inode(i, w, __func__)
565565
int ni_fiemap(struct ntfs_inode *ni, struct fiemap_extent_info *fieinfo,
566566
__u64 vbo, __u64 len);
567-
int ni_readpage_cmpr(struct ntfs_inode *ni, struct page *page);
567+
int ni_readpage_cmpr(struct ntfs_inode *ni, struct folio *folio);
568568
int ni_decompress_file(struct ntfs_inode *ni);
569569
int ni_read_frame(struct ntfs_inode *ni, u64 frame_vbo, struct page **pages,
570570
u32 pages_per_frame);

0 commit comments

Comments
 (0)