Re: [PATCH 4/6] NLM: Clean up nsm_monitor() call

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On Dec 3, 2008, at 4:08 PM, J. Bruce Fields wrote:

On Mon, Dec 01, 2008 at 01:57:58PM -0500, Chuck Lever wrote:
Clean up: A few minor clean-ups for nsm_monitor():

All looks fine, thanks, however:


o Make sure to return an error if the SM_MON call result is not zero.

I'd prefer to have a change in behavior split out into a separate patch
from pure cleanup.

That's fine. I will probably end up reposting this series with your comments addressed, so I will split this one out.

--b.


o  Remove the BUG_ON() -- the code will die anyway if nsm is NULL.

o  Use nsm->sm_name instead of host->h_name to be consistent with
   other functions in fs/lockd/mon.c.

o  Collect the public declaration of nsm_monitor() in lockd.h with
   other NSM public function declarations (eg. nsm_release).

o  Add documenting comments.

Signed-off-by: Chuck Lever <chuck.lever@xxxxxxxxxx>
---

fs/lockd/mon.c                 |   29 ++++++++++++++++++-----------
include/linux/lockd/lockd.h    |    4 ++++
include/linux/lockd/sm_inter.h |    1 -
3 files changed, 22 insertions(+), 12 deletions(-)

diff --git a/fs/lockd/mon.c b/fs/lockd/mon.c
index a606fbb..78d5f59 100644
--- a/fs/lockd/mon.c
+++ b/fs/lockd/mon.c
@@ -69,18 +69,24 @@ nsm_mon_unmon(struct nsm_handle *nsm, u32 proc, struct nsm_res *res)
	return status;
}

-/*
- * Set up monitoring of a remote host
+/**
+ * nsm_monitor - Notify a peer in case we reboot
+ * @host: pointer to nlm_host of peer to notify
+ *
+ * If this peer is not already monitored, this function sends an
+ * upcall to the local rpc.statd to record the name/address of
+ * the peer to notify in case we reboot.
+ *
+ * Returns zero if the peer is monitored by the local rpc.statd;
+ * otherwise a negative errno value is returned.
 */
-int
-nsm_monitor(struct nlm_host *host)
+int nsm_monitor(const struct nlm_host *host)
{
	struct nsm_handle *nsm = host->h_nsmhandle;
-	struct nsm_res	res;
-	int		status;
+	struct nsm_res res;
+	int status;

-	dprintk("lockd: nsm_monitor(%s)\n", host->h_name);
-	BUG_ON(nsm == NULL);
+	dprintk("lockd: nsm_monitor(%s)\n", nsm->sm_name);

	if (nsm->sm_monitored)
		return 0;
@@ -92,9 +98,10 @@ nsm_monitor(struct nlm_host *host)
nsm->sm_mon_name = nsm_use_hostnames ? nsm->sm_name : nsm- >sm_addrbuf;

	status = nsm_mon_unmon(nsm, SM_MON, &res);
-
-	if (status < 0 || res.status != 0)
-		printk(KERN_NOTICE "lockd: cannot monitor %s\n", host->h_name);
+	if (res.status != 0)
+		status = -EIO;
+	if (status < 0)
+		printk(KERN_NOTICE "lockd: cannot monitor %s\n", nsm->sm_name);
	else
		nsm->sm_monitored = 1;
	return status;
diff --git a/include/linux/lockd/lockd.h b/include/linux/lockd/ lockd.h
index de9ea7b..4ca6f39 100644
--- a/include/linux/lockd/lockd.h
+++ b/include/linux/lockd/lockd.h
@@ -233,6 +233,10 @@ extern void nlm_host_rebooted(const struct sockaddr_in *, const char *,
					unsigned int, u32);
void		  nsm_release(struct nsm_handle *);

+/*
+ * Host monitoring
+ */
+int		  nsm_monitor(const struct nlm_host *host);

/*
 * This is used in garbage collection and resource reclaim
diff --git a/include/linux/lockd/sm_inter.h b/include/linux/lockd/ sm_inter.h
index 5a5448b..546b610 100644
--- a/include/linux/lockd/sm_inter.h
+++ b/include/linux/lockd/sm_inter.h
@@ -41,7 +41,6 @@ struct nsm_res {
	u32		state;
};

-int		nsm_monitor(struct nlm_host *);
int		nsm_unmonitor(struct nlm_host *);
extern int	nsm_local_state;



--
Chuck Lever
chuck[dot]lever[at]oracle[dot]com



--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Filesystem Development]     [Linux USB Development]     [Linux Media Development]     [Video for Linux]     [Linux NILFS]     [Linux Audio Users]     [Yosemite Info]     [Linux SCSI]

  Powered by Linux