f2fs: Use copy_page for full page copy

Some architectures have implemented optimized copy_page for full page
copying, such as arm.

On my arm platform, use the copy_page helper for single page copying is
about 10 percent faster than memcpy.

Change-Id: Ie28de9ef5954d0c232b418f382471bc7c125563f
Signed-off-by: Dark-Matter7232 <me@const.eu.org>
Signed-off-by: Richard Raya <rdxzv.dev@gmail.com>
This commit is contained in:
Dark-Matter7232 2024-07-09 14:02:38 +05:30 committed by Richard Raya
parent 0fe0764363
commit b3eeba3c1d
5 changed files with 5 additions and 5 deletions

View File

@ -1391,7 +1391,7 @@ static void commit_checkpoint(struct f2fs_sb_info *sbi,
f2fs_wait_on_page_writeback(page, META, true, true);
memcpy(page_address(page), src, PAGE_SIZE);
copy_page(page_address(page), src);
set_page_dirty(page);
if (unlikely(!clear_page_dirty_for_io(page)))

View File

@ -1849,7 +1849,7 @@ void f2fs_cache_compressed_page(struct f2fs_sb_info *sbi, struct page *page,
if (!f2fs_is_valid_blkaddr(sbi, blkaddr, DATA_GENERIC_ENHANCE_READ))
goto out;
memcpy(page_address(cpage), page_address(page), PAGE_SIZE);
copy_page(page_address(cpage), page_address(page));
SetPageUptodate(cpage);
out:
f2fs_put_page(cpage, 1);

View File

@ -2750,7 +2750,7 @@ static inline void f2fs_copy_page(struct page *src, struct page *dst)
char *src_kaddr = kmap(src);
char *dst_kaddr = kmap(dst);
memcpy(dst_kaddr, src_kaddr, PAGE_SIZE);
copy_page(dst_kaddr, src_kaddr);
kunmap(dst);
kunmap(src);
}

View File

@ -150,7 +150,7 @@ static struct page *get_next_nat_page(struct f2fs_sb_info *sbi, nid_t nid)
src_addr = page_address(src_page);
dst_addr = page_address(dst_page);
memcpy(dst_addr, src_addr, PAGE_SIZE);
copy_page(dst_addr, src_addr);
set_page_dirty(dst_page);
f2fs_put_page(src_page, 1);

View File

@ -2368,7 +2368,7 @@ void f2fs_update_meta_page(struct f2fs_sb_info *sbi,
{
struct page *page = f2fs_grab_meta_page(sbi, blk_addr);
memcpy(page_address(page), src, PAGE_SIZE);
copy_page(page_address(page), src);
set_page_dirty(page);
f2fs_put_page(page, 1);
}