dlm: fix dlm_recover_members refcount on error

If dlm_recover_members() fails we don't drop the references of the
previous created root_list that holds and keep all rsbs alive during the
recovery. It might be not an unlikely event because ping_members() could
run into an -EINTR if another recovery progress was triggered again.

Fixes: 3a747f4a2e ("dlm: move rsb root_list to ls_recover() stack")
Signed-off-by: Alexander Aring <aahringo@redhat.com>
Signed-off-by: David Teigland <teigland@redhat.com>
This commit is contained in:
Alexander Aring 2024-11-18 11:01:49 -05:00 committed by David Teigland
parent f74dacb4c8
commit 200b977ebb

View File

@ -151,7 +151,7 @@ static int ls_recover(struct dlm_ls *ls, struct dlm_recover *rv)
error = dlm_recover_members(ls, rv, &neg); error = dlm_recover_members(ls, rv, &neg);
if (error) { if (error) {
log_rinfo(ls, "dlm_recover_members error %d", error); log_rinfo(ls, "dlm_recover_members error %d", error);
goto fail; goto fail_root_list;
} }
dlm_recover_dir_nodeid(ls, &root_list); dlm_recover_dir_nodeid(ls, &root_list);