• Benjamin Coddington's avatar
    NFSv4: Fix dropped lock for racing OPEN and delegation return · 1cbc11aa
    Benjamin Coddington authored
    Commmit f5ea1613 ("NFSv4: Retry LOCK on OLD_STATEID during delegation
    return") attempted to solve this problem by using nfs4's generic async error
    handling, but introduced a regression where v4.0 lock recovery would hang.
    The additional complexity introduced by overloading that error handling is
    not necessary for this case.  This patch expects that commit to be
    reverted.
    
    The problem as originally explained in the above commit is:
    
        There's a small window where a LOCK sent during a delegation return can
        race with another OPEN on client, but the open stateid has not yet been
        updated.  In this case, the client doesn't handle the OLD_STATEID error
        from the server and will lose this lock, emitting:
        "NFS: nfs4_handle_delegation_recall_error: unhandled error -10024".
    
    Fix this by using the old_stateid refresh helpers if the server replies
    with OLD_STATEID.
    Suggested-by: default avatarTrond Myklebust <trondmy@hammerspace.com>
    Signed-off-by: default avatarBenjamin Coddington <bcodding@redhat.com>
    Signed-off-by: default avatarTrond Myklebust <trond.myklebust@hammerspace.com>
    1cbc11aa
nfs4proc.c 287 KB