mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-29 11:11:45 -04:00
ocfs2_dlm: fix race in dlm_remaster_locks
There is a possibility that dlm_remaster_locks could overwride node->state with DLM_RECO_NODE_DATA_REQUESTED after dlm_reco_data_done_handler sets the node->state to DLM_RECO_NODE_DATA_DONE. This could lead to recovery getting stuck and requires a cluster reboot. Synchronize with dlm_reco_state_lock spinlock. Signed-off-by: Srinivas Eeda <[email protected]> Signed-off-by: Mark Fasheh <[email protected]>
This commit is contained in:
parent
de46c33745
commit
756a1501dd
1 changed files with 2 additions and 0 deletions
|
|
@ -611,6 +611,7 @@ static int dlm_remaster_locks(struct dlm_ctxt *dlm, u8 dead_node)
|
|||
}
|
||||
} while (status != 0);
|
||||
|
||||
spin_lock(&dlm_reco_state_lock);
|
||||
switch (ndata->state) {
|
||||
case DLM_RECO_NODE_DATA_INIT:
|
||||
case DLM_RECO_NODE_DATA_FINALIZE_SENT:
|
||||
|
|
@ -641,6 +642,7 @@ static int dlm_remaster_locks(struct dlm_ctxt *dlm, u8 dead_node)
|
|||
ndata->node_num, dead_node);
|
||||
break;
|
||||
}
|
||||
spin_unlock(&dlm_reco_state_lock);
|
||||
}
|
||||
|
||||
mlog(0, "done requesting all lock info\n");
|
||||
|
|
|
|||
Loading…
Reference in a new issue