Message ID | 1348866309-2049-2-git-send-email-andros@netapp.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Fri, 2012-09-28 at 17:05 -0400, andros@netapp.com wrote: > From: Andy Adamson <andros@netapp.com> > > We should always reclaim state when the lease and therefore the clientid > is expired. > > Signed-off-by: Andy Adamson <andros@netapp.com> > --- > 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@netapp.com www.netapp.com
On Mon, Oct 1, 2012 at 6:15 PM, Myklebust, Trond <Trond.Myklebust@netapp.com> wrote: > On Fri, 2012-09-28 at 17:05 -0400, andros@netapp.com wrote: >> From: Andy Adamson <andros@netapp.com> >> >> We should always reclaim state when the lease and therefore the clientid >> is expired. >> >> Signed-off-by: Andy Adamson <andros@netapp.com> >> --- >> 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... > Oops - will resend with fix... -->Andy >> 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@netapp.com > www.netapp.com -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
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); dprintk("%s: handled error %d for server %s\n", __func__, status, clp->cl_hostname); return 0;