Commit fae477b6 authored by Xue jiufei's avatar Xue jiufei Committed by Linus Torvalds

ocfs2: delay migration when the lockres is in migration state

We trigger a bug in __dlm_lockres_reserve_ast() when we parallel umount 4
nodes.  The situation is as follows:

1) Node A migrate all lockres it owned(eg.  lockres A) to other nodes
   say node B when it umounts.

2) Receiving MIG_LOCKRES message from A, Node B masters the lockres A
   with DLM_LOCK_RES_MIGRATING state set.

3) Then we umount ocfs2 on node B.  It also should migrate lockres A to
   another node, say node C.  But now, DLM_LOCK_RES_MIGRATING state of
   lockers A is not cleared.  Node B triggered the BUG on lockres with
Signed-off-by: default avatarXuejiufei <>
Signed-off-by: default avatarJoel Becker <>
Cc: Mark Fasheh <>
Cc: Tariq Saeed <>
Cc: Srinivas Eeda <>
Signed-off-by: default avatarAndrew Morton <>
Signed-off-by: default avatarLinus Torvalds <>
parent 750e3c65
......@@ -2354,6 +2354,10 @@ static int dlm_is_lockres_migrateable(struct dlm_ctxt *dlm,
/* delay migration when the lockres is in MIGRATING state */
if (res->state & DLM_LOCK_RES_MIGRATING)
return 0;
if (res->owner != dlm->node_num)
return 0;
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment