Without calling load_container at this point, the
info structure may be missing some important information.
In particular, information about secondary DDF RAID levels
may be wrong if information is only read from a single disk.
If this fails, fall back to the previous code.
Signed-off-by: Martin Wilck <mwilck@arcor.de>
Signed-off-by: NeilBrown <neilb@suse.de>
* We want the name of the container, and the member
*/
int devid = devnm2devid(st->container_devnm);
+ int cfd, err;
member = subarray;
container = map_dev_preferred(major(devid), minor(devid),
1, c->prefer);
+ cfd = open_dev(st->container_devnm);
+ if (cfd >= 0) {
+ err = st->ss->load_container(st, cfd, NULL);
+ close(cfd);
+ if (err == 0)
+ info = st->ss->container_content(st, subarray);
+ }
}
/* try to load a superblock */
- if (st) for (d = 0; d < max_disks; d++) {
+ if (st && !info) for (d = 0; d < max_disks; d++) {
mdu_disk_info_t disk;
char *dv;
int fd2;