Unverified Commit d86f2de0 authored by Matthew Wilcox (Oracle)'s avatar Matthew Wilcox (Oracle) Committed by Christian Brauner
Browse files

romfs: Convert romfs_read_folio() to use a folio



Remove the conversion back to struct page and use the folio APIs instead
of the page APIs.  It's probably more trouble than it's worth to support
large folios in romfs, so there are still PAGE_SIZE assumptions in
this function.

Signed-off-by: default avatarMatthew Wilcox (Oracle) <willy@infradead.org>
Link: https://lore.kernel.org/r/20240530202110.2653630-13-willy@infradead.org


Signed-off-by: default avatarChristian Brauner <brauner@kernel.org>
parent f4c51473
Loading
Loading
Loading
Loading
+6 −16
Original line number Diff line number Diff line
@@ -101,19 +101,15 @@ static struct inode *romfs_iget(struct super_block *sb, unsigned long pos);
 */
static int romfs_read_folio(struct file *file, struct folio *folio)
{
	struct page *page = &folio->page;
	struct inode *inode = page->mapping->host;
	struct inode *inode = folio->mapping->host;
	loff_t offset, size;
	unsigned long fillsize, pos;
	void *buf;
	int ret;

	buf = kmap(page);
	if (!buf)
		return -ENOMEM;
	buf = kmap_local_folio(folio, 0);

	/* 32 bit warning -- but not for us :) */
	offset = page_offset(page);
	offset = folio_pos(folio);
	size = i_size_read(inode);
	fillsize = 0;
	ret = 0;
@@ -125,20 +121,14 @@ static int romfs_read_folio(struct file *file, struct folio *folio)

		ret = romfs_dev_read(inode->i_sb, pos, buf, fillsize);
		if (ret < 0) {
			SetPageError(page);
			fillsize = 0;
			ret = -EIO;
		}
	}

	if (fillsize < PAGE_SIZE)
		memset(buf + fillsize, 0, PAGE_SIZE - fillsize);
	if (ret == 0)
		SetPageUptodate(page);

	flush_dcache_page(page);
	kunmap(page);
	unlock_page(page);
	buf = folio_zero_tail(folio, fillsize, buf);
	kunmap_local(buf);
	folio_end_read(folio, ret == 0);
	return ret;
}