From: William Park Signed-off-by: Andrew Morton --- 25-akpm/init/do_mounts.c | 12 +++++++++--- 1 files changed, 9 insertions(+), 3 deletions(-) diff -puN init/do_mounts.c~waiting-10s-before-mounting-root-filesystem init/do_mounts.c --- 25/init/do_mounts.c~waiting-10s-before-mounting-root-filesystem 2004-12-31 01:48:21.434817872 -0800 +++ 25-akpm/init/do_mounts.c 2004-12-31 01:48:21.438817264 -0800 @@ -6,6 +6,7 @@ #include #include #include +#include #include #include @@ -278,6 +279,7 @@ void __init mount_block_root(char *name, char *fs_names = __getname(); char *p; char b[BDEVNAME_SIZE]; + int tryagain = 20; get_fs_names(fs_names); retry: @@ -297,9 +299,13 @@ retry: * and bad superblock on root device. */ __bdevname(ROOT_DEV, b); - printk("VFS: Cannot open root device \"%s\" or %s\n", - root_device_name, b); - printk("Please append a correct \"root=\" boot option\n"); + if (--tryagain) { + printk (KERN_WARNING "VFS: Waiting %dsec for root device...\n", tryagain); + ssleep (1); + goto retry; + } + printk (KERN_CRIT "VFS: Cannot open root device \"%s\" or %s\n", root_device_name, b); + printk (KERN_CRIT "Please append a correct \"root=\" boot option\n"); panic("VFS: Unable to mount root fs on %s", b); } _