Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 627add2d authored by Steven Whitehouse's avatar Steven Whitehouse
Browse files

[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: default avatarSteven Whitehouse <swhiteho@redhat.com>
parent fd4de2d4
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -1967,9 +1967,12 @@ static void scan_glock(struct gfs2_glock *gl)
	if (gfs2_glmutex_trylock(gl)) {
		if (gl->gl_ops == &gfs2_inode_glops) {
			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;
			}
		}
		if (queue_empty(gl, &gl->gl_holders) &&
		    gl->gl_state != LM_ST_UNLOCKED &&
		    demote_ok(gl))