All of lore.kernel.org
 help / color / mirror / Atom feed
From: Wendy Cheng <wcheng@redhat.com>
To: cluster-devel.redhat.com
Subject: [Cluster-devel] [PATCH 3/3] NLM enable per-ip base grace period
Date: Fri, 25 Jan 2008 00:19:07 -0500	[thread overview]
Message-ID: <4799714B.9070900@redhat.com> (raw)

Hooks are added into the existing lockd global grace period checking to 
enable per-ip base grace period.

-- Wendy


-------------- next part --------------
A non-text attachment was scrubbed...
Name: resume_003.patch
Type: text/x-patch
Size: 6338 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/cluster-devel/attachments/20080125/7b5f5de0/attachment.bin>

WARNING: multiple messages have this Message-ID (diff)
From: Wendy Cheng <wcheng@redhat.com>
To: NFS list <linux-nfs@vger.kernel.org>, cluster-devel@redhat.com
Subject: [PATCH 3/3] NLM enable per-ip base grace period
Date: Fri, 25 Jan 2008 00:19:07 -0500	[thread overview]
Message-ID: <4799714B.9070900@redhat.com> (raw)

[-- Attachment #1: Type: text/plain, Size: 118 bytes --]

Hooks are added into the existing lockd global grace period checking to 
enable per-ip base grace period.

-- Wendy



[-- Attachment #2: resume_003.patch --]
[-- Type: text/x-patch, Size: 6338 bytes --]

Hooks are added into the existing lockd global grace period checking
to enable per-ip base grace period. 

Signed-off-by: S. Wendy Cheng <wcheng@redhat.com>
Signed-off-by: Lon Hohberger  <lhh@redhat.com>

 fs/lockd/svc.c              |    3 ++-
 fs/lockd/svc4proc.c         |   13 ++++++-------
 fs/lockd/svcproc.c          |   12 ++++++------
 include/linux/lockd/lockd.h |   20 ++++++++++++++++++++
 4 files changed, 34 insertions(+), 14 deletions(-)

--- linux-3/fs/lockd/svc4proc.c	2008-01-22 12:01:33.000000000 -0500
+++ linux-4/fs/lockd/svc4proc.c	2008-01-24 17:44:12.000000000 -0500
@@ -18,7 +18,6 @@
 #include <linux/lockd/share.h>
 #include <linux/lockd/sm_inter.h>
 
-
 #define NLMDBG_FACILITY		NLMDBG_CLIENT
 
 /*
@@ -89,7 +88,7 @@ nlm4svc_proc_test(struct svc_rqst *rqstp
 	resp->cookie = argp->cookie;
 
 	/* Don't accept test requests during grace period */
-	if (nlmsvc_grace_period) {
+	if (nlmsvc_check_grace_period(rqstp, argp)) {
 		resp->status = nlm_lck_denied_grace_period;
 		return rpc_success;
 	}
@@ -121,7 +120,7 @@ nlm4svc_proc_lock(struct svc_rqst *rqstp
 	resp->cookie = argp->cookie;
 
 	/* Don't accept new lock requests during grace period */
-	if (nlmsvc_grace_period && !argp->reclaim) {
+	if (nlmsvc_check_grace_period(rqstp, argp) && !argp->reclaim) {
 		resp->status = nlm_lck_denied_grace_period;
 		return rpc_success;
 	}
@@ -166,7 +165,7 @@ nlm4svc_proc_cancel(struct svc_rqst *rqs
 	resp->cookie = argp->cookie;
 
 	/* Don't accept requests during grace period */
-	if (nlmsvc_grace_period) {
+	if (nlmsvc_check_grace_period(rqstp, argp)) {
 		resp->status = nlm_lck_denied_grace_period;
 		return rpc_success;
 	}
@@ -199,7 +198,7 @@ nlm4svc_proc_unlock(struct svc_rqst *rqs
 	resp->cookie = argp->cookie;
 
 	/* Don't accept new lock requests during grace period */
-	if (nlmsvc_grace_period) {
+	if (nlmsvc_check_grace_period(rqstp, argp)) {
 		resp->status = nlm_lck_denied_grace_period;
 		return rpc_success;
 	}
@@ -336,7 +335,7 @@ nlm4svc_proc_share(struct svc_rqst *rqst
 	resp->cookie = argp->cookie;
 
 	/* Don't accept new lock requests during grace period */
-	if (nlmsvc_grace_period && !argp->reclaim) {
+	if (nlmsvc_check_grace_period(rqstp, argp) && !argp->reclaim) {
 		resp->status = nlm_lck_denied_grace_period;
 		return rpc_success;
 	}
@@ -369,7 +368,7 @@ nlm4svc_proc_unshare(struct svc_rqst *rq
 	resp->cookie = argp->cookie;
 
 	/* Don't accept requests during grace period */
-	if (nlmsvc_grace_period) {
+	if (nlmsvc_check_grace_period(rqstp, argp)) {
 		resp->status = nlm_lck_denied_grace_period;
 		return rpc_success;
 	}
--- linux-3/fs/lockd/svcproc.c	2008-01-22 12:01:33.000000000 -0500
+++ linux-4/fs/lockd/svcproc.c	2008-01-24 17:45:04.000000000 -0500
@@ -118,7 +118,7 @@ nlmsvc_proc_test(struct svc_rqst *rqstp,
 	resp->cookie = argp->cookie;
 
 	/* Don't accept test requests during grace period */
-	if (nlmsvc_grace_period) {
+	if (nlmsvc_check_grace_period(rqstp, argp)) {
 		resp->status = nlm_lck_denied_grace_period;
 		return rpc_success;
 	}
@@ -151,7 +151,7 @@ nlmsvc_proc_lock(struct svc_rqst *rqstp,
 	resp->cookie = argp->cookie;
 
 	/* Don't accept new lock requests during grace period */
-	if (nlmsvc_grace_period && !argp->reclaim) {
+	if (nlmsvc_check_grace_period(rqstp, argp) && !argp->reclaim) {
 		resp->status = nlm_lck_denied_grace_period;
 		return rpc_success;
 	}
@@ -196,7 +196,7 @@ nlmsvc_proc_cancel(struct svc_rqst *rqst
 	resp->cookie = argp->cookie;
 
 	/* Don't accept requests during grace period */
-	if (nlmsvc_grace_period) {
+	if (nlmsvc_check_grace_period(rqstp, argp)) {
 		resp->status = nlm_lck_denied_grace_period;
 		return rpc_success;
 	}
@@ -229,7 +229,7 @@ nlmsvc_proc_unlock(struct svc_rqst *rqst
 	resp->cookie = argp->cookie;
 
 	/* Don't accept new lock requests during grace period */
-	if (nlmsvc_grace_period) {
+	if (nlmsvc_check_grace_period(rqstp, argp)) {
 		resp->status = nlm_lck_denied_grace_period;
 		return rpc_success;
 	}
@@ -368,7 +368,7 @@ nlmsvc_proc_share(struct svc_rqst *rqstp
 	resp->cookie = argp->cookie;
 
 	/* Don't accept new lock requests during grace period */
-	if (nlmsvc_grace_period && !argp->reclaim) {
+	if (nlmsvc_check_grace_period(rqstp, argp) && !argp->reclaim) {
 		resp->status = nlm_lck_denied_grace_period;
 		return rpc_success;
 	}
@@ -401,7 +401,7 @@ nlmsvc_proc_unshare(struct svc_rqst *rqs
 	resp->cookie = argp->cookie;
 
 	/* Don't accept requests during grace period */
-	if (nlmsvc_grace_period) {
+	if (nlmsvc_check_grace_period(rqstp, argp)) {
 		resp->status = nlm_lck_denied_grace_period;
 		return rpc_success;
 	}
--- linux-3/fs/lockd/svc.c	2008-01-24 17:30:55.000000000 -0500
+++ linux-4/fs/lockd/svc.c	2008-01-24 17:41:40.000000000 -0500
@@ -97,7 +97,7 @@ unsigned long get_nfs_grace_period(void)
 }
 EXPORT_SYMBOL(get_nfs_grace_period);
 
-static unsigned long set_grace_period(void)
+unsigned long set_grace_period(void)
 {
 	nlmsvc_grace_period = 1;
 	return get_nfs_grace_period() + jiffies;
@@ -208,6 +208,7 @@ lockd(struct svc_rqst *rqstp)
 		nlm_shutdown_hosts();
 		nlmsvc_pid = 0;
 		nlmsvc_serv = NULL;
+		nlmsvc_failover_reset();
 	} else
 		printk(KERN_DEBUG
 			"lockd: new process, skipping host shutdown\n");
--- linux-3/include/linux/lockd/lockd.h	2008-01-24 17:09:26.000000000 -0500
+++ linux-4/include/linux/lockd/lockd.h	2008-01-24 17:41:40.000000000 -0500
@@ -222,6 +222,7 @@ int           nlmsvc_failover_path(struc
 int           nlmsvc_failover_ip(__be32 server_addr);
 int           nlmsvc_failover_setgrace(void *server_ip, int ip_size);
 void          nlmsvc_failover_reset(void);
+int           nlmsvc_failover_check(struct svc_rqst *rqstp);
 
 #define NLM_FO_MAX_GP_CNT	1024
 
@@ -236,6 +237,25 @@ struct nlm_failover_struct {
 #define g_ip			g_key.ipv6
 };
 
+extern struct list_head nlm_failover_list;
+
+/*Check for grace period: return TRUE or FALSE */
+static inline int
+nlmsvc_check_grace_period(struct svc_rqst *rqstp, struct nlm_args *argp)
+{
+	/* check for system wide grace period */
+	if (nlmsvc_grace_period)
+		return 1;
+
+	/* check for per exported fsid grace period */
+	if (unlikely(!list_empty(&nlm_failover_list)))
+		return(nlmsvc_failover_check(rqstp));
+
+	return 0;
+}
+
+/* end of cluster failover addition */
+
 static __inline__ struct inode *
 nlmsvc_file_inode(struct nlm_file *file)
 {

             reply	other threads:[~2008-01-25  5:19 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-01-25  5:19 Wendy Cheng [this message]
2008-01-25  5:19 ` [PATCH 3/3] NLM enable per-ip base grace period Wendy Cheng
2008-01-30  0:23 ` [Cluster-devel] " J. Bruce Fields
2008-01-30  0:23   ` J. Bruce Fields

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=4799714B.9070900@redhat.com \
    --to=wcheng@redhat.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.