* sync_action was 'resync' and becomes 'idle' and resync_start becomes
* MaxSector
* Notify metadata that sync is complete.
- * "Deal with Degraded"
*
* recovery completes
* sync_action changes from 'recover' to 'idle'
* Check each device state and mark metadata if 'faulty' or 'in_sync'.
- * "Deal with Degraded"
- *
- * deal with degraded array
- * We only do this when first noticing the array is degraded.
- * This can be when we first see the array, when sync completes or
- * when recovery completes.
- *
- * Check if number of failed devices suggests recovery is needed, and
- * skip if not.
- * Ask metadata for a spare device
- * Add device as not in_sync and give a role
- * Update metadata.
- * Start recovery.
*
* deal with resync
* This only happens on finding a new array... mdadm will have set
static int read_and_act(struct active_array *a)
{
- int check_degraded;
+ int check_degraded = 0;
int deactivate = 0;
struct mdinfo *mdi;
}
if (check_degraded) {
- // FIXME;
+ /* manager will do the actual check */
+ a->check_degraded = 1;
+ signal_manager();
}
a->container->ss->sync_metadata(a->container);
*ap = (*ap)->next;
discard_this = a->replaces;
a->replaces = NULL;
+ /* FIXME check if device->state_fd need to be cleared?*/
signal_manager();
}
if (a->container)