lkml.org 
[lkml]   [2015]   [Dec]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 3.16.y-ckt 013/126] Failing to send a CLOSE if file is opened WRONLY and server reboots on a 4.x mount
    Date
    3.16.7-ckt21 -stable review patch.  If anyone has any objections, please let me know.

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

    From: Olga Kornievskaia <aglo@umich.edu>

    commit a41cbe86df3afbc82311a1640e20858c0cd7e065 upstream.

    A test case is as the description says:
    open(foobar, O_WRONLY);
    sleep() --> reboot the server
    close(foobar)

    The bug is because in nfs4state.c in nfs4_reclaim_open_state() a few
    line before going to restart, there is
    clear_bit(NFS4CLNT_RECLAIM_NOGRACE, &state->flags).

    NFS4CLNT_RECLAIM_NOGRACE is a flag for the client states not open
    owner states. Value of NFS4CLNT_RECLAIM_NOGRACE is 4 which is the
    value of NFS_O_WRONLY_STATE in nfs4_state->flags. So clearing it wipes
    out state and when we go to close it, “call_close” doesn’t get set as
    state flag is not set and CLOSE doesn’t go on the wire.

    Signed-off-by: Olga Kornievskaia <aglo@umich.edu>
    Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
    Cc: Ben Hutchings <ben@decadent.org.uk>
    Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
    ---
    fs/nfs/nfs4state.c | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)

    diff --git a/fs/nfs/nfs4state.c b/fs/nfs/nfs4state.c
    index 46d876487795..577bb8d849f7 100644
    --- a/fs/nfs/nfs4state.c
    +++ b/fs/nfs/nfs4state.c
    @@ -1482,7 +1482,7 @@ restart:
    spin_unlock(&state->state_lock);
    }
    nfs4_put_open_state(state);
    - clear_bit(NFS4CLNT_RECLAIM_NOGRACE,
    + clear_bit(NFS_STATE_RECLAIM_NOGRACE,
    &state->flags);
    spin_lock(&sp->so_lock);
    goto restart;

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