Message ID | 20240120230824.2619716-5-willy@infradead.org |
---|---|
State | Superseded |
Headers | show |
Series | ubifs folio conversion | expand |
在 2024/1/21 7:08, Matthew Wilcox (Oracle) 写道: > Convert from the old page APIs to the new folio APIs which saves > a few hidden calls to compound_head(). > > Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org> > --- > fs/ubifs/file.c | 24 ++++++++++++------------ > 1 file changed, 12 insertions(+), 12 deletions(-) > Reviewed-by: Zhihao Cheng <chengzhihao1@huawei.com> > diff --git a/fs/ubifs/file.c b/fs/ubifs/file.c > index 7d0967daded3..b297582c9b75 100644 > --- a/fs/ubifs/file.c > +++ b/fs/ubifs/file.c > @@ -1158,11 +1158,11 @@ static int do_truncation(struct ubifs_info *c, struct inode *inode, > > if (offset) { > pgoff_t index = new_size >> PAGE_SHIFT; > - struct page *page; > + struct folio *folio; > > - page = find_lock_page(inode->i_mapping, index); > - if (page) { > - if (PageDirty(page)) { > + folio = filemap_lock_folio(inode->i_mapping, index); > + if (!IS_ERR(folio)) { > + if (folio_test_dirty(folio)) { > /* > * 'ubifs_jnl_truncate()' will try to truncate > * the last data node, but it contains > @@ -1171,14 +1171,14 @@ static int do_truncation(struct ubifs_info *c, struct inode *inode, > * 'ubifs_jnl_truncate()' will see an already > * truncated (and up to date) data node. > */ > - ubifs_assert(c, PagePrivate(page)); > + ubifs_assert(c, folio->private != NULL); > > - clear_page_dirty_for_io(page); > + folio_clear_dirty_for_io(folio); > if (UBIFS_BLOCKS_PER_PAGE_SHIFT) > - offset = new_size & > - (PAGE_SIZE - 1); > - err = do_writepage(page, offset); > - put_page(page); > + offset = offset_in_folio(folio, > + new_size); > + err = do_writepage(&folio->page, offset); > + folio_put(folio); > if (err) > goto out_budg; > /* > @@ -1191,8 +1191,8 @@ static int do_truncation(struct ubifs_info *c, struct inode *inode, > * to 'ubifs_jnl_truncate()' to save it from > * having to read it. > */ > - unlock_page(page); > - put_page(page); > + folio_unlock(folio); > + folio_put(folio); > } > } > } >
diff --git a/fs/ubifs/file.c b/fs/ubifs/file.c index 7d0967daded3..b297582c9b75 100644 --- a/fs/ubifs/file.c +++ b/fs/ubifs/file.c @@ -1158,11 +1158,11 @@ static int do_truncation(struct ubifs_info *c, struct inode *inode, if (offset) { pgoff_t index = new_size >> PAGE_SHIFT; - struct page *page; + struct folio *folio; - page = find_lock_page(inode->i_mapping, index); - if (page) { - if (PageDirty(page)) { + folio = filemap_lock_folio(inode->i_mapping, index); + if (!IS_ERR(folio)) { + if (folio_test_dirty(folio)) { /* * 'ubifs_jnl_truncate()' will try to truncate * the last data node, but it contains @@ -1171,14 +1171,14 @@ static int do_truncation(struct ubifs_info *c, struct inode *inode, * 'ubifs_jnl_truncate()' will see an already * truncated (and up to date) data node. */ - ubifs_assert(c, PagePrivate(page)); + ubifs_assert(c, folio->private != NULL); - clear_page_dirty_for_io(page); + folio_clear_dirty_for_io(folio); if (UBIFS_BLOCKS_PER_PAGE_SHIFT) - offset = new_size & - (PAGE_SIZE - 1); - err = do_writepage(page, offset); - put_page(page); + offset = offset_in_folio(folio, + new_size); + err = do_writepage(&folio->page, offset); + folio_put(folio); if (err) goto out_budg; /* @@ -1191,8 +1191,8 @@ static int do_truncation(struct ubifs_info *c, struct inode *inode, * to 'ubifs_jnl_truncate()' to save it from * having to read it. */ - unlock_page(page); - put_page(page); + folio_unlock(folio); + folio_put(folio); } } }
Convert from the old page APIs to the new folio APIs which saves a few hidden calls to compound_head(). Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org> --- fs/ubifs/file.c | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-)