nfs41: decode minorversion 1 cb_compound header
authorBenny Halevy <bhalevy@panasas.com>
Wed, 1 Apr 2009 13:23:20 +0000 (09:23 -0400)
committerBenny Halevy <bhalevy@panasas.com>
Wed, 17 Jun 2009 21:11:35 +0000 (14:11 -0700)
decode cb_compound header conforming to
http://tools.ietf.org/html/draft-ietf-nfsv4-minorversion1-26

Get rid of cb_compound_hdr_arg.callback_ident

callback_ident is not used anywhere so we shouldn't waste any memory to
store it.

Signed-off-by: Benny Halevy <bhalevy@panasas.com>
[nfs41: no need to break read_buf in decode_compound_hdr_arg]
See http://linux-nfs.org/pipermail/pnfs/2009-June/007844.html
Signed-off-by: Benny Halevy <bhalevy@panasas.com>
fs/nfs/callback.h
fs/nfs/callback_xdr.c

index 51b15c2d3a56a05da31805fefb94a693f0d4f49e..a8ffa9d6ea2f8e976f1f0210f136c3bce9ff80e5 100644 (file)
@@ -27,7 +27,6 @@ struct cb_compound_hdr_arg {
        unsigned int taglen;
        const char *tag;
        unsigned int minorversion;
-       unsigned int callback_ident;
        unsigned nops;
 };
 
index 91f6f74ffea76e943355670ad472afeba05c2555..f6cc79b1d1f3fc09f547b78aac2863c33382c5f2 100644 (file)
@@ -147,14 +147,15 @@ static __be32 decode_compound_hdr_arg(struct xdr_stream *xdr, struct cb_compound
        if (unlikely(p == NULL))
                return htonl(NFS4ERR_RESOURCE);
        hdr->minorversion = ntohl(*p++);
-       /* Check minor version is zero. */
-       if (hdr->minorversion != 0) {
+       /* Check minor version is zero or one. */
+       if (hdr->minorversion <= 1) {
+               p++;    /* skip callback_ident */
+       } else {
                printk(KERN_WARNING "%s: NFSv4 server callback with "
                        "illegal minor version %u!\n",
                        __func__, hdr->minorversion);
                return htonl(NFS4ERR_MINOR_VERS_MISMATCH);
        }
-       hdr->callback_ident = ntohl(*p++);
        hdr->nops = ntohl(*p);
        dprintk("%s: minorversion %d nops %d\n", __func__,
                hdr->minorversion, hdr->nops);