From: lhh@sourceware.org <lhh@sourceware.org>
To: cluster-devel.redhat.com
Subject: [Cluster-devel] cluster/rgmanager ChangeLog include/resgroup.h ...
Date: 18 Aug 2006 15:26:25 -0000 [thread overview]
Message-ID: <20060818152625.24927.qmail@sourceware.org> (raw)
CVSROOT: /cvs/cluster
Module name: cluster
Changes by: lhh at sourceware.org 2006-08-18 15:26:23
Modified files:
rgmanager : ChangeLog
rgmanager/include: resgroup.h
rgmanager/src/clulib: ckpt_state.c
rgmanager/src/daemons: groups.c main.c rg_state.c
rgmanager/src/resources: clusterfs.sh fs.sh nfsclient.sh
ra-api-1-modified.dtd script.sh
Log message:
2006-08-18 Lon Hohberger <lhh@redhat.com>
* include/resgroup.h: Change ordering and add magic field to
rgmanager state field (warning: breaks compatibility from 08/08 CVS!)
* src/clulib/ckpt_state.c, src/daemons/rg_state.c: Fix bug
preventing correct operation of ckpt operation after initial boot.
Get rid of debug info.
* src/daemons/groups,c, main.c: Fix #202499 - shutdown while handling
transitions sometimes allows services to restart (due to not locking
RGs locally)
* src/resources/clusterfs.sh, fs.sh, nfsclient.sh: Add proper
warning messages if status check fails
* src/resources/ra-api-1-modified.dtd: Allow 'migrate' option
Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/ChangeLog.diff?cvsroot=cluster&r1=1.19&r2=1.20
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/include/resgroup.h.diff?cvsroot=cluster&r1=1.12&r2=1.13
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/clulib/ckpt_state.c.diff?cvsroot=cluster&r1=1.1&r2=1.2
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/daemons/groups.c.diff?cvsroot=cluster&r1=1.20&r2=1.21
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/daemons/main.c.diff?cvsroot=cluster&r1=1.28&r2=1.29
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/daemons/rg_state.c.diff?cvsroot=cluster&r1=1.19&r2=1.20
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/resources/clusterfs.sh.diff?cvsroot=cluster&r1=1.10&r2=1.11
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/resources/fs.sh.diff?cvsroot=cluster&r1=1.16&r2=1.17
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/resources/nfsclient.sh.diff?cvsroot=cluster&r1=1.12&r2=1.13
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/resources/ra-api-1-modified.dtd.diff?cvsroot=cluster&r1=1.3&r2=1.4
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/resources/script.sh.diff?cvsroot=cluster&r1=1.7&r2=1.8
--- cluster/rgmanager/ChangeLog 2006/08/09 21:48:34 1.19
+++ cluster/rgmanager/ChangeLog 2006/08/18 15:26:21 1.20
@@ -1,3 +1,16 @@
+2006-08-18 Lon Hohberger <lhh@redhat.com>
+ * include/resgroup.h: Change ordering and add magic field to
+ rgmanager state field (warning: breaks compatibility from 08/08 CVS!)
+ * src/clulib/ckpt_state.c, src/daemons/rg_state.c: Fix bug
+ preventing correct operation of ckpt operation after initial boot.
+ Get rid of debug info.
+ * src/daemons/groups,c, main.c: Fix #202499 - shutdown while handling
+ transitions sometimes allows services to restart (due to not locking
+ RGs locally)
+ * src/resources/clusterfs.sh, fs.sh, nfsclient.sh: Add proper
+ warning messages if status check fails
+ * src/resources/ra-api-1-modified.dtd: Allow 'migrate' option
+
2006-08-08 Lon Hohberger <lhh@redhat.com>
* src/clulib/members.c: Fix gained/lost list creation so that the
count is actually nonzero (#201713)
--- cluster/rgmanager/include/resgroup.h 2006/07/19 18:43:32 1.12
+++ cluster/rgmanager/include/resgroup.h 2006/08/18 15:26:22 1.13
@@ -27,31 +27,30 @@
*/
typedef struct {
char rs_name[64]; /**< Service name */
+ uint32_t rs_id; /**< Service ID */
+ uint32_t rs_magic; /**< Magic ID */
uint32_t rs_owner; /**< Member ID running service. */
uint32_t rs_last_owner; /**< Last member to run the service. */
uint32_t rs_state; /**< State of service. */
uint32_t rs_restarts; /**< Number of cluster-induced
restarts */
uint64_t rs_transition; /**< Last service transition time */
- uint32_t rs_id; /**< Service ID */
- uint32_t rs_pad; /**< pad to 64-bit boundary */
} rg_state_t;
#define swab_rg_state_t(ptr) \
{\
+ swab32((ptr)->rs_id);\
+ swab32((ptr)->rs_magic);\
swab32((ptr)->rs_owner);\
swab32((ptr)->rs_last_owner);\
swab32((ptr)->rs_state);\
swab32((ptr)->rs_restarts);\
swab64((ptr)->rs_transition);\
- swab32((ptr)->rs_pad);\
}
#define RG_PORT 177
-#define RG_VF_PORT 178
-#define RG_PURPOSE 0x11398fed
-#define RG_SERVICE_GROUP "usrm::manager"
+#define RG_MAGIC 0x11398fed
#define RG_ACTION_REQUEST /* Message header */ 0x138582
#define RG_EVENT 0x138583
--- cluster/rgmanager/src/clulib/ckpt_state.c 2006/08/07 22:05:01 1.1
+++ cluster/rgmanager/src/clulib/ckpt_state.c 2006/08/18 15:26:22 1.2
@@ -75,8 +75,10 @@
{
SaCkptCheckpointCreationAttributesT attrs;
SaCkptCheckpointOpenFlagsT flags;
+#if 0
SaCkptCheckpointDescriptorT status;
- SaAisErrorT err;
+#endif
+ SaAisErrorT err = SA_AIS_OK;
key_node_t *newnode = NULL;
newnode = kn_find_key(keyid);
@@ -111,6 +113,7 @@
&newnode->kn_cph);
if (err == SA_AIS_OK) {
+#if 0
saCkptCheckpointStatusGet(newnode->kn_cph,
&status);
@@ -141,12 +144,10 @@
(int)status.checkpointCreationAttributes.maxSectionIdSize);
printf("Section count = %d\n", status.numberOfSections);
printf("\n");
-
+#endif
goto good;
}
- printf("Retrying w/ create\n");
-
attrs.creationFlags = SA_CKPT_WR_ALL_REPLICAS;
attrs.checkpointSize = (SaSizeT)maxsize;
attrs.retentionDuration = SA_TIME_ONE_HOUR;
@@ -175,7 +176,9 @@
newnode->kn_ready = 1;
newnode->kn_next = key_list;
key_list = newnode;
+#if 0
printf("Opened ckpt %s\n", keyid);
+#endif
return err;
}
--- cluster/rgmanager/src/daemons/groups.c 2006/07/19 18:43:32 1.20
+++ cluster/rgmanager/src/daemons/groups.c 2006/08/18 15:26:22 1.21
@@ -418,7 +418,7 @@
int ret;
if (rg_locked()) {
- clulog(LOG_NOTICE,
+ clulog(LOG_DEBUG,
"Resource groups locked; not evaluating\n");
return -EAGAIN;
}
--- cluster/rgmanager/src/daemons/main.c 2006/08/09 21:48:34 1.28
+++ cluster/rgmanager/src/daemons/main.c 2006/08/18 15:26:22 1.29
@@ -792,6 +792,7 @@
void *
shutdown_thread(void *arg)
{
+ rg_lockall(L_SYS);
rg_doall(RG_STOP_EXITING, 1, NULL);
running = 0;
--- cluster/rgmanager/src/daemons/rg_state.c 2006/08/07 22:05:01 1.19
+++ cluster/rgmanager/src/daemons/rg_state.c 2006/08/18 15:26:22 1.20
@@ -306,11 +306,12 @@
if (errno == ENOENT) {
ds_key_init(res, DS_MIN_SIZE, 10);
} else {
+ perror("ds_read");
return -1;
}
}
- if (datalen < 0) {
+ if (datalen <= 0) {
ret = init_rg(name, svcblk);
if (ret < 0) {
@@ -326,6 +327,7 @@
}
memcpy(svcblk, data, sizeof(*svcblk));
+
return 0;
#else
membership = member_list();
--- cluster/rgmanager/src/resources/clusterfs.sh 2006/06/02 17:37:10 1.10
+++ cluster/rgmanager/src/resources/clusterfs.sh 2006/08/18 15:26:22 1.11
@@ -889,12 +889,16 @@
;;
status|monitor)
isMounted ${OCF_RESKEY_device} ${OCF_RESKEY_mountpoint}
- [ $? -ne $YES ] && exit $OCF_ERR_GENERIC
+ if [ $? -ne $YES ]; then
+ ocf_log err "fs:${OCF_RESKEY_name}: ${OCF_RESKEY_device} is not mounted on ${OCF_RESKEY_mountpoint}"
+ exit $OCF_ERR_GENERIC
+ fi
isAlive ${OCF_RESKEY_mountpoint}
- [ $? -ne $YES ] && exit $OCF_ERR_GENERIC
-
- exit 0
+ [ $? -eq $YES ] && exit 0
+
+ ocf_log err "fs:${OCF_RESKEY_name}: Mount point is not accessible!"
+ exit $OCF_ERR_GENERIC
;;
restart)
stopFilesystem
--- cluster/rgmanager/src/resources/fs.sh 2006/06/02 17:37:10 1.16
+++ cluster/rgmanager/src/resources/fs.sh 2006/08/18 15:26:22 1.17
@@ -243,7 +243,7 @@
{
if [ -z "$OCF_RESKEY_mountpoint" ]; then
ocf_log err "No mount point specified."
- return 1
+ return $OCF_ERR_ARGS
fi
if ! [ -e "$OCF_RESKEY_mountpoint" ]; then
@@ -514,7 +514,7 @@
dev=$(real_device $1)
if [ -z "$dev" ]; then
ocf_log err \
- "isMounted: Could not match $1 with a real device"
+ "fs (isMounted): Could not match $1 with a real device"
return $FAIL
fi
mp=$2
@@ -553,14 +553,14 @@
declare rw
if [ $# -ne 1 ]; then
- logAndPrint $LOG_ERR "Usage: isAlive mount_point"
+ ocf_log err "Usage: isAlive mount_point"
return $FAIL
fi
mount_point=$1
test -d $mount_point
if [ $? -ne 0 ]; then
- logAndPrint $LOG_ERR "$mount_point is not a directory"
+ ocf_log err "fs (isAlive): $mount_point is not a directory"
return $FAIL
fi
@@ -707,6 +707,7 @@
return $ret
}
+
activeMonitor() {
declare monpath=$OCF_RESKEY_mountpoint/.clumanager
declare p
@@ -733,7 +734,7 @@
case $1 in
start)
ocf_log info "Starting active monitoring of $OCF_RESKEY_mountpoint"
- mkdir -p $(dirname $monpath) || return 1
+ mkdir -p $(dirname $monpath) || return $OCF_ERR_GENERIC
devmon $args -p $monpath/devmon.data -P $monpath/devmon.pid
;;
stop)
@@ -794,7 +795,7 @@
if [ -z "`which quotaon`" ]; then
ocf_log err "quotaon not found in $PATH"
- return 1
+ return $OCF_ERR_GENERIC
fi
for mopt in `echo $opts | sed -e s/,/\ /g`; do
@@ -1211,29 +1212,35 @@
;;
status|monitor)
isMounted ${OCF_RESKEY_device} ${OCF_RESKEY_mountpoint}
- [ $? -ne $YES ] && exit $OCF_ERR_GENERIC
+ if [ $? -ne $YES ]; then
+ ocf_log err "fs:${OCF_RESKEY_name}: ${OCF_RESKEY_device} is not mounted on ${OCF_RESKEY_mountpoint}"
+ exit $OCF_ERR_GENERIC
+ fi
if [ "$OCF_RESKEY_active_monitor" = "yes" ] ||
[ "$OCF_RESKEY_active_monitor" = "1" ]; then
- activeMonitor status || exit $OCF_ERR_GENERIC
- exit 0
+ activeMonitor status
+ [ $? -eq 0 ] && exit 0
+ ocf_log err "fs:${OCF_RESKEY_name}: Active Monitoring reported a failure"
+ exit $OCF_ERR_GENERIC
fi
isAlive ${OCF_RESKEY_mountpoint}
- [ $? -ne $YES ] && exit $OCF_ERR_GENERIC
-
- exit 0
+ [ $? -eq $YES ] && exit 0
+
+ ocf_log err "fs:${OCF_RESKEY_name}: Mount point is not accessible!"
+ exit $OCF_ERR_GENERIC
;;
restart)
stopFilesystem
if [ $? -ne 0 ]; then
- exit 1
+ exit $OCF_ERR_GENERIC
fi
startFilesystem
if [ $? -ne 0 ]; then
- exit 1
+ exit $OCF_ERR_GENERIC
fi
exit 0
--- cluster/rgmanager/src/resources/nfsclient.sh 2006/08/02 17:24:31 1.12
+++ cluster/rgmanager/src/resources/nfsclient.sh 2006/08/18 15:26:22 1.13
@@ -320,7 +320,11 @@
sed -e 's/*/[*]/g' -e 's/?/[?]/g' -e 's/\./\\./g')
exportfs -v | tr -d "\n" | sed -e 's/([^)]*)/\n/g' | grep -q \
"^${OCF_RESKEY_path}[\t ]*.*${OCF_RESKEY_target_regexp}"
+
rv=$?
+ if [ $rv -ne 0 ]; then
+ ocf_log err "nfsclient:$OCF_RESKEY_name is missing!"
+ fi
;;
recover)
--- cluster/rgmanager/src/resources/ra-api-1-modified.dtd 2006/07/19 18:43:32 1.3
+++ cluster/rgmanager/src/resources/ra-api-1-modified.dtd 2006/08/18 15:26:22 1.4
@@ -25,7 +25,8 @@
primary (1|0) "0"
required (1|0) "0"
inherit CDATA ""
- unique (1|0) "0">
+ unique (1|0) "0"
+ reconfig (1|0) "0">
<!ELEMENT longdesc ANY>
<!ATTLIST longdesc
@@ -42,7 +43,7 @@
<!ELEMENT action EMPTY>
<!ATTLIST action
- name (start|stop|recover|status|monitor|reload|meta-data|verify-all|migrate) #REQUIRED
+ name (start|stop|recover|status|reconfig|monitor|reload|meta-data|verify-all|migrate) #REQUIRED
timeout CDATA #REQUIRED
interval CDATA #IMPLIED
start-delay CDATA #IMPLIED
--- cluster/rgmanager/src/resources/script.sh 2005/11/21 21:48:42 1.7
+++ cluster/rgmanager/src/resources/script.sh 2006/08/18 15:26:23 1.8
@@ -110,4 +110,10 @@
# Don't need to catch return codes; this one will work.
ocf_log info "Executing ${OCF_RESKEY_file} $1"
-exec /bin/sh ${OCF_RESKEY_file} $1
+${OCF_RESKEY_file} $1
+
+declare -i rv=$?
+if [ $rv -ne 0 ]; then
+ ocf_log err "script:$OCF_RESKEY_name: $1 of $OCF_RESKEY_file failed (returned $rv)"
+ return $OCF_ERR_GENERIC
+fi
next reply other threads:[~2006-08-18 15:26 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-08-18 15:26 lhh [this message]
-- strict thread matches above, loose matches on Subject: below --
2006-09-01 19:02 [Cluster-devel] cluster/rgmanager ChangeLog include/resgroup.h lhh
2006-10-06 21:22 lhh
2007-04-27 18:10 lhh
2007-06-14 13:36 mgrac
2007-06-14 15:06 mgrac
2007-06-26 21:55 lhh
2007-06-27 14:03 lhh
2007-11-30 20:36 lhh
2007-12-14 19:37 lhh
2007-12-30 8:27 fabbione
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=20060818152625.24927.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.