summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Wilck <martin.wilck@ts.fujitsu.com>2015-05-11 16:09:44 +0200
committerNeilBrown <neilb@suse.de>2015-05-13 10:33:35 +1000
commitb87fdf4e891093e4a98f724d4a5f013fcaa94168 (patch)
tree139b07c45d77d27971ff7987ae03e052325f03fe
parent3c899cab4d7ae1ed64689a40ea70153ead2bf4c5 (diff)
downloadmdadm-b87fdf4e891093e4a98f724d4a5f013fcaa94168.tar.gz
DDF: _write_super_to_disk: fix anchor header type
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>
-rw-r--r--super-ddf.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/super-ddf.c b/super-ddf.c
index d0b2ac7..faaf0a7 100644
--- a/super-ddf.c
+++ b/super-ddf.c
@@ -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);