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 <[email protected]>
Cc: Anton Ivanov <[email protected]>
Cc: Johannes Berg <[email protected]>
Cc: [email protected]
Signed-off-by: Matthew Wilcox (Oracle) <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Christian Brauner <[email protected]>
This commit is contained in:
Matthew Wilcox (Oracle) authored and Christian Brauner committed 2024-05-31 12:31:40 +02:00
1 parent 4df37c5f08
commit e3ec0fe944
1 file changed
+6 -17
+6 -17
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;
}