]> git.ipfire.org Git - thirdparty/mdadm.git/commitdiff
imsm: FIX: Finish rebuild and initialization when missing drive is handled
authorAdam Kwolek <adam.kwolek@intel.com>
Wed, 7 Dec 2011 12:58:30 +0000 (13:58 +0100)
committerNeilBrown <neilb@suse.de>
Thu, 8 Dec 2011 03:08:21 +0000 (14:08 +1100)
When missing device is handled for rebuild or initialization
end_migration() should be called to merge ords in case additional
degradation.

I've removed this call to end_migration() as it was called
for migration also.

Signed-off-by: Adam Kwolek <adam.kwolek@intel.com>
Signed-off-by: NeilBrown <neilb@suse.de>
super-intel.c

index de07f6602f9f1bcbbf80215efa43f45a4f88c09d..9689fdd48cf7e2c6ccc6cc2a25068554cc4a8eb8 100644 (file)
@@ -6192,6 +6192,17 @@ static void handle_missing(struct intel_super *super, struct imsm_dev *dev)
                return;
 
        dprintf("imsm: mark missing\n");
+       /* end process for initialization and rebuild only
+        */
+       if (is_gen_migration(dev) == 0) {
+               __u8 map_state;
+               int failed;
+
+               failed = imsm_count_failed(super, dev, MAP_0);
+               map_state = imsm_check_degraded(super, dev, failed, MAP_0);
+
+               end_migration(dev, super, map_state);
+       }
        for (dl = super->missing; dl; dl = dl->next)
                mark_missing(dev, &dl->disk, dl->index);
        super->updates_pending++;