linux/fs/f2fs
Fabio M. De Francesco 1dd55358ef f2fs: Delete f2fs_copy_page() and replace with memcpy_page()
f2fs_copy_page() is a wrapper around two kmap() + one memcpy() from/to
the mapped pages. It unnecessarily duplicates a kernel API and it makes
use of kmap(), which is being deprecated in favor of kmap_local_page().

Two main problems with kmap(): (1) It comes with an overhead as mapping
space is restricted and protected by a global lock for synchronization and
(2) it also requires global TLB invalidation when the kmap’s pool wraps
and it might block when the mapping space is fully utilized until a slot
becomes available.

With kmap_local_page() the mappings are per thread, CPU local, can take
page faults, and can be called from any context (including interrupts).
It is faster than kmap() in kernels with HIGHMEM enabled. Therefore, its
use in __clone_blkaddrs() is safe and should be preferred.

Delete f2fs_copy_page() and use a plain memcpy_page() in the only one
site calling the removed function. memcpy_page() avoids open coding two
kmap_local_page() + one memcpy() between the two kernel virtual addresses.

Suggested-by: Christoph Hellwig <hch@infradead.org>
Suggested-by: Ira Weiny <ira.weiny@intel.com>
Signed-off-by: Fabio M. De Francesco <fmdefrancesco@gmail.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Chao Yu <chao@kernel.org>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
2022-07-30 20:16:57 -07:00
..
acl.c f2fs: support idmapped mounts 2022-02-12 06:20:46 -08:00
acl.h vfs: add rcu argument to ->get_acl() callback 2021-08-18 22:08:24 +02:00
checkpoint.c f2fs-for-5.19 2022-05-31 16:52:59 -07:00
compress.c f2fs: initialize page_array_entry slab only if compression feature is on 2022-06-28 09:27:10 -07:00
data.c f2fs: fix to invalidate META_MAPPING before DIO write 2022-07-30 20:16:20 -07:00
debug.c f2fs: adjust zone capacity when considering valid block count 2022-07-30 20:16:20 -07:00
dir.c f2fs: don't use casefolded comparison for "." and ".." 2022-05-17 11:19:23 -07:00
extent_cache.c f2fs: support fault injection for f2fs_kmem_cache_alloc() 2021-08-17 11:59:05 -07:00
f2fs.h f2fs: Delete f2fs_copy_page() and replace with memcpy_page() 2022-07-30 20:16:57 -07:00
file.c f2fs: Delete f2fs_copy_page() and replace with memcpy_page() 2022-07-30 20:16:57 -07:00
gc.c f2fs: adjust zone capacity when considering valid block count 2022-07-30 20:16:20 -07:00
gc.h f2fs: remove redundant code for gc condition 2022-07-30 20:16:20 -07:00
hash.c f2fs: don't use casefolded comparison for "." and ".." 2022-05-17 11:19:23 -07:00
inline.c f2fs: fix to do sanity check for inline inode 2022-05-18 15:36:11 -07:00
inode.c f2fs: replace F2FS_I(inode) and sbi by the local variable 2022-05-27 13:58:23 -07:00
iostat.c f2fs: fix iostat related lock protection 2022-06-19 15:16:12 -07:00
iostat.h f2fs: introduce periodic iostat io latency traces 2021-08-23 10:25:51 -07:00
Kconfig f2fs: introduce F2FS_UNFAIR_RWSEM to support unfair rwsem 2022-03-04 09:15:53 -08:00
Makefile f2fs: separate out iostat feature 2021-08-23 10:25:51 -07:00
namei.c f2fs: attach inline_data after setting compression 2022-06-19 15:16:10 -07:00
node.c f2fs: do not skip updating inode when retrying to flush node page 2022-06-28 09:27:09 -07:00
node.h f2fs: change the current atomic write way 2022-05-12 10:14:03 -07:00
recovery.c f2fs-for-5.18 2022-03-22 10:00:31 -07:00
segment.c f2fs: adjust zone capacity when considering valid block count 2022-07-30 20:16:20 -07:00
segment.h f2fs: adjust zone capacity when considering valid block count 2022-07-30 20:16:20 -07:00
shrinker.c f2fs: avoid race condition for shrinker count 2020-12-03 00:59:26 -08:00
super.c f2fs: enforce single zone capacity 2022-07-30 20:16:20 -07:00
sysfs.c f2fs: add a sysfs entry to show zone capacity 2022-07-30 20:16:20 -07:00
verity.c f2fs-for-5.19 2022-05-31 16:52:59 -07:00
xattr.c f2fs: move f2fs to use reader-unfair rwsems 2022-01-24 17:40:04 -08:00
xattr.h f2fs: code cleanup by removing ifdef macro surrounding 2020-05-26 18:56:10 -07:00