diff options
author | Benny Halevy <bhalevy@panasas.com> | 2009-04-01 09:22:29 -0400 |
---|---|---|
committer | Benny Halevy <bhalevy@panasas.com> | 2009-06-17 15:23:57 -0400 |
commit | 99fe60d062cfecf382c036065b3278b82b6c5eff (patch) | |
tree | b4451fc4bb42c0915c4f736cc5fdae9e818b55d4 /include/linux/nfs_xdr.h | |
parent | 938e10109115a71cc69d475122f21cf75e5046cd (diff) |
nfs41: exchange_id operation
Implement the exchange_id operation conforming to
http://tools.ietf.org/html/draft-ietf-nfsv4-minorversion1-26
Unlike NFSv4.0, NFSv4.1 requires machine credentials. RPC_AUTH_GSS machine
credentials will be passed into the kernel at mount time to be available for
the exchange_id operation.
RPC_AUTH_UNIX root mounts can use the UNIX root credential. Store the root
credential in the nfs_client struct.
Without a credential, NFSv4.1 state renewal fails.
[nfs41: establish clientid via exchange id only if cred != NULL]
Signed-off-by: Andy Adamson<andros@umich.edu>
Signed-off-by: Benny Halevy <bhalevy@panasas.com>
[nfsd41: move nfstime4 from under CONFIG_NFS_V4_1]
Signed-off-by: Andy Adamson <andros@netapp.com>
Signed-off-by: Benny Halevy <bhalevy@panasas.com>
[nfs41: do not wait a lease time in exchange id]
Signed-off-by: Andy Adamson <andros@netapp.com>
Signed-off-by: Benny Halevy <bhalevy@panasas.com>
[nfs41: pass *session in seq_args and seq_res]
Signed-off-by: Benny Halevy <bhalevy@panasas.com>
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
[nfs41: Ignoring impid in decode_exchange_id is missing a READ_BUF]
Signed-off-by: Benny Halevy <bhalevy@panasas.com>
[nfs41: fix Xcode_exchange_id's xdr Xcoding pointer type]
[nfs41: get rid of unused struct nfs41_exchange_id_res members]
Signed-off-by: Benny Halevy <bhalevy@panasas.com>
Diffstat (limited to 'include/linux/nfs_xdr.h')
-rw-r--r-- | include/linux/nfs_xdr.h | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/include/linux/nfs_xdr.h b/include/linux/nfs_xdr.h index 4ac14b40efc9..5d70b924af5e 100644 --- a/include/linux/nfs_xdr.h +++ b/include/linux/nfs_xdr.h | |||
@@ -879,6 +879,46 @@ struct nfs4_fs_locations_res { | |||
879 | 879 | ||
880 | #endif /* CONFIG_NFS_V4 */ | 880 | #endif /* CONFIG_NFS_V4 */ |
881 | 881 | ||
882 | struct nfstime4 { | ||
883 | u64 seconds; | ||
884 | u32 nseconds; | ||
885 | }; | ||
886 | |||
887 | #ifdef CONFIG_NFS_V4_1 | ||
888 | struct nfs_impl_id4 { | ||
889 | u32 domain_len; | ||
890 | char *domain; | ||
891 | u32 name_len; | ||
892 | char *name; | ||
893 | struct nfstime4 date; | ||
894 | }; | ||
895 | |||
896 | #define NFS4_EXCHANGE_ID_LEN (48) | ||
897 | struct nfs41_exchange_id_args { | ||
898 | struct nfs_client *client; | ||
899 | nfs4_verifier *verifier; | ||
900 | unsigned int id_len; | ||
901 | char id[NFS4_EXCHANGE_ID_LEN]; | ||
902 | u32 flags; | ||
903 | }; | ||
904 | |||
905 | struct server_owner { | ||
906 | uint64_t minor_id; | ||
907 | uint32_t major_id_sz; | ||
908 | char major_id[NFS4_OPAQUE_LIMIT]; | ||
909 | }; | ||
910 | |||
911 | struct server_scope { | ||
912 | uint32_t server_scope_sz; | ||
913 | char server_scope[NFS4_OPAQUE_LIMIT]; | ||
914 | }; | ||
915 | |||
916 | struct nfs41_exchange_id_res { | ||
917 | struct nfs_client *client; | ||
918 | u32 flags; | ||
919 | }; | ||
920 | #endif /* CONFIG_NFS_V4_1 */ | ||
921 | |||
882 | struct nfs_page; | 922 | struct nfs_page; |
883 | 923 | ||
884 | #define NFS_PAGEVEC_SIZE (8U) | 924 | #define NFS_PAGEVEC_SIZE (8U) |