Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

ocfs2: use a folio in ocfs2_fast_symlink_read_folio()

Use folio_end_read() instead of SetPageUptodate() and unlock_page(). Use
memcpy_to_folio() instead of open-coding a kmap_atomic() sequence.

Link: https://lkml.kernel.org/r/20241205171653.3179945-21-willy@infradead.org
Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
Reviewed-by: Joseph Qi <joseph.qi@linux.alibaba.com>
Cc: Changwei Ge <gechangwei@live.cn>
Cc: Joel Becker <jlbec@evilplan.org>
Cc: Jun Piao <piaojun@huawei.com>
Cc: Junxiao Bi <junxiao.bi@oracle.com>
Cc: Mark Fasheh <mark@fasheh.com>
Cc: Mark Tinguely <mark.tinguely@oracle.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>

authored by

Matthew Wilcox (Oracle) and committed by
Andrew Morton
d254824e 03902e65

+3 -8
+3 -8
fs/ocfs2/symlink.c
··· 54 54 55 55 static int ocfs2_fast_symlink_read_folio(struct file *f, struct folio *folio) 56 56 { 57 - struct page *page = &folio->page; 58 - struct inode *inode = page->mapping->host; 57 + struct inode *inode = folio->mapping->host; 59 58 struct buffer_head *bh = NULL; 60 59 int status = ocfs2_read_inode_block(inode, &bh); 61 60 struct ocfs2_dinode *fe; 62 61 const char *link; 63 - void *kaddr; 64 62 size_t len; 65 63 66 64 if (status < 0) { ··· 70 72 link = (char *) fe->id2.i_symlink; 71 73 /* will be less than a page size */ 72 74 len = strnlen(link, ocfs2_fast_symlink_chars(inode->i_sb)); 73 - kaddr = kmap_atomic(page); 74 - memcpy(kaddr, link, len + 1); 75 - kunmap_atomic(kaddr); 76 - SetPageUptodate(page); 75 + memcpy_to_folio(folio, 0, link, len + 1); 77 76 out: 78 - unlock_page(page); 77 + folio_end_read(folio, status == 0); 79 78 brelse(bh); 80 79 return status; 81 80 }