--- mdconfig.c.orig Sat Jan 24 23:42:40 2004 +++ mdconfig.c Sat Jan 24 23:50:54 2004 @@ -16,6 +16,7 @@ #include #include #include +#include #include #include #include @@ -185,7 +186,15 @@ main(int argc, char **argv) mdio.md_version = MDIOVERSION; mdmaybeload(); - fd = open("/dev/" MDCTL_NAME, O_RDWR, 0); + /* + * Give a five secounds for creating /dev/mdctl device. + */ + for (i = 0; i < 5; i++) { + fd = open("/dev/" MDCTL_NAME, O_RDWR, 0); + if (fd >= 0 || (fd < 0 && errno != ENOENT)) + break; + sleep(1); + } if (fd < 0) err(1, "open(/dev/%s)", MDCTL_NAME); if (cmdline == 2 @@ -305,6 +314,8 @@ mdmaybeload(void) } } /* not present, we should try to load it */ - kldload(name); + if (kldload(name) == -1) { + if (errno != EEXIST) + err(1, "kldload(%s)", name); + } } -