Neil,
I don't know if you've seen this one yet, but it looks like there's a small bug in super_1_sync. Patch attached.
-- Paul
--- linux-2.6.11-rc3-mm2-patch-all-write-mostly/drivers/md/md.c Mon Feb 21 12:23:32 2005 +++ linux-2.6.11-rc3-mm2-patch-all-write-mostly-max-dev-bug/drivers/md/md.c Mon Feb 21 14:22:21 2005 @@ -1018,7 +1018,7 @@ static void super_1_sync(mddev_t *mddev, sb->max_dev = cpu_to_le32(max_dev); for (i=0; i<max_dev;i++) - sb->dev_roles[max_dev] = cpu_to_le16(0xfffe); + sb->dev_roles[i] = cpu_to_le16(0xfffe); ITERATE_RDEV(mddev,rdev2,tmp) { i = rdev2->desc_nr;