ocfs2/dlm: Improve lockres counts
authorSunil Mushran <sunil.mushran@oracle.com>
Thu, 26 Feb 2009 23:00:44 +0000 (15:00 -0800)
committerMark Fasheh <mfasheh@suse.com>
Fri, 3 Apr 2009 18:39:21 +0000 (11:39 -0700)
This patch replaces the lockres counts that tracked the number number of
locally and remotely mastered lockres' with a current and total count. The
total count is the number of lockres' that have been created since the dlm
domain was created.

The number of locally and remotely mastered counts can be computed using
the locking_state output.

Signed-off-by: Sunil Mushran <sunil.mushran@oracle.com>
Signed-off-by: Mark Fasheh <mfasheh@suse.com>
fs/ocfs2/dlm/dlmcommon.h
fs/ocfs2/dlm/dlmdebug.c
fs/ocfs2/dlm/dlmdomain.c
fs/ocfs2/dlm/dlmmaster.c

index 67b3447a292ee43e416d1ce761f478ec0c776147..e5026ce862addbc8f0e225c6d979cbb10b612f01 100644 (file)
@@ -159,9 +159,8 @@ struct dlm_ctxt
        /* these give a really vague idea of the system load */
        atomic_t mle_tot_count[DLM_MLE_NUM_TYPES];
        atomic_t mle_cur_count[DLM_MLE_NUM_TYPES];
-       atomic_t local_resources;
-       atomic_t remote_resources;
-       atomic_t unknown_resources;
+       atomic_t res_tot_count;
+       atomic_t res_cur_count;
 
        struct dlm_debug_ctxt *dlm_debug_ctxt;
        struct dentry *dlm_debugfs_subroot;
index 336a98e82ebaab33e87e45ee9cc824b94f2eb418..d7decaa687e6f1a430c43a4f57debc1ea776ea2e 100644 (file)
@@ -763,12 +763,6 @@ static int debug_state_print(struct dlm_ctxt *dlm, struct debug_buffer *db)
        int out = 0;
        struct dlm_reco_node_data *node;
        char *state;
-       int lres, rres, ures, tres;
-
-       lres = atomic_read(&dlm->local_resources);
-       rres = atomic_read(&dlm->remote_resources);
-       ures = atomic_read(&dlm->unknown_resources);
-       tres = lres + rres + ures;
 
        spin_lock(&dlm->spinlock);
 
@@ -811,12 +805,6 @@ static int debug_state_print(struct dlm_ctxt *dlm, struct debug_buffer *db)
                                 db->buf + out, db->len - out);
        out += snprintf(db->buf + out, db->len - out, "\n");
 
-       /* Mastered Resources Total: xxx  Locally: xxx  Remotely: ... */
-       out += snprintf(db->buf + out, db->len - out,
-                       "Mastered Resources Total: %d  Locally: %d  "
-                       "Remotely: %d  Unknown: %d\n",
-                       tres, lres, rres, ures);
-
        /* Lists: Dirty=Empty  Purge=InUse  PendingASTs=Empty  ... */
        out += snprintf(db->buf + out, db->len - out,
                        "Lists: Dirty=%s  Purge=%s  PendingASTs=%s  "
index 0479bdf91c2b926b6df4d803ab125c36f026fd8c..4d9e6b288dd871e4c4ffee4157522913988a159b 100644 (file)
@@ -1604,10 +1604,9 @@ static struct dlm_ctxt *dlm_alloc_ctxt(const char *domain,
 
        dlm->reco.new_master = O2NM_INVALID_NODE_NUM;
        dlm->reco.dead_node = O2NM_INVALID_NODE_NUM;
-       atomic_set(&dlm->local_resources, 0);
-       atomic_set(&dlm->remote_resources, 0);
-       atomic_set(&dlm->unknown_resources, 0);
 
+       atomic_set(&dlm->res_tot_count, 0);
+       atomic_set(&dlm->res_cur_count, 0);
        for (i = 0; i < DLM_MLE_NUM_TYPES; ++i) {
                atomic_set(&dlm->mle_tot_count[i], 0);
                atomic_set(&dlm->mle_cur_count[i], 0);
index acfc9288d5cd37e5324afff1981b5d310d6acd97..d70cdd51de0ffa5d7ea25762a62616cb8dba4d00 100644 (file)
@@ -517,15 +517,6 @@ static void dlm_set_lockres_owner(struct dlm_ctxt *dlm,
 {
        assert_spin_locked(&res->spinlock);
 
-       mlog_entry("%.*s, %u\n", res->lockname.len, res->lockname.name, owner);
-
-       if (owner == dlm->node_num)
-               atomic_inc(&dlm->local_resources);
-       else if (owner == DLM_LOCK_RES_OWNER_UNKNOWN)
-               atomic_inc(&dlm->unknown_resources);
-       else
-               atomic_inc(&dlm->remote_resources);
-
        res->owner = owner;
 }
 
@@ -534,17 +525,8 @@ void dlm_change_lockres_owner(struct dlm_ctxt *dlm,
 {
        assert_spin_locked(&res->spinlock);
 
-       if (owner == res->owner)
-               return;
-
-       if (res->owner == dlm->node_num)
-               atomic_dec(&dlm->local_resources);
-       else if (res->owner == DLM_LOCK_RES_OWNER_UNKNOWN)
-               atomic_dec(&dlm->unknown_resources);
-       else
-               atomic_dec(&dlm->remote_resources);
-
-       dlm_set_lockres_owner(dlm, res, owner);
+       if (owner != res->owner)
+               dlm_set_lockres_owner(dlm, res, owner);
 }
 
 
@@ -573,6 +555,8 @@ static void dlm_lockres_release(struct kref *kref)
        }
        spin_unlock(&dlm->track_lock);
 
+       atomic_dec(&dlm->res_cur_count);
+
        dlm_put(dlm);
 
        if (!hlist_unhashed(&res->hash_node) ||
@@ -653,6 +637,9 @@ static void dlm_init_lockres(struct dlm_ctxt *dlm,
 
        kref_init(&res->refs);
 
+       atomic_inc(&dlm->res_tot_count);
+       atomic_inc(&dlm->res_cur_count);
+
        /* just for consistency */
        spin_lock(&res->spinlock);
        dlm_set_lockres_owner(dlm, res, DLM_LOCK_RES_OWNER_UNKNOWN);