]> git.ipfire.org Git - thirdparty/mdadm.git/blobdiff - mapfile.c
RebuildMap: handle missing disks
[thirdparty/mdadm.git] / mapfile.c
index 75095ec2ab444014b47b19f1b29d5274e8f1c44d..f27623221ce9e706cec05d29d0140447bcc7e3fa 100644 (file)
--- a/mapfile.c
+++ b/mapfile.c
@@ -294,9 +294,12 @@ void RebuildMap(void)
        int mdp = get_mdp_major();
 
        for (md = mdstat ; md ; md = md->next) {
-               struct mdinfo *sra = sysfs_read(-1, md->devnum, GET_DEVS);
+               struct mdinfo *sra = sysfs_read(-1, md->devnum, GET_DEVS|SKIP_GONE_DEVS);
                struct mdinfo *sd;
 
+               if (!sra)
+                       continue;
+
                for (sd = sra->devs ; sd ; sd = sd->next) {
                        char dn[30];
                        int dfd;
@@ -337,4 +340,5 @@ void RebuildMap(void)
                sysfs_uevent(sra, "change");
                sysfs_free(sra);
        }
+       free_mdstat(mdstat);
 }