OSDN Git Service

NFS: Remove unnecessary kmap in nfs_readdir_xdr_to_array()
authorTrond Myklebust <trond.myklebust@hammerspace.com>
Sun, 1 Nov 2020 18:31:20 +0000 (13:31 -0500)
committerTrond Myklebust <trond.myklebust@hammerspace.com>
Wed, 2 Dec 2020 19:05:51 +0000 (14:05 -0500)
The kmapped pointer is only used once per loop to check if we need to
exit.

Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
Reviewed-by: Benjamin Coddington <bcodding@redhat.com>
Tested-by: Benjamin Coddington <bcodding@redhat.com>
Tested-by: Dave Wysochanski <dwysocha@redhat.com>
fs/nfs/dir.c

index f724814..e8b0fcc 100644 (file)
@@ -759,7 +759,6 @@ int nfs_readdir_xdr_to_array(nfs_readdir_descriptor_t *desc, struct page *page,
        struct page *pages[NFS_MAX_READDIR_PAGES];
        struct nfs_entry entry;
        struct file     *file = desc->file;
-       struct nfs_cache_array *array;
        int status = -ENOMEM;
        unsigned int array_size = ARRAY_SIZE(pages);
 
@@ -778,11 +777,9 @@ int nfs_readdir_xdr_to_array(nfs_readdir_descriptor_t *desc, struct page *page,
                goto out;
        }
 
-       array = kmap(page);
-
        status = nfs_readdir_alloc_pages(pages, array_size);
        if (status < 0)
-               goto out_release_array;
+               goto out_release_label;
        do {
                unsigned int pglen;
                status = nfs_readdir_xdr_filler(pages, desc, &entry, file, inode);
@@ -797,11 +794,10 @@ int nfs_readdir_xdr_to_array(nfs_readdir_descriptor_t *desc, struct page *page,
                }
 
                status = nfs_readdir_page_filler(desc, &entry, pages, page, pglen);
-       } while (!status && !nfs_readdir_array_is_full(array));
+       } while (!status && nfs_readdir_page_needs_filling(page));
 
        nfs_readdir_free_pages(pages, array_size);
-out_release_array:
-       kunmap(page);
+out_release_label:
        nfs4_label_free(entry.label);
 out:
        nfs_free_fattr(entry.fattr);