mirror of
https://github.com/torvalds/linux.git
synced 2026-05-25 07:33:19 +02:00
ntfs3: use folios more in ntfs_compress_write()
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>
This commit is contained in:
parent
acc53a0b4c
commit
80ae99c572
|
|
@ -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);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user