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 |
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 --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;
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(-)