Message ID | 20241205171653.3179945-3-willy@infradead.org (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | Convert ocfs2 to use folios | expand |
On 2024/12/6 01:16, Matthew Wilcox (Oracle) wrote: > Pass the folio into __ocfs2_page_mkwrite() and use it throughout. > Does not attempt to support large folios. > > Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org> Looks good. Reviewed-by: Joseph Qi <joseph.qi@linux.alibaba.com> > --- > fs/ocfs2/mmap.c | 18 +++++++++--------- > 1 file changed, 9 insertions(+), 9 deletions(-) > > diff --git a/fs/ocfs2/mmap.c b/fs/ocfs2/mmap.c > index 6ef4cb045ccd..93b886f16c40 100644 > --- a/fs/ocfs2/mmap.c > +++ b/fs/ocfs2/mmap.c > @@ -44,13 +44,13 @@ static vm_fault_t ocfs2_fault(struct vm_fault *vmf) > } > > static vm_fault_t __ocfs2_page_mkwrite(struct file *file, > - struct buffer_head *di_bh, struct page *page) > + struct buffer_head *di_bh, struct folio *folio) > { > int err; > vm_fault_t ret = VM_FAULT_NOPAGE; > struct inode *inode = file_inode(file); > struct address_space *mapping = inode->i_mapping; > - loff_t pos = page_offset(page); > + loff_t pos = folio_pos(folio); > unsigned int len = PAGE_SIZE; > pgoff_t last_index; > struct folio *locked_folio = NULL; > @@ -72,9 +72,9 @@ static vm_fault_t __ocfs2_page_mkwrite(struct file *file, > * > * Let VM retry with these cases. > */ > - if ((page->mapping != inode->i_mapping) || > - (!PageUptodate(page)) || > - (page_offset(page) >= size)) > + if ((folio->mapping != inode->i_mapping) || > + !folio_test_uptodate(folio) || > + (pos >= size)) > goto out; > > /* > @@ -87,11 +87,11 @@ static vm_fault_t __ocfs2_page_mkwrite(struct file *file, > * worry about ocfs2_write_begin() skipping some buffer reads > * because the "write" would invalidate their data. > */ > - if (page->index == last_index) > + if (folio->index == last_index) > len = ((size - 1) & ~PAGE_MASK) + 1; > > err = ocfs2_write_begin_nolock(mapping, pos, len, OCFS2_WRITE_MMAP, > - &locked_folio, &fsdata, di_bh, page); > + &locked_folio, &fsdata, di_bh, &folio->page); > if (err) { > if (err != -ENOSPC) > mlog_errno(err); > @@ -112,7 +112,7 @@ static vm_fault_t __ocfs2_page_mkwrite(struct file *file, > > static vm_fault_t ocfs2_page_mkwrite(struct vm_fault *vmf) > { > - struct page *page = vmf->page; > + struct folio *folio = page_folio(vmf->page); > struct inode *inode = file_inode(vmf->vma->vm_file); > struct buffer_head *di_bh = NULL; > sigset_t oldset; > @@ -141,7 +141,7 @@ static vm_fault_t ocfs2_page_mkwrite(struct vm_fault *vmf) > */ > down_write(&OCFS2_I(inode)->ip_alloc_sem); > > - ret = __ocfs2_page_mkwrite(vmf->vma->vm_file, di_bh, page); > + ret = __ocfs2_page_mkwrite(vmf->vma->vm_file, di_bh, folio); > > up_write(&OCFS2_I(inode)->ip_alloc_sem); >
diff --git a/fs/ocfs2/mmap.c b/fs/ocfs2/mmap.c index 6ef4cb045ccd..93b886f16c40 100644 --- a/fs/ocfs2/mmap.c +++ b/fs/ocfs2/mmap.c @@ -44,13 +44,13 @@ static vm_fault_t ocfs2_fault(struct vm_fault *vmf) } static vm_fault_t __ocfs2_page_mkwrite(struct file *file, - struct buffer_head *di_bh, struct page *page) + struct buffer_head *di_bh, struct folio *folio) { int err; vm_fault_t ret = VM_FAULT_NOPAGE; struct inode *inode = file_inode(file); struct address_space *mapping = inode->i_mapping; - loff_t pos = page_offset(page); + loff_t pos = folio_pos(folio); unsigned int len = PAGE_SIZE; pgoff_t last_index; struct folio *locked_folio = NULL; @@ -72,9 +72,9 @@ static vm_fault_t __ocfs2_page_mkwrite(struct file *file, * * Let VM retry with these cases. */ - if ((page->mapping != inode->i_mapping) || - (!PageUptodate(page)) || - (page_offset(page) >= size)) + if ((folio->mapping != inode->i_mapping) || + !folio_test_uptodate(folio) || + (pos >= size)) goto out; /* @@ -87,11 +87,11 @@ static vm_fault_t __ocfs2_page_mkwrite(struct file *file, * worry about ocfs2_write_begin() skipping some buffer reads * because the "write" would invalidate their data. */ - if (page->index == last_index) + if (folio->index == last_index) len = ((size - 1) & ~PAGE_MASK) + 1; err = ocfs2_write_begin_nolock(mapping, pos, len, OCFS2_WRITE_MMAP, - &locked_folio, &fsdata, di_bh, page); + &locked_folio, &fsdata, di_bh, &folio->page); if (err) { if (err != -ENOSPC) mlog_errno(err); @@ -112,7 +112,7 @@ static vm_fault_t __ocfs2_page_mkwrite(struct file *file, static vm_fault_t ocfs2_page_mkwrite(struct vm_fault *vmf) { - struct page *page = vmf->page; + struct folio *folio = page_folio(vmf->page); struct inode *inode = file_inode(vmf->vma->vm_file); struct buffer_head *di_bh = NULL; sigset_t oldset; @@ -141,7 +141,7 @@ static vm_fault_t ocfs2_page_mkwrite(struct vm_fault *vmf) */ down_write(&OCFS2_I(inode)->ip_alloc_sem); - ret = __ocfs2_page_mkwrite(vmf->vma->vm_file, di_bh, page); + ret = __ocfs2_page_mkwrite(vmf->vma->vm_file, di_bh, folio); up_write(&OCFS2_I(inode)->ip_alloc_sem);
Pass the folio into __ocfs2_page_mkwrite() and use it throughout. Does not attempt to support large folios. Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org> --- fs/ocfs2/mmap.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-)