aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--fs/ocfs2/dlm/dlmcommon.h5
-rw-r--r--fs/ocfs2/dlm/dlmdomain.c5
-rw-r--r--fs/ocfs2/dlm/dlmmaster.c5
3 files changed, 14 insertions, 1 deletions
diff --git a/fs/ocfs2/dlm/dlmcommon.h b/fs/ocfs2/dlm/dlmcommon.h
index aa55271a7aca..67b3447a292e 100644
--- a/fs/ocfs2/dlm/dlmcommon.h
+++ b/fs/ocfs2/dlm/dlmcommon.h
@@ -52,7 +52,8 @@
52enum dlm_mle_type { 52enum dlm_mle_type {
53 DLM_MLE_BLOCK, 53 DLM_MLE_BLOCK,
54 DLM_MLE_MASTER, 54 DLM_MLE_MASTER,
55 DLM_MLE_MIGRATION 55 DLM_MLE_MIGRATION,
56 DLM_MLE_NUM_TYPES
56}; 57};
57 58
58struct dlm_lock_name { 59struct dlm_lock_name {
@@ -156,6 +157,8 @@ struct dlm_ctxt
156 struct list_head mle_hb_events; 157 struct list_head mle_hb_events;
157 158
158 /* these give a really vague idea of the system load */ 159 /* these give a really vague idea of the system load */
160 atomic_t mle_tot_count[DLM_MLE_NUM_TYPES];
161 atomic_t mle_cur_count[DLM_MLE_NUM_TYPES];
159 atomic_t local_resources; 162 atomic_t local_resources;
160 atomic_t remote_resources; 163 atomic_t remote_resources;
161 atomic_t unknown_resources; 164 atomic_t unknown_resources;
diff --git a/fs/ocfs2/dlm/dlmdomain.c b/fs/ocfs2/dlm/dlmdomain.c
index 869648c61041..0479bdf91c2b 100644
--- a/fs/ocfs2/dlm/dlmdomain.c
+++ b/fs/ocfs2/dlm/dlmdomain.c
@@ -1608,6 +1608,11 @@ static struct dlm_ctxt *dlm_alloc_ctxt(const char *domain,
1608 atomic_set(&dlm->remote_resources, 0); 1608 atomic_set(&dlm->remote_resources, 0);
1609 atomic_set(&dlm->unknown_resources, 0); 1609 atomic_set(&dlm->unknown_resources, 0);
1610 1610
1611 for (i = 0; i < DLM_MLE_NUM_TYPES; ++i) {
1612 atomic_set(&dlm->mle_tot_count[i], 0);
1613 atomic_set(&dlm->mle_cur_count[i], 0);
1614 }
1615
1611 spin_lock_init(&dlm->work_lock); 1616 spin_lock_init(&dlm->work_lock);
1612 INIT_LIST_HEAD(&dlm->work_list); 1617 INIT_LIST_HEAD(&dlm->work_list);
1613 INIT_WORK(&dlm->dispatched_work, dlm_dispatch_work); 1618 INIT_WORK(&dlm->dispatched_work, dlm_dispatch_work);
diff --git a/fs/ocfs2/dlm/dlmmaster.c b/fs/ocfs2/dlm/dlmmaster.c
index 604552ebb468..acfc9288d5cd 100644
--- a/fs/ocfs2/dlm/dlmmaster.c
+++ b/fs/ocfs2/dlm/dlmmaster.c
@@ -325,6 +325,9 @@ static void dlm_init_mle(struct dlm_master_list_entry *mle,
325 mle->u.mlename.hash = dlm_lockid_hash(name, namelen); 325 mle->u.mlename.hash = dlm_lockid_hash(name, namelen);
326 } 326 }
327 327
328 atomic_inc(&dlm->mle_tot_count[mle->type]);
329 atomic_inc(&dlm->mle_cur_count[mle->type]);
330
328 /* copy off the node_map and register hb callbacks on our copy */ 331 /* copy off the node_map and register hb callbacks on our copy */
329 memcpy(mle->node_map, dlm->domain_map, sizeof(mle->node_map)); 332 memcpy(mle->node_map, dlm->domain_map, sizeof(mle->node_map));
330 memcpy(mle->vote_map, dlm->domain_map, sizeof(mle->vote_map)); 333 memcpy(mle->vote_map, dlm->domain_map, sizeof(mle->vote_map));
@@ -467,6 +470,8 @@ static void dlm_mle_release(struct kref *kref)
467 /* detach the mle from the domain node up/down events */ 470 /* detach the mle from the domain node up/down events */
468 __dlm_mle_detach_hb_events(dlm, mle); 471 __dlm_mle_detach_hb_events(dlm, mle);
469 472
473 atomic_dec(&dlm->mle_cur_count[mle->type]);
474
470 /* NOTE: kfree under spinlock here. 475 /* NOTE: kfree under spinlock here.
471 * if this is bad, we can move this to a freelist. */ 476 * if this is bad, we can move this to a freelist. */
472 kmem_cache_free(dlm_mle_cache, mle); 477 kmem_cache_free(dlm_mle_cache, mle);