From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 26465 invoked by alias); 11 Dec 2008 23:47:50 -0000 Received: (qmail 26459 invoked by alias); 11 Dec 2008 23:47:50 -0000 X-Spam-Level: * X-Spam-Status: No, hits=-1.6 required=5.0 tests=AWL,BAYES_00,KAM_MX,SPF_HELO_PASS X-Spam-Check-By: sourceware.org X-Spam-Checker-Version: SpamAssassin 3.2.4 (2008-01-01) on bastion.fedora.phx.redhat.com Subject: cluster: master - dlm_controld/gfs_controld: dump unused resources To: cluster-cvs-relay@redhat.com X-Project: Cluster Project X-Git-Module: cluster.git X-Git-Refname: refs/heads/master X-Git-Reftype: branch X-Git-Oldrev: 1e3b9e7642386349587e8be3ff8c390507a14ed3 X-Git-Newrev: 2abc9df513fe5532c9d02b8102604cda4a4dd569 From: David Teigland Message-Id: <20081211234628.8DA9AC07B8@lists.fedorahosted.org> Date: Thu, 11 Dec 2008 23:47:00 -0000 X-Scanned-By: MIMEDefang 2.58 on 172.16.52.254 Mailing-List: contact cluster-cvs-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Post: List-Help: , Sender: cluster-cvs-owner@sourceware.org X-SW-Source: 2008-q4/txt/msg00494.txt.bz2 Gitweb: http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff;h=2abc9df513fe5532c9d02b8102604cda4a4dd569 Commit: 2abc9df513fe5532c9d02b8102604cda4a4dd569 Parent: 1e3b9e7642386349587e8be3ff8c390507a14ed3 Author: David Teigland AuthorDate: Thu Dec 11 16:25:04 2008 -0600 Committer: David Teigland CommitterDate: Thu Dec 11 17:43:52 2008 -0600 dlm_controld/gfs_controld: dump unused resources Unused/cached resources have owner state that's useful to see in the debug dump. Signed-off-by: David Teigland --- group/dlm_controld/plock.c | 20 ++++++++++++++++++++ group/gfs_controld/plock.c | 18 ++++++++++++++++++ 2 files changed, 38 insertions(+), 0 deletions(-) diff --git a/group/dlm_controld/plock.c b/group/dlm_controld/plock.c index a59f5b8..75f2050 100644 --- a/group/dlm_controld/plock.c +++ b/group/dlm_controld/plock.c @@ -2105,13 +2105,33 @@ int fill_plock_dump_buf(struct lockspace *ls) struct posix_lock *po; struct lock_waiter *w; struct resource *r; + struct timeval now; int rv = 0; int len = DLMC_DUMP_SIZE, pos = 0, ret; memset(plock_dump_buf, 0, sizeof(plock_dump_buf)); plock_dump_len = 0; + gettimeofday(&now, NULL); + list_for_each_entry(r, &ls->plock_resources, list) { + + if (list_empty(&r->locks) && + list_empty(&r->waiters) && + list_empty(&r->pending)) { + ret = snprintf(plock_dump_buf + pos, len - pos, + "%llu rown %d unused_ms %llu\n", + (unsigned long long)r->number, r->owner, + (unsigned long long)time_diff_ms(&r->last_access, + &now)); + if (ret >= len - pos) { + rv = -ENOSPC; + goto out; + } + pos += ret; + continue; + } + list_for_each_entry(po, &r->locks, list) { ret = snprintf(plock_dump_buf + pos, len - pos, "%llu %s %llu-%llu nodeid %d pid %u owner %llx rown %d\n", diff --git a/group/gfs_controld/plock.c b/group/gfs_controld/plock.c index 345235d..122e161 100644 --- a/group/gfs_controld/plock.c +++ b/group/gfs_controld/plock.c @@ -2192,6 +2192,7 @@ int fill_plock_dump_buf(struct mountgroup *mg) struct posix_lock *po; struct lock_waiter *w; struct resource *r; + struct timeval now; int rv = 0; int len = GFSC_DUMP_SIZE, pos = 0, ret; @@ -2199,6 +2200,23 @@ int fill_plock_dump_buf(struct mountgroup *mg) plock_dump_len = 0; list_for_each_entry(r, &mg->plock_resources, list) { + + if (list_empty(&r->locks) && + list_empty(&r->waiters) && + list_empty(&r->pending)) { + ret = snprintf(plock_dump_buf + pos, len - pos, + "%llu rown %d unused_ms %llu\n", + (unsigned long long)r->number, r->owner, + (unsigned long long)time_diff_ms(&r->last_access, + &now)); + if (ret >= len - pos) { + rv = -ENOSPC; + goto out; + } + pos += ret; + continue; + } + list_for_each_entry(po, &r->locks, list) { ret = snprintf(plock_dump_buf + pos, len - pos, "%llu %s %llu-%llu nodeid %d pid %u owner %llx rown %d\n",