From: NeilBrown NFS4_INVAL is not a valid error for setclientid_confirm, and INUSE is the more logical error here anyway. From: Fred Isaman Signed-off-by: J. Bruce Fields Signed-off-by: Neil Brown Signed-off-by: Andrew Morton --- fs/nfsd/nfs4state.c | 11 +++-------- 1 files changed, 3 insertions(+), 8 deletions(-) diff -puN fs/nfsd/nfs4state.c~nfsd4-fix-setclientid_confirm-error-return fs/nfsd/nfs4state.c --- 25/fs/nfsd/nfs4state.c~nfsd4-fix-setclientid_confirm-error-return Thu Jun 2 16:25:23 2005 +++ 25-akpm/fs/nfsd/nfs4state.c Thu Jun 2 16:25:23 2005 @@ -849,12 +849,7 @@ nfsd4_setclientid_confirm(struct svc_rqs nfs4_lock_state(); clp = find_confirmed_client(clid); if (clp) { - status = nfserr_inval; - /* - * Found a record for this clientid. If the IP addresses - * don't match, return ERR_INVAL just as if the record had - * not been found. - */ + status = nfserr_clid_inuse; if (clp->cl_addr != ip_addr) { printk("NFSD: setclientid: string in use by client" "(clientid %08x/%08x)\n", @@ -865,7 +860,7 @@ nfsd4_setclientid_confirm(struct svc_rqs } clp = find_unconfirmed_client(clid); if (clp) { - status = nfserr_inval; + status = nfserr_clid_inuse; if (clp->cl_addr != ip_addr) { printk("NFSD: setclientid: string in use by client" "(clientid %08x/%08x)\n", @@ -949,7 +944,7 @@ nfsd4_setclientid_confirm(struct svc_rqs goto out; } /* check that we have hit one of the cases...*/ - status = nfserr_inval; + status = nfserr_clid_inuse; goto out; out: if (!status) _