*dp2 = d;
dp2 = & d->next;
}
+ *dp2 = NULL;
return newa;
}
while (update_queue_handled) {
struct metadata_update *this = update_queue_handled;
update_queue_handled = this->next;
- free(this->buf);
+// free(this->buf);
free(this);
}
if (update_queue == NULL &&
memset(new, 0, sizeof(*new));
new->devnum = mdstat->devnum;
+ strcpy(new->info.sys_name, devnum2devname(new->devnum));
new->prev_state = new->curr_state = new->next_state = inactive;
new->prev_action= new->curr_action= new->next_action= idle;
if (di) {
memcpy(newd, di, sizeof(*newd));
- sprintf(newd->sys_name, "rd%d", i);
-
newd->state_fd = sysfs_open(new->devnum,
newd->sys_name,
"state");
newd->curr_state = newd->prev_state;
} else {
newd->state_fd = -1;
+ newd->disk.raid_disk = i;
+ newd->prev_state = DS_REMOVE;
+ newd->curr_state = DS_REMOVE;
}
+ sprintf(newd->sys_name, "rd%d", i);
newd->next = new->info.devs;
new->info.devs = newd;
}