diff options
author | Benny Halevy <bhalevy@panasas.com> | 2009-04-01 09:23:20 -0400 |
---|---|---|
committer | Benny Halevy <bhalevy@panasas.com> | 2009-06-17 17:11:35 -0400 |
commit | 48a9e2d2289ed4b5053b3986d99709e9b07a0923 (patch) | |
tree | db397b9d26c69eefadef9e53c27364624743cef4 /fs | |
parent | b8f2ef84b079ceb22b42d6d353609db7eb8efa93 (diff) |
nfs41: decode minorversion 1 cb_compound header
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>
Diffstat (limited to 'fs')
-rw-r--r-- | fs/nfs/callback.h | 1 | ||||
-rw-r--r-- | fs/nfs/callback_xdr.c | 7 |
2 files changed, 4 insertions, 4 deletions
diff --git a/fs/nfs/callback.h b/fs/nfs/callback.h index 51b15c2d3a56..a8ffa9d6ea2f 100644 --- a/fs/nfs/callback.h +++ b/fs/nfs/callback.h | |||
@@ -27,7 +27,6 @@ struct cb_compound_hdr_arg { | |||
27 | unsigned int taglen; | 27 | unsigned int taglen; |
28 | const char *tag; | 28 | const char *tag; |
29 | unsigned int minorversion; | 29 | unsigned int minorversion; |
30 | unsigned int callback_ident; | ||
31 | unsigned nops; | 30 | unsigned nops; |
32 | }; | 31 | }; |
33 | 32 | ||
diff --git a/fs/nfs/callback_xdr.c b/fs/nfs/callback_xdr.c index 91f6f74ffea7..f6cc79b1d1f3 100644 --- a/fs/nfs/callback_xdr.c +++ b/fs/nfs/callback_xdr.c | |||
@@ -147,14 +147,15 @@ static __be32 decode_compound_hdr_arg(struct xdr_stream *xdr, struct cb_compound | |||
147 | if (unlikely(p == NULL)) | 147 | if (unlikely(p == NULL)) |
148 | return htonl(NFS4ERR_RESOURCE); | 148 | return htonl(NFS4ERR_RESOURCE); |
149 | hdr->minorversion = ntohl(*p++); | 149 | hdr->minorversion = ntohl(*p++); |
150 | /* Check minor version is zero. */ | 150 | /* Check minor version is zero or one. */ |
151 | if (hdr->minorversion != 0) { | 151 | if (hdr->minorversion <= 1) { |
152 | p++; /* skip callback_ident */ | ||
153 | } else { | ||
152 | printk(KERN_WARNING "%s: NFSv4 server callback with " | 154 | printk(KERN_WARNING "%s: NFSv4 server callback with " |
153 | "illegal minor version %u!\n", | 155 | "illegal minor version %u!\n", |
154 | __func__, hdr->minorversion); | 156 | __func__, hdr->minorversion); |
155 | return htonl(NFS4ERR_MINOR_VERS_MISMATCH); | 157 | return htonl(NFS4ERR_MINOR_VERS_MISMATCH); |
156 | } | 158 | } |
157 | hdr->callback_ident = ntohl(*p++); | ||
158 | hdr->nops = ntohl(*p); | 159 | hdr->nops = ntohl(*p); |
159 | dprintk("%s: minorversion %d nops %d\n", __func__, | 160 | dprintk("%s: minorversion %d nops %d\n", __func__, |
160 | hdr->minorversion, hdr->nops); | 161 | hdr->minorversion, hdr->nops); |