]> git.ipfire.org Git - thirdparty/mdadm.git/blobdiff - super0.c
Fix a recently introduced bug, and make --assemble more resilient to it.
[thirdparty/mdadm.git] / super0.c
index 0f993a25ad5b62789000f9c1c938141c580915eb..da6671d26fb1eb4ef65e38deafcce49ed11dce35 100644 (file)
--- a/super0.c
+++ b/super0.c
@@ -350,6 +350,7 @@ static void getinfo_super0(struct mdinfo *info, void *sbv)
        /* 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 ++;
@@ -647,7 +648,6 @@ static int write_init_super0(struct supertype *st, void *sbv, mdu_disk_info_t *d
        }
 
        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);