NFSv4.1: Move slot table and session struct definitions to nfs4session.h
authorTrond Myklebust <Trond.Myklebust@netapp.com>
Mon, 26 Nov 2012 19:20:49 +0000 (14:20 -0500)
committerTrond Myklebust <Trond.Myklebust@netapp.com>
Wed, 5 Dec 2012 23:30:46 +0000 (00:30 +0100)
Clean up. Gather NFSv4.1 slot definitions in fs/nfs/nfs4session.h.

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
fs/nfs/blocklayout/blocklayout.c
fs/nfs/callback_xdr.c
fs/nfs/internal.h
fs/nfs/nfs4_fs.h
fs/nfs/nfs4filelayout.c
fs/nfs/nfs4session.h
fs/nfs/nfs4state.c
fs/nfs/nfs4xdr.c
fs/nfs/super.c
include/linux/nfs_fs_sb.h
include/linux/nfs_xdr.h

index f1027b06a1a9625e8fe7b0e7c551ce13e510414d..4fa788c93f4655bc0d014ff6090e12f5a31ef75d 100644 (file)
@@ -40,6 +40,7 @@
 #include <linux/pagevec.h>
 
 #include "../pnfs.h"
+#include "../nfs4session.h"
 #include "../internal.h"
 #include "blocklayout.h"
 
index ea6a7b190e6bd97b9652a50a4ce14a6e752b86a4..59461c957d9d7ed7204e09f9fad1aa0b154d8486 100644 (file)
@@ -16,6 +16,7 @@
 #include "nfs4_fs.h"
 #include "callback.h"
 #include "internal.h"
+#include "nfs4session.h"
 
 #define CB_OP_TAGLEN_MAXSZ     (512)
 #define CB_OP_HDR_RES_MAXSZ    (2 + CB_OP_TAGLEN_MAXSZ)
index 8965a998b306988a9ea86360ef6b7f7c4acefc61..9bdbfc3884a9aac9bed247e7d72e4f5cb382950b 100644 (file)
@@ -18,27 +18,6 @@ struct nfs_string;
  */
 #define NFS_MAX_READAHEAD      (RPC_DEF_SLOT_TABLE - 1)
 
