diff options
author | Peter Zijlstra <peterz@infradead.org> | 2020-05-19 20:34:12 +0200 |
---|---|---|
committer | Peter Zijlstra <peterz@infradead.org> | 2020-05-19 20:34:12 +0200 |
commit | 9013196a467e770e1470cccee6c0fe435ef37c66 (patch) | |
tree | 2aefbb9d14a1a7513af9e752fe5bb80cf6b00c0c /fs/gfs2/glock.c | |
parent | 2a0a24ebb499c9d499eea948d3fc108f936e36d4 (diff) | |
parent | 39f23ce07b9355d05a64ae303ce20d1c4b92b957 (diff) | |
download | linux-9013196a467e770e1470cccee6c0fe435ef37c66.tar.bz2 |
Merge branch 'sched/urgent'
Diffstat (limited to 'fs/gfs2/glock.c')
-rw-r--r-- | fs/gfs2/glock.c | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/fs/gfs2/glock.c b/fs/gfs2/glock.c index 29f9b6684b74..bf70e3b14938 100644 --- a/fs/gfs2/glock.c +++ b/fs/gfs2/glock.c @@ -613,7 +613,7 @@ __acquires(&gl->gl_lockref.lock) fs_err(sdp, "Error %d syncing glock \n", ret); gfs2_dump_glock(NULL, gl, true); } - return; + goto skip_inval; } } if (test_bit(GLF_INVALIDATE_IN_PROGRESS, &gl->gl_flags)) { @@ -633,6 +633,7 @@ __acquires(&gl->gl_lockref.lock) clear_bit(GLF_INVALIDATE_IN_PROGRESS, &gl->gl_flags); } +skip_inval: gfs2_glock_hold(gl); /* * Check for an error encountered since we called go_sync and go_inval. @@ -722,9 +723,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; |