Xue jiufei
2012-Dec-21 10:29 UTC
[Ocfs2-devel] [PATCH] ocfs2: fix BUG_ON(res->migration_pending) in dlm_mark_lockres_migrating
When dlm_lockres_release_ast() returns without clearing res->migration_pending, dlm_mark_lockres_migrating() exits abnormally with res->migration_pending setting to 1. When reentering dlm_mark_lockres_migrating(), it will trigger the BUG_ON with res->migration_pending. Clearing migration_pending when target is down can resolve this issue. Signed-off-by: xuejiufei <xuejiufei at huawei.com> --- fs/ocfs2/dlm/dlmmaster.c | 3 +++ 1 files changed, 3 insertions(+), 0 deletions(-) diff --git a/fs/ocfs2/dlm/dlmmaster.c b/fs/ocfs2/dlm/dlmmaster.c index 005261c..c491f97 100644 --- a/fs/ocfs2/dlm/dlmmaster.c +++ b/fs/ocfs2/dlm/dlmmaster.c @@ -2751,6 +2751,9 @@ again: if (!test_bit(target, dlm->domain_map)) { mlog(ML_ERROR, "aha. migration target %u just went down\n", target); + spin_lock(&res->spinlock); + res->migration_pending = 0; + spin_unlock(&res->spinlock); ret = -EHOSTDOWN; } spin_unlock(&dlm->spinlock); -- 1.7.8.6