nfsd: fix clid_inuse on mount with security change
authorJ. Bruce Fields <bfields@redhat.com>
Thu, 15 Oct 2015 19:33:23 +0000 (15:33 -0400)
committerJ. Bruce Fields <bfields@redhat.com>
Fri, 23 Oct 2015 19:57:30 +0000 (15:57 -0400)
commit2b63482185e6054cc11ca6d6c073f90160c161fd
tree82c4dda36d1c0cdb6b64c5c7d90793727a9c3c9f
parent778620364ef525e83597a6edee4d0a69db67fd3d
nfsd: fix clid_inuse on mount with security change

In bakeathon testing Solaris client was getting CLID_INUSE error when
doing a krb5 mount soon after an auth_sys mount, or vice versa.

That's not really necessary since in this case the old client doesn't
have any state any more:

http://tools.ietf.org/html/rfc7530#page-103

"when the server gets a SETCLIENTID for a client ID that
currently has no state, or it has state but the lease has
expired, rather than returning NFS4ERR_CLID_INUSE, the server
MUST allow the SETCLIENTID and confirm the new client ID if
followed by the appropriate SETCLIENTID_CONFIRM."

This doesn't fix the problem completely since our client_has_state()
check counts openowners left around to handle close replays, which we
should probably just remove in this case.

Signed-off-by: J. Bruce Fields <bfields@redhat.com>
fs/nfsd/nfs4state.c