A further clean up to make the logic a bit more obvious and
remove a local variable which is no longer required.

Signed-off-by: Steven Whitehouse <[EMAIL PROTECTED]>

diff --git a/fs/gfs2/glock.c b/fs/gfs2/glock.c
index 65d6eba..79d61ff 100644
--- a/fs/gfs2/glock.c
+++ b/fs/gfs2/glock.c
@@ -564,24 +564,19 @@ static int rq_demote(struct gfs2_glock *gl)
  */
 static void run_queue(struct gfs2_glock *gl)
 {
-       int blocked;
-
-       for (;;) {
-               blocked = 1;
-               if (test_bit(GLF_LOCK, &gl->gl_flags))
-                       break;
-
+       while(test_bit(GLF_LOCK, &gl->gl_flags) == 0) {
                if (!list_empty(&gl->gl_waiters1)) {
                        rq_mutex(gl);
                        break;
-               } else if (test_bit(GLF_DEMOTE, &gl->gl_flags)) {
-                       blocked = rq_demote(gl);
+               }
+               if (test_bit(GLF_DEMOTE, &gl->gl_flags)) {
+                       if (rq_demote(gl) == 0)
+                               continue;
                } else if (!list_empty(&gl->gl_waiters3)) {
-                       blocked = rq_promote(gl);
+                       if (rq_promote(gl) == 0)
+                               continue;
                }
-
-               if (blocked)
-                       break;
+               break;
        }
 }
 
-- 
1.5.1.2

Reply via email to