- if (!st->ss->init_super(st, &super, &array, size, name, homehost, uuid))
- return 1;
+ if (!st->ss->init_super(st, &info.array, size, name, homehost, uuid))
+ goto abort;
+
+ total_slots = info.array.nr_disks;
+ sysfs_init(&info, mdfd, 0);
+ st->ss->getinfo_super(st, &info);
+
+ if (did_default && verbose >= 0) {
+ if (is_subarray(info.text_version)) {
+ int dnum = devname2devnum(info.text_version+1);
+ char *path;
+ int mdp = get_mdp_major();
+ struct mdinfo *mdi;
+ if (dnum > 0)
+ path = map_dev(MD_MAJOR, dnum, 1);
+ else
+ path = map_dev(mdp, (-1-dnum)<< 6, 1);
+
+ mdi = sysfs_read(-1, dnum, GET_VERSION);
+
+ fprintf(stderr, Name ": Creating array inside "
+ "%s container %s\n",
+ mdi?mdi->text_version:"managed", path);
+ sysfs_free(mdi);
+ } else
+ fprintf(stderr, Name ": Defaulting to version"
+ " %s metadata\n", info.text_version);
+ }
+
+ map_update(&map, fd2devnum(mdfd), info.text_version,
+ info.uuid, chosen_name);
+ map_unlock(&map);