From: Chuck Lever <chuck.lever@oracle.com>
To: linux-nfs@vger.kernel.org
Subject: [PATCH 05/11] lockd: Add /sys/fs/lockd/mon
Date: Thu, 01 Apr 2010 15:03:06 -0400 [thread overview]
Message-ID: <20100401190306.6395.96947.stgit@localhost.localdomain> (raw)
In-Reply-To: <20100401183724.6395.60353.stgit-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
Add parent directory to contain entries representing each entry in
lockd's nsm_handles cache.
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
---
fs/lockd/mon.c | 27 +++++++++++++++++++++++++++
fs/lockd/svc.c | 8 ++++++++
include/linux/lockd/lockd.h | 2 ++
3 files changed, 37 insertions(+), 0 deletions(-)
diff --git a/fs/lockd/mon.c b/fs/lockd/mon.c
index f956651..77e4927 100644
--- a/fs/lockd/mon.c
+++ b/fs/lockd/mon.c
@@ -56,6 +56,8 @@ static DEFINE_SPINLOCK(nsm_lock);
u32 __read_mostly nsm_local_state;
int __read_mostly nsm_use_hostnames;
+static struct kobject *nsm_handles_kobj;
+
static inline struct sockaddr *nsm_addr(const struct nsm_handle *nsm)
{
return (struct sockaddr *)&nsm->sm_addr;
@@ -398,6 +400,31 @@ void nsm_release(struct nsm_handle *nsm)
}
}
+/**
+ * nsm_init - Called when lockd module is loaded
+ *
+ */
+int nsm_init(void)
+{
+ nsm_handles_kobj = kobject_create_and_add("monitor", nlm_kobj);
+ if (nsm_handles_kobj == NULL)
+ return -ENOMEM;
+ return 0;
+}
+
+/**
+ * nsm_shutdown - Called when lockd module is about to be unloaded
+ *
+ */
+void nsm_shutdown(void)
+{
+ if (!list_empty(&nsm_handles)) {
+ printk(KERN_WARNING "NSM handles remain at shutdown");
+ return;
+ }
+ kobject_put(nsm_handles_kobj);
+}
+
/*
* XDR functions for NSM.
*
diff --git a/fs/lockd/svc.c b/fs/lockd/svc.c
index acfb6d7..e715ed7 100644
--- a/fs/lockd/svc.c
+++ b/fs/lockd/svc.c
@@ -526,9 +526,16 @@ static int __init init_nlm(void)
return -ENOMEM;
}
+ if (nsm_init()) {
+ nlm_host_shutdown();
+ kobject_put(nlm_kobj);
+ return -ENOMEM;
+ }
+
#ifdef CONFIG_SYSCTL
nlm_sysctl_table = register_sysctl_table(nlm_sysctl_root);
if (!nlm_sysctl_table) {
+ nsm_shutdown();
nlm_host_shutdown();
kobject_put(nlm_kobj);
return -ENOMEM;
@@ -545,6 +552,7 @@ static void __exit exit_nlm(void)
#ifdef CONFIG_SYSCTL
unregister_sysctl_table(nlm_sysctl_table);
#endif
+ nsm_shutdown();
nlm_host_shutdown();
kobject_put(nlm_kobj);
}
diff --git a/include/linux/lockd/lockd.h b/include/linux/lockd/lockd.h
index bdb87a6..8622a28 100644
--- a/include/linux/lockd/lockd.h
+++ b/include/linux/lockd/lockd.h
@@ -239,6 +239,8 @@ void nlm_host_rebooted(const struct nlm_reboot *);
/*
* Host monitoring
*/
+int nsm_init(void);
+void nsm_shutdown(void);
int nsm_monitor(const struct nlm_host *host);
void nsm_unmonitor(const struct nlm_host *host);
next prev parent reply other threads:[~2010-04-01 19:03 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-04-01 19:02 [PATCH 00/11] [RFC] possible NFSv2/v3 lock recovery enhancements Chuck Lever
[not found] ` <20100401183724.6395.60353.stgit-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2010-04-01 19:02 ` [PATCH 01/11] lockd: Add /sys/fs/lockd Chuck Lever
2010-04-01 19:02 ` [PATCH 02/11] lockd: Add /sys/fs/lockd/hosts/ Chuck Lever
2010-04-01 19:02 ` [PATCH 03/11] lockd: Add /sys/fs/lockd/hosts/* Chuck Lever
2010-04-01 19:02 ` [PATCH 04/11] lockd: Add attributes to /sys/fs/lockd/hosts/*/ Chuck Lever
2010-04-01 19:03 ` Chuck Lever [this message]
2010-04-01 19:03 ` [PATCH 06/11] lockd: Add /sys/fs/lockd/nsm_handle/* Chuck Lever
2010-04-01 19:03 ` [PATCH 07/11] lockd: Refactor nlm_host_rebooted() Chuck Lever
2010-04-01 19:03 ` [PATCH 08/11] lockd: Add "reboot" attribute to nsm_handles Chuck Lever
2010-04-01 19:03 ` [PATCH 09/11] lockd: Keep my_name in nsm_handle Chuck Lever
2010-04-01 19:03 ` [PATCH 10/11] lockd: use sm_my_name for nsm_handle lookups Chuck Lever
2010-04-01 19:04 ` [PATCH 11/11] lockd: Allow mount option to specify caller_name Chuck Lever
[not found] ` <20100401190400.6395.52787.stgit-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2010-04-01 19:45 ` Trond Myklebust
[not found] ` <1270151136.13329.8.camel-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2010-04-01 20:01 ` Trond Myklebust
2010-04-01 21:08 ` Chuck Lever
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=20100401190306.6395.96947.stgit@localhost.localdomain \
--to=chuck.lever@oracle.com \
--cc=linux-nfs@vger.kernel.org \
/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.