Hi Scott, On Thu, 2019-05-02 at 13:31 -0400, Scott Mayhew wrote: > Only delegations and layouts can be recalled, so it shouldn't be > necessary to recover all opens when handling the status bit > SEQ4_STATUS_RECALLABLE_STATE_REVOKED. We'll still wind up calling > nfs41_open_expired() when a TEST_STATEID returns > NFS4ERR_DELEG_REVOKED. > > Signed-off-by: Scott Mayhew <smayhew@xxxxxxxxxx> > --- > fs/nfs/nfs4state.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/fs/nfs/nfs4state.c b/fs/nfs/nfs4state.c > index 3de36479ed7a..4db9bcf93fad 100644 > --- a/fs/nfs/nfs4state.c > +++ b/fs/nfs/nfs4state.c > @@ -2346,8 +2346,8 @@ static void > nfs41_handle_recallable_state_revoked(struct nfs_client *clp) > { > /* FIXME: For now, we destroy all layouts. */ > pnfs_destroy_all_layouts(clp); > - /* FIXME: For now, we test all delegations+open state+locks. */ > - nfs41_handle_some_state_revoked(clp); > + nfs_mark_test_expired_all_delegations(clp); > + nfs4_schedule_state_manager(clp); > dprintk("%s: Recallable state revoked on server %s!\n", > __func__, > clp->cl_hostname); > } Can we please package the above two lines into a helper function in fs/nfs/delegation.c? I suggest just calling it nfs_test_expired_all_delegations(). Thanks! Trond -- Trond Myklebust Linux NFS client maintainer, Hammerspace trond.myklebust@xxxxxxxxxxxxxxx