lkml.org 
[lkml]   [2022]   [Jun]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.10 087/172] NFSv4: Dont hold the layoutget locks across multiple RPC calls
    Date
    From: Trond Myklebust <trond.myklebust@hammerspace.com>

    [ Upstream commit 6949493884fe88500de4af182588e071cf1544ee ]

    When doing layoutget as part of the open() compound, we have to be
    careful to release the layout locks before we can call any further RPC
    calls, such as setattr(). The reason is that those calls could trigger
    a recall, which could deadlock.

    Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
    Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    fs/nfs/nfs4proc.c | 4 ++++
    1 file changed, 4 insertions(+)

    diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
    index b6d60e69043a..b22da4e3165b 100644
    --- a/fs/nfs/nfs4proc.c
    +++ b/fs/nfs/nfs4proc.c
    @@ -3086,6 +3086,10 @@ static int _nfs4_open_and_get_state(struct nfs4_opendata *opendata,
    }

    out:
    + if (opendata->lgp) {
    + nfs4_lgopen_release(opendata->lgp);
    + opendata->lgp = NULL;
    + }
    if (!opendata->cancelled)
    nfs4_sequence_free_slot(&opendata->o_res.seq_res);
    return ret;
    --
    2.35.1


    \
     
     \ /
      Last update: 2022-06-13 14:46    [W:4.243 / U:0.012 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site