int rv;
int bitmap_fd;
int have_container = 0;
- int container_fd;
+ int container_fd = -1;
int need_mdmon = 0;
unsigned long long bitmapsize;
struct mdinfo *sra;
struct mdinfo info, *infos;
int did_default = 0;
+ unsigned long safe_mode_delay = 0;
int major_num = BITMAP_MAJOR_HI;
st->ss->getinfo_super(st, &info);
if (did_default && verbose >= 0) {
- if (info.text_version[0] == '/') {
+ if (is_subarray(info.text_version)) {
int dnum = devname2devnum(info.text_version+1);
char *path;
int mdp = get_mdp_major();
st->ss->add_to_super(st, &inf->disk,
fd, dv->devname);
st->ss->getinfo_super(st, inf);
+ safe_mode_delay = inf->safe_mode_delay;
/* getinfo_super might have lost these ... */
inf->disk.major = major(stb.st_rdev);
inf->errors = 0;
rv = 0;
- if (st->ss->external)
- rv = sysfs_add_disk(sra, inf);
- else
- rv = ioctl(mdfd, ADD_NEW_DISK,
- &inf->disk);
+ rv = add_disk(mdfd, st, sra, inf);
if (rv) {
fprintf(stderr,
"readonly");
break;
}
+ sysfs_set_safemode(sra, safe_mode_delay);
} else {
mdu_param_t param;
if (ioctl(mdfd, RUN_ARRAY, ¶m)) {