From: lhh@sourceware.org <lhh@sourceware.org>
To: cluster-devel.redhat.com
Subject: [Cluster-devel] cluster/rgmanager include/resgroup.h src/cluli ...
Date: 14 Dec 2006 22:17:22 -0000 [thread overview]
Message-ID: <20061214221722.9506.qmail@sourceware.org> (raw)
CVSROOT: /cvs/cluster
Module name: cluster
Branch: RHEL50
Changes by: lhh at sourceware.org 2006-12-14 22:17:21
Modified files:
rgmanager/include: resgroup.h
rgmanager/src/clulib: rg_strings.c
rgmanager/src/daemons: rg_state.c
rgmanager/src/resources: fs.sh
rgmanager/src/utils: clusvcadm.c
Log message:
Fix #216774, pass 3
Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/include/resgroup.h.diff?cvsroot=cluster&only_with_tag=RHEL50&r1=1.15.4.1&r2=1.15.4.2
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/clulib/rg_strings.c.diff?cvsroot=cluster&only_with_tag=RHEL50&r1=1.5&r2=1.5.4.1
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/daemons/rg_state.c.diff?cvsroot=cluster&only_with_tag=RHEL50&r1=1.24.4.1&r2=1.24.4.2
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/resources/fs.sh.diff?cvsroot=cluster&only_with_tag=RHEL50&r1=1.17&r2=1.17.4.1
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/utils/clusvcadm.c.diff?cvsroot=cluster&only_with_tag=RHEL50&r1=1.12.4.1&r2=1.12.4.2
--- cluster/rgmanager/include/resgroup.h 2006/12/13 18:39:19 1.15.4.1
+++ cluster/rgmanager/include/resgroup.h 2006/12/14 22:17:20 1.15.4.2
@@ -161,6 +161,7 @@
int my_id(void);
/* Return codes */
+#define RG_ERUN -10 /* Service is already running */
#define RG_EQUORUM -9 /* Operation requires quorum */
#define RG_EINVAL -8 /* Invalid operation for resource */
#define RG_EDEPEND -7 /* Operation violates dependency */
--- cluster/rgmanager/src/clulib/rg_strings.c 2006/09/01 19:02:22 1.5
+++ cluster/rgmanager/src/clulib/rg_strings.c 2006/12/14 22:17:20 1.5.4.1
@@ -19,6 +19,7 @@
#include <resgroup.h>
struct { int val; char *str; } rg_error_strings[] = {
+ { RG_ERUN, "Service is already running" },
{ RG_EQUORUM, "Operation requires quorum" },
{ RG_EINVAL, "Invalid operation for resource" },
{ RG_EDEPEND, "Operation violates dependency rule" },
--- cluster/rgmanager/src/daemons/rg_state.c 2006/12/13 18:39:19 1.24.4.1
+++ cluster/rgmanager/src/daemons/rg_state.c 2006/12/14 22:17:21 1.24.4.2
@@ -569,6 +569,7 @@
* 1 = START service - return whatever it returns.
* 2 = DO NOT start service, return 0
* 3 = DO NOT start service, return RG_EAGAIN
+ * 4 = DO NOT start service, return RG_ERUN
*/
int
svc_advise_start(rg_state_t *svcStatus, char *svcName, int req)
@@ -593,7 +594,7 @@
clulog(LOG_DEBUG,
"RG %s is already running locally\n", svcName);
*/
- ret = 2;
+ ret = 4;
break;
}
@@ -605,7 +606,7 @@
svcName,
memb_id_to_name(membership,svcStatus->rs_owner));
*/
- ret = 2;
+ ret = 4;
break;
}
@@ -663,6 +664,7 @@
break;
case RG_STATE_STOPPED:
+ case RG_STATE_ERROR:
/* Don't actually enable if the RG is locked! */
if (rg_locked()) {
ret = 3;
@@ -694,7 +696,6 @@
svcName);
break;
- case RG_STATE_ERROR:
default:
clulog(LOG_ERR,
"#44: Cannot start RG %s: Invalid State %d\n",
@@ -746,6 +747,9 @@
case 3:
rg_unlock(&lockp);
return RG_EAGAIN;
+ case 4:
+ rg_unlock(&lockp);
+ return RG_ERUN;
default:
break;
}
@@ -1491,8 +1495,8 @@
/*
If services are locked, return the error
*/
- if (ret == RG_EAGAIN)
- return RG_EAGAIN;
+ if (ret == RG_EAGAIN || ret == RG_ERUN)
+ return ret;
/*
* If we succeeded, then we're done.
--- cluster/rgmanager/src/resources/fs.sh 2006/08/18 15:26:22 1.17
+++ cluster/rgmanager/src/resources/fs.sh 2006/12/14 22:17:21 1.17.4.1
@@ -496,6 +496,18 @@
#
+# trim_trailing_slash path
+#
+# Trim trailing slash from given path.
+#
+trim_trailing_slash() {
+ declare mpath=$1
+
+ echo $mpath | sed -e 's/\/*$//'
+}
+
+
+#
# isMounted device mount_point
#
# Check to see if the device is mounted. Print a warning if its not
@@ -523,6 +535,8 @@
do
#echo "spec=$1 dev=$dev tmp_dev=$tmp_dev"
tmp_dev=$(real_device $tmp_dev)
+ tmp_mp=$(trim_trailing_slash $tmp_mp)
+ mp=$(trim_trailing_slash $mp)
if [ -n "$tmp_dev" -a "$tmp_dev" = "$dev" ]; then
#
--- cluster/rgmanager/src/utils/clusvcadm.c 2006/12/13 18:39:20 1.12.4.1
+++ cluster/rgmanager/src/utils/clusvcadm.c 2006/12/14 22:17:21 1.12.4.2
@@ -344,13 +344,16 @@
clu_local_nodename(RG_SERVICE_GROUP, nodename,
sizeof(nodename));
*/
- strcpy(nodename,"me");
+ //strcpy(nodename,"me");
}
build_message(&msg, action, svcname, svctarget);
if (action != RG_RELOCATE && action != RG_MIGRATE) {
- printf("Member %s %s %s", nodename, actionstr, svcname);
+ if (!node_specified)
+ printf("Local machine %s %s", actionstr, svcname);
+ else
+ printf("Member %s %s %s", nodename, actionstr, svcname);
printf("...");
fflush(stdout);
msg_open(MSG_SOCKET, 0, RG_PORT, &ctx, 5);
@@ -389,13 +392,18 @@
swab_SmMessageSt(&msg);
printf("%s\n", rg_strerror(msg.sm_data.d_ret));
+
+ if (msg.sm_data.d_ret == RG_ERUN)
+ return 0;
+
switch (action) {
case RG_MIGRATE:
case RG_RELOCATE:
case RG_START:
case RG_ENABLE:
printf("%s%s is now running on %s\n",
- msg.sm_data.d_svcOwner==svctarget?"":"Warning: ",
+ (!node_specified ||
+ msg.sm_data.d_svcOwner==svctarget)?"":"Warning: ",
svcname, memb_id_to_name(membership,
msg.sm_data.d_svcOwner));
break;
next reply other threads:[~2006-12-14 22:17 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-12-14 22:17 lhh [this message]
-- strict thread matches above, loose matches on Subject: below --
2006-12-14 22:17 [Cluster-devel] cluster/rgmanager include/resgroup.h src/cluli lhh
2006-12-14 22:18 lhh
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=20061214221722.9506.qmail@sourceware.org \
--to=lhh@sourceware.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.