summaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorTrond Myklebust <Trond.Myklebust@netapp.com>2006-06-09 09:34:22 -0400
committerTrond Myklebust <Trond.Myklebust@netapp.com>2006-06-09 09:34:22 -0400
commit683b57b435326eb512c7305892683b6205669448 (patch)
treeca1e526ab5b27993c0c143c37bb31e18889eeb61 /include
parent8b23ea7bedb8b45a5bb56745fa3ff11018acf04e (diff)
downloadlinux-stable-683b57b435326eb512c7305892683b6205669448.tar.gz
linux-stable-683b57b435326eb512c7305892683b6205669448.tar.bz2
linux-stable-683b57b435326eb512c7305892683b6205669448.zip
NFSv4: Implement the fs_locations function call
NFSv4 allows for the fact that filesystems may be replicated across several servers or that they may be migrated to a backup server in case of failure of the primary server. fs_locations is an NFSv4 operation for retrieving information about the location of migrated and/or replicated filesystems. Based on an initial implementation by Jiaying Zhang <jiayingz@citi.umich.edu> Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Diffstat (limited to 'include')
-rw-r--r--include/linux/nfs4.h1
-rw-r--r--include/linux/nfs_xdr.h24
2 files changed, 25 insertions, 0 deletions
diff --git a/include/linux/nfs4.h b/include/linux/nfs4.h
index 0c1c306cdaec..1477fc857f6b 100644
--- a/include/linux/nfs4.h
+++ b/include/linux/nfs4.h
@@ -384,6 +384,7 @@ enum {
NFSPROC4_CLNT_DELEGRETURN,
NFSPROC4_CLNT_GETACL,
NFSPROC4_CLNT_SETACL,
+ NFSPROC4_CLNT_FS_LOCATIONS,
};
#endif
diff --git a/include/linux/nfs_xdr.h b/include/linux/nfs_xdr.h
index 95682f7d738a..15a20b815302 100644
--- a/include/linux/nfs_xdr.h
+++ b/include/linux/nfs_xdr.h
@@ -679,6 +679,30 @@ struct nfs4_server_caps_res {
u32 has_symlinks;
};
+struct nfs_fs_location {
+ unsigned int serverlen;
+ char * server;
+ unsigned int rootpathlen;
+ char * rootpath;
+};
+
+#define NFS_FS_LOCATIONS_MAXENTRIES 10
+struct nfs_fs_locations {
+ struct nfs_fattr fattr;
+ const struct nfs_server *server;
+ unsigned int fs_pathlen;
+ char * fs_path;
+ int nlocations;
+ struct nfs_fs_location locations[NFS_FS_LOCATIONS_MAXENTRIES];
+};
+
+struct nfs4_fs_locations_arg {
+ const struct nfs_fh *dir_fh;
+ const struct qstr *name;
+ struct page *page;
+ const u32 *bitmask;
+};
+
#endif /* CONFIG_NFS_V4 */
struct nfs_page;