summaryrefslogtreecommitdiffstats
path: root/fs/nfs/internal.h
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2009-12-14 10:00:24 -0800
committerLinus Torvalds <torvalds@linux-foundation.org>2009-12-14 10:00:24 -0800
commit3f86ce72cffbea488a3b58453bbaf49c93ac90d9 (patch)
treee7c612d297b41fb03326dcf38cecd27e89474538 /fs/nfs/internal.h
parentd0316554d3586cbea60592a41391b5def2553d6f (diff)
parent52c9948b1fd80381ba5a9a87dcc4fbe3cf4979b8 (diff)
downloadop-kernel-dev-3f86ce72cffbea488a3b58453bbaf49c93ac90d9.zip
op-kernel-dev-3f86ce72cffbea488a3b58453bbaf49c93ac90d9.tar.gz
Merge git://git.linux-nfs.org/projects/trondmy/nfs-2.6
* git://git.linux-nfs.org/projects/trondmy/nfs-2.6: (75 commits) NFS: Fix nfs_migrate_page() rpc: remove unneeded function parameter in gss_add_msg() nfs41: Invoke RECLAIM_COMPLETE on all new client ids SUNRPC: IS_ERR/PTR_ERR confusion NFSv41: Fix a potential state leakage when restarting nfs4_close_prepare nfs41: Handle NFSv4.1 session errors in the delegation recall code nfs41: Retry delegation return if it failed with session error nfs41: Handle session errors during delegation return nfs41: Mark stateids in need of reclaim if state manager gets stale clientid NFS: Fix up the declaration of nfs4_restart_rpc when NFSv4 not configured nfs41: Don't clear DRAINING flag on NFS4ERR_STALE_CLIENTID nfs41: nfs41_setup_state_renewal NFSv41: More cleanups NFSv41: Fix up some bugs in the NFS4CLNT_SESSION_DRAINING code NFSv41: Clean up slot table management NFSv41: Fix nfs4_proc_create_session nfs41: Invoke RECLAIM_COMPLETE nfs41: RECLAIM_COMPLETE functionality nfs41: RECLAIM_COMPLETE XDR functionality Cleanup some NFSv4 XDR decode comments ...
Diffstat (limited to 'fs/nfs/internal.h')
-rw-r--r--fs/nfs/internal.h54
1 files changed, 26 insertions, 28 deletions
diff --git a/fs/nfs/internal.h b/fs/nfs/internal.h
index e21b1bb..29e464d 100644
--- a/fs/nfs/internal.h
+++ b/fs/nfs/internal.h
@@ -30,6 +30,15 @@ static inline int nfs4_has_session(const struct nfs_client *clp)
return 0;
}
+static inline int nfs4_has_persistent_session(const struct nfs_client *clp)
+{
+#ifdef CONFIG_NFS_V4_1
+ if (nfs4_has_session(clp))
+ return (clp->cl_session->flags & SESSION4_PERSIST);
+#endif /* CONFIG_NFS_V4_1 */
+ return 0;
+}
+
struct nfs_clone_mount {
const struct super_block *sb;
const struct dentry *dentry;
@@ -156,6 +165,7 @@ struct vfsmount *nfs_do_refmount(const struct vfsmount *mnt_parent, struct dentr
/* callback_xdr.c */
extern struct svc_version nfs4_callback_version1;
+extern struct svc_version nfs4_callback_version4;
/* pagelist.c */
extern int __init nfs_init_nfspagecache(void);
@@ -177,24 +187,14 @@ extern __be32 * nfs_decode_dirent(__be32 *, struct nfs_entry *, int);
extern struct rpc_procinfo nfs3_procedures[];
extern __be32 *nfs3_decode_dirent(__be32 *, struct nfs_entry *, int);
-/* nfs4proc.c */
-static inline void nfs4_restart_rpc(struct rpc_task *task,
- const struct nfs_client *clp)
-{
-#ifdef CONFIG_NFS_V4_1
- if (nfs4_has_session(clp) &&
- test_bit(NFS4CLNT_SESSION_SETUP, &clp->cl_state)) {
- rpc_restart_call_prepare(task);
- return;
- }
-#endif /* CONFIG_NFS_V4_1 */
- rpc_restart_call(task);
-}
-
/* nfs4xdr.c */
#ifdef CONFIG_NFS_V4
extern __be32 *nfs4_decode_dirent(__be32 *p, struct nfs_entry *entry, int plus);
#endif
+#ifdef CONFIG_NFS_V4_1
+extern const u32 nfs41_maxread_overhead;
+extern const u32 nfs41_maxwrite_overhead;
+#endif
/* nfs4proc.c */
#ifdef CONFIG_NFS_V4
@@ -273,20 +273,6 @@ extern int _nfs4_call_sync_session(struct nfs_server *server,
struct nfs4_sequence_res *res,
int cache_reply);
-#ifdef CONFIG_NFS_V4_1
-extern void nfs41_sequence_free_slot(const struct nfs_client *,
- struct nfs4_sequence_res *res);
-#endif /* CONFIG_NFS_V4_1 */
-
-static inline void nfs4_sequence_free_slot(const struct nfs_client *clp,
- struct nfs4_sequence_res *res)
-{
-#ifdef CONFIG_NFS_V4_1
- if (nfs4_has_session(clp))
- nfs41_sequence_free_slot(clp, res);
-#endif /* CONFIG_NFS_V4_1 */
-}
-
/*
* Determine the device name as a string
*/
@@ -380,3 +366,15 @@ unsigned int nfs_page_array_len(unsigned int base, size_t len)
return ((unsigned long)len + (unsigned long)base +
PAGE_SIZE - 1) >> PAGE_SHIFT;
}
+
+/*
+ * Helper for restarting RPC calls in the possible presence of NFSv4.1
+ * sessions.
+ */
+static inline void nfs_restart_rpc(struct rpc_task *task, const struct nfs_client *clp)
+{
+ if (nfs4_has_session(clp))
+ rpc_restart_call_prepare(task);
+ else
+ rpc_restart_call(task);
+}
OpenPOWER on IntegriCloud