Make -assemble a bit more resilient to finding strange
information in superblocks.
Don't claim newly added spares are InSync!! (don't know why that
code was ever in there)
if (nextspare < info.array.raid_disks)
nextspare = info.array.raid_disks;
i = nextspare++;
+ } else {
+ if (i >= info.array.raid_disks &&
+ i >= nextspare)
+ nextspare = i+1;
}
if (i < 10000) {
if (i >= bestcnt) {
to make it a bit easier to see what is happening.
- Work around bug in --add handling for version-1 superblocks
in 2.6.17 (and prior).
+ - Make -assemble a bit more resilient to finding strange
+ information in superblocks.
+ - Don't claim newly added spares are InSync!! (don't know why that
+ code was ever in there)
Changes Prior to 2.5.1 release
- Various fixes for gcc warnings
/* work_disks is calculated rather than read directly */
for (i=0; i < MD_SB_DISKS; i++)
if ((sb->disks[i].state & (1<<MD_DISK_SYNC)) &&
+ (sb->disks[i].raid_disk < info->array.raid_disks) &&
(sb->disks[i].state & (1<<MD_DISK_ACTIVE)) &&
!(sb->disks[i].state & (1<<MD_DISK_FAULTY)))
working ++;
}
sb->disks[dinfo->number].state &= ~(1<<MD_DISK_FAULTY);
- sb->disks[dinfo->number].state |= (1<<MD_DISK_SYNC);
sb->this_disk = sb->disks[dinfo->number];
sb->sb_csum = calc_sb0_csum(sb);