X-Git-Url: http://git.ipfire.org/?p=thirdparty%2Fmdadm.git;a=blobdiff_plain;f=Monitor.c;h=101bca4cc8053198a0a09ec0f87be96e5a4687c3;hp=55aebeba7360f4bd245f51089fe06a4e7ee7cd06;hb=9e6d9291275267d3fd4b6d85d7232081f89cd8e2;hpb=f4db7a6f3c3b9a0701f3063b287b7cb59ccecd07 diff --git a/Monitor.c b/Monitor.c index 55aebeba..101bca4c 100644 --- a/Monitor.c +++ b/Monitor.c @@ -449,6 +449,8 @@ static int check_array(struct state *st, struct mdstat_ent *mdstat, char *dev = st->devname; int fd; int i; + int remaining_disks; + int last_disk; if (test) alert("TestMessage", dev, NULL, ainfo); @@ -565,7 +567,8 @@ static int check_array(struct state *st, struct mdstat_ent *mdstat, } st->percent = mse->percent; - for (i=0; i 0; i++) { mdu_disk_info_t disc; disc.number = i; @@ -573,9 +576,12 @@ static int check_array(struct state *st, struct mdstat_ent *mdstat, info[i].state = disc.state; info[i].major = disc.major; info[i].minor = disc.minor; + if (disc.major || disc.minor) + remaining_disks --; } else info[i].major = info[i].minor = 0; } + last_disk = i; if (mse->metadata_version && strncmp(mse->metadata_version, "external:", 9) == 0 && @@ -596,7 +602,7 @@ static int check_array(struct state *st, struct mdstat_ent *mdstat, int change; char *dv = NULL; disc.number = i; - if (i > array.raid_disks + array.nr_disks) { + if (i >= last_disk) { newstate = 0; disc.major = disc.minor = 0; } else if (info[i].major || info[i].minor) {