On Fri, 2012-09-28 at 17:05 -0400, andros@xxxxxxxxxx wrote: > From: Andy Adamson <andros@xxxxxxxxxx> > > We should always reclaim state when the lease and therefore the clientid > is expired. > > Signed-off-by: Andy Adamson <andros@xxxxxxxxxx> > --- > fs/nfs/nfs4state.c | 6 ++++-- > 1 files changed, 4 insertions(+), 2 deletions(-) > > diff --git a/fs/nfs/nfs4state.c b/fs/nfs/nfs4state.c > index a5331ec..134323a 100644 > --- a/fs/nfs/nfs4state.c > +++ b/fs/nfs/nfs4state.c > @@ -1600,8 +1600,8 @@ out: > return nfs4_recovery_handle_error(clp, status); > } > > -/* Set NFS4CLNT_LEASE_EXPIRED for all v4.0 errors and for recoverable errors > - * on EXCHANGE_ID for v4.1 > +/* Set NFS4CLNT_LEASE_EXPIRED and reclaim reboot state for all v4.0 errors > + * and for recoverable errors on EXCHANGE_ID for v4.1 > */ > static int nfs4_handle_reclaim_lease_error(struct nfs_client *clp, int status) > { > @@ -1647,6 +1647,8 @@ static int nfs4_handle_reclaim_lease_error(struct nfs_client *clp, int status) > return status; > } > set_bit(NFS4CLNT_LEASE_EXPIRED, &clp->cl_state); > + nfs4_state_clear_reclaim_reboot(clp); > + nfs4_state_start_reclaim_reboot(clp); This is probably correct for NFS4ERR_STALE_CLIENTID, but certainly not for NFS4ERR_SEQ_MISORDERED, or NFS4ERR_DELAY... > dprintk("%s: handled error %d for server %s\n", __func__, status, > clp->cl_hostname); > return 0; -- Trond Myklebust Linux NFS client maintainer NetApp Trond.Myklebust@xxxxxxxxxx www.netapp.com ��.n��������+%������w��{.n�����{��w���jg��������ݢj����G�������j:+v���w�m������w�������h�����٥