hostfs: Convert hostfs_read_folio() to use a folio

Remove the use of page APIs, including setting/clearing the error flag
which is never checked on hostfs folios.  This does not include support
for large folios as kmap_local_folio() maps only one page at a time.

Cc: Richard Weinberger <richard@nod.at>
Cc: Anton Ivanov <anton.ivanov@cambridgegreys.com>
Cc: Johannes Berg <johannes@sipsolutions.net>
Cc: linux-um@lists.infradead.org
Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
Link: https://lore.kernel.org/r/20240530202110.2653630-8-willy@infradead.org
Signed-off-by: Christian Brauner <brauner@kernel.org>
This commit is contained in:
Matthew Wilcox (Oracle) 2024-05-30 21:20:59 +01:00 committed by Christian Brauner
parent 4df37c5f08
commit e3ec0fe944
No known key found for this signature in database
GPG Key ID: 91C61BC06578DCA2

View File

@ -432,31 +432,20 @@ static int hostfs_writepage(struct page *page, struct writeback_control *wbc)
static int hostfs_read_folio(struct file *file, struct folio *folio)
{
struct page *page = &folio->page;
char *buffer;
loff_t start = page_offset(page);
loff_t start = folio_pos(folio);
int bytes_read, ret = 0;
buffer = kmap_local_page(page);
buffer = kmap_local_folio(folio, 0);
bytes_read = read_file(FILE_HOSTFS_I(file)->fd, &start, buffer,
PAGE_SIZE);
if (bytes_read < 0) {
ClearPageUptodate(page);
SetPageError(page);
if (bytes_read < 0)
ret = bytes_read;
goto out;
}
memset(buffer + bytes_read, 0, PAGE_SIZE - bytes_read);
ClearPageError(page);
SetPageUptodate(page);
out:
flush_dcache_page(page);
else
buffer = folio_zero_tail(folio, bytes_read, buffer);
kunmap_local(buffer);
unlock_page(page);
folio_end_read(folio, ret == 0);
return ret;
}