-/*
- * Determine if sessions are in use.
- */
-static inline int nfs4_has_session(const struct nfs_client *clp)
-{
-#ifdef CONFIG_NFS_V4_1
-       if (clp->cl_session)
-               return 1;
-#endif /* CONFIG_NFS_V4_1 */
-       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;
-}
-
 static inline void nfs_attr_check_mountpoint(struct super_block *parent, struct nfs_fattr *fattr)
 {
        if (!nfs_fsid_equal(&NFS_SB(parent)->fsid, &fattr->fsid))
index cd3e3096b60ad78f9cda46008afc535308604580..322bd0168ebf410857a2f56706a52a5dbcb303d9 100644 (file)
@@ -29,11 +29,6 @@ enum nfs4_client_state {
        NFS4CLNT_BIND_CONN_TO_SESSION,
 };
 
-enum nfs4_session_state {
-       NFS4_SESSION_INITING,
-       NFS4_SESSION_DRAINING,
-};
-
 #define NFS4_RENEW_TIMEOUT             0x01
 #define NFS4_RENEW_DELEGATION_CB       0x02
 
@@ -327,13 +322,6 @@ int nfs41_discover_server_trunking(struct nfs_client *clp,
 extern void nfs4_schedule_session_recovery(struct nfs4_session *, int);
 extern void nfs41_server_notify_target_slotid_update(struct nfs_client *clp);
 
-extern void nfs4_session_drain_complete(struct nfs4_session *session,
-               struct nfs4_slot_table *tbl);
-
-static inline bool nfs4_session_draining(struct nfs4_session *session)
-{
-       return !!test_bit(NFS4_SESSION_DRAINING, &session->session_state);
-}
 #else
 static inline void nfs4_schedule_session_recovery(struct nfs4_session *session, int err)
 {
index bfb28fa38e74f841243cbe49292a9faa9e795a1e..591a1a7f8f948cb8eaebc10256843a824e88305a 100644 (file)
@@ -35,6 +35,7 @@
 
 #include <linux/sunrpc/metrics.h>
 
+#include "nfs4session.h"
 #include "internal.h"
 #include "delegation.h"
 #include "nfs4filelayout.h"
index cb47b1eb0886a1aa86f6aa0e2cd06304ef161565..e96323ff1d956fa2bee65d481fbf85122124e1e7 100644 (file)
@@ -7,6 +7,68 @@
 #ifndef __LINUX_FS_NFS_NFS4SESSION_H
 #define __LINUX_FS_NFS_NFS4SESSION_H
 
+/* maximum number of slots to use */
+#define NFS4_DEF_SLOT_TABLE_SIZE (16U)
+#define NFS4_MAX_SLOT_TABLE (256U)
+#define NFS4_NO_SLOT ((u32)-1)
+
+#if IS_ENABLED(CONFIG_NFS_V4)
+
+/* Sessions slot seqid */
+struct nfs4_slot {
+       struct nfs4_slot_table  *table;
+       struct nfs4_slot        *next;
+       unsigned long           generation;
+       unsigned long           renewal_time;
+       u32                     slot_nr;
+       u32                     seq_nr;
+};
+
+/* Sessions */
+#define SLOT_TABLE_SZ DIV_ROUND_UP(NFS4_MAX_SLOT_TABLE, 8*sizeof(long))
+struct nfs4_slot_table {
+       struct nfs4_session *session;           /* Parent session */
+       struct nfs4_slot *slots;                /* seqid per slot */
+       unsigned long   used_slots[SLOT_TABLE_SZ]; /* used/unused bitmap */
+       spinlock_t      slot_tbl_lock;
+       struct rpc_wait_queue   slot_tbl_waitq; /* allocators may wait here */
+       u32             max_slots;              /* # slots in table */
+       u32             max_slotid;             /* Max allowed slotid value */
+       u32             highest_used_slotid;    /* sent to server on each SEQ.
+                                                * op for dynamic resizing */
+       u32             target_highest_slotid;  /* Server max_slot target */
+       u32             server_highest_slotid;  /* Server highest slotid */
+       unsigned long   generation;             /* Generation counter for
+                                                  target_highest_slotid */
+       struct completion complete;
+};
+
+/*
+ * Session related parameters
+ */
+struct nfs4_session {
+       struct nfs4_sessionid           sess_id;
+       u32                             flags;
+       unsigned long                   session_state;
+       u32                             hash_alg;
+       u32                             ssv_len;
+
+       /* The fore and back channel */
+       struct nfs4_channel_attrs       fc_attrs;
+       struct nfs4_slot_table          fc_slot_table;
+       struct nfs4_channel_attrs       bc_attrs;
+       struct nfs4_slot_table          bc_slot_table;
+       struct nfs_client               *clp;
+       /* Create session arguments */
+       unsigned int                    fc_target_max_rqst_sz;
+       unsigned int                    fc_target_max_resp_sz;
+};
+
+enum nfs4_session_state {
+       NFS4_SESSION_INITING,
+       NFS4_SESSION_DRAINING,
+};
+
 #if defined(CONFIG_NFS_V4_1)
 extern struct nfs4_slot *nfs4_alloc_slot(struct nfs4_slot_table *tbl);
 extern void nfs4_free_slot(struct nfs4_slot_table *tbl, struct nfs4_slot *slot);
@@ -24,6 +86,31 @@ extern void nfs4_destroy_session(struct nfs4_session *session);
 extern int nfs4_init_session(struct nfs_server *server);
 extern int nfs4_init_ds_session(struct nfs_client *, unsigned long);
 
+extern void nfs4_session_drain_complete(struct nfs4_session *session,
+               struct nfs4_slot_table *tbl);
+
+static inline bool nfs4_session_draining(struct nfs4_session *session)
+{
+       return !!test_bit(NFS4_SESSION_DRAINING, &session->session_state);
+}
+
+/*
+ * Determine if sessions are in use.
+ */
+static inline int nfs4_has_session(const struct nfs_client *clp)
+{
+       if (clp->cl_session)
+               return 1;
+       return 0;
+}
+
+static inline int nfs4_has_persistent_session(const struct nfs_client *clp)
+{
+       if (nfs4_has_session(clp))
+               return (clp->cl_session->flags & SESSION4_PERSIST);
+       return 0;
+}
+
 #else /* defined(CONFIG_NFS_V4_1) */
 
 static inline int nfs4_init_session(struct nfs_server *server)
@@ -31,5 +118,19 @@ static inline int nfs4_init_session(struct nfs_server *server)
        return 0;
 }
 
+/*
+ * Determine if sessions are in use.
+ */
+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)
+{
+       return 0;
+}
+
 #endif /* defined(CONFIG_NFS_V4_1) */
+#endif /* IS_ENABLED(CONFIG_NFS_V4) */
 #endif /* __LINUX_FS_NFS_NFS4SESSION_H */
index 1077b96983819473e88b65ec3c38041a4b5671b6..1402283d152d48626134d046bd591e303b80050c 100644 (file)
@@ -57,6 +57,7 @@
 #include "callback.h"
 #include "delegation.h"
 #include "internal.h"
+#include "nfs4session.h"
 #include "pnfs.h"
 #include "netns.h"
 
index a67040f5159722ed20df641bcfb76683412355cc..e786dc7582b1b2e6f886c489c8294634ffb96f11 100644 (file)
@@ -56,6 +56,7 @@
 
 #include "nfs4_fs.h"
 #include "internal.h"
+#include "nfs4session.h"
 #include "pnfs.h"
 #include "netns.h"
 
index 652d3f7176a98fcc4e70e6f5e3d812e4b3d90b83..e12cea4b36a53a448d57c72bcfd4298924597f79 100644 (file)
@@ -64,6 +64,7 @@
 #include "iostat.h"
 #include "internal.h"
 #include "fscache.h"
+#include "nfs4session.h"
 #include "pnfs.h"
 #include "nfs.h"
 
index e707c1b697960b174070cff4268ebffb9446cac4..6c6ed153a9b4833f055ac7899b066b9c87782ece 100644 (file)
@@ -198,53 +198,4 @@ struct nfs_server {
 #define NFS_CAP_POSIX_LOCK     (1U << 14)
 #define NFS_CAP_UIDGID_NOMAP   (1U << 15)
 
-
-/* maximum number of slots to use */
-#define NFS4_DEF_SLOT_TABLE_SIZE (16U)
-#define NFS4_MAX_SLOT_TABLE (256U)
-#define NFS4_NO_SLOT ((u32)-1)
-
-#if IS_ENABLED(CONFIG_NFS_V4)
-
-/* Sessions */
-#define SLOT_TABLE_SZ DIV_ROUND_UP(NFS4_MAX_SLOT_TABLE, 8*sizeof(long))
-struct nfs4_slot_table {
-       struct nfs4_session *session;           /* Parent session */
-       struct nfs4_slot *slots;                /* seqid per slot */
-       unsigned long   used_slots[SLOT_TABLE_SZ]; /* used/unused bitmap */
-       spinlock_t      slot_tbl_lock;
-       struct rpc_wait_queue   slot_tbl_waitq; /* allocators may wait here */
-       u32             max_slots;              /* # slots in table */
-       u32             max_slotid;             /* Max allowed slotid value */
-       u32             highest_used_slotid;    /* sent to server on each SEQ.
-                                                * op for dynamic resizing */
-       u32             target_highest_slotid;  /* Server max_slot target */
-       u32             server_highest_slotid;  /* Server highest slotid */
-       unsigned long   generation;             /* Generation counter for
-                                                  target_highest_slotid */
-       struct completion complete;
-};
-
-/*
- * Session related parameters
- */
-struct nfs4_session {
-       struct nfs4_sessionid           sess_id;
-       u32                             flags;
-       unsigned long                   session_state;
-       u32                             hash_alg;
-       u32                             ssv_len;
-
-       /* The fore and back channel */
-       struct nfs4_channel_attrs       fc_attrs;
-       struct nfs4_slot_table          fc_slot_table;
-       struct nfs4_channel_attrs       bc_attrs;
-       struct nfs4_slot_table          bc_slot_table;
-       struct nfs_client               *clp;
-       /* Create session arguments */
-       unsigned int                    fc_target_max_rqst_sz;
-       unsigned int                    fc_target_max_resp_sz;
-};
-
-#endif /* CONFIG_NFS_V4 */
 #endif
index 44d256f6021c8e025c1e2f8a7cfc605140b71731..2076149db1a48918cc6b8e3d4751344b23cef70d 100644 (file)
@@ -185,16 +185,7 @@ struct nfs4_channel_attrs {
        u32                     max_reqs;
 };
 
-/* nfs41 sessions slot seqid */
-struct nfs4_slot {
-       struct nfs4_slot_table  *table;
-       struct nfs4_slot        *next;
-       unsigned long           generation;
-       unsigned long           renewal_time;
-       u32                     slot_nr;
-       u32                     seq_nr;
-};
-
+struct nfs4_slot;
 struct nfs4_sequence_args {
        struct nfs4_slot        *sa_slot;
        u8                      sa_cache_this;