fs: dlm: always run complete for possible waiters
This patch changes the ping_members() result that we always run complete() for possible waiters. We handle the -EINTR error code as successful. This error code is returned if the recovery is stopped which is likely that a new recovery is triggered with a new members configuration and ping_members() runs again. Signed-off-by: Alexander Aring <aahringo@redhat.com> Signed-off-by: David Teigland <teigland@redhat.com>
This commit is contained in:
parent
6efb943b86
commit
c937aabbd7
1 changed files with 12 additions and 6 deletions
|
@ -576,12 +576,18 @@ int dlm_recover_members(struct dlm_ls *ls, struct dlm_recover *rv, int *neg_out)
|
||||||
*neg_out = neg;
|
*neg_out = neg;
|
||||||
|
|
||||||
error = ping_members(ls);
|
error = ping_members(ls);
|
||||||
if (!error || error == -EPROTO) {
|
/* error -EINTR means that a new recovery action is triggered.
|
||||||
/* new_lockspace() may be waiting to know if the config
|
* We ignore this recovery action and let run the new one which might
|
||||||
is good or bad */
|
* have new member configuration.
|
||||||
ls->ls_members_result = error;
|
*/
|
||||||
complete(&ls->ls_members_done);
|
if (error == -EINTR)
|
||||||
}
|
error = 0;
|
||||||
|
|
||||||
|
/* new_lockspace() may be waiting to know if the config
|
||||||
|
* is good or bad
|
||||||
|
*/
|
||||||
|
ls->ls_members_result = error;
|
||||||
|
complete(&ls->ls_members_done);
|
||||||
|
|
||||||
log_rinfo(ls, "dlm_recover_members %d nodes", ls->ls_num_nodes);
|
log_rinfo(ls, "dlm_recover_members %d nodes", ls->ls_num_nodes);
|
||||||
return error;
|
return error;
|
||||||
|
|
Loading…
Add table
Reference in a new issue