On Mar 12, 2012, at 1:14 PM, Chuck Lever wrote: > Hi- > > On Mar 9, 2012, at 6:35 PM, Myklebust, Trond wrote: > >> On Fri, 2012-03-09 at 17:35 -0500, Chuck Lever wrote: >>> diff --git a/fs/nfs/nfs4state.c b/fs/nfs/nfs4state.c >>> index 4db330d..a2b7c47 100644 >>> --- a/fs/nfs/nfs4state.c >>> +++ b/fs/nfs/nfs4state.c >>> @@ -1570,7 +1570,6 @@ void nfs41_handle_recall_slot(struct nfs_client *clp) >>> static void nfs4_reset_all_state(struct nfs_client *clp) >>> { >>> if (test_and_set_bit(NFS4CLNT_LEASE_EXPIRED, &clp->cl_state) == 0) { >>> - clp->cl_boot_time = CURRENT_TIME; >>> nfs4_state_start_reclaim_nograce(clp); >> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >> This line is now problematic. If we don't declare a reboot, then we may >> end up with all sorts of BAD_SEQID errors above. >> >> Hmm... Thinking about this, the best solution might be simply to declare >> 2 reboots: >> 1. Reboot using a CURRENT_TIME based verifier >> 2. Reboot again using the nfs_boot_time based verifier. >> >> That guarantees that the server clears out all the state that we weren't >> interested in keeping, while ensuring that in the end, we continue to >> use the nfs_boot_time verifier for all future state generation attempts. > > Add a new cl_state flag, call it, say, NFS4CLNT_RESET_SERVER_STATE. Set that flag in nfs4_reset_all_state(). > > In nfs4_proc_setclientid(), have it use CURRENT_TIME for the boot verifier if NFS4CLNT_RESET_SERVER_STATE is set. Well, add this somewhere that will effect nfs4_proc_exchange_id() as well. > > Add logic at the top of the loop in nfs4_state_manager() that, if NFS4CLNT_RESET_SERVER_STATE is set, invokes nfs4_reclaim_lease(), then it sets the NFS4CLNT_LEASE_EXPIRED flag and does a "continue;". > > -- > Chuck Lever > chuck[dot]lever[at]oracle[dot]com > > > > > -- > To unsubscribe from this list: send the line "unsubscribe linux-nfs" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html -- Chuck Lever chuck[dot]lever[at]oracle[dot]com -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html