[dm-devel] dmraid/lib/format/ddf ddf1.c ddf1_dump.c

heinzm at sourceware.org heinzm at sourceware.org
Wed Aug 24 14:28:47 UTC 2011


CVSROOT:	/cvs/dm
Module name:	dmraid
Changes by:	heinzm at sourceware.org	2011-08-24 14:28:47

Modified files:
	lib/format/ddf : ddf1.c ddf1_dump.c 

Log message:
	dmraid cannot erase ddf metadata.
	It tries to seek to an offset too big by a factor of 512, and then writes
	zero bytes to the anchor.
	
	ddf1-

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/dmraid/lib/format/ddf/ddf1.c.diff?cvsroot=dm&r1=1.8&r2=1.9
http://sourceware.org/cgi-bin/cvsweb.cgi/dmraid/lib/format/ddf/ddf1_dump.c.diff?cvsroot=dm&r1=1.3&r2=1.4

--- dmraid/lib/format/ddf/ddf1.c	2010/03/18 16:53:17	1.8
+++ dmraid/lib/format/ddf/ddf1.c	2011/08/24 14:28:46	1.9
@@ -526,7 +526,8 @@
 		       ddf1_sboffset) || !is_ddf1(lc, di, ddf1))
 		goto bad;
 
-	ddf1->anchor_offset = ddf1_sboffset;
+	/* ddf1_sboffset is in bytes. */
+	ddf1->anchor_offset = ddf1_sboffset >> 9;
 
 	/* Convert endianness */
 	ddf1->in_cpu_format = 0;
@@ -962,6 +963,7 @@
 		ma[i].offset = ddf1->primary->primary_table_lba;
 
 	ma->offset = ddf1->anchor_offset;
+	ma->size = DDF1_BLKSIZE;
 	(ma++)->area = &ddf1->anchor;
 
 	(ma++)->area = ddf1->primary;
--- dmraid/lib/format/ddf/ddf1_dump.c	2010/07/13 20:22:38	1.3
+++ dmraid/lib/format/ddf/ddf1_dump.c	2011/08/24 14:28:46	1.4
@@ -60,7 +60,7 @@
 {
 	log_print(lc, "%s (%s):", di->path, handler);
 	log_print(lc, "DDF1 anchor at %llu with tables in %s-endian format.",
-		  ddf1->anchor_offset / DDF1_BLKSIZE,
+		  ddf1->anchor_offset,
 		  (ddf1->disk_format == LITTLE_ENDIAN ? "little" : "big"));
 }
 




More information about the dm-devel mailing list