[DRBD-cvs] r1788 - trunk/drbd

www-data www-data at garcon.linbit.com
Tue Apr 26 21:43:56 CEST 2005


Author: phil
Date: 2005-04-26 21:43:54 +0200 (Tue, 26 Apr 2005)
New Revision: 1788

Modified:
   trunk/drbd/drbd_main.c
   trunk/drbd/drbd_receiver.c
Log:
Some testing, found and fixed two bugs:
- I forgot to write/read the flags word of the metadata in the module.
- In the drbd_uuid_compare() function the outmasking of the lowest bit
  was missing in one place.


Modified: trunk/drbd/drbd_main.c
===================================================================
--- trunk/drbd/drbd_main.c	2005-04-23 17:52:45 UTC (rev 1787)
+++ trunk/drbd/drbd_main.c	2005-04-26 19:43:54 UTC (rev 1788)
@@ -2257,12 +2257,12 @@
 	if (mdev->state.s.disk >  Outdated)       flags |= MDF_WasUpToDate;
 	mdev->md_flags = flags;
 
+	buffer->la_size=cpu_to_be64(drbd_get_capacity(mdev->this_bdev));
 	for (i = Current; i < UUID_SIZE; i++)
 		buffer->uuid[i]=cpu_to_be64(mdev->uuid[i]);
-	buffer->la_size=cpu_to_be64(drbd_get_capacity(mdev->this_bdev));
+	buffer->flags = cpu_to_be32(flags);
+	buffer->magic = cpu_to_be32(DRBD_MD_MAGIC);
 
-	buffer->magic=cpu_to_be32(DRBD_MD_MAGIC);
-
 	buffer->md_size = __constant_cpu_to_be32(MD_RESERVED_SIZE);
 	buffer->al_offset = __constant_cpu_to_be32(MD_AL_OFFSET);
 	buffer->al_nr_extents = cpu_to_be32(mdev->act_log->nr_elements);
@@ -2334,9 +2334,10 @@
 		goto err;
 	}
 
+	mdev->la_size = be64_to_cpu(buffer->la_size);
 	for (i = Current; i < UUID_SIZE; i++)
 		mdev->uuid[i]=be64_to_cpu(buffer->uuid[i]);
-	mdev->la_size = be64_to_cpu(buffer->la_size);
+	mdev->md_flags = be32_to_cpu(buffer->flags);
 	mdev->sync_conf.al_extents = be32_to_cpu(buffer->al_nr_extents);
 	if (mdev->sync_conf.al_extents < 7)
 		mdev->sync_conf.al_extents = 127;

Modified: trunk/drbd/drbd_receiver.c
===================================================================
--- trunk/drbd/drbd_receiver.c	2005-04-23 17:52:45 UTC (rev 1787)
+++ trunk/drbd/drbd_receiver.c	2005-04-26 19:43:54 UTC (rev 1788)
@@ -1290,7 +1290,7 @@
 	if (self == peer) return -1;
 
 	for ( i=History_start ; i<=History_end ; i++ ) {
-		peer = mdev->p_uuid[i];
+		peer = mdev->p_uuid[i] & ~((u64)1);
 		if (self == peer) return -2;
 	}
 



More information about the drbd-cvs mailing list