aboutsummaryrefslogtreecommitdiffstats
path: root/fs/nfs/nfs4_fs.h
diff options
context:
space:
mode:
Diffstat (limited to 'fs/nfs/nfs4_fs.h')
-rw-r--r--fs/nfs/nfs4_fs.h59
1 files changed, 44 insertions, 15 deletions
diff --git a/fs/nfs/nfs4_fs.h b/fs/nfs/nfs4_fs.h
index 311e15cc8af0..c4a69833dd0d 100644
--- a/fs/nfs/nfs4_fs.h
+++ b/fs/nfs/nfs4_fs.h
@@ -44,8 +44,10 @@ enum nfs4_client_state {
44 NFS4CLNT_RECLAIM_REBOOT, 44 NFS4CLNT_RECLAIM_REBOOT,
45 NFS4CLNT_RECLAIM_NOGRACE, 45 NFS4CLNT_RECLAIM_NOGRACE,
46 NFS4CLNT_DELEGRETURN, 46 NFS4CLNT_DELEGRETURN,
47 NFS4CLNT_LAYOUTRECALL,
47 NFS4CLNT_SESSION_RESET, 48 NFS4CLNT_SESSION_RESET,
48 NFS4CLNT_RECALL_SLOT, 49 NFS4CLNT_RECALL_SLOT,
50 NFS4CLNT_LEASE_CONFIRM,
49}; 51};
50 52
51enum nfs4_session_state { 53enum nfs4_session_state {
@@ -56,7 +58,8 @@ enum nfs4_session_state {
56struct nfs4_minor_version_ops { 58struct nfs4_minor_version_ops {
57 u32 minor_version; 59 u32 minor_version;
58 60
59 int (*call_sync)(struct nfs_server *server, 61 int (*call_sync)(struct rpc_clnt *clnt,
62 struct nfs_server *server,
60 struct rpc_message *msg, 63 struct rpc_message *msg,
61 struct nfs4_sequence_args *args, 64 struct nfs4_sequence_args *args,
62 struct nfs4_sequence_res *res, 65 struct nfs4_sequence_res *res,
@@ -109,7 +112,7 @@ struct nfs_unique_id {
109struct nfs4_state_owner { 112struct nfs4_state_owner {
110 struct nfs_unique_id so_owner_id; 113 struct nfs_unique_id so_owner_id;
111 struct nfs_server *so_server; 114 struct nfs_server *so_server;
112 struct rb_node so_client_node; 115 struct rb_node so_server_node;
113 116
114 struct rpc_cred *so_cred; /* Associated cred */ 117 struct rpc_cred *so_cred; /* Associated cred */
115 118
@@ -227,12 +230,6 @@ struct nfs4_state_maintenance_ops {
227extern const struct dentry_operations nfs4_dentry_operations; 230extern const struct dentry_operations nfs4_dentry_operations;
228extern const struct inode_operations nfs4_dir_inode_operations; 231extern const struct inode_operations nfs4_dir_inode_operations;
229 232
230/* inode.c */
231extern ssize_t nfs4_getxattr(struct dentry *, const char *, void *, size_t);
232extern int nfs4_setxattr(struct dentry *, const char *, const void *, size_t, int);
233extern ssize_t nfs4_listxattr(struct dentry *, char *, size_t);
234
235
236/* nfs4proc.c */ 233/* nfs4proc.c */
237extern int nfs4_proc_setclientid(struct nfs_client *, u32, unsigned short, struct rpc_cred *, struct nfs4_setclientid_res *); 234extern int nfs4_proc_setclientid(struct nfs_client *, u32, unsigned short, struct rpc_cred *, struct nfs4_setclientid_res *);
238extern int nfs4_proc_setclientid_confirm(struct nfs_client *, struct nfs4_setclientid_res *arg, struct rpc_cred *); 235extern int nfs4_proc_setclientid_confirm(struct nfs_client *, struct nfs4_setclientid_res *arg, struct rpc_cred *);
@@ -241,13 +238,12 @@ extern int nfs4_proc_async_renew(struct nfs_client *, struct rpc_cred *);
241extern int nfs4_proc_renew(struct nfs_client *, struct rpc_cred *); 238extern int nfs4_proc_renew(struct nfs_client *, struct rpc_cred *);
242extern int nfs4_init_clientid(struct nfs_client *, struct rpc_cred *); 239extern int nfs4_init_clientid(struct nfs_client *, struct rpc_cred *);
243extern int nfs41_init_clientid(struct nfs_client *, struct rpc_cred *); 240extern int nfs41_init_clientid(struct nfs_client *, struct rpc_cred *);
244extern int nfs4_do_close(struct path *path, struct nfs4_state *state, gfp_t gfp_mask, int wait); 241extern int nfs4_do_close(struct path *path, struct nfs4_state *state, gfp_t gfp_mask, int wait, bool roc);
245extern struct dentry *nfs4_atomic_open(struct inode *, struct dentry *, struct nameidata *);
246extern int nfs4_open_revalidate(struct inode *, struct dentry *, int, struct nameidata *);
247extern int nfs4_server_capabilities(struct nfs_server *server, struct nfs_fh *fhandle); 242extern int nfs4_server_capabilities(struct nfs_server *server, struct nfs_fh *fhandle);
248extern int nfs4_proc_fs_locations(struct inode *dir, const struct qstr *name, 243extern int nfs4_proc_fs_locations(struct inode *dir, const struct qstr *name,
249 struct nfs4_fs_locations *fs_locations, struct page *page); 244 struct nfs4_fs_locations *fs_locations, struct page *page);
250extern void nfs4_release_lockowner(const struct nfs4_lock_state *); 245extern void nfs4_release_lockowner(const struct nfs4_lock_state *);
246extern const struct xattr_handler *nfs4_xattr_handlers[];
251 247
252#if defined(CONFIG_NFS_V4_1) 248#if defined(CONFIG_NFS_V4_1)
253static inline struct nfs4_session *nfs4_get_session(const struct nfs_server *server) 249static inline struct nfs4_session *nfs4_get_session(const struct nfs_server *server)
@@ -258,6 +254,9 @@ static inline struct nfs4_session *nfs4_get_session(const struct nfs_server *ser
258extern int nfs4_setup_sequence(const struct nfs_server *server, 254extern int nfs4_setup_sequence(const struct nfs_server *server,
259 struct nfs4_sequence_args *args, struct nfs4_sequence_res *res, 255 struct nfs4_sequence_args *args, struct nfs4_sequence_res *res,
260 int cache_reply, struct rpc_task *task); 256 int cache_reply, struct rpc_task *task);
257extern int nfs41_setup_sequence(struct nfs4_session *session,
258 struct nfs4_sequence_args *args, struct nfs4_sequence_res *res,
259 int cache_reply, struct rpc_task *task);
261extern void nfs4_destroy_session(struct nfs4_session *session); 260extern void nfs4_destroy_session(struct nfs4_session *session);
262extern struct nfs4_session *nfs4_alloc_session(struct nfs_client *clp); 261extern struct nfs4_session *nfs4_alloc_session(struct nfs_client *clp);
263extern int nfs4_proc_create_session(struct nfs_client *); 262extern int nfs4_proc_create_session(struct nfs_client *);
@@ -265,6 +264,21 @@ extern int nfs4_proc_destroy_session(struct nfs4_session *);
265extern int nfs4_init_session(struct nfs_server *server); 264extern int nfs4_init_session(struct nfs_server *server);
266extern int nfs4_proc_get_lease_time(struct nfs_client *clp, 265extern int nfs4_proc_get_lease_time(struct nfs_client *clp,
267 struct nfs_fsinfo *fsinfo); 266 struct nfs_fsinfo *fsinfo);
267extern int nfs4_proc_layoutcommit(struct nfs4_layoutcommit_data *data,
268 bool sync);
269
270static inline bool
271is_ds_only_client(struct nfs_client *clp)
272{
273 return (clp->cl_exchange_flags & EXCHGID4_FLAG_MASK_PNFS) ==
274 EXCHGID4_FLAG_USE_PNFS_DS;
275}
276
277static inline bool
278is_ds_client(struct nfs_client *clp)
279{
280 return clp->cl_exchange_flags & EXCHGID4_FLAG_USE_PNFS_DS;
281}
268#else /* CONFIG_NFS_v4_1 */ 282#else /* CONFIG_NFS_v4_1 */
269static inline struct nfs4_session *nfs4_get_session(const struct nfs_server *server) 283static inline struct nfs4_session *nfs4_get_session(const struct nfs_server *server)
270{ 284{
@@ -282,6 +296,18 @@ static inline int nfs4_init_session(struct nfs_server *server)
282{ 296{
283 return 0; 297 return 0;
284} 298}
299
300static inline bool
301is_ds_only_client(struct nfs_client *clp)
302{
303 return false;
304}
305
306static inline bool
307is_ds_client(struct nfs_client *clp)
308{
309 return false;
310}
285#endif /* CONFIG_NFS_V4_1 */ 311#endif /* CONFIG_NFS_V4_1 */
286 312
287extern const struct nfs4_minor_version_ops *nfs_v4_minor_ops[]; 313extern const struct nfs4_minor_version_ops *nfs_v4_minor_ops[];
@@ -304,6 +330,11 @@ struct rpc_cred *nfs4_get_renew_cred_locked(struct nfs_client *clp);
304#if defined(CONFIG_NFS_V4_1) 330#if defined(CONFIG_NFS_V4_1)
305struct rpc_cred *nfs4_get_machine_cred_locked(struct nfs_client *clp); 331struct rpc_cred *nfs4_get_machine_cred_locked(struct nfs_client *clp);
306struct rpc_cred *nfs4_get_exchange_id_cred(struct nfs_client *clp); 332struct rpc_cred *nfs4_get_exchange_id_cred(struct nfs_client *clp);
333extern void nfs4_schedule_session_recovery(struct nfs4_session *);
334#else
335static inline void nfs4_schedule_session_recovery(struct nfs4_session *session)
336{
337}
307#endif /* CONFIG_NFS_V4_1 */ 338#endif /* CONFIG_NFS_V4_1 */
308 339
309extern struct nfs4_state_owner * nfs4_get_state_owner(struct nfs_server *, struct rpc_cred *); 340extern struct nfs4_state_owner * nfs4_get_state_owner(struct nfs_server *, struct rpc_cred *);
@@ -313,10 +344,9 @@ extern void nfs4_put_open_state(struct nfs4_state *);
313extern void nfs4_close_state(struct path *, struct nfs4_state *, fmode_t); 344extern void nfs4_close_state(struct path *, struct nfs4_state *, fmode_t);
314extern void nfs4_close_sync(struct path *, struct nfs4_state *, fmode_t); 345extern void nfs4_close_sync(struct path *, struct nfs4_state *, fmode_t);
315extern void nfs4_state_set_mode_locked(struct nfs4_state *, fmode_t); 346extern void nfs4_state_set_mode_locked(struct nfs4_state *, fmode_t);
316extern void nfs4_schedule_state_recovery(struct nfs_client *); 347extern void nfs4_schedule_lease_recovery(struct nfs_client *);
317extern void nfs4_schedule_state_manager(struct nfs_client *); 348extern void nfs4_schedule_state_manager(struct nfs_client *);
318extern int nfs4_state_mark_reclaim_nograce(struct nfs_client *clp, struct nfs4_state *state); 349extern void nfs4_schedule_stateid_recovery(const struct nfs_server *, struct nfs4_state *);
319extern int nfs4_state_mark_reclaim_reboot(struct nfs_client *clp, struct nfs4_state *state);
320extern void nfs41_handle_sequence_flag_errors(struct nfs_client *clp, u32 flags); 350extern void nfs41_handle_sequence_flag_errors(struct nfs_client *clp, u32 flags);
321extern void nfs41_handle_recall_slot(struct nfs_client *clp); 351extern void nfs41_handle_recall_slot(struct nfs_client *clp);
322extern void nfs4_put_lock_state(struct nfs4_lock_state *lsp); 352extern void nfs4_put_lock_state(struct nfs4_lock_state *lsp);
@@ -333,7 +363,6 @@ extern void nfs_free_seqid(struct nfs_seqid *seqid);
333extern const nfs4_stateid zero_stateid; 363extern const nfs4_stateid zero_stateid;
334 364
335/* nfs4xdr.c */ 365/* nfs4xdr.c */
336extern __be32 *nfs4_decode_dirent(__be32 *p, struct nfs_entry *entry, int plus);
337extern struct rpc_procinfo nfs4_procedures[]; 366extern struct rpc_procinfo nfs4_procedures[];
338 367
339struct nfs4_mount_data; 368struct nfs4_mount_data;