Commit 9d427b4e authored by Matthew Wilcox (Oracle)'s avatar Matthew Wilcox (Oracle)
Browse files

filemap: Convert filemap_read_page to take a folio



One of the callers already had a folio; the other two grow by a few
bytes, but filemap_read_page() shrinks by 50 bytes for a net reduction
of 27 bytes.

Signed-off-by: default avatarMatthew Wilcox (Oracle) <willy@infradead.org>
Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
Reviewed-by: default avatarWilliam Kucharski <william.kucharski@oracle.com>
parent e1c37722
Loading
Loading
Loading
Loading
+9 −9
Original line number Diff line number Diff line
@@ -2369,8 +2369,8 @@ static void filemap_get_read_batch(struct address_space *mapping,
	rcu_read_unlock();
}

static int filemap_read_page(struct file *file, struct address_space *mapping,
		struct page *page)
static int filemap_read_folio(struct file *file, struct address_space *mapping,
		struct folio *folio)
{
	int error;

@@ -2379,16 +2379,16 @@ static int filemap_read_page(struct file *file, struct address_space *mapping,
	 * eg. multipath errors.  PG_error will be set again if readpage
	 * fails.
	 */
	ClearPageError(page);
	folio_clear_error(folio);
	/* Start the actual read. The read will unlock the page. */
	error = mapping->a_ops->readpage(file, page);
	error = mapping->a_ops->readpage(file, &folio->page);
	if (error)
		return error;

	error = wait_on_page_locked_killable(page);
	error = folio_wait_locked_killable(folio);
	if (error)
		return error;
	if (PageUptodate(page))
	if (folio_test_uptodate(folio))
		return 0;
	shrink_readahead_size_eio(&file->f_ra);
	return -EIO;
@@ -2464,7 +2464,7 @@ static int filemap_update_page(struct kiocb *iocb,
	if (iocb->ki_flags & (IOCB_NOIO | IOCB_NOWAIT | IOCB_WAITQ))
		goto unlock;

	error = filemap_read_page(iocb->ki_filp, mapping, &folio->page);
	error = filemap_read_folio(iocb->ki_filp, mapping, folio);
	goto unlock_mapping;
unlock:
	folio_unlock(folio);
@@ -2506,7 +2506,7 @@ static int filemap_create_page(struct file *file,
	if (error)
		goto error;

	error = filemap_read_page(file, mapping, page);
	error = filemap_read_folio(file, mapping, page_folio(page));
	if (error)
		goto error;

@@ -3168,7 +3168,7 @@ vm_fault_t filemap_fault(struct vm_fault *vmf)
	 * and we need to check for errors.
	 */
	fpin = maybe_unlock_mmap_for_io(vmf, fpin);
	error = filemap_read_page(file, mapping, page);
	error = filemap_read_folio(file, mapping, page_folio(page));
	if (fpin)
		goto out_retry;
	put_page(page);