diff options
-rw-r--r-- | managemon.c | 11 | ||||
-rw-r--r-- | monitor.c | 2 |
2 files changed, 10 insertions, 3 deletions
diff --git a/managemon.c b/managemon.c index a2816ce..67c5951 100644 --- a/managemon.c +++ b/managemon.c @@ -460,7 +460,11 @@ static void manage_member(struct mdstat_ent *mdstat, if (mdstat->level) { int level = map_name(pers, mdstat->level); - if (a->info.array.level != level && level >= 0) { + if (level == 0 || level == LEVEL_LINEAR) { + a->container = NULL; + return; + } + else if (a->info.array.level != level && level > 0) { struct active_array *newa = duplicate_aa(a); if (newa) { newa->info.array.level = level; @@ -608,7 +612,10 @@ static void manage_new(struct mdstat_ent *mdstat, char buf[40]; /* check if array is ready to be monitored */ - if (!mdstat->active) + if (!mdstat->active || !mdstat->level) + return; + if (strcmp(mdstat->level, "raid0") == 0 || + strcmp(mdstat->level, "linear") == 0) return; mdi = sysfs_read(-1, mdstat->devnum, @@ -535,7 +535,7 @@ static int wait_and_act(struct supertype *container, int nowait) /* once an array has been deactivated we want to * ask the manager to discard it. */ - if (!a->container || (a->info.array.level == 0)) { + if (!a->container) { if (discard_this) { ap = &(*ap)->next; continue; |