aboutsummaryrefslogtreecommitdiffstats
path: root/init/do_mounts_md.c
diff options
context:
space:
mode:
authorArjan van de Ven <arjan@linux.intel.com>2008-07-20 16:07:09 -0400
committerArjan van de Ven <arjan@linux.intel.com>2008-10-12 11:23:04 -0400
commit589f800bb12c5cd6c9167bbf9bf3cb70cd8e422c (patch)
tree1bdee44bfd9c036aa03767d5909a1c63bf2f790e /init/do_mounts_md.c
parent8bd9890e94627bc1ef372085e64dda7f9e307e82 (diff)
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);
267void __init md_run_setup(void) 267void __init md_run_setup(void)
268{ 268{
269 create_dev("/dev/md0", MKDEV(MD_MAJOR, 0)); 269 create_dev("/dev/md0", MKDEV(MD_MAJOR, 0));
270
270 if (raid_noautodetect) 271 if (raid_noautodetect)
271 printk(KERN_INFO "md: Skipping autodetection of RAID arrays. (raid=noautodetect)\n"); 272 printk(KERN_INFO "md: Skipping autodetection of RAID arrays. (raid=noautodetect)\n");
272 else { 273 else {
274 /*
275 * Since we don't want to detect and use half a raid array, we need to
276 * wait for the known devices to complete their probing
277 */
278 while (driver_probe_done() != 0)
279 msleep(100);
273 int fd = sys_open("/dev/md0", 0, 0); 280 int fd = sys_open("/dev/md0", 0, 0);
274 if (fd >= 0) { 281 if (fd >= 0) {
275 sys_ioctl(fd, RAID_AUTORUN, raid_autopart); 282 sys_ioctl(fd, RAID_AUTORUN, raid_autopart);