Commit 20453644 authored by Andreas Gruenbacher's avatar Andreas Gruenbacher
Browse files

gfs2: Simplify do_promote



While not immediately obvious, do_promote() returns whether or not there
are any active holders in the queue.  But the function description is
confusing, and this information is easy to come by for callers anyway,
so turn do_promote() into a void function.

Signed-off-by: default avatarAndreas Gruenbacher <agruenba@redhat.com>
Reviewed-by: default avatarAndrew Price <anprice@redhat.com>
parent bddb53b7
Loading
Loading
Loading
Loading
+6 −11
Original line number Diff line number Diff line
@@ -481,11 +481,9 @@ int gfs2_instantiate(struct gfs2_holder *gh)
/**
 * do_promote - promote as many requests as possible on the current queue
 * @gl: The glock
 * 
 * Returns true on success (i.e., progress was made or there are no waiters).
 */

static bool do_promote(struct gfs2_glock *gl)
static void do_promote(struct gfs2_glock *gl)
{
	struct gfs2_holder *gh, *current_gh;

@@ -496,12 +494,9 @@ static bool do_promote(struct gfs2_glock *gl)
		if (!may_grant(gl, current_gh, gh)) {
			/*
			 * If we get here, it means we may not grant this
			 * holder for some reason. If this holder is at the
			 * head of the list, it means we have a blocked holder
			 * at the head, so return false.
			 * holder for some reason.
			 */
			if (list_is_first(&gh->gh_list, &gl->gl_holders))
				return false;
			if (current_gh)
				do_error(gl, 0); /* Fail queued try locks */
			break;
		}
@@ -511,7 +506,6 @@ static bool do_promote(struct gfs2_glock *gl)
		if (!current_gh)
			current_gh = gh;
	}
	return true;
}

/**
@@ -855,7 +849,8 @@ __acquires(&gl->gl_lockref.lock)
	} else {
		if (test_bit(GLF_DEMOTE, &gl->gl_flags))
			gfs2_demote_wake(gl);
		if (do_promote(gl))
		do_promote(gl);
		if (find_first_holder(gl))
			goto out_unlock;
		gh = find_first_waiter(gl);
		if (!gh)