[Cluster-devel] cluster/group/gfs_controld cpg.c lock_dlm.h main.c
teigland at sourceware.org
teigland at sourceware.org
Fri Sep 8 22:44:34 UTC 2006
CVSROOT: /cvs/cluster
Module name: cluster
Changes by: teigland at sourceware.org 2006-09-08 22:44:33
Modified files:
group/gfs_controld: cpg.c lock_dlm.h main.c
Log message:
- minor change to the delay we add between each cpg_mcast retry
- set scheduler to RR priority 2 for gfs_controld
Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/group/gfs_controld/cpg.c.diff?cvsroot=cluster&r1=1.6&r2=1.7
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/group/gfs_controld/lock_dlm.h.diff?cvsroot=cluster&r1=1.17&r2=1.18
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/group/gfs_controld/main.c.diff?cvsroot=cluster&r1=1.13&r2=1.14
--- cluster/group/gfs_controld/cpg.c 2006/08/09 19:35:26 1.6
+++ cluster/group/gfs_controld/cpg.c 2006/09/08 22:44:33 1.7
@@ -183,7 +183,7 @@
return fd;
}
-static int _send_message(cpg_handle_t h, void *buf, int len)
+static int _send_message(cpg_handle_t h, void *buf, int len, int type)
{
struct iovec iov;
cpg_error_t error;
@@ -195,23 +195,30 @@
retry:
error = cpg_mcast_joined(h, CPG_TYPE_AGREED, &iov, 1);
if (error == CPG_ERR_TRY_AGAIN) {
- log_debug("cpg_mcast_joined error %d", error);
retries++;
- if (retries > 3)
- sleep(1);
+ usleep(1000);
+ if (!(retries % 100))
+ log_error("cpg_mcast_joined retry %d %s",
+ retries, msg_name(type));
goto retry;
}
if (error != CPG_OK) {
- log_error("cpg_mcast_joined error %d handle %llx", error, h);
+ log_error("cpg_mcast_joined error %d handle %llx %s",
+ error, h, msg_name(type));
return -1;
}
+ if (retries)
+ log_debug("cpg_mcast_joined retried %d %s",
+ retries, msg_name(type));
+
return 0;
}
int send_group_message(struct mountgroup *mg, int len, char *buf)
{
struct gdlm_header *hd = (struct gdlm_header *) buf;
+ int type = hd->type;
hd->version[0] = cpu_to_le16(GDLM_VER_MAJOR);
hd->version[1] = cpu_to_le16(GDLM_VER_MINOR);
@@ -221,6 +228,6 @@
hd->to_nodeid = cpu_to_le32(hd->to_nodeid);
memcpy(hd->name, mg->name, strlen(mg->name));
- return _send_message(daemon_handle, buf, len);
+ return _send_message(daemon_handle, buf, len, type);
}
--- cluster/group/gfs_controld/lock_dlm.h 2006/08/31 19:13:02 1.17
+++ cluster/group/gfs_controld/lock_dlm.h 2006/09/08 22:44:33 1.18
@@ -23,6 +23,7 @@
#include <errno.h>
#include <time.h>
#include <syslog.h>
+#include <sched.h>
#include <asm/types.h>
#include <sys/socket.h>
#include <sys/poll.h>
--- cluster/group/gfs_controld/main.c 2006/08/31 19:13:02 1.13
+++ cluster/group/gfs_controld/main.c 2006/09/08 22:44:33 1.14
@@ -594,6 +594,24 @@
}
}
+void set_scheduler(void)
+{
+ struct sched_param sched_param;
+ int rv;
+
+ rv = sched_get_priority_max(SCHED_RR);
+ if (rv != -1) {
+ sched_param.sched_priority = 2;
+ rv = sched_setscheduler(0, SCHED_RR, &sched_param);
+ if (rv == -1)
+ log_error("could not set SCHED_RR priority %d err %d",
+ sched_param.sched_priority, errno);
+ } else {
+ log_error("could not get maximum scheduler priority err %d",
+ errno);
+ }
+}
+
int main(int argc, char **argv)
{
prog_name = argv[0];
@@ -605,6 +623,8 @@
if (!daemon_debug_opt)
daemonize();
+ set_scheduler();
+
return loop();
}
More information about the Cluster-devel
mailing list