[Cluster-devel] cluster/cmirror-kernel/src dm-cmirror-server.c
jbrassow at sourceware.org
jbrassow at sourceware.org
Wed Jun 21 21:21:02 UTC 2006
CVSROOT: /cvs/cluster
Module name: cluster
Branch: RHEL4U4
Changes by: jbrassow at sourceware.org 2006-06-21 21:20:59
Modified files:
cmirror-kernel/src: dm-cmirror-server.c
Log message:
- fix for bug 195610 (renaming a clustered mirror is broken)
The problem is that LVM2/device-mapper calls the mirror constructor
before calling the destructor. This results in two copies of the
log context to exist in the cluster mirror.
I've added code to detect and handle this, but it should probably
also be fixed in LVM2/device-mapper.
Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/cmirror-kernel/src/dm-cmirror-server.c.diff?cvsroot=cluster&only_with_tag=RHEL4U4&r1=1.1.2.9&r2=1.1.2.9.2.1
--- cluster/cmirror-kernel/src/Attic/dm-cmirror-server.c 2006/06/14 22:14:55 1.1.2.9
+++ cluster/cmirror-kernel/src/Attic/dm-cmirror-server.c 2006/06/21 21:20:59 1.1.2.9.2.1
@@ -298,7 +298,6 @@
DMINFO("Disk Resume::");
debug_disk_write = 1;
-
memset(live_nodes, 0, sizeof(live_nodes));
for(i = 0; i < global_count; i++){
live_nodes[global_nodeids[i]/8] |= 1 << (global_nodeids[i]%8);
@@ -612,15 +611,19 @@
static struct log_c *get_log_context(char *uuid){
- struct log_c *lc;
+ struct log_c *lc, *r = NULL;
list_for_each_entry(lc, &log_list_head, log_list){
if(!strncmp(lc->uuid, uuid, MAX_NAME_LEN)){
- return lc;
+ if (r)
+ DMERR("HEY!!! There are two matches for %s",
+ lc->uuid + (strlen(lc->uuid) - 8));
+ else
+ r = lc;
}
}
- return NULL;
+ return r;
}
More information about the Cluster-devel
mailing list