From 355ee5fa3905a38092804e19c9447578fef50919 Mon Sep 17 00:00:00 2001 From: Krutika Dhananjay Date: Sun, 11 Aug 2013 11:35:40 +0530 Subject: common-utils: Move glusterd_is_service_running() to common-utils Change-Id: I96cbe03511cbecb112418da82c44c00fbab74ba3 Signed-off-by: Krutika Dhananjay --- libglusterfs/src/common-utils.c | 32 +++++++++++++++ libglusterfs/src/common-utils.h | 2 + xlators/mgmt/glusterd/src/glusterd-rebalance.c | 2 +- xlators/mgmt/glusterd/src/glusterd-replace-brick.c | 2 +- xlators/mgmt/glusterd/src/glusterd-utils.c | 48 ++++------------------ xlators/mgmt/glusterd/src/glusterd-utils.h | 3 -- 6 files changed, 43 insertions(+), 46 deletions(-) diff --git a/libglusterfs/src/common-utils.c b/libglusterfs/src/common-utils.c index bec3249f..061162f7 100644 --- a/libglusterfs/src/common-utils.c +++ b/libglusterfs/src/common-utils.c @@ -2908,3 +2908,35 @@ gf_get_hard_limit (char *limit, char **hard_limit) return 0; } + +gf_boolean_t +gf_is_service_running (char *pidfile, int *pid) +{ + FILE *file = NULL; + gf_boolean_t running = _gf_false; + int ret = 0; + int fno = 0; + + file = fopen (pidfile, "r+"); + if (!file) + goto out; + + fno = fileno (file); + ret = lockf (fno, F_TEST, 0); + if (ret == -1) + running = _gf_true; + if (!pid) + goto out; + + ret = fscanf (file, "%d", pid); + if (ret <= 0) { + gf_log ("", GF_LOG_ERROR, "Unable to read pidfile: %s, %s", + pidfile, strerror (errno)); + *pid = -1; + } + +out: + if (file) + fclose (file); + return running; +} diff --git a/libglusterfs/src/common-utils.h b/libglusterfs/src/common-utils.h index f8db8e30..209e5025 100644 --- a/libglusterfs/src/common-utils.h +++ b/libglusterfs/src/common-utils.h @@ -595,4 +595,6 @@ void md5_wrapper(const unsigned char *data, size_t len, char *md5); int gf_get_soft_limit (char *limit, char **soft_limit); int gf_get_hard_limit (char *limit, char **hard_limit); +gf_boolean_t +gf_is_service_running (char *pidfile, int *pid); #endif /* _COMMON_UTILS_H */ diff --git a/xlators/mgmt/glusterd/src/glusterd-rebalance.c b/xlators/mgmt/glusterd/src/glusterd-rebalance.c index 60dd9c19..70e4b02c 100644 --- a/xlators/mgmt/glusterd/src/glusterd-rebalance.c +++ b/xlators/mgmt/glusterd/src/glusterd-rebalance.c @@ -141,7 +141,7 @@ __glusterd_defrag_notify (struct rpc_clnt *rpc, void *mydata, } UNLOCK (&defrag->lock); - if (!glusterd_is_service_running (pidfile, NULL)) { + if (!gf_is_service_running (pidfile, NULL)) { if (volinfo->rebal.defrag_status == GF_DEFRAG_STATUS_STARTED) { volinfo->rebal.defrag_status = diff --git a/xlators/mgmt/glusterd/src/glusterd-replace-brick.c b/xlators/mgmt/glusterd/src/glusterd-replace-brick.c index 5c879b64..61df24c7 100644 --- a/xlators/mgmt/glusterd/src/glusterd-replace-brick.c +++ b/xlators/mgmt/glusterd/src/glusterd-replace-brick.c @@ -457,7 +457,7 @@ glusterd_op_stage_replace_brick (dict_t *dict, char **op_errstr, GLUSTERD_GET_BRICK_PIDFILE (pidfile, volinfo, src_brickinfo, priv); if ((replace_op != GF_REPLACE_OP_COMMIT_FORCE) && - !glusterd_is_service_running (pidfile, NULL)) { + !gf_is_service_running (pidfile, NULL)) { snprintf(msg, sizeof(msg), "Source brick %s:%s " "is not online.", src_brickinfo->hostname, src_brickinfo->path); diff --git a/xlators/mgmt/glusterd/src/glusterd-utils.c b/xlators/mgmt/glusterd/src/glusterd-utils.c index 5b69316b..27a8990e 100644 --- a/xlators/mgmt/glusterd/src/glusterd-utils.c +++ b/xlators/mgmt/glusterd/src/glusterd-utils.c @@ -1026,7 +1026,7 @@ glusterd_service_stop (const char *service, char *pidfile, int sig, this = THIS; GF_ASSERT (this); - if (!glusterd_is_service_running (pidfile, &pid)) { + if (!gf_is_service_running (pidfile, &pid)) { ret = 0; gf_log (this->name, GF_LOG_INFO, "%s already stopped", service); goto out; @@ -1039,7 +1039,7 @@ glusterd_service_stop (const char *service, char *pidfile, int sig, goto out; sleep (1); - if (glusterd_is_service_running (pidfile, NULL)) { + if (gf_is_service_running (pidfile, NULL)) { ret = kill (pid, SIGKILL); if (ret) { gf_log (this->name, GF_LOG_ERROR, "Unable to " @@ -1205,7 +1205,7 @@ glusterd_volume_start_glusterfs (glusterd_volinfo_t *volinfo, if (ret) goto out; GLUSTERD_GET_BRICK_PIDFILE (pidfile, volinfo, brickinfo, priv); - if (glusterd_is_service_running (pidfile, NULL)) + if (gf_is_service_running (pidfile, NULL)) goto connect; _reap_brick_process (pidfile, brickinfo->path); @@ -3090,40 +3090,6 @@ out: return ret; } -/* Valid only in if service is 'local' to glusterd. - * pid can be -1, if reading pidfile failed */ -gf_boolean_t -glusterd_is_service_running (char *pidfile, int *pid) -{ - FILE *file = NULL; - gf_boolean_t running = _gf_false; - int ret = 0; - int fno = 0; - - file = fopen (pidfile, "r+"); - if (!file) - goto out; - - fno = fileno (file); - ret = lockf (fno, F_TEST, 0); - if (ret == -1) - running = _gf_true; - if (!pid) - goto out; - - ret = fscanf (file, "%d", pid); - if (ret <= 0) { - gf_log ("", GF_LOG_ERROR, "Unable to read pidfile: %s, %s", - pidfile, strerror (errno)); - *pid = -1; - } - -out: - if (file) - fclose (file); - return running; -} - void glusterd_get_nodesvc_dir (char *server, char *workdir, char *path, size_t len) @@ -3481,7 +3447,7 @@ glusterd_is_nodesvc_running (char *server) glusterd_get_nodesvc_pidfile (server, priv->workdir, pidfile, sizeof (pidfile)); - return glusterd_is_service_running (pidfile, NULL); + return gf_is_service_running (pidfile, NULL); } int32_t @@ -3612,7 +3578,7 @@ glusterd_add_node_to_dict (char *server, dict_t *dict, int count, sizeof (pidfile)); //Consider service to be running only when glusterd sees it Online if (glusterd_is_nodesvc_online (server)) - running = glusterd_is_service_running (pidfile, &pid); + running = gf_is_service_running (pidfile, &pid); /* For nfs-servers/self-heal-daemon setting * brick.hostname = "NFS Server" / "Self-heal Daemon" @@ -4599,7 +4565,7 @@ glusterd_add_brick_to_dict (glusterd_volinfo_t *volinfo, GLUSTERD_GET_BRICK_PIDFILE (pidfile, volinfo, brickinfo, priv); - brick_online = glusterd_is_service_running (pidfile, &pid); + brick_online = gf_is_service_running (pidfile, &pid); memset (key, 0, sizeof (key)); snprintf (key, sizeof (key), "%s.pid", base_key); @@ -6119,7 +6085,7 @@ glusterd_volume_defrag_restart (glusterd_volinfo_t *volinfo, char *op_errstr, GLUSTERD_GET_DEFRAG_PID_FILE(pidfile, volinfo, priv); - if (!glusterd_is_service_running (pidfile, &pid)) { + if (!gf_is_service_running (pidfile, &pid)) { glusterd_handle_defrag_start (volinfo, op_errstr, len, cmd, cbk, volinfo->rebal.op); } else { diff --git a/xlators/mgmt/glusterd/src/glusterd-utils.h b/xlators/mgmt/glusterd/src/glusterd-utils.h index c1291819..8372eaaa 100644 --- a/xlators/mgmt/glusterd/src/glusterd-utils.h +++ b/xlators/mgmt/glusterd/src/glusterd-utils.h @@ -164,9 +164,6 @@ void glusterd_get_nodesvc_volfile (char *server, char *workdir, char *volfile, size_t len); -gf_boolean_t -glusterd_is_service_running (char *pidfile, int *pid); - gf_boolean_t glusterd_is_nodesvc_running (); -- cgit