On 07/07/2016 11:13 AM, Xiao Ni wrote: > Hi all > > We encountered one problem at booting time: > > Run MD devices: mdadm: array /dev/md/OSVOLUME0 now has 2 devices (0 new) [FAILED] > > mdadm -IRs returns 1 at the booting time. In fact the array is already running. The > command mdadm -IRs shouldn't return 1 if all the arrays are running, right? > > In IncrementalScan function, it scans all the raid in /run/mdadm/map. It contains the > subarray too. The return value is 1 from function load_container. So the return value > of IncrementalScan rv is set to 1. If all arrays are running already, I think mdadm -IRs > should return 0, not 1. > > Should we checks earlier whether it's a container or not before calling load_container? > > Best Regards > Xiao > Hi Xiao, I think you're right that mdadm -IRs should return 0 in this case. IncrementalScan should not try loading a container from a member array, because that will always fail. Can you check if this fixes the problem for you? diff --git a/Incremental.c b/Incremental.c index ba97b00..cc01d41 100644 --- a/Incremental.c +++ b/Incremental.c @@ -1347,8 +1347,12 @@ restart: if (devnm && strcmp(devnm, me->devnm) != 0) continue; - if (devnm && me->metadata[0] == '/') { + if (me->metadata[0] == '/') { char *sl; + + if (!devnm) + continue; + /* member array, need to work on container */ strncpy(container, me->metadata+1, 32); container[31] = 0; Thanks, Artur -- To unsubscribe from this list: send the line "unsubscribe linux-raid" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html