aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndy Adamson <andros@netapp.com>2009-06-15 21:20:53 -0400
committerJ. Bruce Fields <bfields@citi.umich.edu>2009-06-18 21:33:57 -0400
commitab52ae6db035fa425f90146327ab7d2c5d3e5654 (patch)
tree449acdb98ca035bd57c45b4bd8e89ac04f8ecff7
parentef52bff8409bba78b042f1bcf33a0f49debc9774 (diff)
nfsd41: Backchannel: minorversion support for the back channel
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>
-rw-r--r--fs/nfsd/nfs4callback.c3
-rw-r--r--fs/nfsd/nfs4state.c1
-rw-r--r--include/linux/nfsd/state.h3
3 files changed, 5 insertions, 2 deletions
diff --git a/fs/nfsd/nfs4callback.c b/fs/nfsd/nfs4callback.c
index 353eb4a0b847..3fd23f7aceca 100644
--- a/fs/nfsd/nfs4callback.c
+++ b/fs/nfsd/nfs4callback.c
@@ -141,6 +141,7 @@ struct nfs4_cb_compound_hdr {
141 u32 ident; 141 u32 ident;
142 u32 nops; 142 u32 nops;
143 __be32 *nops_p; 143 __be32 *nops_p;
144 u32 minorversion;
144 u32 taglen; 145 u32 taglen;
145 char *tag; 146 char *tag;
146}; 147};
@@ -209,7 +210,7 @@ encode_cb_compound_hdr(struct xdr_stream *xdr, struct nfs4_cb_compound_hdr *hdr)
209 210
210 RESERVE_SPACE(16); 211 RESERVE_SPACE(16);
211 WRITE32(0); /* tag length is always 0 */ 212 WRITE32(0); /* tag length is always 0 */
212 WRITE32(NFS4_MINOR_VERSION); 213 WRITE32(hdr->minorversion);
213 WRITE32(hdr->ident); 214 WRITE32(hdr->ident);
214 hdr->nops_p = p; 215 hdr->nops_p = p;
215 WRITE32(hdr->nops); 216 WRITE32(hdr->nops);
diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c
index ef6944b19f06..980a216a48c8 100644
--- a/fs/nfsd/nfs4state.c
+++ b/fs/nfsd/nfs4state.c
@@ -984,6 +984,7 @@ gen_callback(struct nfs4_client *clp, struct nfsd4_setclientid *se)
984 if ( !(parse_ipv4(se->se_callback_addr_len, se->se_callback_addr_val, 984 if ( !(parse_ipv4(se->se_callback_addr_len, se->se_callback_addr_val,
985 &cb->cb_addr, &cb->cb_port))) 985 &cb->cb_addr, &cb->cb_port)))
986 goto out_err; 986 goto out_err;
987 cb->cb_minorversion = 0;
987 cb->cb_prog = se->se_callback_prog; 988 cb->cb_prog = se->se_callback_prog;
988 cb->cb_ident = se->se_callback_ident; 989 cb->cb_ident = se->se_callback_ident;
989 return; 990 return;
diff --git a/include/linux/nfsd/state.h b/include/linux/nfsd/state.h
index 105cc100de05..f5a95fd34312 100644
--- a/include/linux/nfsd/state.h
+++ b/include/linux/nfsd/state.h
@@ -85,7 +85,8 @@ struct nfs4_cb_conn {
85 u32 cb_addr; 85 u32 cb_addr;
86 unsigned short cb_port; 86 unsigned short cb_port;
87 u32 cb_prog; 87 u32 cb_prog;
88 u32 cb_ident; 88 u32 cb_minorversion;
89 u32 cb_ident; /* minorversion 0 only */
89 /* RPC client info */ 90 /* RPC client info */
90 atomic_t cb_set; /* successful CB_NULL call */ 91 atomic_t cb_set; /* successful CB_NULL call */
91 struct rpc_clnt * cb_client; 92 struct rpc_clnt * cb_client;