mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-11 04:18:39 +08:00
udf: Convert udf_symlink_filler() to use a folio
Remove the conversion to struct page and use folio APIs throughout. Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org> Signed-off-by: Jan Kara <jack@suse.cz> Message-Id: <20240417150416.752929-2-willy@infradead.org>
This commit is contained in:
parent
9ec2b35016
commit
b591dfb833
@ -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;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user