]> git.ipfire.org Git - thirdparty/mdadm.git/commitdiff
DDF: _write_super_to_disk: fix anchor header type
authorMartin Wilck <martin.wilck@ts.fujitsu.com>
Mon, 11 May 2015 14:09:44 +0000 (16:09 +0200)
committerNeilBrown <neilb@suse.de>
Wed, 13 May 2015 00:33:35 +0000 (10:33 +1000)
Since commit 30bee0201, the anchor is updated from the active
DDF header. This requires fixing the header type before the
anchor is written.

The LSI Software RAID code will reject DDF meta data with wrong
anchor type and will erase all meta data when it encounters
such a broken anchor. Thus starting Linux md once on a system
with LSI RAID BIOS may cause the meta data to get destroyed.

Signed-off-by: NeilBrown <neilb@suse.de>
super-ddf.c

index d0b2ac7163c9443ae5e52b926c4a503aaa2a37c5..faaf0a7ca9e0ba5eed7e8fdd961fcb43d158ee7d 100644 (file)
@@ -3158,6 +3158,7 @@ static int _write_super_to_disk(struct ddf_super *ddf, struct dl *d)
        memcpy(&ddf->primary, &ddf->anchor, 512);
        memcpy(&ddf->secondary, &ddf->anchor, 512);
 
+       ddf->anchor.type = DDF_HEADER_ANCHOR;
        ddf->anchor.openflag = 0xFF; /* 'open' means nothing */
        ddf->anchor.seq = cpu_to_be32(0xFFFFFFFF); /* no sequencing in anchor */
        ddf->anchor.crc = calc_crc(&ddf->anchor, 512);