NFSv4.1: Simplify struct nfs4_sequence_args too
authorTrond Myklebust <Trond.Myklebust@netapp.com>
Fri, 16 Nov 2012 17:58:36 +0000 (12:58 -0500)
committerTrond Myklebust <Trond.Myklebust@netapp.com>
Mon, 26 Nov 2012 22:49:52 +0000 (17:49 -0500)
Replace the session pointer + slotid with a pointer to the
allocated slot.

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
fs/nfs/nfs4proc.c
fs/nfs/nfs4xdr.c
include/linux/nfs_xdr.h

index 4311dba49c58f9158a5b7d5ff38145c22d2a486c..6c41a34e34b4f227238c0949f4fc661b99d8f60c 100644 (file)
@@ -591,7 +591,7 @@ out:
 static void nfs41_init_sequence(struct nfs4_sequence_args *args,
                struct nfs4_sequence_res *res, int cache_reply)
 {
-       args->sa_session = NULL;
+       args->sa_slot = NULL;
        args->sa_cache_this = 0;
        if (cache_reply)
                args->sa_cache_this = 1;
@@ -644,8 +644,8 @@ int nfs41_setup_sequence(struct nfs4_session *session,
        rpc_task_set_priority(task, RPC_PRIORITY_NORMAL);
        slot = tbl->slots + slotid;
        slot->renewal_time = jiffies;
-       args->sa_session = session;
-       args->sa_slotid = slotid;
+
+       args->sa_slot = slot;
 
        dprintk("<-- %s slotid=%d seqid=%d\n", __func__, slotid, slot->seq_nr);
 
index 50bac70661601f55e533f5693007a429495bf68d..27b0fec1a6b03125c0175e07f82b9bc1f46b4b32 100644 (file)
@@ -1833,18 +1833,16 @@ static void encode_sequence(struct xdr_stream *xdr,
                            struct compound_hdr *hdr)
 {
 #if defined(CONFIG_NFS_V4_1)
-       struct nfs4_session *session = args->sa_session;
+       struct nfs4_session *session;
        struct nfs4_slot_table *tp;
-       struct nfs4_slot *slot;
+       struct nfs4_slot *slot = args->sa_slot;
        __be32 *p;
 
-       if (!session)
+       if (slot == NULL)
                return;
 
-       tp = &session->fc_slot_table;
-
-       WARN_ON(args->sa_slotid == NFS4_MAX_SLOT_TABLE);
-       slot = tp->slots + args->sa_slotid;
+       tp = slot->table;
+       session = tp->session;
 
        encode_op_hdr(xdr, OP_SEQUENCE, decode_sequence_maxsz, hdr);
 
@@ -1858,12 +1856,12 @@ static void encode_sequence(struct xdr_stream *xdr,
                ((u32 *)session->sess_id.data)[1],
                ((u32 *)session->sess_id.data)[2],
                ((u32 *)session->sess_id.data)[3],
-               slot->seq_nr, args->sa_slotid,
+               slot->seq_nr, slot->slot_nr,
                tp->highest_used_slotid, args->sa_cache_this);
        p = reserve_space(xdr, NFS4_MAX_SESSIONID_LEN + 16);
        p = xdr_encode_opaque_fixed(p, session->sess_id.data, NFS4_MAX_SESSIONID_LEN);
        *p++ = cpu_to_be32(slot->seq_nr);
-       *p++ = cpu_to_be32(args->sa_slotid);
+       *p++ = cpu_to_be32(slot->slot_nr);
        *p++ = cpu_to_be32(tp->highest_used_slotid);
        *p = cpu_to_be32(args->sa_cache_this);
 #endif /* CONFIG_NFS_V4_1 */
@@ -2025,8 +2023,9 @@ static void encode_free_stateid(struct xdr_stream *xdr,
 static u32 nfs4_xdr_minorversion(const struct nfs4_sequence_args *args)
 {
 #if defined(CONFIG_NFS_V4_1)
-       if (args->sa_session)
-               return args->sa_session->clp->cl_mvops->minor_version;
+
+       if (args->sa_slot)
+               return args->sa_slot->table->session->clp->cl_mvops->minor_version;
 #endif /* CONFIG_NFS_V4_1 */
        return 0;
 }
index 9c9b76c94b46086b76e779d947555120c5a0845b..deb31bbbb85769397ea283927e67c574d66a36ad 100644 (file)
@@ -194,8 +194,7 @@ struct nfs4_slot {
 };
 
 struct nfs4_sequence_args {
-       struct nfs4_session     *sa_session;
-       u32                     sa_slotid;
+       struct nfs4_slot        *sa_slot;
        u8                      sa_cache_this;
 };