mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-11-01 09:13:37 +00:00
ocfs2: use memcpy_to_folio() in ocfs2_symlink_get_block()
Replace use of kmap_atomic() with the higher-level construct memcpy_to_folio(). This removes a use of b_page and supports large folios as well as being easier to understand. It also removes the check for kmap_atomic() failing (because it can't). Link: https://lkml.kernel.org/r/20250213214533.2242224-1-willy@infradead.org Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org> Acked-by: Joseph Qi <joseph.qi@linux.alibaba.com> Cc: Mark Tinguely <mark.tinguely@oracle.com> Cc: Mark Fasheh <mark@fasheh.com> Cc: Joel Becker <jlbec@evilplan.org> Cc: Junxiao Bi <junxiao.bi@oracle.com> Cc: Changwei Ge <gechangwei@live.cn> Cc: Jun Piao <piaojun@huawei.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
parent
a406aff8c0
commit
dbc3b6320e
1 changed files with 5 additions and 12 deletions
|
|
@ -46,7 +46,6 @@ static int ocfs2_symlink_get_block(struct inode *inode, sector_t iblock,
|
||||||
struct buffer_head *bh = NULL;
|
struct buffer_head *bh = NULL;
|
||||||
struct buffer_head *buffer_cache_bh = NULL;
|
struct buffer_head *buffer_cache_bh = NULL;
|
||||||
struct ocfs2_super *osb = OCFS2_SB(inode->i_sb);
|
struct ocfs2_super *osb = OCFS2_SB(inode->i_sb);
|
||||||
void *kaddr;
|
|
||||||
|
|
||||||
trace_ocfs2_symlink_get_block(
|
trace_ocfs2_symlink_get_block(
|
||||||
(unsigned long long)OCFS2_I(inode)->ip_blkno,
|
(unsigned long long)OCFS2_I(inode)->ip_blkno,
|
||||||
|
|
@ -91,17 +90,11 @@ static int ocfs2_symlink_get_block(struct inode *inode, sector_t iblock,
|
||||||
* could've happened. Since we've got a reference on
|
* could've happened. Since we've got a reference on
|
||||||
* the bh, even if it commits while we're doing the
|
* the bh, even if it commits while we're doing the
|
||||||
* copy, the data is still good. */
|
* copy, the data is still good. */
|
||||||
if (buffer_jbd(buffer_cache_bh)
|
if (buffer_jbd(buffer_cache_bh) && ocfs2_inode_is_new(inode)) {
|
||||||
&& ocfs2_inode_is_new(inode)) {
|
memcpy_to_folio(bh_result->b_folio,
|
||||||
kaddr = kmap_atomic(bh_result->b_page);
|
bh_result->b_size * iblock,
|
||||||
if (!kaddr) {
|
buffer_cache_bh->b_data,
|
||||||
mlog(ML_ERROR, "couldn't kmap!\n");
|
bh_result->b_size);
|
||||||
goto bail;
|
|
||||||
}
|
|
||||||
memcpy(kaddr + (bh_result->b_size * iblock),
|
|
||||||
buffer_cache_bh->b_data,
|
|
||||||
bh_result->b_size);
|
|
||||||
kunmap_atomic(kaddr);
|
|
||||||
set_buffer_uptodate(bh_result);
|
set_buffer_uptodate(bh_result);
|
||||||
}
|
}
|
||||||
brelse(buffer_cache_bh);
|
brelse(buffer_cache_bh);
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue