diff mbox series

affs: replace kmap_atomic() with kmap_local_page()

Message ID 20220712222744.24783-1-dsterba@suse.com (mailing list archive)
State New, archived
Headers show
Series affs: replace kmap_atomic() with kmap_local_page() | expand

Commit Message

David Sterba July 12, 2022, 10:27 p.m. UTC
The use of kmap() is being deprecated in favor of kmap_local_page()
where it is feasible. With kmap_local_page(), the mapping is per thread,
CPU local and not globally visible, like in this case around a simple
memcpy().

CC: Ira Weiny <ira.weiny@intel.com>
CC: Fabio M. De Francesco <fmdefrancesco@gmail.com>
Signed-off-by: David Sterba <dsterba@suse.com>
---
 fs/affs/file.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Comments

Fabio M. De Francesco July 12, 2022, 11:02 p.m. UTC | #1
On mercoledì 13 luglio 2022 00:27:44 CEST David Sterba wrote:
> The use of kmap() is being deprecated in favor of kmap_local_page()
> where it is feasible. With kmap_local_page(), the mapping is per thread,
> CPU local and not globally visible, like in this case around a simple
> memcpy().
> 
> CC: Ira Weiny <ira.weiny@intel.com>
> CC: Fabio M. De Francesco <fmdefrancesco@gmail.com>
> Signed-off-by: David Sterba <dsterba@suse.com>
> ---
>  fs/affs/file.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/fs/affs/file.c b/fs/affs/file.c
> index cd00a4c68a12..92754c40c5cd 100644
> --- a/fs/affs/file.c
> +++ b/fs/affs/file.c
> @@ -545,9 +545,9 @@ affs_do_readpage_ofs(struct page *page, unsigned to, 
int create)
>  			return PTR_ERR(bh);
>  		tmp = min(bsize - boff, to - pos);
>  		BUG_ON(pos + tmp > to || tmp > bsize);
> -		data = kmap_atomic(page);
> +		data = kmap_local_page(page);
>  		memcpy(data + pos, AFFS_DATA(bh) + boff, tmp);
> -		kunmap_atomic(data);
> +		kunmap_local(data);
>  		affs_brelse(bh);
>  		bidx++;
>  		pos += tmp;
> -- 
> 2.36.1
> 
It looks good but... what about using memcpy_to_page() instead of open 
coding kmap_local_page() + memcpy() and delete variable "char *data" since 
it will become unused?

Thanks,

Fabio
diff mbox series

Patch

diff --git a/fs/affs/file.c b/fs/affs/file.c
index cd00a4c68a12..92754c40c5cd 100644
--- a/fs/affs/file.c
+++ b/fs/affs/file.c
@@ -545,9 +545,9 @@  affs_do_readpage_ofs(struct page *page, unsigned to, int create)
 			return PTR_ERR(bh);
 		tmp = min(bsize - boff, to - pos);
 		BUG_ON(pos + tmp > to || tmp > bsize);
-		data = kmap_atomic(page);
+		data = kmap_local_page(page);
 		memcpy(data + pos, AFFS_DATA(bh) + boff, tmp);
-		kunmap_atomic(data);
+		kunmap_local(data);
 		affs_brelse(bh);
 		bidx++;
 		pos += tmp;