|
@@ -145,6 +145,44 @@ struct nfs4_change_info {
|
|
|
};
|
|
|
|
|
|
struct nfs_seqid;
|
|
|
+
|
|
|
+/* nfs41 sessions channel attributes */
|
|
|
+struct nfs4_channel_attrs {
|
|
|
+ u32 headerpadsz;
|
|
|
+ u32 max_rqst_sz;
|
|
|
+ u32 max_resp_sz;
|
|
|
+ u32 max_resp_sz_cached;
|
|
|
+ u32 max_ops;
|
|
|
+ u32 max_reqs;
|
|
|
+};
|
|
|
+
|
|
|
+/* nfs41 sessions slot seqid */
|
|
|
+struct nfs4_slot {
|
|
|
+ u32 seq_nr;
|
|
|
+};
|
|
|
+
|
|
|
+struct nfs4_sequence_args {
|
|
|
+ struct nfs4_session *sa_session;
|
|
|
+ u8 sa_slotid;
|
|
|
+ u8 sa_cache_this;
|
|
|
+};
|
|
|
+
|
|
|
+struct nfs4_sequence_res {
|
|
|
+ struct nfs4_session *sr_session;
|
|
|
+ u8 sr_slotid; /* slot used to send request */
|
|
|
+ unsigned long sr_renewal_time;
|
|
|
+ int sr_status; /* sequence operation status */
|
|
|
+};
|
|
|
+
|
|
|
+struct nfs4_get_lease_time_args {
|
|
|
+ struct nfs4_sequence_args la_seq_args;
|
|
|
+};
|
|
|
+
|
|
|
+struct nfs4_get_lease_time_res {
|
|
|
+ struct nfs_fsinfo *lr_fsinfo;
|
|
|
+ struct nfs4_sequence_res lr_seq_res;
|
|
|
+};
|
|
|
+
|
|
|
/*
|
|
|
* Arguments to the open call.
|
|
|
*/
|
|
@@ -165,6 +203,7 @@ struct nfs_openargs {
|
|
|
const struct nfs_server *server; /* Needed for ID mapping */
|
|
|
const u32 * bitmask;
|
|
|
__u32 claim;
|
|
|
+ struct nfs4_sequence_args seq_args;
|
|
|
};
|
|
|
|
|
|
struct nfs_openres {
|
|
@@ -181,6 +220,7 @@ struct nfs_openres {
|
|
|
__u32 do_recall;
|
|
|
__u64 maxsize;
|
|
|
__u32 attrset[NFS4_BITMAP_SIZE];
|
|
|
+ struct nfs4_sequence_res seq_res;
|
|
|
};
|
|
|
|
|
|
/*
|
|
@@ -206,6 +246,7 @@ struct nfs_closeargs {
|
|
|
struct nfs_seqid * seqid;
|
|
|
fmode_t fmode;
|
|
|
const u32 * bitmask;
|
|
|
+ struct nfs4_sequence_args seq_args;
|
|
|
};
|
|
|
|
|
|
struct nfs_closeres {
|
|
@@ -213,6 +254,7 @@ struct nfs_closeres {
|
|
|
struct nfs_fattr * fattr;
|
|
|
struct nfs_seqid * seqid;
|
|
|
const struct nfs_server *server;
|
|
|
+ struct nfs4_sequence_res seq_res;
|
|
|
};
|
|
|
/*
|
|
|
* * Arguments to the lock,lockt, and locku call.
|
|
@@ -233,12 +275,14 @@ struct nfs_lock_args {
|
|
|
unsigned char block : 1;
|
|
|
unsigned char reclaim : 1;
|
|
|
unsigned char new_lock_owner : 1;
|
|
|
+ struct nfs4_sequence_args seq_args;
|
|
|
};
|
|
|
|
|
|
struct nfs_lock_res {
|
|
|
nfs4_stateid stateid;
|
|
|
struct nfs_seqid * lock_seqid;
|
|
|
struct nfs_seqid * open_seqid;
|
|
|
+ struct nfs4_sequence_res seq_res;
|
|
|
};
|
|
|
|
|
|
struct nfs_locku_args {
|
|
@@ -246,32 +290,38 @@ struct nfs_locku_args {
|
|
|
struct file_lock * fl;
|
|
|
struct nfs_seqid * seqid;
|
|
|
nfs4_stateid * stateid;
|
|
|
+ struct nfs4_sequence_args seq_args;
|
|
|
};
|
|
|
|
|
|
struct nfs_locku_res {
|
|
|
nfs4_stateid stateid;
|
|
|
struct nfs_seqid * seqid;
|
|
|
+ struct nfs4_sequence_res seq_res;
|
|
|
};
|
|
|
|
|
|
struct nfs_lockt_args {
|
|
|
struct nfs_fh * fh;
|
|
|
struct file_lock * fl;
|
|
|
struct nfs_lowner lock_owner;
|
|
|
+ struct nfs4_sequence_args seq_args;
|
|
|
};
|
|
|
|
|
|
struct nfs_lockt_res {
|
|
|
struct file_lock * denied; /* LOCK, LOCKT failed */
|
|
|
+ struct nfs4_sequence_res seq_res;
|
|
|
};
|
|
|
|
|
|
struct nfs4_delegreturnargs {
|
|
|
const struct nfs_fh *fhandle;
|
|
|
const nfs4_stateid *stateid;
|
|
|
const u32 * bitmask;
|
|
|
+ struct nfs4_sequence_args seq_args;
|
|
|
};
|
|
|
|
|
|
struct nfs4_delegreturnres {
|
|
|
struct nfs_fattr * fattr;
|
|
|
const struct nfs_server *server;
|
|
|
+ struct nfs4_sequence_res seq_res;
|
|
|
};
|
|
|
|
|
|
/*
|
|
@@ -284,12 +334,14 @@ struct nfs_readargs {
|
|
|
__u32 count;
|
|
|
unsigned int pgbase;
|
|
|
struct page ** pages;
|
|
|
+ struct nfs4_sequence_args seq_args;
|
|
|
};
|
|
|
|
|
|
struct nfs_readres {
|
|
|
struct nfs_fattr * fattr;
|
|
|
__u32 count;
|
|
|
int eof;
|
|
|
+ struct nfs4_sequence_res seq_res;
|
|
|
};
|
|
|
|
|
|
/*
|
|
@@ -304,6 +356,7 @@ struct nfs_writeargs {
|
|
|
unsigned int pgbase;
|
|
|
struct page ** pages;
|
|
|
const u32 * bitmask;
|
|
|
+ struct nfs4_sequence_args seq_args;
|
|
|
};
|
|
|
|
|
|
struct nfs_writeverf {
|
|
@@ -316,6 +369,7 @@ struct nfs_writeres {
|
|
|
struct nfs_writeverf * verf;
|
|
|
__u32 count;
|
|
|
const struct nfs_server *server;
|
|
|
+ struct nfs4_sequence_res seq_res;
|
|
|
};
|
|
|
|
|
|
/*
|
|
@@ -325,12 +379,14 @@ struct nfs_removeargs {
|
|
|
const struct nfs_fh *fh;
|
|
|
struct qstr name;
|
|
|
const u32 * bitmask;
|
|
|
+ struct nfs4_sequence_args seq_args;
|
|
|
};
|
|
|
|
|
|
struct nfs_removeres {
|
|
|
const struct nfs_server *server;
|
|
|
struct nfs4_change_info cinfo;
|
|
|
struct nfs_fattr dir_attr;
|
|
|
+ struct nfs4_sequence_res seq_res;
|
|
|
};
|
|
|
|
|
|
/*
|
|
@@ -383,6 +439,7 @@ struct nfs_setattrargs {
|
|
|
struct iattr * iap;
|
|
|
const struct nfs_server * server; /* Needed for name mapping */
|
|
|
const u32 * bitmask;
|
|
|
+ struct nfs4_sequence_args seq_args;
|
|
|
};
|
|
|
|
|
|
struct nfs_setaclargs {
|
|
@@ -390,6 +447,11 @@ struct nfs_setaclargs {
|
|
|
size_t acl_len;
|
|
|
unsigned int acl_pgbase;
|
|
|
struct page ** acl_pages;
|
|
|
+ struct nfs4_sequence_args seq_args;
|
|
|
+};
|
|
|
+
|
|
|
+struct nfs_setaclres {
|
|
|
+ struct nfs4_sequence_res seq_res;
|
|
|
};
|
|
|
|
|
|
struct nfs_getaclargs {
|
|
@@ -397,11 +459,18 @@ struct nfs_getaclargs {
|
|
|
size_t acl_len;
|
|
|
unsigned int acl_pgbase;
|
|
|
struct page ** acl_pages;
|
|
|
+ struct nfs4_sequence_args seq_args;
|
|
|
+};
|
|
|
+
|
|
|
+struct nfs_getaclres {
|
|
|
+ size_t acl_len;
|
|
|
+ struct nfs4_sequence_res seq_res;
|
|
|
};
|
|
|
|
|
|
struct nfs_setattrres {
|
|
|
struct nfs_fattr * fattr;
|
|
|
const struct nfs_server * server;
|
|
|
+ struct nfs4_sequence_res seq_res;
|
|
|
};
|
|
|
|
|
|
struct nfs_linkargs {
|
|
@@ -583,6 +652,7 @@ struct nfs4_accessargs {
|
|
|
const struct nfs_fh * fh;
|
|
|
const u32 * bitmask;
|
|
|
u32 access;
|
|
|
+ struct nfs4_sequence_args seq_args;
|
|
|
};
|
|
|
|
|
|
struct nfs4_accessres {
|
|
@@ -590,6 +660,7 @@ struct nfs4_accessres {
|
|
|
struct nfs_fattr * fattr;
|
|
|
u32 supported;
|
|
|
u32 access;
|
|
|
+ struct nfs4_sequence_res seq_res;
|
|
|
};
|
|
|
|
|
|
struct nfs4_create_arg {
|
|
@@ -609,6 +680,7 @@ struct nfs4_create_arg {
|
|
|
const struct iattr * attrs;
|
|
|
const struct nfs_fh * dir_fh;
|
|
|
const u32 * bitmask;
|
|
|
+ struct nfs4_sequence_args seq_args;
|
|
|
};
|
|
|
|
|
|
struct nfs4_create_res {
|
|
@@ -617,21 +689,30 @@ struct nfs4_create_res {
|
|
|
struct nfs_fattr * fattr;
|
|
|
struct nfs4_change_info dir_cinfo;
|
|
|
struct nfs_fattr * dir_fattr;
|
|
|
+ struct nfs4_sequence_res seq_res;
|
|
|
};
|
|
|
|
|
|
struct nfs4_fsinfo_arg {
|
|
|
const struct nfs_fh * fh;
|
|
|
const u32 * bitmask;
|
|
|
+ struct nfs4_sequence_args seq_args;
|
|
|
+};
|
|
|
+
|
|
|
+struct nfs4_fsinfo_res {
|
|
|
+ struct nfs_fsinfo *fsinfo;
|
|
|
+ struct nfs4_sequence_res seq_res;
|
|
|
};
|
|
|
|
|
|
struct nfs4_getattr_arg {
|
|
|
const struct nfs_fh * fh;
|
|
|
const u32 * bitmask;
|
|
|
+ struct nfs4_sequence_args seq_args;
|
|
|
};
|
|
|
|
|
|
struct nfs4_getattr_res {
|
|
|
const struct nfs_server * server;
|
|
|
struct nfs_fattr * fattr;
|
|
|
+ struct nfs4_sequence_res seq_res;
|
|
|
};
|
|
|
|
|
|
struct nfs4_link_arg {
|
|
@@ -639,6 +720,7 @@ struct nfs4_link_arg {
|
|
|
const struct nfs_fh * dir_fh;
|
|
|
const struct qstr * name;
|
|
|
const u32 * bitmask;
|
|
|
+ struct nfs4_sequence_args seq_args;
|
|
|
};
|
|
|
|
|
|
struct nfs4_link_res {
|
|
@@ -646,6 +728,7 @@ struct nfs4_link_res {
|
|
|
struct nfs_fattr * fattr;
|
|
|
struct nfs4_change_info cinfo;
|
|
|
struct nfs_fattr * dir_attr;
|
|
|
+ struct nfs4_sequence_res seq_res;
|
|
|
};
|
|
|
|
|
|
|
|
@@ -653,21 +736,30 @@ struct nfs4_lookup_arg {
|
|
|
const struct nfs_fh * dir_fh;
|
|
|
const struct qstr * name;
|
|
|
const u32 * bitmask;
|
|
|
+ struct nfs4_sequence_args seq_args;
|
|
|
};
|
|
|
|
|
|
struct nfs4_lookup_res {
|
|
|
const struct nfs_server * server;
|
|
|
struct nfs_fattr * fattr;
|
|
|
struct nfs_fh * fh;
|
|
|
+ struct nfs4_sequence_res seq_res;
|
|
|
};
|
|
|
|
|
|
struct nfs4_lookup_root_arg {
|
|
|
const u32 * bitmask;
|
|
|
+ struct nfs4_sequence_args seq_args;
|
|
|
};
|
|
|
|
|
|
struct nfs4_pathconf_arg {
|
|
|
const struct nfs_fh * fh;
|
|
|
const u32 * bitmask;
|
|
|
+ struct nfs4_sequence_args seq_args;
|
|
|
+};
|
|
|
+
|
|
|
+struct nfs4_pathconf_res {
|
|
|
+ struct nfs_pathconf *pathconf;
|
|
|
+ struct nfs4_sequence_res seq_res;
|
|
|
};
|
|
|
|
|
|
struct nfs4_readdir_arg {
|
|
@@ -678,11 +770,13 @@ struct nfs4_readdir_arg {
|
|
|
struct page ** pages; /* zero-copy data */
|
|
|
unsigned int pgbase; /* zero-copy data */
|
|
|
const u32 * bitmask;
|
|
|
+ struct nfs4_sequence_args seq_args;
|
|
|
};
|
|
|
|
|
|
struct nfs4_readdir_res {
|
|
|
nfs4_verifier verifier;
|
|
|
unsigned int pgbase;
|
|
|
+ struct nfs4_sequence_res seq_res;
|
|
|
};
|
|
|
|
|
|
struct nfs4_readlink {
|
|
@@ -690,6 +784,11 @@ struct nfs4_readlink {
|
|
|
unsigned int pgbase;
|
|
|
unsigned int pglen; /* zero-copy data */
|
|
|
struct page ** pages; /* zero-copy data */
|
|
|
+ struct nfs4_sequence_args seq_args;
|
|
|
+};
|
|
|
+
|
|
|
+struct nfs4_readlink_res {
|
|
|
+ struct nfs4_sequence_res seq_res;
|
|
|
};
|
|
|
|
|
|
struct nfs4_rename_arg {
|
|
@@ -698,6 +797,7 @@ struct nfs4_rename_arg {
|
|
|
const struct qstr * old_name;
|
|
|
const struct qstr * new_name;
|
|
|
const u32 * bitmask;
|
|
|
+ struct nfs4_sequence_args seq_args;
|
|
|
};
|
|
|
|
|
|
struct nfs4_rename_res {
|
|
@@ -706,6 +806,7 @@ struct nfs4_rename_res {
|
|
|
struct nfs_fattr * old_fattr;
|
|
|
struct nfs4_change_info new_cinfo;
|
|
|
struct nfs_fattr * new_fattr;
|
|
|
+ struct nfs4_sequence_res seq_res;
|
|
|
};
|
|
|
|
|
|
#define NFS4_SETCLIENTID_NAMELEN (127)
|
|
@@ -724,6 +825,17 @@ struct nfs4_setclientid {
|
|
|
struct nfs4_statfs_arg {
|
|
|
const struct nfs_fh * fh;
|
|
|
const u32 * bitmask;
|
|
|
+ struct nfs4_sequence_args seq_args;
|
|
|
+};
|
|
|
+
|
|
|
+struct nfs4_statfs_res {
|
|
|
+ struct nfs_fsstat *fsstat;
|
|
|
+ struct nfs4_sequence_res seq_res;
|
|
|
+};
|
|
|
+
|
|
|
+struct nfs4_server_caps_arg {
|
|
|
+ struct nfs_fh *fhandle;
|
|
|
+ struct nfs4_sequence_args seq_args;
|
|
|
};
|
|
|
|
|
|
struct nfs4_server_caps_res {
|
|
@@ -731,6 +843,7 @@ struct nfs4_server_caps_res {
|
|
|
u32 acl_bitmask;
|
|
|
u32 has_links;
|
|
|
u32 has_symlinks;
|
|
|
+ struct nfs4_sequence_res seq_res;
|
|
|
};
|
|
|
|
|
|
struct nfs4_string {
|
|
@@ -765,10 +878,68 @@ struct nfs4_fs_locations_arg {
|
|
|
const struct qstr *name;
|
|
|
struct page *page;
|
|
|
const u32 *bitmask;
|
|
|
+ struct nfs4_sequence_args seq_args;
|
|
|
+};
|
|
|
+
|
|
|
+struct nfs4_fs_locations_res {
|
|
|
+ struct nfs4_fs_locations *fs_locations;
|
|
|
+ struct nfs4_sequence_res seq_res;
|
|
|
};
|
|
|
|
|
|
#endif /* CONFIG_NFS_V4 */
|
|
|
|
|
|
+struct nfstime4 {
|
|
|
+ u64 seconds;
|
|
|
+ u32 nseconds;
|
|
|
+};
|
|
|
+
|
|
|
+#ifdef CONFIG_NFS_V4_1
|
|
|
+struct nfs_impl_id4 {
|
|
|
+ u32 domain_len;
|
|
|
+ char *domain;
|
|
|
+ u32 name_len;
|
|
|
+ char *name;
|
|
|
+ struct nfstime4 date;
|
|
|
+};
|
|
|
+
|
|
|
+#define NFS4_EXCHANGE_ID_LEN (48)
|
|
|
+struct nfs41_exchange_id_args {
|
|
|
+ struct nfs_client *client;
|
|
|
+ nfs4_verifier *verifier;
|
|
|
+ unsigned int id_len;
|
|
|
+ char id[NFS4_EXCHANGE_ID_LEN];
|
|
|
+ u32 flags;
|
|
|
+};
|
|
|
+
|
|
|
+struct server_owner {
|
|
|
+ uint64_t minor_id;
|
|
|
+ uint32_t major_id_sz;
|
|
|
+ char major_id[NFS4_OPAQUE_LIMIT];
|
|
|
+};
|
|
|
+
|
|
|
+struct server_scope {
|
|
|
+ uint32_t server_scope_sz;
|
|
|
+ char server_scope[NFS4_OPAQUE_LIMIT];
|
|
|
+};
|
|
|
+
|
|
|
+struct nfs41_exchange_id_res {
|
|
|
+ struct nfs_client *client;
|
|
|
+ u32 flags;
|
|
|
+};
|
|
|
+
|
|
|
+struct nfs41_create_session_args {
|
|
|
+ struct nfs_client *client;
|
|
|
+ uint32_t flags;
|
|
|
+ uint32_t cb_program;
|
|
|
+ struct nfs4_channel_attrs fc_attrs; /* Fore Channel */
|
|
|
+ struct nfs4_channel_attrs bc_attrs; /* Back Channel */
|
|
|
+};
|
|
|
+
|
|
|
+struct nfs41_create_session_res {
|
|
|
+ struct nfs_client *client;
|
|
|
+};
|
|
|
+#endif /* CONFIG_NFS_V4_1 */
|
|
|
+
|
|
|
struct nfs_page;
|
|
|
|
|
|
#define NFS_PAGEVEC_SIZE (8U)
|