nfsd41: Backchannel: minorversion support for the back channel
authorAndy Adamson <andros@netapp.com>
Tue, 16 Jun 2009 01:20:53 +0000 (04:20 +0300)
committerJ. Bruce Fields <bfields@citi.umich.edu>
Fri, 19 Jun 2009 01:33:57 +0000 (18:33 -0700)
Prepare to share backchannel code with NFSv4.1.

Signed-off-by: Andy Adamson <andros@netapp.com>
Signed-off-by: Benny Halevy <bhalevy@panasas.com>
Signed-off-by: Ricardo Labiaga <Ricardo.Labiaga@netapp.com>
[nfsd41: use nfsd4_cb_sequence for callback minorversion]
Signed-off-by: Benny Halevy <bhalevy@panasas.com>
Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>
fs/nfsd/nfs4callback.c
fs/nfsd/nfs4state.c
include/linux/nfsd/state.h

index 353eb4a..3fd23f7 100644 (file)
@@ -141,6 +141,7 @@ struct nfs4_cb_compound_hdr {
        u32             ident;
        u32             nops;
        __be32          *nops_p;
+       u32             minorversion;
        u32             taglen;
        char            *tag;
 };
@@ -209,7 +210,7 @@ encode_cb_compound_hdr(struct xdr_stream *xdr, struct nfs4_cb_compound_hdr *hdr)
 
        RESERVE_SPACE(16);
        WRITE32(0);            /* tag length is always 0 */
-       WRITE32(NFS4_MINOR_VERSION);
+       WRITE32(hdr->minorversion);
        WRITE32(hdr->ident);
        hdr->nops_p = p;
        WRITE32(hdr->nops);
index ef6944b..980a216 100644 (file)
@@ -984,6 +984,7 @@ gen_callback(struct nfs4_client *clp, struct nfsd4_setclientid *se)
        if ( !(parse_ipv4(se->se_callback_addr_len, se->se_callback_addr_val,
                         &cb->cb_addr, &cb->cb_port)))
                goto out_err;
+       cb->cb_minorversion = 0;
        cb->cb_prog = se->se_callback_prog;
        cb->cb_ident = se->se_callback_ident;
        return;
index 105cc10..f5a95fd 100644 (file)
@@ -85,7 +85,8 @@ struct nfs4_cb_conn {
        u32                     cb_addr;
        unsigned short          cb_port;
        u32                     cb_prog;
-       u32                     cb_ident;
+       u32                     cb_minorversion;
+       u32                     cb_ident;       /* minorversion 0 only */
        /* RPC client info */
        atomic_t                cb_set;     /* successful CB_NULL call */
        struct rpc_clnt *       cb_client;