[GFS2] Correct logic in glock scanner
Under certain circumstances the glock scanning logic would demote locks which ought not to have been selected for demotion. Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
This commit is contained in:
parent
fd4de2d41a
commit
627add2d13
|
@ -1967,9 +1967,12 @@ static void scan_glock(struct gfs2_glock *gl)
|
||||||
if (gfs2_glmutex_trylock(gl)) {
|
if (gfs2_glmutex_trylock(gl)) {
|
||||||
if (gl->gl_ops == &gfs2_inode_glops) {
|
if (gl->gl_ops == &gfs2_inode_glops) {
|
||||||
struct gfs2_inode *ip = gl->gl_object;
|
struct gfs2_inode *ip = gl->gl_object;
|
||||||
if (ip)
|
if (ip == NULL) {
|
||||||
|
struct gfs2_sbd *sdp = gl->gl_sbd;
|
||||||
|
gfs2_assert_withdraw(sdp, gl->gl_state == LM_ST_UNLOCKED);
|
||||||
goto out_schedule;
|
goto out_schedule;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
if (queue_empty(gl, &gl->gl_holders) &&
|
if (queue_empty(gl, &gl->gl_holders) &&
|
||||||
gl->gl_state != LM_ST_UNLOCKED &&
|
gl->gl_state != LM_ST_UNLOCKED &&
|
||||||
demote_ok(gl))
|
demote_ok(gl))
|
||||||
|
|
Loading…
Reference in New Issue