diff options
author | Dan Williams <dan.j.williams@intel.com> | 2009-09-08 20:55:21 -0400 |
---|---|---|
committer | Dan Williams <dan.j.williams@intel.com> | 2009-09-08 20:55:21 -0400 |
commit | bbb20089a3275a19e475dbc21320c3742e3ca423 (patch) | |
tree | 216fdc1cbef450ca688135c5b8969169482d9a48 /include/linux/nfsd | |
parent | 3e48e656903e9fd8bc805c6a2c4264d7808d315b (diff) | |
parent | 657a77fa7284d8ae28dfa48f1dc5d919bf5b2843 (diff) |
Merge branch 'dmaengine' into async-tx-next
Conflicts:
crypto/async_tx/async_xor.c
drivers/dma/ioat/dma_v2.h
drivers/dma/ioat/pci.c
drivers/md/raid5.c
Diffstat (limited to 'include/linux/nfsd')
-rw-r--r-- | include/linux/nfsd/cache.h | 3 | ||||
-rw-r--r-- | include/linux/nfsd/export.h | 6 | ||||
-rw-r--r-- | include/linux/nfsd/nfsfh.h | 7 | ||||
-rw-r--r-- | include/linux/nfsd/state.h | 45 | ||||
-rw-r--r-- | include/linux/nfsd/xdr4.h | 28 |
5 files changed, 46 insertions, 43 deletions
diff --git a/include/linux/nfsd/cache.h b/include/linux/nfsd/cache.h index 5bccaab81056..3a3f58934f5e 100644 --- a/include/linux/nfsd/cache.h +++ b/include/linux/nfsd/cache.h | |||
@@ -14,8 +14,7 @@ | |||
14 | #include <linux/uio.h> | 14 | #include <linux/uio.h> |
15 | 15 | ||
16 | /* | 16 | /* |
17 | * Representation of a reply cache entry. The first two members *must* | 17 | * Representation of a reply cache entry. |
18 | * be hash_next and hash_prev. | ||
19 | */ | 18 | */ |
20 | struct svc_cacherep { | 19 | struct svc_cacherep { |
21 | struct hlist_node c_hash; | 20 | struct hlist_node c_hash; |
diff --git a/include/linux/nfsd/export.h b/include/linux/nfsd/export.h index bcd0201589f8..a6d9ef2bb34a 100644 --- a/include/linux/nfsd/export.h +++ b/include/linux/nfsd/export.h | |||
@@ -125,11 +125,9 @@ void nfsd_export_flush(void); | |||
125 | void exp_readlock(void); | 125 | void exp_readlock(void); |
126 | void exp_readunlock(void); | 126 | void exp_readunlock(void); |
127 | struct svc_export * rqst_exp_get_by_name(struct svc_rqst *, | 127 | struct svc_export * rqst_exp_get_by_name(struct svc_rqst *, |
128 | struct vfsmount *, | 128 | struct path *); |
129 | struct dentry *); | ||
130 | struct svc_export * rqst_exp_parent(struct svc_rqst *, | 129 | struct svc_export * rqst_exp_parent(struct svc_rqst *, |
131 | struct vfsmount *mnt, | 130 | struct path *); |
132 | struct dentry *dentry); | ||
133 | int exp_rootfh(struct auth_domain *, | 131 | int exp_rootfh(struct auth_domain *, |
134 | char *path, struct knfsd_fh *, int maxsize); | 132 | char *path, struct knfsd_fh *, int maxsize); |
135 | __be32 exp_pseudoroot(struct svc_rqst *, struct svc_fh *); | 133 | __be32 exp_pseudoroot(struct svc_rqst *, struct svc_fh *); |
diff --git a/include/linux/nfsd/nfsfh.h b/include/linux/nfsd/nfsfh.h index afa19016c4a8..8f641c908450 100644 --- a/include/linux/nfsd/nfsfh.h +++ b/include/linux/nfsd/nfsfh.h | |||
@@ -151,9 +151,15 @@ typedef struct svc_fh { | |||
151 | __u64 fh_pre_size; /* size before operation */ | 151 | __u64 fh_pre_size; /* size before operation */ |
152 | struct timespec fh_pre_mtime; /* mtime before oper */ | 152 | struct timespec fh_pre_mtime; /* mtime before oper */ |
153 | struct timespec fh_pre_ctime; /* ctime before oper */ | 153 | struct timespec fh_pre_ctime; /* ctime before oper */ |
154 | /* | ||
155 | * pre-op nfsv4 change attr: note must check IS_I_VERSION(inode) | ||
156 | * to find out if it is valid. | ||
157 | */ | ||
158 | u64 fh_pre_change; | ||
154 | 159 | ||
155 | /* Post-op attributes saved in fh_unlock */ | 160 | /* Post-op attributes saved in fh_unlock */ |
156 | struct kstat fh_post_attr; /* full attrs after operation */ | 161 | struct kstat fh_post_attr; /* full attrs after operation */ |
162 | u64 fh_post_change; /* nfsv4 change; see above */ | ||
157 | #endif /* CONFIG_NFSD_V3 */ | 163 | #endif /* CONFIG_NFSD_V3 */ |
158 | 164 | ||
159 | } svc_fh; | 165 | } svc_fh; |
@@ -298,6 +304,7 @@ fill_pre_wcc(struct svc_fh *fhp) | |||
298 | fhp->fh_pre_mtime = inode->i_mtime; | 304 | fhp->fh_pre_mtime = inode->i_mtime; |
299 | fhp->fh_pre_ctime = inode->i_ctime; | 305 | fhp->fh_pre_ctime = inode->i_ctime; |
300 | fhp->fh_pre_size = inode->i_size; | 306 | fhp->fh_pre_size = inode->i_size; |
307 | fhp->fh_pre_change = inode->i_version; | ||
301 | fhp->fh_pre_saved = 1; | 308 | fhp->fh_pre_saved = 1; |
302 | } | 309 | } |
303 | } | 310 | } |
diff --git a/include/linux/nfsd/state.h b/include/linux/nfsd/state.h index 4d61c873feed..57ab2ed08459 100644 --- a/include/linux/nfsd/state.h +++ b/include/linux/nfsd/state.h | |||
@@ -41,7 +41,6 @@ | |||
41 | #include <linux/kref.h> | 41 | #include <linux/kref.h> |
42 | #include <linux/sunrpc/clnt.h> | 42 | #include <linux/sunrpc/clnt.h> |
43 | 43 | ||
44 | #define NFS4_OPAQUE_LIMIT 1024 | ||
45 | typedef struct { | 44 | typedef struct { |
46 | u32 cl_boot; | 45 | u32 cl_boot; |
47 | u32 cl_id; | 46 | u32 cl_id; |
@@ -61,15 +60,6 @@ typedef struct { | |||
61 | #define si_stateownerid si_opaque.so_stateownerid | 60 | #define si_stateownerid si_opaque.so_stateownerid |
62 | #define si_fileid si_opaque.so_fileid | 61 | #define si_fileid si_opaque.so_fileid |
63 | 62 | ||
64 | |||
65 | struct nfs4_cb_recall { | ||
66 | u32 cbr_ident; | ||
67 | int cbr_trunc; | ||
68 | stateid_t cbr_stateid; | ||
69 | struct knfsd_fh cbr_fh; | ||
70 | struct nfs4_delegation *cbr_dp; | ||
71 | }; | ||
72 | |||
73 | struct nfs4_delegation { | 63 | struct nfs4_delegation { |
74 | struct list_head dl_perfile; | 64 | struct list_head dl_perfile; |
75 | struct list_head dl_perclnt; | 65 | struct list_head dl_perclnt; |
@@ -81,22 +71,25 @@ struct nfs4_delegation { | |||
81 | struct file *dl_vfs_file; | 71 | struct file *dl_vfs_file; |
82 | u32 dl_type; | 72 | u32 dl_type; |
83 | time_t dl_time; | 73 | time_t dl_time; |
84 | struct nfs4_cb_recall dl_recall; | 74 | /* For recall: */ |
75 | u32 dl_ident; | ||
76 | stateid_t dl_stateid; | ||
77 | struct knfsd_fh dl_fh; | ||
78 | int dl_retries; | ||
85 | }; | 79 | }; |
86 | 80 | ||
87 | #define dl_stateid dl_recall.cbr_stateid | ||
88 | #define dl_fh dl_recall.cbr_fh | ||
89 | |||
90 | /* client delegation callback info */ | 81 | /* client delegation callback info */ |
91 | struct nfs4_callback { | 82 | struct nfs4_cb_conn { |
92 | /* SETCLIENTID info */ | 83 | /* SETCLIENTID info */ |
93 | u32 cb_addr; | 84 | u32 cb_addr; |
94 | unsigned short cb_port; | 85 | unsigned short cb_port; |
95 | u32 cb_prog; | 86 | u32 cb_prog; |
96 | u32 cb_ident; | 87 | u32 cb_minorversion; |
88 | u32 cb_ident; /* minorversion 0 only */ | ||
97 | /* RPC client info */ | 89 | /* RPC client info */ |
98 | atomic_t cb_set; /* successful CB_NULL call */ | 90 | atomic_t cb_set; /* successful CB_NULL call */ |
99 | struct rpc_clnt * cb_client; | 91 | struct rpc_clnt * cb_client; |
92 | struct rpc_cred * cb_cred; | ||
100 | }; | 93 | }; |
101 | 94 | ||
102 | /* Maximum number of slots per session. 128 is useful for long haul TCP */ | 95 | /* Maximum number of slots per session. 128 is useful for long haul TCP */ |
@@ -122,6 +115,17 @@ struct nfsd4_slot { | |||
122 | struct nfsd4_cache_entry sl_cache_entry; | 115 | struct nfsd4_cache_entry sl_cache_entry; |
123 | }; | 116 | }; |
124 | 117 | ||
118 | struct nfsd4_channel_attrs { | ||
119 | u32 headerpadsz; | ||
120 | u32 maxreq_sz; | ||
121 | u32 maxresp_sz; | ||
122 | u32 maxresp_cached; | ||
123 | u32 maxops; | ||
124 | u32 maxreqs; | ||
125 | u32 nr_rdma_attrs; | ||
126 | u32 rdma_attrs; | ||
127 | }; | ||
128 | |||
125 | struct nfsd4_session { | 129 | struct nfsd4_session { |
126 | struct kref se_ref; | 130 | struct kref se_ref; |
127 | struct list_head se_hash; /* hash by sessionid */ | 131 | struct list_head se_hash; /* hash by sessionid */ |
@@ -129,11 +133,8 @@ struct nfsd4_session { | |||
129 | u32 se_flags; | 133 | u32 se_flags; |
130 | struct nfs4_client *se_client; /* for expire_client */ | 134 | struct nfs4_client *se_client; /* for expire_client */ |
131 | struct nfs4_sessionid se_sessionid; | 135 | struct nfs4_sessionid se_sessionid; |
132 | u32 se_fmaxreq_sz; | 136 | struct nfsd4_channel_attrs se_fchannel; |
133 | u32 se_fmaxresp_sz; | 137 | struct nfsd4_channel_attrs se_bchannel; |
134 | u32 se_fmaxresp_cached; | ||
135 | u32 se_fmaxops; | ||
136 | u32 se_fnumslots; | ||
137 | struct nfsd4_slot se_slots[]; /* forward channel slots */ | 138 | struct nfsd4_slot se_slots[]; /* forward channel slots */ |
138 | }; | 139 | }; |
139 | 140 | ||
@@ -185,7 +186,7 @@ struct nfs4_client { | |||
185 | struct svc_cred cl_cred; /* setclientid principal */ | 186 | struct svc_cred cl_cred; /* setclientid principal */ |
186 | clientid_t cl_clientid; /* generated by server */ | 187 | clientid_t cl_clientid; /* generated by server */ |
187 | nfs4_verifier cl_confirm; /* generated by server */ | 188 | nfs4_verifier cl_confirm; /* generated by server */ |
188 | struct nfs4_callback cl_callback; /* callback info */ | 189 | struct nfs4_cb_conn cl_cb_conn; /* callback info */ |
189 | atomic_t cl_count; /* ref count */ | 190 | atomic_t cl_count; /* ref count */ |
190 | u32 cl_firststate; /* recovery dir creation */ | 191 | u32 cl_firststate; /* recovery dir creation */ |
191 | 192 | ||
diff --git a/include/linux/nfsd/xdr4.h b/include/linux/nfsd/xdr4.h index f80d6013fdc3..2bacf7535069 100644 --- a/include/linux/nfsd/xdr4.h +++ b/include/linux/nfsd/xdr4.h | |||
@@ -64,10 +64,13 @@ static inline bool nfsd4_has_session(struct nfsd4_compound_state *cs) | |||
64 | 64 | ||
65 | struct nfsd4_change_info { | 65 | struct nfsd4_change_info { |
66 | u32 atomic; | 66 | u32 atomic; |
67 | bool change_supported; | ||
67 | u32 before_ctime_sec; | 68 | u32 before_ctime_sec; |
68 | u32 before_ctime_nsec; | 69 | u32 before_ctime_nsec; |
70 | u64 before_change; | ||
69 | u32 after_ctime_sec; | 71 | u32 after_ctime_sec; |
70 | u32 after_ctime_nsec; | 72 | u32 after_ctime_nsec; |
73 | u64 after_change; | ||
71 | }; | 74 | }; |
72 | 75 | ||
73 | struct nfsd4_access { | 76 | struct nfsd4_access { |
@@ -363,17 +366,6 @@ struct nfsd4_exchange_id { | |||
363 | int spa_how; | 366 | int spa_how; |
364 | }; | 367 | }; |
365 | 368 | ||
366 | struct nfsd4_channel_attrs { | ||
367 | u32 headerpadsz; | ||
368 | u32 maxreq_sz; | ||
369 | u32 maxresp_sz; | ||
370 | u32 maxresp_cached; | ||
371 | u32 maxops; | ||
372 | u32 maxreqs; | ||
373 | u32 nr_rdma_attrs; | ||
374 | u32 rdma_attrs; | ||
375 | }; | ||
376 | |||
377 | struct nfsd4_create_session { | 369 | struct nfsd4_create_session { |
378 | clientid_t clientid; | 370 | clientid_t clientid; |
379 | struct nfs4_sessionid sessionid; | 371 | struct nfs4_sessionid sessionid; |
@@ -503,10 +495,16 @@ set_change_info(struct nfsd4_change_info *cinfo, struct svc_fh *fhp) | |||
503 | { | 495 | { |
504 | BUG_ON(!fhp->fh_pre_saved || !fhp->fh_post_saved); | 496 | BUG_ON(!fhp->fh_pre_saved || !fhp->fh_post_saved); |
505 | cinfo->atomic = 1; | 497 | cinfo->atomic = 1; |
506 | cinfo->before_ctime_sec = fhp->fh_pre_ctime.tv_sec; | 498 | cinfo->change_supported = IS_I_VERSION(fhp->fh_dentry->d_inode); |
507 | cinfo->before_ctime_nsec = fhp->fh_pre_ctime.tv_nsec; | 499 | if (cinfo->change_supported) { |
508 | cinfo->after_ctime_sec = fhp->fh_post_attr.ctime.tv_sec; | 500 | cinfo->before_change = fhp->fh_pre_change; |
509 | cinfo->after_ctime_nsec = fhp->fh_post_attr.ctime.tv_nsec; | 501 | cinfo->after_change = fhp->fh_post_change; |
502 | } else { | ||
503 | cinfo->before_ctime_sec = fhp->fh_pre_ctime.tv_sec; | ||
504 | cinfo->before_ctime_nsec = fhp->fh_pre_ctime.tv_nsec; | ||
505 | cinfo->after_ctime_sec = fhp->fh_post_attr.ctime.tv_sec; | ||
506 | cinfo->after_ctime_nsec = fhp->fh_post_attr.ctime.tv_nsec; | ||
507 | } | ||
510 | } | 508 | } |
511 | 509 | ||
512 | int nfs4svc_encode_voidres(struct svc_rqst *, __be32 *, void *); | 510 | int nfs4svc_encode_voidres(struct svc_rqst *, __be32 *, void *); |