*/
char buf[64];
int frozen;
+ struct supertype *container = a->container;
+
+ if (container == NULL)
+ /* Raced with something */
+ return;
// FIXME
a->info.array.raid_disks = mdstat->raid_disks;
struct active_array *newa = duplicate_aa(a);
if (newa) {
newa->info.array.level = level;
- replace_array(a->container, a, newa);
+ replace_array(container, a, newa);
a = newa;
}
}
/* The array may not be degraded, this is just a good time
* to check.
*/
- newdev = a->container->ss->activate_spare(a, &updates);
+ newdev = container->ss->activate_spare(a, &updates);
if (!newdev)
return;
}
queue_metadata_update(updates);
updates = NULL;
- replace_array(a->container, a, newa);
+ replace_array(container, a, newa);
sysfs_set_str(&a->info, NULL, "sync_action", "recover");
out:
while (newdev) {
out2:
sysfs_free(info);
if (newa)
- replace_array(a->container, a, newa);
+ replace_array(container, a, newa);
}
}