]> git.ipfire.org Git - thirdparty/mdadm.git/commitdiff
managemon: Don't do spare assignment while any updates are pending.
authorNeilBrown <neilb@suse.de>
Tue, 15 Mar 2011 03:51:12 +0000 (14:51 +1100)
committerNeilBrown <neilb@suse.de>
Tue, 15 Mar 2011 03:51:12 +0000 (14:51 +1100)
Spare assignment requires full knowledge of array state.  A pending
update might modify that state (such as a pending spare assignment)
so don't try while there are updates pending.

Signed-off-by: NeilBrown <neilb@suse.de>
managemon.c

index 3cf2389a3ad523bfc9db1d25cafbff19eef901f8..26ff18774c6a133976df6775574011a77e806804 100644 (file)
@@ -398,7 +398,12 @@ static void manage_member(struct mdstat_ent *mdstat,
        a->info.array.raid_disks = mdstat->raid_disks;
        // MORE
 
-       if (a->check_degraded) {
+       /* We don't check the array while any update is pending, as it
+        * might container a change (such as a spare assignment) which 
+        * could affect our decisions.
+        */
+       if (a->check_degraded &&
+           update_queue == NULL && update_queue_pending == NULL) {
                struct metadata_update *updates = NULL;
                struct mdinfo *newdev = NULL;
                struct active_array *newa;