[DRBD-cvs] svn commit by phil - r2196 - trunk/user - Fixed a few minor issues with v07 meta-data.

drbd-cvs at lists.linbit.com drbd-cvs at lists.linbit.com
Tue May 2 17:52:14 CEST 2006


Author: phil
Date: 2006-05-02 17:52:11 +0200 (Tue, 02 May 2006)
New Revision: 2196

Modified:
   trunk/user/drbdmeta.c
Log:
Fixed a few minor issues with v07 meta-data.


Modified: trunk/user/drbdmeta.c
===================================================================
--- trunk/user/drbdmeta.c	2006-05-02 07:45:41 UTC (rev 2195)
+++ trunk/user/drbdmeta.c	2006-05-02 15:52:11 UTC (rev 2196)
@@ -421,6 +421,7 @@
 	cpu->al_offset = be32_to_cpu(disk->al_offset.be);
 	cpu->al_nr_extents = be32_to_cpu(disk->al_nr_extents.be);
 	cpu->bm_offset = be32_to_cpu(disk->bm_offset.be);
+	cpu->bm_bytes_per_bit = 4096;
 }
 
 void md_cpu_to_disk_07(struct md_on_disk_07 *disk, struct md_cpu *cpu)
@@ -904,7 +905,9 @@
 	cfg->bm_offset = cfg->md_offset + cfg->md.bm_offset * 512;
 
 	// For the case that someone modified la_sect by hand..
-	if(cfg->md.la_sect*512 > cfg->md_offset) {
+	if( (cfg->md_index == DRBD_MD_INDEX_INTERNAL ||
+	     cfg->md_index == DRBD_MD_INDEX_FLEX_INT ) &&
+	    (cfg->md.la_sect*512 > cfg->md_offset) ) {
 		printf("la-size-sect was too big, fixed.\n");
 		cfg->md.la_sect = cfg->md_offset/512;
 	}
@@ -1701,8 +1704,12 @@
 
 	if (format_version(cfg) >= Drbd_07) {
 		printf("la-size-sect "U64";\n", cfg->md.la_sect);
-		printf("bm-byte-per-bit "U32";\n",cfg->md.bm_bytes_per_bit);
-		printf("device-uuid 0x"X64(016)";\n",cfg->md.device_uuid);
+		if (format_version(cfg) >= Drbd_08) {
+			printf("bm-byte-per-bit "U32";\n",
+			       cfg->md.bm_bytes_per_bit);
+			printf("device-uuid 0x"X64(016)";\n",
+			       cfg->md.device_uuid);
+		}
 		printf("# bm-bytes %u;\n", cfg->bm_bytes);
 		printf("# bits-set %u;\n", cfg->bits_set);
 		if (cfg->on_disk.bm)
@@ -1770,10 +1777,14 @@
 	}
 	EXP(TK_LA_SIZE); EXP(TK_NUM); EXP(';');
 	cfg->md.la_sect = yylval.u64;
-	EXP(TK_BM_BYTE_PER_BIT); EXP(TK_NUM); EXP(';');
-	cfg->md.bm_bytes_per_bit = yylval.u64;
-	EXP(TK_DEVICE_UUID); EXP(TK_U64); EXP(';');
-	cfg->md.device_uuid = yylval.u64;
+	if (format_version(cfg) >= Drbd_08) {
+		EXP(TK_BM_BYTE_PER_BIT); EXP(TK_NUM); EXP(';');
+		cfg->md.bm_bytes_per_bit = yylval.u64;
+		EXP(TK_DEVICE_UUID); EXP(TK_U64); EXP(';');
+		cfg->md.device_uuid = yylval.u64;
+	} else {
+		cfg->md.bm_bytes_per_bit = 4096;
+	}
 	EXP(TK_BM); EXP('{');
 	bm = (le_u64 *)cfg->on_disk.bm;
 	i = 0;



More information about the drbd-cvs mailing list