Message ID | 20220628182426.944-1-fmdefrancesco@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | nfs: Replace kmap() with kmap_local_page() | expand |
On Tue, Jun 28, 2022 at 08:24:26PM +0200, Fabio M. De Francesco wrote: > The use of kmap() is being deprecated in favor of kmap_local_page(). > > With kmap_local_page(), the mapping is per thread, CPU local and not > globally visible. Furthermore, the mapping can be acquired from any context > (including interrupts). > > Therefore, use kmap_local_page() in nfs_do_filldir() because this mapping > is per thread, CPU local, and not globally visible. > > Suggested-by: Ira Weiny <ira.weiny@intel.com> Reviewed-by: Ira Weiny <ira.weiny@intel.com> > Signed-off-by: Fabio M. De Francesco <fmdefrancesco@gmail.com> > --- > > I cannot test this patch for several reasons. While these changes seem safe > and trivial, I would feel better if people familiar with NFS could take the > time to properly test this patch. Thank you. > > fs/nfs/dir.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/fs/nfs/dir.c b/fs/nfs/dir.c > index 0c4e8dd6aa96..8b89f10d8899 100644 > --- a/fs/nfs/dir.c > +++ b/fs/nfs/dir.c > @@ -1084,7 +1084,7 @@ static void nfs_do_filldir(struct nfs_readdir_descriptor *desc, > struct nfs_cache_array *array; > unsigned int i; > > - array = kmap(desc->page); > + array = kmap_local_page(desc->page); > for (i = desc->cache_entry_index; i < array->size; i++) { > struct nfs_cache_array_entry *ent; > > @@ -1110,7 +1110,7 @@ static void nfs_do_filldir(struct nfs_readdir_descriptor *desc, > if (array->page_is_eof) > desc->eof = !desc->eob; > > - kunmap(desc->page); > + kunmap_local(array); > dfprintk(DIRCACHE, "NFS: nfs_do_filldir() filling ended @ cookie %llu\n", > (unsigned long long)desc->dir_cookie); > } > -- > 2.36.1 >
diff --git a/fs/nfs/dir.c b/fs/nfs/dir.c index 0c4e8dd6aa96..8b89f10d8899 100644 --- a/fs/nfs/dir.c +++ b/fs/nfs/dir.c @@ -1084,7 +1084,7 @@ static void nfs_do_filldir(struct nfs_readdir_descriptor *desc, struct nfs_cache_array *array; unsigned int i; - array = kmap(desc->page); + array = kmap_local_page(desc->page); for (i = desc->cache_entry_index; i < array->size; i++) { struct nfs_cache_array_entry *ent; @@ -1110,7 +1110,7 @@ static void nfs_do_filldir(struct nfs_readdir_descriptor *desc, if (array->page_is_eof) desc->eof = !desc->eob; - kunmap(desc->page); + kunmap_local(array); dfprintk(DIRCACHE, "NFS: nfs_do_filldir() filling ended @ cookie %llu\n", (unsigned long long)desc->dir_cookie); }
The use of kmap() is being deprecated in favor of kmap_local_page(). With kmap_local_page(), the mapping is per thread, CPU local and not globally visible. Furthermore, the mapping can be acquired from any context (including interrupts). Therefore, use kmap_local_page() in nfs_do_filldir() because this mapping is per thread, CPU local, and not globally visible. Suggested-by: Ira Weiny <ira.weiny@intel.com> Signed-off-by: Fabio M. De Francesco <fmdefrancesco@gmail.com> --- I cannot test this patch for several reasons. While these changes seem safe and trivial, I would feel better if people familiar with NFS could take the time to properly test this patch. Thank you. fs/nfs/dir.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)