befs: Convert befs_symlink_read_folio() to use a folio

This is a straightforward conversion from the page APIs to the folio
APIs.  Symlinks are not allowed to be larger than PAGE_SIZE, so there
is little work to do here.

Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
This commit is contained in:
Matthew Wilcox (Oracle) 2022-04-29 11:12:16 -04:00
parent 4fdc08d418
commit ac09d88b9f
1 changed files with 7 additions and 9 deletions

View File

@ -108,8 +108,7 @@ static const struct export_operations befs_export_operations = {
* passes it the address of befs_get_block, for mapping file * passes it the address of befs_get_block, for mapping file
* positions to disk blocks. * positions to disk blocks.
*/ */
static int static int befs_read_folio(struct file *file, struct folio *folio)
befs_read_folio(struct file *file, struct folio *folio)
{ {
return block_read_full_folio(folio, befs_get_block); return block_read_full_folio(folio, befs_get_block);
} }
@ -470,13 +469,12 @@ befs_destroy_inodecache(void)
*/ */
static int befs_symlink_read_folio(struct file *unused, struct folio *folio) static int befs_symlink_read_folio(struct file *unused, struct folio *folio)
{ {
struct page *page = &folio->page; struct inode *inode = folio->mapping->host;
struct inode *inode = page->mapping->host;
struct super_block *sb = inode->i_sb; struct super_block *sb = inode->i_sb;
struct befs_inode_info *befs_ino = BEFS_I(inode); struct befs_inode_info *befs_ino = BEFS_I(inode);
befs_data_stream *data = &befs_ino->i_data.ds; befs_data_stream *data = &befs_ino->i_data.ds;
befs_off_t len = data->size; befs_off_t len = data->size;
char *link = page_address(page); char *link = folio_address(folio);
if (len == 0 || len > PAGE_SIZE) { if (len == 0 || len > PAGE_SIZE) {
befs_error(sb, "Long symlink with illegal length"); befs_error(sb, "Long symlink with illegal length");
@ -489,12 +487,12 @@ static int befs_symlink_read_folio(struct file *unused, struct folio *folio)
goto fail; goto fail;
} }
link[len - 1] = '\0'; link[len - 1] = '\0';
SetPageUptodate(page); folio_mark_uptodate(folio);
unlock_page(page); folio_unlock(folio);
return 0; return 0;
fail: fail:
SetPageError(page); folio_set_error(folio);
unlock_page(page); folio_unlock(folio);
return -EIO; return -EIO;
} }