• Benjamin Coddington's avatar
    NFSv4: fairly test all delegations on a SEQ4_ revocation · a9b8d90f
    Benjamin Coddington authored
    When the client is required to use TEST_STATEID to discover which
    delegation(s) have been revoked, it may continually test delegations at the
    head of the list if the server continues to be unsatisfied and send
    SEQ4_STATUS_RECALLABLE_STATE_REVOKED.  For a large number of delegations
    this behavior is prone to live-lock because the client may never be able to
    test and free revoked state at the end of the list since the
    SEQ4_STATUS_RECALLABLE_STATE_REVOKED will cause us to flag delegations at
    the head of the list to be tested.  This problem is further exacerbated by
    the state manager's willingness to be scheduled out on a busy system while
    testing the list of delegations.
    
    Keep a generation counter for each attempt to test all delegations, and
    skip delegations that have already been tested in the current pass.
    Signed-off-by: default avatarBenjamin Coddington <bcodding@redhat.com>
    Tested-by: default avatarTorkil Svensgaard <torkil@drcmr.dk>
    Tested-by: default avatarRuben Vestergaard <rubenv@drcmr.dk>
    Signed-off-by: default avatarTrond Myklebust <trond.myklebust@hammerspace.com>
    a9b8d90f
delegation.c 39.9 KB