]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - init/do_mounts.c
h63xx: tsc2101 alsa sound support
[linux-2.6-omap-h63xx.git] / init / do_mounts.c
index 1b02be734cccf51703efbcdd01d4cf5602311314..d63da86037b76865094b2ac5d05a867ea26d5921 100644 (file)
@@ -26,8 +26,6 @@ static char __initdata saved_root_name[64];
 /* this is initialized in init/main.c */
 dev_t ROOT_DEV;
 
-EXPORT_SYMBOL(ROOT_DEV);
-
 static int __init load_ramdisk(char *str)
 {
        rd_doload = simple_strtol(str,NULL,0) & 3;
@@ -129,10 +127,10 @@ fail:
  *        used when disk name of partitioned disk ends on a digit.
  *
  *     If name doesn't have fall into the categories above, we return 0.
- *     Driverfs is used to check if something is a disk name - it has
+ *     Sysfs is used to check if something is a disk name - it has
  *     all known disks under bus/block/devices.  If the disk name
- *     contains slashes, name of driverfs node has them replaced with
- *     bangs.  try_name() does the actual checks, assuming that driverfs
+ *     contains slashes, name of sysfs node has them replaced with
+ *     bangs.  try_name() does the actual checks, assuming that sysfs
  *     is mounted on rootfs /sys.
  */
 
@@ -288,6 +286,7 @@ void __init mount_block_root(char *name, int flags)
        char *fs_names = __getname();
        char *p;
        char b[BDEVNAME_SIZE];
+       int i = 0;
 
        get_fs_names(fs_names);
 retry:
@@ -302,6 +301,14 @@ retry:
                        case -EINVAL:
                                continue;
                }
+
+               printk("VFS: No root yet, retrying to mount root on %s (%s)\n",
+                      root_device_name, __bdevname(ROOT_DEV, b));
+               current->state = TASK_INTERRUPTIBLE;
+               schedule_timeout(10 * HZ);
+               if (i++ < 5)
+                       goto retry;
+
                /*
                 * Allow the user to distinguish between failed sys_open
                 * and bad superblock on root device.