[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH RFC PKS/PMEM 21/58] fs/nfs: Utilize new kmap_thread()



From: Ira Weiny <ira.weiny@xxxxxxxxx>

The kmap() calls in this FS are localized to a single thread.  To avoid
the over head of global PKRS updates use the new kmap_thread() call.

Cc: Trond Myklebust <trond.myklebust@xxxxxxxxxxxxxxx>
Cc: Anna Schumaker <anna.schumaker@xxxxxxxxxx>
Signed-off-by: Ira Weiny <ira.weiny@xxxxxxxxx>
---
 fs/nfs/dir.c | 20 ++++++++++----------
 1 file changed, 10 insertions(+), 10 deletions(-)

diff --git a/fs/nfs/dir.c b/fs/nfs/dir.c
index cb52db9a0cfb..fee321acccb4 100644
--- a/fs/nfs/dir.c
+++ b/fs/nfs/dir.c
@@ -213,7 +213,7 @@ int nfs_readdir_make_qstr(struct qstr *string, const char 
*name, unsigned int le
 static
 int nfs_readdir_add_to_array(struct nfs_entry *entry, struct page *page)
 {
-       struct nfs_cache_array *array = kmap(page);
+       struct nfs_cache_array *array = kmap_thread(page);
        struct nfs_cache_array_entry *cache_entry;
        int ret;
 
@@ -235,7 +235,7 @@ int nfs_readdir_add_to_array(struct nfs_entry *entry, 
struct page *page)
        if (entry->eof != 0)
                array->eof_index = array->size;
 out:
-       kunmap(page);
+       kunmap_thread(page);
        return ret;
 }
 
@@ -347,7 +347,7 @@ int nfs_readdir_search_array(nfs_readdir_descriptor_t *desc)
        struct nfs_cache_array *array;
        int status;
 
-       array = kmap(desc->page);
+       array = kmap_thread(desc->page);
 
        if (*desc->dir_cookie == 0)
                status = nfs_readdir_search_for_pos(array, desc);
@@ -359,7 +359,7 @@ int nfs_readdir_search_array(nfs_readdir_descriptor_t *desc)
                desc->current_index += array->size;
                desc->page_index++;
        }
-       kunmap(desc->page);
+       kunmap_thread(desc->page);
        return status;
 }
 
@@ -602,10 +602,10 @@ int nfs_readdir_page_filler(nfs_readdir_descriptor_t 
*desc, struct nfs_entry *en
 
 out_nopages:
        if (count == 0 || (status == -EBADCOOKIE && entry->eof != 0)) {
-               array = kmap(page);
+               array = kmap_thread(page);
                array->eof_index = array->size;
                status = 0;
-               kunmap(page);
+               kunmap_thread(page);
        }
 
        put_page(scratch);
@@ -669,7 +669,7 @@ int nfs_readdir_xdr_to_array(nfs_readdir_descriptor_t 
*desc, struct page *page,
                goto out;
        }
 
-       array = kmap(page);
+       array = kmap_thread(page);
 
        status = nfs_readdir_alloc_pages(pages, array_size);
        if (status < 0)
@@ -691,7 +691,7 @@ int nfs_readdir_xdr_to_array(nfs_readdir_descriptor_t 
*desc, struct page *page,
 
        nfs_readdir_free_pages(pages, array_size);
 out_release_array:
-       kunmap(page);
+       kunmap_thread(page);
        nfs4_label_free(entry.label);
 out:
        nfs_free_fattr(entry.fattr);
@@ -803,7 +803,7 @@ int nfs_do_filldir(nfs_readdir_descriptor_t *desc)
        struct nfs_cache_array *array = NULL;
        struct nfs_open_dir_context *ctx = file->private_data;
 
-       array = kmap(desc->page);
+       array = kmap_thread(desc->page);
        for (i = desc->cache_entry_index; i < array->size; i++) {
                struct nfs_cache_array_entry *ent;
 
@@ -827,7 +827,7 @@ int nfs_do_filldir(nfs_readdir_descriptor_t *desc)
        if (array->eof_index >= 0)
                desc->eof = true;
 
-       kunmap(desc->page);
+       kunmap_thread(desc->page);
        dfprintk(DIRCACHE, "NFS: nfs_do_filldir() filling ended @ cookie %Lu; 
returning = %d\n",
                        (unsigned long long)*desc->dir_cookie, res);
        return res;
-- 
2.28.0.rc0.12.gb6a658bd00c9




 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.