mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2025-01-06 05:02:31 +00:00
hostfs: Convert hostfs_write_end() to use a folio
Convert the passed page to a folio and operate on that. Replaces four calls to compound_head() with one. Reviewed-by: Josef Bacik <josef@toxicpanda.com> Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org> Signed-off-by: Christian Brauner <brauner@kernel.org>
This commit is contained in:
parent
a060d835cf
commit
02d8a3227f
@ -479,17 +479,18 @@ static int hostfs_write_end(struct file *file, struct address_space *mapping,
|
||||
loff_t pos, unsigned len, unsigned copied,
|
||||
struct page *page, void *fsdata)
|
||||
{
|
||||
struct folio *folio = page_folio(page);
|
||||
struct inode *inode = mapping->host;
|
||||
void *buffer;
|
||||
unsigned from = pos & (PAGE_SIZE - 1);
|
||||
size_t from = offset_in_folio(folio, pos);
|
||||
int err;
|
||||
|
||||
buffer = kmap_local_page(page);
|
||||
err = write_file(FILE_HOSTFS_I(file)->fd, &pos, buffer + from, copied);
|
||||
buffer = kmap_local_folio(folio, from);
|
||||
err = write_file(FILE_HOSTFS_I(file)->fd, &pos, buffer, copied);
|
||||
kunmap_local(buffer);
|
||||
|
||||
if (!PageUptodate(page) && err == PAGE_SIZE)
|
||||
SetPageUptodate(page);
|
||||
if (!folio_test_uptodate(folio) && err == folio_size(folio))
|
||||
folio_mark_uptodate(folio);
|
||||
|
||||
/*
|
||||
* If err > 0, write_file has added err to pos, so we are comparing
|
||||
@ -497,8 +498,8 @@ static int hostfs_write_end(struct file *file, struct address_space *mapping,
|
||||
*/
|
||||
if (err > 0 && (pos > inode->i_size))
|
||||
inode->i_size = pos;
|
||||
unlock_page(page);
|
||||
put_page(page);
|
||||
folio_unlock(folio);
|
||||
folio_put(folio);
|
||||
|
||||
return err;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user