mirror of
https://github.com/torvalds/linux.git
synced 2026-05-26 16:12:59 +02:00
fuse: convert fuse_fill_write_pages to use folios
Convert this to grab the folio directly, and update all the helpers to use the folio related functions. Reviewed-by: Joanne Koong <joannelkoong@gmail.com> Signed-off-by: Josef Bacik <josef@toxicpanda.com> Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
This commit is contained in:
parent
785d06afc8
commit
9bafbe7ae0
|
|
@ -1213,7 +1213,7 @@ static ssize_t fuse_fill_write_pages(struct fuse_io_args *ia,
|
|||
|
||||
do {
|
||||
size_t tmp;
|
||||
struct page *page;
|
||||
struct folio *folio;
|
||||
pgoff_t index = pos >> PAGE_SHIFT;
|
||||
size_t bytes = min_t(size_t, PAGE_SIZE - offset,
|
||||
iov_iter_count(ii));
|
||||
|
|
@ -1225,25 +1225,27 @@ static ssize_t fuse_fill_write_pages(struct fuse_io_args *ia,
|
|||
if (fault_in_iov_iter_readable(ii, bytes))
|
||||
break;
|
||||
|
||||
err = -ENOMEM;
|
||||
page = grab_cache_page_write_begin(mapping, index);
|
||||
if (!page)
|
||||
folio = __filemap_get_folio(mapping, index, FGP_WRITEBEGIN,
|
||||
mapping_gfp_mask(mapping));
|
||||
if (IS_ERR(folio)) {
|
||||
err = PTR_ERR(folio);
|
||||
break;
|
||||
}
|
||||
|
||||
if (mapping_writably_mapped(mapping))
|
||||
flush_dcache_page(page);
|
||||
flush_dcache_folio(folio);
|
||||
|
||||
tmp = copy_page_from_iter_atomic(page, offset, bytes, ii);
|
||||
flush_dcache_page(page);
|
||||
tmp = copy_folio_from_iter_atomic(folio, offset, bytes, ii);
|
||||
flush_dcache_folio(folio);
|
||||
|
||||
if (!tmp) {
|
||||
unlock_page(page);
|
||||
put_page(page);
|
||||
folio_unlock(folio);
|
||||
folio_put(folio);
|
||||
goto again;
|
||||
}
|
||||
|
||||
err = 0;
|
||||
ap->pages[ap->num_pages] = page;
|
||||
ap->pages[ap->num_pages] = &folio->page;
|
||||
ap->descs[ap->num_pages].length = tmp;
|
||||
ap->num_pages++;
|
||||
|
||||
|
|
@ -1255,10 +1257,10 @@ static ssize_t fuse_fill_write_pages(struct fuse_io_args *ia,
|
|||
|
||||
/* If we copied full page, mark it uptodate */
|
||||
if (tmp == PAGE_SIZE)
|
||||
SetPageUptodate(page);
|
||||
folio_mark_uptodate(folio);
|
||||
|
||||
if (PageUptodate(page)) {
|
||||
unlock_page(page);
|
||||
if (folio_test_uptodate(folio)) {
|
||||
folio_unlock(folio);
|
||||
} else {
|
||||
ia->write.page_locked = true;
|
||||
break;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user