mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-09 14:43:16 +00:00
ntfs3: convert ntfs_zero_range() to use a folio
Use the folio API throughout, saving six hidden calls to compound_head(). Link: https://lkml.kernel.org/r/20231016201114.1928083-21-willy@infradead.org Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org> Cc: Andreas Gruenbacher <agruenba@redhat.com> Cc: Pankaj Raghav <p.raghav@samsung.com> Cc: Ryusuke Konishi <konishi.ryusuke@gmail.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
parent
24a7b35285
commit
c3f4200ac6
@ -187,7 +187,7 @@ static int ntfs_zero_range(struct inode *inode, u64 vbo, u64 vbo_to)
|
||||
struct buffer_head *head, *bh;
|
||||
u32 bh_next, bh_off, to;
|
||||
sector_t iblock;
|
||||
struct page *page;
|
||||
struct folio *folio;
|
||||
|
||||
for (; idx < idx_end; idx += 1, from = 0) {
|
||||
page_off = (loff_t)idx << PAGE_SHIFT;
|
||||
@ -195,16 +195,17 @@ static int ntfs_zero_range(struct inode *inode, u64 vbo, u64 vbo_to)
|
||||
PAGE_SIZE;
|
||||
iblock = page_off >> inode->i_blkbits;
|
||||
|
||||
page = find_or_create_page(mapping, idx,
|
||||
mapping_gfp_constraint(mapping,
|
||||
~__GFP_FS));
|
||||
if (!page)
|
||||
return -ENOMEM;
|
||||
folio = __filemap_get_folio(mapping, idx,
|
||||
FGP_LOCK | FGP_ACCESSED | FGP_CREAT,
|
||||
mapping_gfp_constraint(mapping, ~__GFP_FS));
|
||||
if (IS_ERR(folio))
|
||||
return PTR_ERR(folio);
|
||||
|
||||
if (!page_has_buffers(page))
|
||||
create_empty_buffers(page, blocksize, 0);
|
||||
head = folio_buffers(folio);
|
||||
if (!head)
|
||||
head = folio_create_empty_buffers(folio, blocksize, 0);
|
||||
|
||||
bh = head = page_buffers(page);
|
||||
bh = head;
|
||||
bh_off = 0;
|
||||
do {
|
||||
bh_next = bh_off + blocksize;
|
||||
@ -220,14 +221,14 @@ static int ntfs_zero_range(struct inode *inode, u64 vbo, u64 vbo_to)
|
||||
}
|
||||
|
||||
/* Ok, it's mapped. Make sure it's up-to-date. */
|
||||
if (PageUptodate(page))
|
||||
if (folio_test_uptodate(folio))
|
||||
set_buffer_uptodate(bh);
|
||||
|
||||
if (!buffer_uptodate(bh)) {
|
||||
err = bh_read(bh, 0);
|
||||
if (err < 0) {
|
||||
unlock_page(page);
|
||||
put_page(page);
|
||||
folio_unlock(folio);
|
||||
folio_put(folio);
|
||||
goto out;
|
||||
}
|
||||
}
|
||||
@ -237,10 +238,10 @@ static int ntfs_zero_range(struct inode *inode, u64 vbo, u64 vbo_to)
|
||||
} while (bh_off = bh_next, iblock += 1,
|
||||
head != (bh = bh->b_this_page));
|
||||
|
||||
zero_user_segment(page, from, to);
|
||||
folio_zero_segment(folio, from, to);
|
||||
|
||||
unlock_page(page);
|
||||
put_page(page);
|
||||
folio_unlock(folio);
|
||||
folio_put(folio);
|
||||
cond_resched();
|
||||
}
|
||||
out:
|
||||
|
Loading…
x
Reference in New Issue
Block a user