nfs41: Backchannel: Refactor nfs4_init_slot_table()
authorRicardo Labiaga <Ricardo.Labiaga@netapp.com>
Wed, 1 Apr 2009 13:23:32 +0000 (09:23 -0400)
committerBenny Halevy <bhalevy@panasas.com>
Wed, 17 Jun 2009 21:11:42 +0000 (14:11 -0700)
Generalize nfs4_init_slot_table() so it can be used to initialize the
backchannel slot table in addition to the forechannel slot table.

Signed-off-by: Ricardo Labiaga <Ricardo.Labiaga@netapp.com>
Signed-off-by: Benny Halevy <bhalevy@panasas.com>
fs/nfs/nfs4proc.c

index a7b1d6c228cd82ca3457239251b756dc02e79d9d..c3019ad8589379ea6ccb031a6657c1bcb285a8fa 100644 (file)
@@ -4420,23 +4420,22 @@ static int nfs4_reset_slot_tables(struct nfs4_session *session)
 /*
  * Initialize slot table
  */
-static int nfs4_init_slot_table(struct nfs4_session *session)
+static int nfs4_init_slot_table(struct nfs4_slot_table *tbl,
+               int max_slots, int ivalue)
 {
-       struct nfs4_slot_table *tbl = &session->fc_slot_table;
-       int i, max_slots = session->fc_attrs.max_reqs;
+       int i;
        struct nfs4_slot *slot;
        int ret = -ENOMEM;
 
        BUG_ON(max_slots > NFS4_MAX_SLOT_TABLE);
 
-       dprintk("--> %s: max_reqs=%u\n", __func__,
-               session->fc_attrs.max_reqs);
+       dprintk("--> %s: max_reqs=%u\n", __func__, max_slots);
 
        slot = kcalloc(max_slots, sizeof(struct nfs4_slot), GFP_KERNEL);
        if (!slot)
                goto out;
        for (i = 0; i < max_slots; ++i)
-               slot[i].seq_nr = 1;
+               slot[i].seq_nr = ivalue;
        ret = 0;
 
        spin_lock(&tbl->slot_tbl_lock);
@@ -4456,11 +4455,24 @@ static int nfs4_init_slot_table(struct nfs4_session *session)
 out:
        dprintk("<-- %s: return %d\n", __func__, ret);
        return ret;
+
 out_free:
        kfree(slot);
        goto out;
 }
 
+/*
+ * Initialize the forechannel and backchannel tables
+ */
+static int nfs4_init_slot_tables(struct nfs4_session *session)
+{
+       int status;
+
+       status = nfs4_init_slot_table(&session->fc_slot_table,
+                       session->fc_attrs.max_reqs, 1);
+       return status;
+}
+
 /* Destroy the slot table */
 static void nfs4_destroy_slot_table(struct nfs4_session *session)
 {
@@ -4657,7 +4669,7 @@ int nfs4_proc_create_session(struct nfs_client *clp, int reset)
        if (reset)
                status = nfs4_reset_slot_tables(session);
        else
-               status = nfs4_init_slot_table(session);
+               status = nfs4_init_slot_tables(session);
        dprintk("fore channel slot table initialization returned %d\n", status);
        if (status)
                goto out;