diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2010-10-25 16:48:29 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2010-10-25 16:48:29 -0400 |
commit | 74eb94b218d087798a52c0b4f1379b635287a4b8 (patch) | |
tree | 4e467c3014c2b1169f6f71d88cf5d1598f3ce28e /fs/nfs/client.c | |
parent | 7b6181e06841f5ad15c4ff708b967b4db65a64de (diff) | |
parent | 9a84d38031c258a17bb39beed1e500eadee67407 (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.c | 17 |
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 | */ |
636 | static void nfs_destroy_server(struct nfs_server *server) | 636 | static 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 */ |