• Olga Kornievskaia's avatar
    fixing infinite OPEN loop in 4.0 stateid recovery · e8d975e7
    Olga Kornievskaia authored
    Problem: When an operation like WRITE receives a BAD_STATEID, even though
    recovery code clears the RECLAIM_NOGRACE recovery flag before recovering
    the open state, because of clearing delegation state for the associated
    inode, nfs_inode_find_state_and_recover() gets called and it makes the
    same state with RECLAIM_NOGRACE flag again. As a results, when we restart
    looking over the open states, we end up in the infinite loop instead of
    breaking out in the next test of state flags.
    
    Solution: unset the RECLAIM_NOGRACE set because of
    calling of nfs_inode_find_state_and_recover() after returning from calling
    recover_open() function.
    Signed-off-by: default avatarOlga Kornievskaia <kolga@netapp.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: default avatarTrond Myklebust <trond.myklebust@primarydata.com>
    e8d975e7
nfs4state.c 63.4 KB