mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-29 13:53:33 +00:00
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:
parent
4fdc08d418
commit
ac09d88b9f
1 changed files with 7 additions and 9 deletions
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue