From: NeilBrown <neilb@cse.unsw.edu.au>

The cb_parsed field is only used by probe_callback, to determine whether the
callback information has been filled in by setclientid.  But there is no way
that probe_callback() can be called without that having already happened, so
that check is superfluous, as is cb_parsed.

Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>
Signed-off-by: Neil Brown <neilb@cse.unsw.edu.au>
Signed-off-by: Andrew Morton <akpm@osdl.org>
---

 fs/nfsd/nfs4callback.c     |    4 +---
 fs/nfsd/nfs4state.c        |    5 +----
 include/linux/nfsd/state.h |    1 -
 3 files changed, 2 insertions(+), 8 deletions(-)

diff -puN fs/nfsd/nfs4callback.c~nfsd4-remove-cb_parsed fs/nfsd/nfs4callback.c
--- 25/fs/nfsd/nfs4callback.c~nfsd4-remove-cb_parsed	Thu Jun  2 16:25:35 2005
+++ 25-akpm/fs/nfsd/nfs4callback.c	Thu Jun  2 16:25:35 2005
@@ -386,9 +386,7 @@ nfsd4_probe_callback(struct nfs4_client 
 	char                    hostname[32];
 	int status;
 
-	dprintk("NFSD: probe_callback. cb_parsed %d cb_set %d\n",
-			cb->cb_parsed, atomic_read(&cb->cb_set));
-	if (!cb->cb_parsed || atomic_read(&cb->cb_set))
+	if (atomic_read(&cb->cb_set))
 		return;
 
 	/* Initialize address */
diff -puN fs/nfsd/nfs4state.c~nfsd4-remove-cb_parsed fs/nfsd/nfs4state.c
--- 25/fs/nfsd/nfs4state.c~nfsd4-remove-cb_parsed	Thu Jun  2 16:25:35 2005
+++ 25-akpm/fs/nfsd/nfs4state.c	Thu Jun  2 16:25:35 2005
@@ -377,7 +377,6 @@ create_client(struct xdr_netobj name, ch
 	memcpy(clp->cl_recdir, recdir, HEXDIR_LEN);
 	atomic_set(&clp->cl_count, 1);
 	atomic_set(&clp->cl_callback.cb_set, 0);
-	clp->cl_callback.cb_parsed = 0;
 	INIT_LIST_HEAD(&clp->cl_idhash);
 	INIT_LIST_HEAD(&clp->cl_strhash);
 	INIT_LIST_HEAD(&clp->cl_openowners);
@@ -620,14 +619,12 @@ gen_callback(struct nfs4_client *clp, st
 		goto out_err;
 	cb->cb_prog = se->se_callback_prog;
 	cb->cb_ident = se->se_callback_ident;
-	cb->cb_parsed = 1;
 	return;
 out_err:
 	printk(KERN_INFO "NFSD: this client (clientid %08x/%08x) "
 		"will not receive delegations\n",
 		clp->cl_clientid.cl_boot, clp->cl_clientid.cl_id);
 
-	cb->cb_parsed = 0;
 	return;
 }
 
@@ -872,7 +869,7 @@ nfsd4_setclientid_confirm(struct svc_rqs
 		else {
 			/* XXX: We just turn off callbacks until we can handle
 			  * change request correctly. */
-			conf->cl_callback.cb_parsed = 0;
+			atomic_set(&conf->cl_callback.cb_set, 0);
 			gen_confirm(conf);
 			expire_client(unconf);
 			status = nfs_ok;
diff -puN include/linux/nfsd/state.h~nfsd4-remove-cb_parsed include/linux/nfsd/state.h
--- 25/include/linux/nfsd/state.h~nfsd4-remove-cb_parsed	Thu Jun  2 16:25:35 2005
+++ 25-akpm/include/linux/nfsd/state.h	Thu Jun  2 16:25:35 2005
@@ -92,7 +92,6 @@ struct nfs4_delegation {
 /* client delegation callback info */
 struct nfs4_callback {
 	/* SETCLIENTID info */
-	u32			cb_parsed;  /* addr parsed */
 	u32                     cb_addr;
 	unsigned short          cb_port;
 	u32                     cb_prog;
_