aboutsummaryrefslogtreecommitdiffstats
path: root/fs/nfs/nfs4proc.c
diff options
context:
space:
mode:
authorBryan Schumaker <bjschuma@netapp.com>2010-10-20 15:44:37 -0400
committerTrond Myklebust <Trond.Myklebust@netapp.com>2010-10-23 15:27:35 -0400
commit56e4ebf877b6043c289bda32a5a7385b80c17dee (patch)
tree160ae8d5b5ee3871d02a9f5283187430c9ec5ffe /fs/nfs/nfs4proc.c
parentafa8ccc978c24d8ab22e3b3b8cbd1054c84c070b (diff)
NFS: readdir with vmapped pages
We can use vmapped pages to read more information from the network at once. This will reduce the number of calls needed to complete a readdir. Signed-off-by: Bryan Schumaker <bjschuma@netapp.com> [trondmy: Added #include for linux/vmalloc.h> in fs/nfs/dir.c] Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Diffstat (limited to 'fs/nfs/nfs4proc.c')
-rw-r--r--fs/nfs/nfs4proc.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
index aa771c1af115..cb33c73206e3 100644
--- a/fs/nfs/nfs4proc.c
+++ b/fs/nfs/nfs4proc.c
@@ -2823,12 +2823,12 @@ static int nfs4_proc_mkdir(struct inode *dir, struct dentry *dentry,
2823} 2823}
2824 2824
2825static int _nfs4_proc_readdir(struct dentry *dentry, struct rpc_cred *cred, 2825static int _nfs4_proc_readdir(struct dentry *dentry, struct rpc_cred *cred,
2826 u64 cookie, struct page *page, unsigned int count, int plus) 2826 u64 cookie, struct page **pages, unsigned int count, int plus)
2827{ 2827{
2828 struct inode *dir = dentry->d_inode; 2828 struct inode *dir = dentry->d_inode;
2829 struct nfs4_readdir_arg args = { 2829 struct nfs4_readdir_arg args = {
2830 .fh = NFS_FH(dir), 2830 .fh = NFS_FH(dir),
2831 .pages = &page, 2831 .pages = pages,
2832 .pgbase = 0, 2832 .pgbase = 0,
2833 .count = count, 2833 .count = count,
2834 .bitmask = NFS_SERVER(dentry->d_inode)->attr_bitmask, 2834 .bitmask = NFS_SERVER(dentry->d_inode)->attr_bitmask,
@@ -2859,14 +2859,14 @@ static int _nfs4_proc_readdir(struct dentry *dentry, struct rpc_cred *cred,
2859} 2859}
2860 2860
2861static int nfs4_proc_readdir(struct dentry *dentry, struct rpc_cred *cred, 2861static int nfs4_proc_readdir(struct dentry *dentry, struct rpc_cred *cred,
2862 u64 cookie, struct page *page, unsigned int count, int plus) 2862 u64 cookie, struct page **pages, unsigned int count, int plus)
2863{ 2863{
2864 struct nfs4_exception exception = { }; 2864 struct nfs4_exception exception = { };
2865 int err; 2865 int err;
2866 do { 2866 do {
2867 err = nfs4_handle_exception(NFS_SERVER(dentry->d_inode), 2867 err = nfs4_handle_exception(NFS_SERVER(dentry->d_inode),
2868 _nfs4_proc_readdir(dentry, cred, cookie, 2868 _nfs4_proc_readdir(dentry, cred, cookie,
2869 page, count, plus), 2869 pages, count, plus),
2870 &exception); 2870 &exception);
2871 } while (exception.retry); 2871 } while (exception.retry);
2872 return err; 2872 return err;