diff options
author | Dave Gilbert <linux@treblig.org> | 2007-05-09 05:33:24 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-05-09 15:30:48 -0400 |
commit | dd2a345f8f002845636dbf5d2d768bb5cd8a5f59 (patch) | |
tree | 9ddbe34d18cf97496f4d3d582ed127fee0d96a01 /init/do_mounts.c | |
parent | 0e7d18b57c39bedcbd181e3c06d13572b33e5380 (diff) |
Display all possible partitions when the root filesystem failed to mount
Display all possible partitions when the root filesystem is not mounted.
This helps to track spell'o's and missing drivers.
Updated to work with newer kernels.
Example output:
VFS: Cannot open root device "foobar" or unknown-block(0,0)
Please append a correct "root=" boot option; here are the available partitions:
0800 8388608 sda driver: sd
0801 192748 sda1
0802 8193150 sda2
0810 4194304 sdb driver: sd
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)
[akpm@linux-foundation.org: cleanups, fix printk warnings]
Signed-off-by: Jan Engelhardt <jengelh@gmx.de>
Cc: Dave Gilbert <linux@treblig.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'init/do_mounts.c')
-rw-r--r-- | init/do_mounts.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/init/do_mounts.c b/init/do_mounts.c index 3f57ed4599d6..46fe407fb03e 100644 --- a/init/do_mounts.c +++ b/init/do_mounts.c | |||
@@ -7,6 +7,7 @@ | |||
7 | #include <linux/root_dev.h> | 7 | #include <linux/root_dev.h> |
8 | #include <linux/security.h> | 8 | #include <linux/security.h> |
9 | #include <linux/delay.h> | 9 | #include <linux/delay.h> |
10 | #include <linux/genhd.h> | ||
10 | #include <linux/mount.h> | 11 | #include <linux/mount.h> |
11 | #include <linux/device.h> | 12 | #include <linux/device.h> |
12 | #include <linux/init.h> | 13 | #include <linux/init.h> |
@@ -308,17 +309,21 @@ retry: | |||
308 | /* | 309 | /* |
309 | * Allow the user to distinguish between failed sys_open | 310 | * Allow the user to distinguish between failed sys_open |
310 | * and bad superblock on root device. | 311 | * and bad superblock on root device. |
312 | * and give them a list of the available devices | ||
311 | */ | 313 | */ |
312 | #ifdef CONFIG_BLOCK | 314 | #ifdef CONFIG_BLOCK |
313 | __bdevname(ROOT_DEV, b); | 315 | __bdevname(ROOT_DEV, b); |
314 | #endif | 316 | #endif |
315 | printk("VFS: Cannot open root device \"%s\" or %s\n", | 317 | printk("VFS: Cannot open root device \"%s\" or %s\n", |
316 | root_device_name, b); | 318 | root_device_name, b); |
317 | printk("Please append a correct \"root=\" boot option\n"); | 319 | printk("Please append a correct \"root=\" boot option; here are the available partitions:\n"); |
318 | 320 | ||
321 | printk_all_partitions(); | ||
319 | panic("VFS: Unable to mount root fs on %s", b); | 322 | panic("VFS: Unable to mount root fs on %s", b); |
320 | } | 323 | } |
321 | 324 | ||
325 | printk("List of all partitions:\n"); | ||
326 | printk_all_partitions(); | ||
322 | printk("No filesystem could mount root, tried: "); | 327 | printk("No filesystem could mount root, tried: "); |
323 | for (p = fs_names; *p; p += strlen(p)+1) | 328 | for (p = fs_names; *p; p += strlen(p)+1) |
324 | printk(" %s", p); | 329 | printk(" %s", p); |