diff options
Diffstat (limited to 'main/nfs-utils/0001-statd-exit-if-a-statd-is-already-running.patch')
-rw-r--r-- | main/nfs-utils/0001-statd-exit-if-a-statd-is-already-running.patch | 126 |
1 files changed, 0 insertions, 126 deletions
diff --git a/main/nfs-utils/0001-statd-exit-if-a-statd-is-already-running.patch b/main/nfs-utils/0001-statd-exit-if-a-statd-is-already-running.patch deleted file mode 100644 index 4e8be2fd4..000000000 --- a/main/nfs-utils/0001-statd-exit-if-a-statd-is-already-running.patch +++ /dev/null @@ -1,126 +0,0 @@ -From 342446a4a624d4ee8254af859bb7f1de6d268679 Mon Sep 17 00:00:00 2001 -From: Weston Andros Adamson <dros@netapp.com> -Date: Tue, 7 May 2013 11:25:29 -0400 -Subject: [PATCH] statd: exit if a statd is already running - -Moves nfs_probe_statd from mount to nfs support lib to share with statd. - -Acked-by: Chuck Lever <chuck.lever@oracle.com> -Signed-off-by: Weston Andros Adamson <dros@netapp.com> -Signed-off-by: Steve Dickson <steved@redhat.com> ---- - support/include/nfsrpc.h | 5 +++++ - support/nfs/getport.c | 22 ++++++++++++++++++++++ - utils/mount/network.c | 17 ----------------- - utils/statd/statd.c | 7 +++++++ - 4 files changed, 34 insertions(+), 17 deletions(-) - -diff --git a/support/include/nfsrpc.h b/support/include/nfsrpc.h -index a0b80e1..1bfae7a 100644 ---- a/support/include/nfsrpc.h -+++ b/support/include/nfsrpc.h -@@ -156,6 +156,11 @@ extern unsigned long nfs_pmap_getport(const struct sockaddr_in *, - const struct timeval *); - - /* -+ * Use nfs_pmap_getport to see if statd is running locally -+ */ -+extern int nfs_probe_statd(void); -+ -+/* - * Contact a remote RPC service to discover whether it is responding - * to requests. - */ -diff --git a/support/nfs/getport.c b/support/nfs/getport.c -index 3331ad4..081594c 100644 ---- a/support/nfs/getport.c -+++ b/support/nfs/getport.c -@@ -1102,3 +1102,25 @@ unsigned long nfs_pmap_getport(const struct sockaddr_in *sin, - - return port; - } -+ -+static const char *nfs_ns_pgmtbl[] = { -+ "status", -+ NULL, -+}; -+ -+/* -+ * nfs_probe_statd - use nfs_pmap_getport to see if statd is running locally -+ * -+ * Returns non-zero if statd is running locally. -+ */ -+int nfs_probe_statd(void) -+{ -+ struct sockaddr_in addr = { -+ .sin_family = AF_INET, -+ .sin_addr.s_addr = htonl(INADDR_LOOPBACK), -+ }; -+ rpcprog_t program = nfs_getrpcbyname(NSMPROG, nfs_ns_pgmtbl); -+ -+ return nfs_getport_ping((struct sockaddr *)(char *)&addr, sizeof(addr), -+ program, (rpcvers_t)1, IPPROTO_UDP); -+} -diff --git a/utils/mount/network.c b/utils/mount/network.c -index 4be48cd..e2cdcaf 100644 ---- a/utils/mount/network.c -+++ b/utils/mount/network.c -@@ -65,11 +65,6 @@ extern int nfs_mount_data_version; - extern char *progname; - extern int verbose; - --static const char *nfs_ns_pgmtbl[] = { -- "status", -- NULL, --}; -- - static const char *nfs_mnt_pgmtbl[] = { - "mount", - "mountd", -@@ -761,18 +756,6 @@ int probe_bothports(clnt_addr_t *mnt_server, clnt_addr_t *nfs_server) - &nfs_server->pmap); - } - --static int nfs_probe_statd(void) --{ -- struct sockaddr_in addr = { -- .sin_family = AF_INET, -- .sin_addr.s_addr = htonl(INADDR_LOOPBACK), -- }; -- rpcprog_t program = nfs_getrpcbyname(NSMPROG, nfs_ns_pgmtbl); -- -- return nfs_getport_ping(SAFE_SOCKADDR(&addr), sizeof(addr), -- program, (rpcvers_t)1, IPPROTO_UDP); --} -- - /** - * start_statd - attempt to start rpc.statd - * -diff --git a/utils/statd/statd.c b/utils/statd/statd.c -index 652546c..8c51bcc 100644 ---- a/utils/statd/statd.c -+++ b/utils/statd/statd.c -@@ -28,6 +28,7 @@ - - #include "statd.h" - #include "nfslib.h" -+#include "nfsrpc.h" - #include "nsm.h" - - /* Socket operations */ -@@ -237,6 +238,12 @@ int main (int argc, char **argv) - /* Set hostname */ - MY_NAME = NULL; - -+ /* Refuse to start if another statd is running */ -+ if (nfs_probe_statd()) { -+ fprintf(stderr, "Statd service already running!\n"); -+ exit(1); -+ } -+ - /* Process command line switches */ - while ((arg = getopt_long(argc, argv, "h?vVFNH:dn:p:o:P:L", longopts, NULL)) != EOF) { - switch (arg) { --- -1.8.3.2 - |