diff options
Diffstat (limited to 'fs/affs/symlink.c')
| -rw-r--r-- | fs/affs/symlink.c | 28 |
1 files changed, 11 insertions, 17 deletions
diff --git a/fs/affs/symlink.c b/fs/affs/symlink.c index ee00f08c4f53..094aec8d17b8 100644 --- a/fs/affs/symlink.c +++ b/fs/affs/symlink.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0 /* * linux/fs/affs/symlink.c * @@ -10,20 +11,18 @@ #include "affs.h" -static int affs_symlink_readpage(struct file *file, struct page *page) +static int affs_symlink_read_folio(struct file *file, struct folio *folio) { struct buffer_head *bh; - struct inode *inode = page->mapping->host; - char *link = kmap(page); + struct inode *inode = folio->mapping->host; + char *link = folio_address(folio); struct slink_front *lf; - int err; int i, j; char c; char lc; - pr_debug("AFFS: follow_link(ino=%lu)\n",inode->i_ino); + pr_debug("get_link(ino=%lu)\n", inode->i_ino); - err = -EIO; bh = affs_bread(inode->i_sb, inode->i_ino); if (!bh) goto fail; @@ -58,24 +57,19 @@ static int affs_symlink_readpage(struct file *file, struct page *page) } link[i] = '\0'; affs_brelse(bh); - SetPageUptodate(page); - kunmap(page); - unlock_page(page); + folio_mark_uptodate(folio); + folio_unlock(folio); return 0; fail: - SetPageError(page); - kunmap(page); - unlock_page(page); - return err; + folio_unlock(folio); + return -EIO; } const struct address_space_operations affs_symlink_aops = { - .readpage = affs_symlink_readpage, + .read_folio = affs_symlink_read_folio, }; const struct inode_operations affs_symlink_inode_operations = { - .readlink = generic_readlink, - .follow_link = page_follow_link_light, - .put_link = page_put_link, + .get_link = page_get_link, .setattr = affs_notify_change, }; |
