All of lore.kernel.org
 help / color / mirror / Atom feed
* [f2fs-dev] [PATCH] f2fs: Use memcpy_page() in f2fs_copy_page()
@ 2022-07-16 20:43 ` Fabio M. De Francesco
  0 siblings, 0 replies; 6+ messages in thread
From: Fabio M. De Francesco @ 2022-07-16 20:43 UTC (permalink / raw)
  To: Jaegeuk Kim, Chao Yu, Nick Terrell, linux-f2fs-devel,
	linux-kernel
  Cc: Ira Weiny, Fabio M. De Francesco

The use of kmap() 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.

Therefore, replace kmap() with kmap_local_page() in f2fs_copy_page() and
use memcpy_page() instead of open coding kmap_local_page() + memcpy().

Suggested-by: Ira Weiny <ira.weiny@intel.com>
Signed-off-by: Fabio M. De Francesco <fmdefrancesco@gmail.com>
---
 fs/f2fs/f2fs.h | 6 +-----
 1 file changed, 1 insertion(+), 5 deletions(-)

diff --git a/fs/f2fs/f2fs.h b/fs/f2fs/f2fs.h
index d9bbecd008d2..f04e760bb1c1 100644
--- a/fs/f2fs/f2fs.h
+++ b/fs/f2fs/f2fs.h
@@ -2698,12 +2698,8 @@ static inline struct page *f2fs_pagecache_get_page(
 
 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);
-	kunmap(dst);
-	kunmap(src);
+	memcpy_page(dst, 0, src, 0, PAGE_SIZE);
 }
 
 static inline void f2fs_put_page(struct page *page, int unlock)
-- 
2.37.1



_______________________________________________
Linux-f2fs-devel mailing list
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel

^ permalink raw reply related	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2022-07-17  8:45 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-07-16 20:43 [f2fs-dev] [PATCH] f2fs: Use memcpy_page() in f2fs_copy_page() Fabio M. De Francesco
2022-07-16 20:43 ` Fabio M. De Francesco
2022-07-17  6:55 ` [f2fs-dev] " Christoph Hellwig
2022-07-17  6:55   ` Christoph Hellwig
2022-07-17  8:44   ` [f2fs-dev] " Fabio M. De Francesco
2022-07-17  8:44     ` Fabio M. De Francesco

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.