From: Joel Becker <Joel.Becker@oracle.com>
To: ocfs2-devel@oss.oracle.com
Subject: [Ocfs2-devel] [PATCH 07/18] ocfs2_dlm: Create debugfs dirs
Date: Thu Feb 28 17:09:31 2008 [thread overview]
Message-ID: <20080229010913.GB17860@mail.oracle.com> (raw)
In-Reply-To: <1203970862-8790-8-git-send-email-sunil.mushran@oracle.com>
On Mon, Feb 25, 2008 at 12:20:51PM -0800, Sunil Mushran wrote:
> This patch creates the debugfs directories that will hold the
> files to be used to dump the dlm state.
Please run through checkpatch.pl.
Joel
> Signed-off-by: Sunil Mushran <sunil.mushran@oracle.com>
> ---
> fs/ocfs2/dlm/dlmcommon.h | 2 ++
> fs/ocfs2/dlm/dlmdebug.c | 44 ++++++++++++++++++++++++++++++++++++++++++++
> fs/ocfs2/dlm/dlmdebug.h | 7 +++++++
> fs/ocfs2/dlm/dlmdomain.c | 20 ++++++++++++++++++++
> 4 files changed, 73 insertions(+), 0 deletions(-)
>
> diff --git a/fs/ocfs2/dlm/dlmcommon.h b/fs/ocfs2/dlm/dlmcommon.h
> index a3b22bf..810e9b4 100644
> --- a/fs/ocfs2/dlm/dlmcommon.h
> +++ b/fs/ocfs2/dlm/dlmcommon.h
> @@ -125,6 +125,8 @@ struct dlm_ctxt
> atomic_t remote_resources;
> atomic_t unknown_resources;
>
> + struct dentry *dlm_debugfs_subroot;
> +
> /* NOTE: Next three are protected by dlm_domain_lock */
> struct kref dlm_refs;
> enum dlm_ctxt_state dlm_state;
> diff --git a/fs/ocfs2/dlm/dlmdebug.c b/fs/ocfs2/dlm/dlmdebug.c
> index e4f1fe9..baa8e24 100644
> --- a/fs/ocfs2/dlm/dlmdebug.c
> +++ b/fs/ocfs2/dlm/dlmdebug.c
> @@ -31,6 +31,7 @@
> #include <linux/sysctl.h>
> #include <linux/spinlock.h>
> #include <linux/proc_fs.h>
> +#include <linux/debugfs.h>
>
> #include "cluster/heartbeat.h"
> #include "cluster/nodemanager.h"
> @@ -46,6 +47,8 @@
> #define MLOG_MASK_PREFIX ML_DLM
> #include "cluster/masklog.h"
>
> +static struct dentry *dlm_debugfs_root = NULL;
> +
> static int dlm_dump_all_lock_resources(const char __user *data,
> unsigned int len);
> static void dlm_dump_purge_list(struct dlm_ctxt *dlm);
> @@ -699,3 +702,44 @@ const char *dlm_errname(enum dlm_status err)
> return dlm_errnames[err];
> }
> EXPORT_SYMBOL_GPL(dlm_errname);
> +
> +#define DLM_DEBUGFS_DIR "o2dlm"
> +
> +/* subroot - domain dir */
> +int dlm_create_debugfs_subroot(struct dlm_ctxt *dlm)
> +{
> + dlm->dlm_debugfs_subroot = debugfs_create_dir(dlm->name, dlm_debugfs_root);
> + if (!dlm->dlm_debugfs_subroot) {
> + mlog_errno(-ENOMEM);
> + goto bail;
> + }
> +
> + return 0;
> +bail:
> + dlm_destroy_debugfs_subroot(dlm);
> + return -ENOMEM;
> +}
> +
> +void dlm_destroy_debugfs_subroot(struct dlm_ctxt *dlm)
> +{
> + if (dlm->dlm_debugfs_subroot)
> + debugfs_remove(dlm->dlm_debugfs_subroot);
> +}
> +
> +/* debugfs root */
> +int dlm_create_debugfs_root(void)
> +{
> + dlm_debugfs_root = debugfs_create_dir(DLM_DEBUGFS_DIR, NULL);
> + if (!dlm_debugfs_root) {
> + mlog_errno(-ENOMEM);
> + return -ENOMEM;
> + }
> +
> + return 0;
> +}
> +
> +void dlm_destroy_debugfs_root(void)
> +{
> + if (dlm_debugfs_root)
> + debugfs_remove(dlm_debugfs_root);
> +}
> diff --git a/fs/ocfs2/dlm/dlmdebug.h b/fs/ocfs2/dlm/dlmdebug.h
> index dbe3a3d..e701499 100644
> --- a/fs/ocfs2/dlm/dlmdebug.h
> +++ b/fs/ocfs2/dlm/dlmdebug.h
> @@ -31,4 +31,11 @@ void dlm_dump_lock_resources(struct dlm_ctxt *dlm);
> void dlm_proc_add_domain(struct dlm_ctxt *dlm);
> void dlm_proc_del_domain(struct dlm_ctxt *dlm);
> void dlm_dump_work_queue(struct dlm_ctxt *dlm);
> +
> +int dlm_create_debugfs_subroot(struct dlm_ctxt *dlm);
> +void dlm_destroy_debugfs_subroot(struct dlm_ctxt *dlm);
> +
> +int dlm_create_debugfs_root(void);
> +void dlm_destroy_debugfs_root(void);
> +
> #endif
> diff --git a/fs/ocfs2/dlm/dlmdomain.c b/fs/ocfs2/dlm/dlmdomain.c
> index 1d382f1..da2a155 100644
> --- a/fs/ocfs2/dlm/dlmdomain.c
> +++ b/fs/ocfs2/dlm/dlmdomain.c
> @@ -33,6 +33,7 @@
> #include <linux/spinlock.h>
> #include <linux/delay.h>
> #include <linux/err.h>
> +#include <linux/debugfs.h>
>
> #include "cluster/heartbeat.h"
> #include "cluster/nodemanager.h"
> @@ -43,6 +44,7 @@
>
> #include "dlmdebug.h"
> #include "dlmdomain.h"
> +#include "dlmdebug.h"
>
> #include "dlmver.h"
>
> @@ -288,6 +290,8 @@ static void dlm_free_ctxt_mem(struct dlm_ctxt *dlm)
> {
> dlm_proc_del_domain(dlm);
>
> + dlm_destroy_debugfs_subroot(dlm);
> +
> if (dlm->lockres_hash)
> dlm_free_pagevec((void **)dlm->lockres_hash, DLM_HASH_PAGES);
>
> @@ -1372,6 +1376,7 @@ static struct dlm_ctxt *dlm_alloc_ctxt(const char *domain,
> u32 key)
> {
> int i;
> + int ret;
> struct dlm_ctxt *dlm = NULL;
>
> dlm = kzalloc(sizeof(*dlm), GFP_KERNEL);
> @@ -1404,6 +1409,15 @@ static struct dlm_ctxt *dlm_alloc_ctxt(const char *domain,
> dlm->key = key;
> dlm->node_num = o2nm_this_node();
>
> + ret = dlm_create_debugfs_subroot(dlm);
> + if (ret < 0) {
> + dlm_free_pagevec((void **)dlm->lockres_hash, DLM_HASH_PAGES);
> + kfree(dlm->name);
> + kfree(dlm);
> + dlm = NULL;
> + goto leave;
> + }
> +
> spin_lock_init(&dlm->spinlock);
> spin_lock_init(&dlm->master_lock);
> spin_lock_init(&dlm->ast_lock);
> @@ -1688,8 +1702,13 @@ static int __init dlm_init(void)
>
> dlm_init_proc();
>
> + status = dlm_create_debugfs_root();
> + if (status)
> + goto error;
> +
> return 0;
> error:
> + dlm_unregister_net_handlers();
> dlm_destroy_lock_cache();
> dlm_destroy_lockname_cache();
> dlm_destroy_lockres_cache();
> @@ -1699,6 +1718,7 @@ error:
>
> static void __exit dlm_exit (void)
> {
> + dlm_destroy_debugfs_root();
> dlm_remove_proc();
> dlm_unregister_net_handlers();
> dlm_destroy_lock_cache();
> --
> 1.5.2.5
>
>
> _______________________________________________
> Ocfs2-devel mailing list
> Ocfs2-devel@oss.oracle.com
> http://oss.oracle.com/mailman/listinfo/ocfs2-devel
--
"Gone to plant a weeping willow
On the bank's green edge it will roll, roll, roll.
Sing a lulaby beside the waters.
Lovers come and go, the river roll, roll, rolls."
Joel Becker
Principal Software Developer
Oracle
E-mail: joel.becker@oracle.com
Phone: (650) 506-8127
next prev parent reply other threads:[~2008-02-28 17:09 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-02-25 12:21 [Ocfs2-devel] New dlm debug infrastructure Sunil Mushran
2008-02-25 12:21 ` [Ocfs2-devel] [PATCH 06/18] ocfs2_dlm: Link all lockres' to a tracking list Sunil Mushran
2008-02-28 16:32 ` Joel Becker
2008-02-25 12:21 ` [Ocfs2-devel] [PATCH 12/18] ocfs2_dlm: Dumps the purgelist into a debugfs file Sunil Mushran
2008-02-28 16:53 ` Joel Becker
2008-02-25 12:21 ` [Ocfs2-devel] [PATCH 10/18] ocfs2_dlm: Moves struct dlm_master_list_entry to dlmcommon.h Sunil Mushran
2008-02-25 12:21 ` [Ocfs2-devel] [PATCH 05/18] ocfs2_dlm: Add missing dlm_lockres_put()s Sunil Mushran
2008-02-28 14:50 ` Joel Becker
2008-02-25 12:21 ` [Ocfs2-devel] [PATCH 18/18] ocfs2_dlm: Print message showing the recomaster Sunil Mushran
2008-02-28 16:57 ` Joel Becker
2008-02-25 12:21 ` [Ocfs2-devel] [PATCH 15/18] ocfs2_dlm: Move dlm_print_one_mle() from dlmmaster.c to dlmdebug.c Sunil Mushran
2008-02-28 16:55 ` Joel Becker
2008-02-25 12:21 ` [Ocfs2-devel] [PATCH 01/18] ocfs2_dlm: Rename slabcache dlm_mle_cache to o2dlm_mle Sunil Mushran
2008-02-28 14:12 ` Joel Becker
2008-02-25 12:21 ` [Ocfs2-devel] [PATCH 02/18] ocfs2_dlm: Creates slabcaches for the lockres' and the locks Sunil Mushran
2008-02-28 14:37 ` Joel Becker
2008-02-28 17:09 ` Joel Becker
2008-02-25 12:21 ` [Ocfs2-devel] [PATCH 07/18] ocfs2_dlm: Create debugfs dirs Sunil Mushran
2008-02-28 16:34 ` Joel Becker
2008-02-28 17:09 ` Joel Becker [this message]
2008-02-25 12:21 ` [Ocfs2-devel] [PATCH 04/18] ocfs2_dlm: Add missing dlm_lockres_put()s in migration path Sunil Mushran
2008-02-28 14:41 ` Joel Becker
2008-02-25 12:21 ` [Ocfs2-devel] [PATCH 16/18] ocfs2_dlm: Small fix regarding dlm_print_one_lock_resource() Sunil Mushran
2008-02-28 16:55 ` Joel Becker
2008-02-25 12:21 ` [Ocfs2-devel] [PATCH 17/18] ocfs2_dlm: Fix lockname in lockres print function Sunil Mushran
2008-02-28 16:57 ` Joel Becker
2008-02-25 12:21 ` [Ocfs2-devel] [PATCH 09/18] ocfs2_dlm: Dumps the lockres' into a debugfs file Sunil Mushran
2008-02-28 16:51 ` Joel Becker
2008-02-28 17:11 ` Joel Becker
2008-02-25 12:21 ` [Ocfs2-devel] [PATCH 03/18] ocfs2_dlm: Add missing dlm_lock_put()s Sunil Mushran
2008-02-28 14:39 ` Joel Becker
2008-02-25 12:21 ` [Ocfs2-devel] [PATCH 13/18] ocfs2_dlm: Dumps the workqueue into a debugfs file Sunil Mushran
2008-02-28 16:53 ` Joel Becker
2008-02-28 17:11 ` Joel Becker
2008-02-25 12:21 ` [Ocfs2-devel] [PATCH 14/18] ocfs2_dlm: Remove the proc interface Sunil Mushran
2008-02-28 16:55 ` Joel Becker
2008-02-25 12:21 ` [Ocfs2-devel] [PATCH 11/18] ocfs2_dlm: Dumps the mles into a debugfs file Sunil Mushran
2008-02-28 16:53 ` Joel Becker
2008-02-25 12:21 ` [Ocfs2-devel] [PATCH 08/18] ocfs2_dlm: Dump the dlm state in " Sunil Mushran
2008-02-28 16:38 ` Joel Becker
2008-02-28 17:11 ` Joel Becker
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20080229010913.GB17860@mail.oracle.com \
--to=joel.becker@oracle.com \
--cc=ocfs2-devel@oss.oracle.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.