X-Git-Url: http://ftp.safe.ca/?a=blobdiff_plain;f=fs%2Fdlm%2Frecoverd.c;h=fd677c8c3d3b041396817bc930bde7e5e5b0be87;hb=850a80cfaa5aec3e626eb3736eff890a80e4fa77;hp=4b89e20eebe702f32a9214d2f377e1efc2768001;hpb=c36258b5925e6cf6bf72904635100593573bfcff;p=safe%2Fjmp%2Flinux-2.6 diff --git a/fs/dlm/recoverd.c b/fs/dlm/recoverd.c index 4b89e20..fd677c8 100644 --- a/fs/dlm/recoverd.c +++ b/fs/dlm/recoverd.c @@ -67,17 +67,18 @@ static int ls_recover(struct dlm_ls *ls, struct dlm_recover *rv) dlm_astd_resume(); /* - * This list of root rsb's will be the basis of most of the recovery - * routines. + * Free non-master tossed rsb's. Master rsb's are kept on toss + * list and put on root list to be included in resdir recovery. */ - dlm_create_root_list(ls); + dlm_clear_toss_list(ls); /* - * Free all the tossed rsb's so we don't have to recover them. + * This list of root rsb's will be the basis of most of the recovery + * routines. */ - dlm_clear_toss_list(ls); + dlm_create_root_list(ls); /* * Add or remove nodes from the lockspace's ls_nodes list. @@ -256,6 +257,7 @@ static void do_ls_recovery(struct dlm_ls *ls) if (rv) { ls_recover(ls, rv); kfree(rv->nodeids); + kfree(rv->new); kfree(rv); } }