NFSv4.1: Don't confuse target_highest_slotid and max_slots in cb_recall_slot
authorTrond Myklebust <Trond.Myklebust@netapp.com>
Wed, 21 Nov 2012 01:24:02 +0000 (20:24 -0500)
committerTrond Myklebust <Trond.Myklebust@netapp.com>
Wed, 5 Dec 2012 23:30:41 +0000 (00:30 +0100)
Don't confuse the table size and the target_highest_slotid...

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
fs/nfs/callback.h
fs/nfs/callback_proc.c
fs/nfs/callback_xdr.c

index 4251c2a..e75631e 100644 (file)
@@ -142,7 +142,7 @@ extern __be32 nfs4_callback_recallany(struct cb_recallanyargs *args,
 
 struct cb_recallslotargs {
        struct sockaddr *crsa_addr;
-       uint32_t        crsa_target_max_slots;
+       uint32_t        crsa_target_highest_slotid;
 };
 extern __be32 nfs4_callback_recallslot(struct cb_recallslotargs *args,
                                         void *dummy,
index 15b9879..ed0b446 100644 (file)
@@ -561,22 +561,20 @@ __be32 nfs4_callback_recallslot(struct cb_recallslotargs *args, void *dummy,
        if (!cps->clp) /* set in cb_sequence */
                goto out;
 
-       dprintk_rcu("NFS: CB_RECALL_SLOT request from %s target max slots %d\n",
+       dprintk_rcu("NFS: CB_RECALL_SLOT request from %s target highest slotid %d\n",
                rpc_peeraddr2str(cps->clp->cl_rpcclient, RPC_DISPLAY_ADDR),
-               args->crsa_target_max_slots);
+               args->crsa_target_highest_slotid);
 
        fc_tbl = &cps->clp->cl_session->fc_slot_table;
 
        status = htonl(NFS4ERR_BAD_HIGH_SLOT);
-       if (args->crsa_target_max_slots > fc_tbl->max_slots ||
-           args->crsa_target_max_slots < 1)
+       if (args->crsa_target_highest_slotid >= fc_tbl->max_slots ||
+           args->crsa_target_highest_slotid < 1)
                goto out;
 
        status = htonl(NFS4_OK);
-       if (args->crsa_target_max_slots == fc_tbl->max_slots)
-               goto out;
 
-       nfs41_set_target_slotid(fc_tbl, args->crsa_target_max_slots);
+       nfs41_set_target_slotid(fc_tbl, args->crsa_target_highest_slotid);
        nfs41_handle_recall_slot(cps->clp);
 out:
        dprintk("%s: exit with status = %d\n", __func__, ntohl(status));
index 742ff4f..81e8c7d 100644 (file)
@@ -520,7 +520,7 @@ static __be32 decode_recallslot_args(struct svc_rqst *rqstp,
        p = read_buf(xdr, 4);
        if (unlikely(p == NULL))
                return htonl(NFS4ERR_BADXDR);
-       args->crsa_target_max_slots = ntohl(*p++);
+       args->crsa_target_highest_slotid = ntohl(*p++);
        return 0;
 }