]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - fs/dlm/member.c
timerfd use waitqueue lock ...
[mv-sheeva.git] / fs / dlm / member.c
index ebb33c30f0f3522405685c25a1993dd863172546..85e2897bd7400fc4155948fc8eb1c81cb1ff8e01 100644 (file)
@@ -176,7 +176,8 @@ static int ping_members(struct dlm_ls *ls)
                        break;
        }
        if (error)
-               log_debug(ls, "ping_members aborted %d", error);
+               log_debug(ls, "ping_members aborted %d last nodeid %d",
+                         error, ls->ls_recover_nodeid);
        return error;
 }
 
@@ -185,6 +186,14 @@ int dlm_recover_members(struct dlm_ls *ls, struct dlm_recover *rv, int *neg_out)
        struct dlm_member *memb, *safe;
        int i, error, found, pos = 0, neg = 0, low = -1;
 
+       /* previously removed members that we've not finished removing need to
+          count as a negative change so the "neg" recovery steps will happen */
+
+       list_for_each_entry(memb, &ls->ls_nodes_gone, list) {
+               log_debug(ls, "prev removed member %d", memb->nodeid);
+               neg++;
+       }
+
        /* move departed members from ls_nodes to ls_nodes_gone */
 
        list_for_each_entry_safe(memb, safe, &ls->ls_nodes, list) {