aboutsummaryrefslogtreecommitdiffstats
path: root/fs/nfs/client.c
diff options
context:
space:
mode:
authorDavid Howells <dhowells@redhat.com>2009-04-03 11:42:48 -0400
committerDavid Howells <dhowells@redhat.com>2009-04-03 11:42:48 -0400
commitb797cac7487dee6bfddeb161631c1bbc54fa3cdb (patch)
treedaf0770b33d5705d527e34193480f7eeae58a326 /fs/nfs/client.c
parent5d1acff159730770cbab68b19443518c92ab1000 (diff)
NFS: Add mount options to enable local caching on NFS
Add NFS mount options to allow the local caching support to be enabled. The attached patch makes it possible for the NFS filesystem to be told to make use of the network filesystem local caching service (FS-Cache). To be able to use this, a recent nfsutils package is required. There are three variant NFS mount options that can be added to a mount command to control caching for a mount. Only the last one specified takes effect: (*) Adding "fsc" will request caching. (*) Adding "fsc=<string>" will request caching and also specify a uniquifier. (*) Adding "nofsc" will disable caching. For example: mount warthog:/ /a -o fsc The cache of a particular superblock (NFS FSID) will be shared between all mounts of that volume, provided they have the same connection parameters and are not marked 'nosharecache'. Where it is otherwise impossible to distinguish superblocks because all the parameters are identical, but the 'nosharecache' option is supplied, a uniquifying string must be supplied, else only the first mount will be permitted to use the cache. If there's a key collision, then the second mount will disable caching and give a warning into the kernel log. Signed-off-by: David Howells <dhowells@redhat.com> Acked-by: Steve Dickson <steved@redhat.com> Acked-by: Trond Myklebust <Trond.Myklebust@netapp.com> Acked-by: Al Viro <viro@zeniv.linux.org.uk> Tested-by: Daire Byrne <Daire.Byrne@framestore.com>
Diffstat (limited to 'fs/nfs/client.c')
-rw-r--r--fs/nfs/client.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/fs/nfs/client.c b/fs/nfs/client.c
index 726fe5a845b4..75c9cd2aa119 100644
--- a/fs/nfs/client.c
+++ b/fs/nfs/client.c
@@ -765,6 +765,7 @@ static int nfs_init_server(struct nfs_server *server,
765 765
766 /* Initialise the client representation from the mount data */ 766 /* Initialise the client representation from the mount data */
767 server->flags = data->flags; 767 server->flags = data->flags;
768 server->options = data->options;
768 769
769 if (data->rsize) 770 if (data->rsize)
770 server->rsize = nfs_block_size(data->rsize, NULL); 771 server->rsize = nfs_block_size(data->rsize, NULL);
@@ -1153,6 +1154,7 @@ static int nfs4_init_server(struct nfs_server *server,
1153 /* Initialise the client representation from the mount data */ 1154 /* Initialise the client representation from the mount data */
1154 server->flags = data->flags; 1155 server->flags = data->flags;
1155 server->caps |= NFS_CAP_ATOMIC_OPEN; 1156 server->caps |= NFS_CAP_ATOMIC_OPEN;
1157 server->options = data->options;
1156 1158
1157 /* Get a client record */ 1159 /* Get a client record */
1158 error = nfs4_set_client(server, 1160 error = nfs4_set_client(server,