aboutsummaryrefslogtreecommitdiffstats
path: root/fs/nfs/client.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2010-10-25 16:48:29 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2010-10-25 16:48:29 -0400
commit74eb94b218d087798a52c0b4f1379b635287a4b8 (patch)
tree4e467c3014c2b1169f6f71d88cf5d1598f3ce28e /fs/nfs/client.c
parent7b6181e06841f5ad15c4ff708b967b4db65a64de (diff)
parent9a84d38031c258a17bb39beed1e500eadee67407 (diff)
Merge branch 'nfs-for-2.6.37' of git://git.linux-nfs.org/projects/trondmy/nfs-2.6
* 'nfs-for-2.6.37' of git://git.linux-nfs.org/projects/trondmy/nfs-2.6: (67 commits) SUNRPC: Cleanup duplicate assignment in rpcauth_refreshcred nfs: fix unchecked value Ask for time_delta during fsinfo probe Revalidate caches on lock SUNRPC: After calling xprt_release(), we must restart from call_reserve NFSv4: Fix up the 'dircount' hint in encode_readdir NFSv4: Clean up nfs4_decode_dirent NFSv4: nfs4_decode_dirent must clear entry->fattr->valid NFSv4: Fix a regression in decode_getfattr NFSv4: Fix up decode_attr_filehandle() to handle the case of empty fh pointer NFS: Ensure we check all allocation return values in new readdir code NFS: Readdir plus in v4 NFS: introduce generic decode_getattr function NFS: check xdr_decode for errors NFS: nfs_readdir_filler catch all errors NFS: readdir with vmapped pages NFS: remove page size checking code NFS: decode_dirent should use an xdr_stream SUNRPC: Add a helper function xdr_inline_peek NFS: remove readdir plus limit ...
Diffstat (limited to 'fs/nfs/client.c')
-rw-r--r--fs/nfs/client.c17
1 files changed, 11 insertions, 6 deletions
diff --git a/fs/nfs/client.c b/fs/nfs/client.c
index e7340729af89..a882785eba41 100644
--- a/fs/nfs/client.c
+++ b/fs/nfs/client.c
@@ -635,7 +635,8 @@ static int nfs_create_rpc_client(struct nfs_client *clp,
635 */ 635 */
636static void nfs_destroy_server(struct nfs_server *server) 636static void nfs_destroy_server(struct nfs_server *server)
637{ 637{
638 if (!(server->flags & NFS_MOUNT_NONLM)) 638 if (!(server->flags & NFS_MOUNT_LOCAL_FLOCK) ||
639 !(server->flags & NFS_MOUNT_LOCAL_FCNTL))
639 nlmclnt_done(server->nlm_host); 640 nlmclnt_done(server->nlm_host);
640} 641}
641 642
@@ -657,7 +658,8 @@ static int nfs_start_lockd(struct nfs_server *server)
657 658
658 if (nlm_init.nfs_version > 3) 659 if (nlm_init.nfs_version > 3)
659 return 0; 660 return 0;
660 if (server->flags & NFS_MOUNT_NONLM) 661 if ((server->flags & NFS_MOUNT_LOCAL_FLOCK) &&
662 (server->flags & NFS_MOUNT_LOCAL_FCNTL))
661 return 0; 663 return 0;
662 664
663 switch (clp->cl_proto) { 665 switch (clp->cl_proto) {
@@ -901,8 +903,8 @@ static void nfs_server_set_fsinfo(struct nfs_server *server, struct nfs_fsinfo *
901 server->wtmult = nfs_block_bits(fsinfo->wtmult, NULL); 903 server->wtmult = nfs_block_bits(fsinfo->wtmult, NULL);
902 904
903 server->dtsize = nfs_block_size(fsinfo->dtpref, NULL); 905 server->dtsize = nfs_block_size(fsinfo->dtpref, NULL);
904 if (server->dtsize > PAGE_CACHE_SIZE) 906 if (server->dtsize > PAGE_CACHE_SIZE * NFS_MAX_READDIR_PAGES)
905 server->dtsize = PAGE_CACHE_SIZE; 907 server->dtsize = PAGE_CACHE_SIZE * NFS_MAX_READDIR_PAGES;
906 if (server->dtsize > server->rsize) 908 if (server->dtsize > server->rsize)
907 server->dtsize = server->rsize; 909 server->dtsize = server->rsize;
908 910
@@ -913,6 +915,8 @@ static void nfs_server_set_fsinfo(struct nfs_server *server, struct nfs_fsinfo *
913 915
914 server->maxfilesize = fsinfo->maxfilesize; 916 server->maxfilesize = fsinfo->maxfilesize;
915 917
918 server->time_delta = fsinfo->time_delta;
919
916 /* We're airborne Set socket buffersize */ 920 /* We're airborne Set socket buffersize */
917 rpc_setbufsize(server->client, server->wsize + 100, server->rsize + 100); 921 rpc_setbufsize(server->client, server->wsize + 100, server->rsize + 100);
918} 922}
@@ -1356,8 +1360,9 @@ static int nfs4_init_server(struct nfs_server *server,
1356 1360
1357 /* Initialise the client representation from the mount data */ 1361 /* Initialise the client representation from the mount data */
1358 server->flags = data->flags; 1362 server->flags = data->flags;
1359 server->caps |= NFS_CAP_ATOMIC_OPEN|NFS_CAP_CHANGE_ATTR| 1363 server->caps |= NFS_CAP_ATOMIC_OPEN|NFS_CAP_CHANGE_ATTR|NFS_CAP_POSIX_LOCK;
1360 NFS_CAP_POSIX_LOCK; 1364 if (!(data->flags & NFS_MOUNT_NORDIRPLUS))
1365 server->caps |= NFS_CAP_READDIRPLUS;
1361 server->options = data->options; 1366 server->options = data->options;
1362 1367
1363 /* Get a client record */ 1368 /* Get a client record */