aboutsummaryrefslogtreecommitdiffstats
path: root/init/do_mounts_md.c
diff options
context:
space:
mode:
authorArjan van de Ven <arjan@linux.intel.com>2008-07-20 13:07:09 -0700
committerArjan van de Ven <arjan@linux.intel.com>2008-10-12 08:23:04 -0700
commit589f800bb12c5cd6c9167bbf9bf3cb70cd8e422c (patch)
tree1bdee44bfd9c036aa03767d5909a1c63bf2f790e /init/do_mounts_md.c
parentfastboot: Fix bootgraph.pl initcall name regexp (diff)
downloadlinux-dev-589f800bb12c5cd6c9167bbf9bf3cb70cd8e422c.tar.xz
linux-dev-589f800bb12c5cd6c9167bbf9bf3cb70cd8e422c.zip
fastboot: make the raid autodetect code wait for all devices to init
The raid autodetect code really needs to have all devices probed before it can detect raid arrays; not doing so would give rather messy situations where arrays would get detected as degraded while they shouldn't be etc. This is in preparation of removing the "wait for everything to init" code that makes everyone pay, not just raid users. Signed-off-by: Arjan van de Ven <arjan@linux.intel.com>
Diffstat (limited to 'init/do_mounts_md.c')
-rw-r--r--init/do_mounts_md.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/init/do_mounts_md.c b/init/do_mounts_md.c
index 693d24694a6c..c0412a9dc003 100644
--- a/init/do_mounts_md.c
+++ b/init/do_mounts_md.c
@@ -267,9 +267,16 @@ __setup("md=", md_setup);
void __init md_run_setup(void)
{
create_dev("/dev/md0", MKDEV(MD_MAJOR, 0));
+
if (raid_noautodetect)
printk(KERN_INFO "md: Skipping autodetection of RAID arrays. (raid=noautodetect)\n");
else {
+ /*
+ * Since we don't want to detect and use half a raid array, we need to
+ * wait for the known devices to complete their probing
+ */
+ while (driver_probe_done() != 0)
+ msleep(100);
int fd = sys_open("/dev/md0", 0, 0);
if (fd >= 0) {
sys_ioctl(fd, RAID_AUTORUN, raid_autopart);