gfs2: Use memcpy_{from,to}_page where appropriate

Replace kmap_local_page() + memcpy() + kunmap_local() sequences with
memcpy_{from,to}_page() where we are not doing anything else with the
mapped page.

Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
This commit is contained in:
Andreas Gruenbacher 2023-06-27 15:34:36 +02:00
parent b0c21c6d52
commit d68d0c6c3f
3 changed files with 7 additions and 15 deletions

View File

@ -488,7 +488,6 @@ int gfs2_internal_read(struct gfs2_inode *ip, char *buf, loff_t *pos,
unsigned copied = 0; unsigned copied = 0;
unsigned amt; unsigned amt;
struct page *page; struct page *page;
void *p;
do { do {
page = read_cache_page(mapping, index, gfs2_read_folio, NULL); page = read_cache_page(mapping, index, gfs2_read_folio, NULL);
@ -497,12 +496,10 @@ int gfs2_internal_read(struct gfs2_inode *ip, char *buf, loff_t *pos,
continue; continue;
return PTR_ERR(page); return PTR_ERR(page);
} }
p = kmap_local_page(page);
amt = size - copied; amt = size - copied;
if (offset + size > PAGE_SIZE) if (offset + size > PAGE_SIZE)
amt = PAGE_SIZE - offset; amt = PAGE_SIZE - offset;
memcpy(buf + copied, p + offset, amt); memcpy_from_page(buf + copied, page, offset, amt);
kunmap_local(p);
put_page(page); put_page(page);
copied += amt; copied += amt;
index++; index++;

View File

@ -697,14 +697,12 @@ static void gfs2_before_commit(struct gfs2_sbd *sdp, unsigned int limit,
lock_buffer(bd2->bd_bh); lock_buffer(bd2->bd_bh);
if (buffer_escaped(bd2->bd_bh)) { if (buffer_escaped(bd2->bd_bh)) {
void *kaddr; void *p;
page = mempool_alloc(gfs2_page_pool, GFP_NOIO); page = mempool_alloc(gfs2_page_pool, GFP_NOIO);
ptr = page_address(page); p = page_address(page);
kaddr = kmap_local_page(bd2->bd_bh->b_page); memcpy_from_page(p, page, bh_offset(bd2->bd_bh), bd2->bd_bh->b_size);
memcpy(ptr, kaddr + bh_offset(bd2->bd_bh), *(__be32 *)p = 0;
bd2->bd_bh->b_size);
kunmap_local(kaddr);
*(__be32 *)ptr = 0;
clear_buffer_escaped(bd2->bd_bh); clear_buffer_escaped(bd2->bd_bh);
unlock_buffer(bd2->bd_bh); unlock_buffer(bd2->bd_bh);
brelse(bd2->bd_bh); brelse(bd2->bd_bh);

View File

@ -712,7 +712,6 @@ static int gfs2_write_buf_to_page(struct gfs2_inode *ip, unsigned long index,
struct address_space *mapping = inode->i_mapping; struct address_space *mapping = inode->i_mapping;
struct page *page; struct page *page;
struct buffer_head *bh; struct buffer_head *bh;
void *kaddr;
u64 blk; u64 blk;
unsigned bsize = sdp->sd_sb.sb_bsize, bnum = 0, boff = 0; unsigned bsize = sdp->sd_sb.sb_bsize, bnum = 0, boff = 0;
unsigned to_write = bytes, pg_off = off; unsigned to_write = bytes, pg_off = off;
@ -764,9 +763,7 @@ static int gfs2_write_buf_to_page(struct gfs2_inode *ip, unsigned long index,
} }
/* Write to the page, now that we have setup the buffer(s) */ /* Write to the page, now that we have setup the buffer(s) */
kaddr = kmap_local_page(page); memcpy_to_page(page, off, buf, bytes);
memcpy(kaddr + off, buf, bytes);
kunmap_local(kaddr);
flush_dcache_page(page); flush_dcache_page(page);
unlock_page(page); unlock_page(page);
put_page(page); put_page(page);