aboutsummaryrefslogtreecommitdiffstats
path: root/fs/ocfs2/dlm/dlmmaster.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/ocfs2/dlm/dlmmaster.c')
-rw-r--r--fs/ocfs2/dlm/dlmmaster.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/fs/ocfs2/dlm/dlmmaster.c b/fs/ocfs2/dlm/dlmmaster.c
index ac9ed31e5445..97133465891c 100644
--- a/fs/ocfs2/dlm/dlmmaster.c
+++ b/fs/ocfs2/dlm/dlmmaster.c
@@ -639,6 +639,14 @@ static void dlm_lockres_release(struct kref *kref)
639 mlog(0, "destroying lockres %.*s\n", res->lockname.len, 639 mlog(0, "destroying lockres %.*s\n", res->lockname.len,
640 res->lockname.name); 640 res->lockname.name);
641 641
642 if (!list_empty(&res->tracking))
643 list_del_init(&res->tracking);
644 else {
645 mlog(ML_ERROR, "Resource %.*s not on the Tracking list\n",
646 res->lockname.len, res->lockname.name);
647 dlm_print_one_lock_resource(res);
648 }
649
642 if (!hlist_unhashed(&res->hash_node) || 650 if (!hlist_unhashed(&res->hash_node) ||
643 !list_empty(&res->granted) || 651 !list_empty(&res->granted) ||
644 !list_empty(&res->converting) || 652 !list_empty(&res->converting) ||
@@ -706,6 +714,7 @@ static void dlm_init_lockres(struct dlm_ctxt *dlm,
706 INIT_LIST_HEAD(&res->dirty); 714 INIT_LIST_HEAD(&res->dirty);
707 INIT_LIST_HEAD(&res->recovering); 715 INIT_LIST_HEAD(&res->recovering);
708 INIT_LIST_HEAD(&res->purge); 716 INIT_LIST_HEAD(&res->purge);
717 INIT_LIST_HEAD(&res->tracking);
709 atomic_set(&res->asts_reserved, 0); 718 atomic_set(&res->asts_reserved, 0);
710 res->migration_pending = 0; 719 res->migration_pending = 0;
711 res->inflight_locks = 0; 720 res->inflight_locks = 0;
@@ -721,6 +730,8 @@ static void dlm_init_lockres(struct dlm_ctxt *dlm,
721 730
722 res->last_used = 0; 731 res->last_used = 0;
723 732
733 list_add_tail(&res->tracking, &dlm->tracking_list);
734
724 memset(res->lvb, 0, DLM_LVB_LEN); 735 memset(res->lvb, 0, DLM_LVB_LEN);
725 memset(res->refmap, 0, sizeof(res->refmap)); 736 memset(res->refmap, 0, sizeof(res->refmap));
726} 737}