lkml.org 
[lkml]   [2020]   [May]   [26]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.4 080/111] Revert "gfs2: Dont demote a glock until its revokes are written"
    Date
    From: Bob Peterson <rpeterso@redhat.com>

    [ Upstream commit b14c94908b1b884276a6608dea3d0b1b510338b7 ]

    This reverts commit df5db5f9ee112e76b5202fbc331f990a0fc316d6.

    This patch fixes a regression: patch df5db5f9ee112 allowed function
    run_queue() to bypass its call to do_xmote() if revokes were queued for
    the glock. That's wrong because its call to do_xmote() is what is
    responsible for calling the go_sync() glops functions to sync both
    the ail list and any revokes queued for it. By bypassing the call,
    gfs2 could get into a stand-off where the glock could not be demoted
    until its revokes are written back, but the revokes would not be
    written back because do_xmote() was never called.

    It "sort of" works, however, because there are other mechanisms like
    the log flush daemon (logd) that can sync the ail items and revokes,
    if it deems it necessary. The problem is: without file system pressure,
    it might never deem it necessary.

    Signed-off-by: Bob Peterson <rpeterso@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    fs/gfs2/glock.c | 3 ---
    1 file changed, 3 deletions(-)

    diff --git a/fs/gfs2/glock.c b/fs/gfs2/glock.c
    index 21820a5b388f..0290a22ebccf 100644
    --- a/fs/gfs2/glock.c
    +++ b/fs/gfs2/glock.c
    @@ -639,9 +639,6 @@ __acquires(&gl->gl_lockref.lock)
    goto out_unlock;
    if (nonblock)
    goto out_sched;
    - smp_mb();
    - if (atomic_read(&gl->gl_revokes) != 0)
    - goto out_sched;
    set_bit(GLF_DEMOTE_IN_PROGRESS, &gl->gl_flags);
    GLOCK_BUG_ON(gl, gl->gl_demote_state == LM_ST_EXCLUSIVE);
    gl->gl_target = gl->gl_demote_state;
    --
    2.25.1


    \
     
     \ /
      Last update: 2020-05-26 21:20    [W:4.068 / U:0.448 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site