diff options
author | Neil Brown <neilb@suse.de> | 2008-06-12 10:13:32 +1000 |
---|---|---|
committer | Neil Brown <neilb@suse.de> | 2008-06-12 10:13:32 +1000 |
commit | 7e1432fb14bb7d362821b8c62dd282e67c536efe (patch) | |
tree | 3703df447fe50a1e1f255dec81925724e1830f67 /managemon.c | |
parent | 6c3fb95c44ffc36df4048db86231521146417223 (diff) | |
download | mdadm-7e1432fb14bb7d362821b8c62dd282e67c536efe.tar.gz mdadm-7e1432fb14bb7d362821b8c62dd282e67c536efe.tar.xz mdadm-7e1432fb14bb7d362821b8c62dd282e67c536efe.zip |
Add DDF code for activate_spare
Plus various bug fixes etc.
Diffstat (limited to 'managemon.c')
-rw-r--r-- | managemon.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/managemon.c b/managemon.c index 7a96f36..43db566 100644 --- a/managemon.c +++ b/managemon.c @@ -137,6 +137,7 @@ static struct active_array *duplicate_aa(struct active_array *aa) *dp2 = d; dp2 = & d->next; } + *dp2 = NULL; return newa; } @@ -197,7 +198,7 @@ void check_update_queue(struct supertype *container) 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 && @@ -326,6 +327,7 @@ static void manage_new(struct mdstat_ent *mdstat, 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; @@ -358,8 +360,6 @@ static void manage_new(struct mdstat_ent *mdstat, 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"); @@ -368,7 +368,11 @@ static void manage_new(struct mdstat_ent *mdstat, 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; } |