dlm: fs/dlm/ast.c: fix warning
authorAndrew Morton <akpm@linux-foundation.org>
Tue, 23 Dec 2008 16:22:56 +0000 (10:22 -0600)
committerDavid Teigland <teigland@redhat.com>
Tue, 23 Dec 2008 16:22:56 +0000 (10:22 -0600)
fs/dlm/ast.c: In function 'dlm_astd':
fs/dlm/ast.c:64: warning: 'bastmode' may be used uninitialized in this function

Cleans code up.

Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: David Teigland <teigland@redhat.com>
fs/dlm/ast.c

index fbe840d..dc2ad60 100644 (file)
@@ -61,30 +61,23 @@ static void process_asts(void)
        struct dlm_lkb *lkb;
        void (*cast) (void *astparam);
        void (*bast) (void *astparam, int mode);
-       int type = 0, found, bastmode;
-
-       for (;;) {
-               found = 0;
-               spin_lock(&ast_queue_lock);
-               list_for_each_entry(lkb, &ast_queue, lkb_astqueue) {
-                       r = lkb->lkb_resource;
-                       ls = r->res_ls;
-
-                       if (dlm_locking_stopped(ls))
-                               continue;
-
-                       list_del(&lkb->lkb_astqueue);
-                       type = lkb->lkb_ast_type;
-                       lkb->lkb_ast_type = 0;
-                       bastmode = lkb->lkb_bastmode;
-                       found = 1;
-                       break;
-               }
-               spin_unlock(&ast_queue_lock);
+       int type = 0, bastmode;
+
+repeat:
+       spin_lock(&ast_queue_lock);
+       list_for_each_entry(lkb, &ast_queue, lkb_astqueue) {
+               r = lkb->lkb_resource;
+               ls = r->res_ls;
 
-               if (!found)
-                       break;
+               if (dlm_locking_stopped(ls))
+                       continue;
 
+               list_del(&lkb->lkb_astqueue);
+               type = lkb->lkb_ast_type;
+               lkb->lkb_ast_type = 0;
+               bastmode = lkb->lkb_bastmode;
+
+               spin_unlock(&ast_queue_lock);
                cast = lkb->lkb_astfn;
                bast = lkb->lkb_bastfn;
 
@@ -99,7 +92,9 @@ static void process_asts(void)
                dlm_put_lkb(lkb);
 
                cond_resched();
+               goto repeat;
        }
+       spin_unlock(&ast_queue_lock);
 }
 
 static inline int no_asts(void)