X-Git-Url: https://git.karo-electronics.de/?a=blobdiff_plain;f=fs%2Fdlm%2Fmember.c;h=85e2897bd7400fc4155948fc8eb1c81cb1ff8e01;hb=18963c01b8abf381f102752ce024c3582a716125;hp=ebb33c30f0f3522405685c25a1993dd863172546;hpb=f6db1b8e724b071d144055b48da3827ce26dba1c;p=mv-sheeva.git diff --git a/fs/dlm/member.c b/fs/dlm/member.c index ebb33c30f0f..85e2897bd74 100644 --- a/fs/dlm/member.c +++ b/fs/dlm/member.c @@ -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) {