init/mount: print pretty name of root device when panics
authorJianyong Wu <jianyong.wu@arm.com>
Thu, 7 Sep 2023 09:10:25 +0000 (09:10 +0000)
committerChristian Brauner <brauner@kernel.org>
Thu, 19 Oct 2023 09:02:46 +0000 (11:02 +0200)
Given a wrong root device, current log may not give the pretty name
which is useful to locate root cause.

For example, there are 2 blk devs in a VM, /dev/vda which has 2 partitials
/dev/vda1 and /dev/vda2 and /dev/vdb which is blank. /dev/vda2 is the
right root dev. When set "root=/dev/vdb", we get error log:

[    0.635575] Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(254,16)

It's not straightforward to find out the root cause as there is lack of
the root devive name therefore hard for people to get those info from the
device number, in the example, (254,16).

It is more comprehensive way to hint the root cause if pretty name is
given here, like:

[    0.559887] Kernel panic - not syncing: VFS: Unable to mount root fs on "/dev/vdb" or unknown-block(254,16)

Signed-off-by: Jianyong Wu <jianyong.wu@arm.com>
Message-Id: <20230907091025.3436878-1-jianyong.wu@arm.com>
Signed-off-by: Christian Brauner <brauner@kernel.org>
init/do_mounts.c

index 5dfd30b13f48571835c766ec7c9df162feb05fb7..5fdef94f086456471d8846b8b0ce3c5a23e181fb 100644 (file)
@@ -244,7 +244,7 @@ retry:
        for (i = 0, p = fs_names; i < num_fs; i++, p += strlen(p)+1)
                printk(" %s", p);
        printk("\n");
-       panic("VFS: Unable to mount root fs on %s", b);
+       panic("VFS: Unable to mount root fs on \"%s\" or %s", pretty_name, b);
 out:
        put_page(page);
 }