|
@@ -639,6 +639,14 @@ static void dlm_lockres_release(struct kref *kref)
|
|
|
mlog(0, "destroying lockres %.*s\n", res->lockname.len,
|
|
|
res->lockname.name);
|
|
|
|
|
|
+ if (!list_empty(&res->tracking))
|
|
|
+ list_del_init(&res->tracking);
|
|
|
+ else {
|
|
|
+ mlog(ML_ERROR, "Resource %.*s not on the Tracking list\n",
|
|
|
+ res->lockname.len, res->lockname.name);
|
|
|
+ dlm_print_one_lock_resource(res);
|
|
|
+ }
|
|
|
+
|
|
|
if (!hlist_unhashed(&res->hash_node) ||
|
|
|
!list_empty(&res->granted) ||
|
|
|
!list_empty(&res->converting) ||
|
|
@@ -706,6 +714,7 @@ static void dlm_init_lockres(struct dlm_ctxt *dlm,
|
|
|
INIT_LIST_HEAD(&res->dirty);
|
|
|
INIT_LIST_HEAD(&res->recovering);
|
|
|
INIT_LIST_HEAD(&res->purge);
|
|
|
+ INIT_LIST_HEAD(&res->tracking);
|
|
|
atomic_set(&res->asts_reserved, 0);
|
|
|
res->migration_pending = 0;
|
|
|
res->inflight_locks = 0;
|
|
@@ -721,6 +730,8 @@ static void dlm_init_lockres(struct dlm_ctxt *dlm,
|
|
|
|
|
|
res->last_used = 0;
|
|
|
|
|
|
+ list_add_tail(&res->tracking, &dlm->tracking_list);
|
|
|
+
|
|
|
memset(res->lvb, 0, DLM_LVB_LEN);
|
|
|
memset(res->refmap, 0, sizeof(res->refmap));
|
|
|
}
|