I managed to fix the issue by doing the following with each disk: (I use X here to represent the disk.)
mdadm --manage /dev/md0 --fail /dev/sdX1
mdadm --manage /dev/md0 --remove /dev/sdX1
mdadm --zero-superblock /dev/sdX
mdadm --zero-superblock /dev/sdX1
dd if=/dev/zero of=/dev/sdX bs=1 count=2048
fdisk /dev/sdX (recreated the first partition and mbr on each disk and ensure type set to fd)
mdadm --manage /dev/md0 -a /dev/sdX
(Allow the array to resync to 100% before doing the next disk. Each resync took a few hours.)
Once I had done this for all of the disks in the array I rebooted to the latest kernel 2.6.35-28-generic-pae. On the first boot I still had the same problem so I stopped the array with mdadm --manage --stop /dev/md0 and made the following changes to /etc/mdadm/mdadm.conf
I managed to fix the issue by doing the following with each disk: (I use X here to represent the disk.)
mdadm --manage /dev/md0 --fail /dev/sdX1
mdadm --manage /dev/md0 --remove /dev/sdX1
mdadm --zero-superblock /dev/sdX
mdadm --zero-superblock /dev/sdX1
dd if=/dev/zero of=/dev/sdX bs=1 count=2048
fdisk /dev/sdX (recreated the first partition and mbr on each disk and ensure type set to fd)
mdadm --manage /dev/md0 -a /dev/sdX
(Allow the array to resync to 100% before doing the next disk. Each resync took a few hours.)
Once I had done this for all of the disks in the array I rebooted to the latest kernel 2.6.35- 28-generic- pae. On the first boot I still had the same problem so I stopped the array with mdadm --manage --stop /dev/md0 and made the following changes to /etc/mdadm/ mdadm.conf
DEVICE /dev/sda /dev/sdd1 /dev/sde1 /dev/sdf1 /dev/sdg /dev/sdc1 242ebdf0: 85c68096: 6992ccf3
ARRAY /dev/md0 level=raid5 num-devices=3 UUID=726e3b03:
I then restarted the array with: mdadm.conf /dev/md0
mdadm --assemble -c /etc/mdadm/
Then I updated all of the initramfs modules:
update-initramfs -k all -u
When I rebooted my array came online automatically without errors.