]> git.ipfire.org Git - thirdparty/mdadm.git/blobdiff - super0.c
Clarify when update=super-minor happens automatcially
[thirdparty/mdadm.git] / super0.c
index 0f993a25ad5b62789000f9c1c938141c580915eb..9e83193bddbadc20ecf0bb59edb24b7233eb8d72 100644 (file)
--- a/super0.c
+++ b/super0.c
@@ -191,6 +191,8 @@ static void examine_super0(void *sbv, char *homehost)
        case 0:
        case 4:
        case 5:
+       case 6:
+       case 10:
                printf("     Chunk Size : %dK\n", sb->chunk_size/1024);
                break;
        case -1:
@@ -230,13 +232,8 @@ static void brief_examine_super0(void *sbv)
        mdp_super_t *sb = sbv;
        char *c=map_num(pers, sb->level);
        char devname[20];
-       struct stat stb;
 
        sprintf(devname, "/dev/md%d", sb->md_minor);
-       if (stat(devname, &stb) != 0) {
-               /* /dev/mdX doesn't exist, so use /dev/md/X */
-               sprintf(devname, "/dev/md/%d", sb->md_minor);
-       }
 
        printf("ARRAY %s level=%s num-devices=%d UUID=",
               devname,
@@ -350,6 +347,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 +645,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);