summaryrefslogtreecommitdiffstats
path: root/support/include/nfs/nfs.h
diff options
context:
space:
mode:
authorneilbrown <neilbrown>2000-03-21 00:46:14 +0000
committerneilbrown <neilbrown>2000-03-21 00:46:14 +0000
commit93a8e35ff8def529f41b82a13440f2e9b46d0dbd (patch)
tree5fb6fbcccd77f51a5cf2ea17279cf16005fe06fc /support/include/nfs/nfs.h
parent6a66bb69d8fdb43f0abb58fd74566461f0e96633 (diff)
downloadnfs-utils-93a8e35ff8def529f41b82a13440f2e9b46d0dbd.tar.gz
nfs-utils-93a8e35ff8def529f41b82a13440f2e9b46d0dbd.tar.xz
nfs-utils-93a8e35ff8def529f41b82a13440f2e9b46d0dbd.zip
Change to using variable length file handles, for better v3 support, and
introduce getfh_size to use new (2.3.99) syscall for getting file handles with length
Diffstat (limited to 'support/include/nfs/nfs.h')
-rw-r--r--support/include/nfs/nfs.h49
1 files changed, 19 insertions, 30 deletions
diff --git a/support/include/nfs/nfs.h b/support/include/nfs/nfs.h
index 0cfed07..937c1be 100644
--- a/support/include/nfs/nfs.h
+++ b/support/include/nfs/nfs.h
@@ -7,36 +7,17 @@
#include <rpcsvc/nfs_prot.h>
#include <nfs/export.h>
-struct dentry;
+#define NFS3_FHSIZE 64
+#define NFS_FHSIZE 32
-/*
- * This is the new "dentry style" Linux NFSv2 file handle.
- *
- * The xino and xdev fields are currently used to transport the
- * ino/dev of the exported inode.
- */
-struct nfs_fhbase {
- struct dentry * fb_dentry; /* dentry cookie */
- u_int32_t fb_ino; /* our inode number */
- u_int32_t fb_dirino; /* dir inode number */
- u_int32_t fb_dev; /* our device */
- u_int32_t fb_xdev;
- u_int32_t fb_xino;
+struct nfs_fh_len {
+ int fh_size;
+ u_int8_t fh_handle[NFS3_FHSIZE];
};
-
-#define NFS_FH_PADDING (NFS_FHSIZE - sizeof(struct nfs_fhbase))
-struct knfs_fh {
- struct nfs_fhbase fh_base;
- u_int8_t fh_cookie[NFS_FH_PADDING];
+struct nfs_fh_old {
+ u_int8_t fh_handle[NFS_FHSIZE];
};
-#define fh_dcookie fh_base.fb_dentry
-#define fh_ino fh_base.fb_ino
-#define fh_dirino fh_base.fb_dirino
-#define fh_dev fh_base.fb_dev
-#define fh_xdev fh_base.fb_xdev
-#define fh_xino fh_base.fb_xino
-
/*
* Version of the syscall interface
*/
@@ -53,6 +34,7 @@ struct knfs_fh {
#define NFSCTL_UGIDUPDATE 5 /* update a client's uid/gid map. */
#define NFSCTL_GETFH 6 /* get an fh (used by mountd) */
#define NFSCTL_GETFD 7 /* get an fh by path (used by mountd) */
+#define NFSCTL_GETFS 8 /* get an fh by path with max size (used by mountd) */
/* Above this is for lockd. */
#define NFSCTL_LOCKD 0x10000
@@ -113,6 +95,13 @@ struct nfsctl_fdparm {
int gd_version;
};
+/* GETFS - GET Filehandle with Size */
+struct nfsctl_fsparm {
+ struct sockaddr gd_addr;
+ char gd_path[NFS_MAXPATHLEN+1];
+ int gd_maxlen;
+};
+
/*
* This is the argument union.
*/
@@ -125,7 +114,7 @@ struct nfsctl_arg {
struct nfsctl_uidmap u_umap;
struct nfsctl_fhparm u_getfh;
struct nfsctl_fdparm u_getfd;
- unsigned int u_debug;
+ struct nfsctl_fsparm u_getfs;
} u;
#define ca_svc u.u_svc
#define ca_client u.u_client
@@ -133,13 +122,13 @@ struct nfsctl_arg {
#define ca_umap u.u_umap
#define ca_getfh u.u_getfh
#define ca_getfd u.u_getfd
+#define ca_getfs u.u_getfs
#define ca_authd u.u_authd
-#define ca_debug u.u_debug
};
union nfsctl_res {
- struct knfs_fh cr_getfh;
- unsigned int cr_debug;
+ struct nfs_fh_old cr_getfh;
+ struct nfs_fh_len cr_getfs;
};
#endif /* _NFS_NFS_H */