lkml.org 
[lkml]   [2015]   [Sep]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[PATCH 2.6.32 42/62] fixing infinite OPEN loop in 4.0 stateid recovery
    2.6.32-longterm review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Olga Kornievskaia <kolga@netapp.com>

    commit e8d975e73e5fa05f983fbf2723120edcf68e0b38 upstream.

    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: Olga Kornievskaia <kolga@netapp.com>
    Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
    [bwh: Backported to 3.2: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
    (cherry picked from commit ef8500b18fc4bb03286a93b6032d56ec7bcbfd15)

    Signed-off-by: Willy Tarreau <w@1wt.eu>
    ---
    fs/nfs/nfs4state.c | 2 ++
    1 file changed, 2 insertions(+)

    diff --git a/fs/nfs/nfs4state.c b/fs/nfs/nfs4state.c
    index 2a7f163..71ee6f6 100644
    --- a/fs/nfs/nfs4state.c
    +++ b/fs/nfs/nfs4state.c
    @@ -929,6 +929,8 @@ restart:
    __func__);
    }
    nfs4_put_open_state(state);
    + clear_bit(NFS4CLNT_RECLAIM_NOGRACE,
    + &state->flags);
    goto restart;
    }
    }
    --
    1.7.12.2.21.g234cd45.dirty




    \
     
     \ /
      Last update: 2015-09-13 01:41    [W:4.401 / U:0.656 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site