[Cluster-devel] cluster/fence/fenced agent.c fd.h recover.c
rohara at sourceware.org
rohara at sourceware.org
Mon Jul 10 17:02:44 UTC 2006
CVSROOT: /cvs/cluster
Module name: cluster
Changes by: rohara at sourceware.org 2006-07-10 17:02:43
Modified files:
fence/fenced : agent.c fd.h recover.c
Log message:
Added "self" parameter as a way to pass our_name to the agent.
This is needed for SCSI persistent reservation (fence_scsi).
Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/fence/fenced/agent.c.diff?cvsroot=cluster&r1=1.14&r2=1.15
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/fence/fenced/fd.h.diff?cvsroot=cluster&r1=1.21&r2=1.22
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/fence/fenced/recover.c.diff?cvsroot=cluster&r1=1.23&r2=1.24
--- cluster/fence/fenced/agent.c 2006/05/09 19:47:40 1.14
+++ cluster/fence/fenced/agent.c 2006/07/10 17:02:43 1.15
@@ -129,8 +129,9 @@
return -1;
}
-static int make_args(int cd, char *victim, char *method, int d, char *device,
- char **args_out) {
+static int make_args(int cd, char *victim, char *self, char *method, int d,
+ char *device, char **args_out)
+{
char path[256], *args, *str;
int error;
@@ -179,6 +180,13 @@
free(str);
}
+ if (self != NULL) {
+ memset(path, 0, 256);
+ sprintf(path, "self=%s", self);
+ strcat(args, path);
+ strcat(args, "\n");
+ }
+
if (error) {
free(args);
args = NULL;
@@ -252,7 +260,8 @@
return i;
}
-static int use_device(int cd, char *victim, char *method, int d, char *device)
+static int use_device(int cd, char *victim, char *self,char *method, int d,
+ char *device)
{
char path[256], *agent, *args = NULL;
int error;
@@ -264,7 +273,7 @@
if (error)
goto out;
- error = make_args(cd, victim, method, d, device, &args);
+ error = make_args(cd, victim, self, method, d, device, &args);
if (error)
goto out_agent;
@@ -300,7 +309,7 @@
cman_finish(ch);
}
-int dispatch_fence_agent(int cd, char *victim)
+int dispatch_fence_agent(int cd, char *victim, char *self)
{
char *method = NULL, *device = NULL;
int num_methods, num_devices, m, d, error = -1;
@@ -323,7 +332,7 @@
if (error)
break;
- error = use_device(cd, victim, method, d, device);
+ error = use_device(cd, victim, self, method, d, device);
if (error)
break;
--- cluster/fence/fenced/fd.h 2006/06/20 18:11:58 1.21
+++ cluster/fence/fenced/fd.h 2006/07/10 17:02:43 1.22
@@ -173,7 +173,7 @@
void do_recovery_done(fd_t *fd);
/* agent.c */
-int dispatch_fence_agent(int cd, char *victim);
+int dispatch_fence_agent(int cd, char *victim, char *self);
/* group.c */
int setup_groupd(void);
--- cluster/fence/fenced/recover.c 2006/06/20 18:11:58 1.23
+++ cluster/fence/fenced/recover.c 2006/07/10 17:02:43 1.24
@@ -16,6 +16,7 @@
extern int our_nodeid;
extern commandline_t comline;
+extern char *our_name;
/* Fencing recovery algorithm
@@ -309,7 +310,7 @@
log_debug("fencing node %s", node->name);
syslog(LOG_INFO, "fencing node \"%s\"", node->name);
- error = dispatch_fence_agent(cd, node->name);
+ error = dispatch_fence_agent(cd, node->name, our_name);
syslog(LOG_INFO, "fence \"%s\" %s", node->name,
error ? "failed" : "success");
More information about the Cluster-devel
mailing list