Message ID | 20250213214533.2242224-1-willy@infradead.org (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | [1/2] ocfs2: Use memcpy_to_folio() in ocfs2_symlink_get_block() | expand |
On 2025/2/14 05:45, Matthew Wilcox (Oracle) wrote: > 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). > > Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org> Acked-by: Joseph Qi <joseph.qi@linux.alibaba.com> > --- > fs/ocfs2/aops.c | 17 +++++------------ > 1 file changed, 5 insertions(+), 12 deletions(-) > > diff --git a/fs/ocfs2/aops.c b/fs/ocfs2/aops.c > index 5bbeb6fbb1ac..ccf2930cd2e6 100644 > --- a/fs/ocfs2/aops.c > +++ b/fs/ocfs2/aops.c > @@ -46,7 +46,6 @@ static int ocfs2_symlink_get_block(struct inode *inode, sector_t iblock, > struct buffer_head *bh = NULL; > struct buffer_head *buffer_cache_bh = NULL; > struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); > - void *kaddr; > > trace_ocfs2_symlink_get_block( > (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 > * the bh, even if it commits while we're doing the > * copy, the data is still good. */ > - if (buffer_jbd(buffer_cache_bh) > - && ocfs2_inode_is_new(inode)) { > - kaddr = kmap_atomic(bh_result->b_page); > - if (!kaddr) { > - mlog(ML_ERROR, "couldn't kmap!\n"); > - goto bail; > - } > - memcpy(kaddr + (bh_result->b_size * iblock), > - buffer_cache_bh->b_data, > - bh_result->b_size); > - kunmap_atomic(kaddr); > + if (buffer_jbd(buffer_cache_bh) && ocfs2_inode_is_new(inode)) { > + memcpy_to_folio(bh_result->b_folio, > + bh_result->b_size * iblock, > + buffer_cache_bh->b_data, > + bh_result->b_size); > set_buffer_uptodate(bh_result); > } > brelse(buffer_cache_bh);
diff --git a/fs/ocfs2/aops.c b/fs/ocfs2/aops.c index 5bbeb6fbb1ac..ccf2930cd2e6 100644 --- a/fs/ocfs2/aops.c +++ b/fs/ocfs2/aops.c @@ -46,7 +46,6 @@ static int ocfs2_symlink_get_block(struct inode *inode, sector_t iblock, struct buffer_head *bh = NULL; struct buffer_head *buffer_cache_bh = NULL; struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); - void *kaddr; trace_ocfs2_symlink_get_block( (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 * the bh, even if it commits while we're doing the * copy, the data is still good. */ - if (buffer_jbd(buffer_cache_bh) - && ocfs2_inode_is_new(inode)) { - kaddr = kmap_atomic(bh_result->b_page); - if (!kaddr) { - mlog(ML_ERROR, "couldn't kmap!\n"); - goto bail; - } - memcpy(kaddr + (bh_result->b_size * iblock), - buffer_cache_bh->b_data, - bh_result->b_size); - kunmap_atomic(kaddr); + if (buffer_jbd(buffer_cache_bh) && ocfs2_inode_is_new(inode)) { + memcpy_to_folio(bh_result->b_folio, + bh_result->b_size * iblock, + buffer_cache_bh->b_data, + bh_result->b_size); set_buffer_uptodate(bh_result); } brelse(buffer_cache_bh);
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). Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org> --- fs/ocfs2/aops.c | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-)