• Chuck Lever's avatar
    NFSD: Revert 6c41d9a9 · 862bee84
    Chuck Lever authored
    For some reason, the wait_on_bit() in nfsd4_deleg_getattr_conflict()
    is waiting forever, preventing a clean server shutdown. The
    requesting client might also hang waiting for a reply to the
    conflicting GETATTR.
    
    Invoking wait_on_bit() in an nfsd thread context is a hazard. The
    correct fix is to replace this wait_on_bit() call site with a
    mechanism that defers the conflicting GETATTR until the CB_GETATTR
    completes or is known to have failed.
    
    That will require some surgery and extended testing and it's late
    in the v6.7-rc cycle, so I'm reverting now in favor of trying again
    in a subsequent kernel release.
    
    This is my fault: I should have recognized the ramifications of
    calling wait_on_bit() in here before accepting this patch.
    
    Thanks to Dai Ngo <dai.ngo@oracle.com> for diagnosing the issue.
    Reported-by: default avatarWolfgang Walter <linux-nfs@stwm.de>
    Closes: https://lore.kernel.org/linux-nfs/e3d43ecdad554fbdcaa7181833834f78@stwm.de/Signed-off-by: default avatarChuck Lever <chuck.lever@oracle.com>
    862bee84
nfs4xdr.c 152 KB