aboutsummaryrefslogtreecommitdiffstats
path: root/fs/ocfs2/dlm
diff options
context:
space:
mode:
Diffstat (limited to 'fs/ocfs2/dlm')
-rw-r--r--fs/ocfs2/dlm/dlmmaster.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/fs/ocfs2/dlm/dlmmaster.c b/fs/ocfs2/dlm/dlmmaster.c
index 215e41abf101..3689b3592042 100644
--- a/fs/ocfs2/dlm/dlmmaster.c
+++ b/fs/ocfs2/dlm/dlmmaster.c
@@ -1460,6 +1460,18 @@ way_up_top:
1460 1460
1461 /* take care of the easy cases up front */ 1461 /* take care of the easy cases up front */
1462 spin_lock(&res->spinlock); 1462 spin_lock(&res->spinlock);
1463
1464 /*
1465 * Right after dlm spinlock was released, dlm_thread could have
1466 * purged the lockres. Check if lockres got unhashed. If so
1467 * start over.
1468 */
1469 if (hlist_unhashed(&res->hash_node)) {
1470 spin_unlock(&res->spinlock);
1471 dlm_lockres_put(res);
1472 goto way_up_top;
1473 }
1474
1463 if (res->state & (DLM_LOCK_RES_RECOVERING| 1475 if (res->state & (DLM_LOCK_RES_RECOVERING|
1464 DLM_LOCK_RES_MIGRATING)) { 1476 DLM_LOCK_RES_MIGRATING)) {
1465 spin_unlock(&res->spinlock); 1477 spin_unlock(&res->spinlock);