Commit b591dfb8 authored by Matthew Wilcox (Oracle)'s avatar Matthew Wilcox (Oracle) Committed by Jan Kara
Browse files

udf: Convert udf_symlink_filler() to use a folio



Remove the conversion to struct page and use folio APIs throughout.

Signed-off-by: default avatarMatthew Wilcox (Oracle) <willy@infradead.org>
Signed-off-by: default avatarJan Kara <jack@suse.cz>
Message-Id: <20240417150416.752929-2-willy@infradead.org>
parent 9ec2b350
Loading
Loading
Loading
Loading
+6 −16
Original line number Diff line number Diff line
@@ -99,18 +99,17 @@ static int udf_pc_to_char(struct super_block *sb, unsigned char *from,

static int udf_symlink_filler(struct file *file, struct folio *folio)
{
	struct page *page = &folio->page;
	struct inode *inode = page->mapping->host;
	struct inode *inode = folio->mapping->host;
	struct buffer_head *bh = NULL;
	unsigned char *symlink;
	int err = 0;
	unsigned char *p = page_address(page);
	unsigned char *p = folio_address(folio);
	struct udf_inode_info *iinfo = UDF_I(inode);

	/* We don't support symlinks longer than one block */
	if (inode->i_size > inode->i_sb->s_blocksize) {
		err = -ENAMETOOLONG;
		goto out_unlock;
		goto out;
	}

	if (iinfo->i_alloc_type == ICBTAG_FLAG_AD_IN_ICB) {
@@ -120,24 +119,15 @@ static int udf_symlink_filler(struct file *file, struct folio *folio)
		if (!bh) {
			if (!err)
				err = -EFSCORRUPTED;
			goto out_err;
			goto out;
		}
		symlink = bh->b_data;
	}

	err = udf_pc_to_char(inode->i_sb, symlink, inode->i_size, p, PAGE_SIZE);
	brelse(bh);
	if (err)
		goto out_err;

	SetPageUptodate(page);
	unlock_page(page);
	return 0;

out_err:
	SetPageError(page);
out_unlock:
	unlock_page(page);
out:
	folio_end_read(folio, err == 0);
	return err;
}