* [PATCH] init: Add bdev fs printk if mount_block_root failed @ 2023-05-18 3:53 Angus Chen 2023-05-18 20:02 ` Andrew Morton 0 siblings, 1 reply; 6+ messages in thread From: Angus Chen @ 2023-05-18 3:53 UTC (permalink / raw) To: akpm, masahiroy, vbabka, peterz, ndesaulniers, paulmck, rppt Cc: linux-kernel, Angus Chen Attempt to printk all bdev fstype as root gives the following kernel panic: [ 1.729006] VFS: Cannot open root device "vda" or unknown-block(253,0): error -19 [ 1.730603] Please append a correct "root=" boot option; here are the available partitions: [ 1.732323] fd00 256000 vda [ 1.732329] driver: virtio_blk [ 1.734194] Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(253,0) [ 1.734771] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 6.4.0-rc2+ #53 [ 1.735194] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.10.2-1ubuntu1 04/01/2014 [ 1.735772] Call Trace: [ 1.735950] <TASK> [ 1.736113] dump_stack_lvl+0x32/0x50 [ 1.736367] panic+0x108/0x310 [ 1.736570] mount_block_root+0x161/0x310 [ 1.736849] ? rdinit_setup+0x40/0x40 [ 1.737088] prepare_namespace+0x10c/0x180 [ 1.737393] kernel_init_freeable+0x354/0x450 [ 1.737707] ? rest_init+0xd0/0xd0 [ 1.737945] kernel_init+0x16/0x130 [ 1.738196] ret_from_fork+0x1f/0x30 QEMU command line: "qemu-system-x86_64 -append root=/dev/vda rootfstype=ext4 ..." This error is because ext4 is not buildin and request ext4 module fail. As a hint, printk all the bdev fstype available for prompts. Signed-off-by: Angus Chen <angus.chen@jaguarmicro.com> --- init/do_mounts.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/init/do_mounts.c b/init/do_mounts.c index 811e94daf0a8..7fa48590c681 100644 --- a/init/do_mounts.c +++ b/init/do_mounts.c @@ -427,8 +427,19 @@ void __init mount_block_root(char *name, int flags) printk("VFS: Cannot open root device \"%s\" or %s: error %d\n", root_device_name, b, err); printk("Please append a correct \"root=\" boot option; here are the available partitions:\n"); - printk_all_partitions(); + + if (root_fs_names) + num_fs = list_bdev_fs_names(fs_names, PAGE_SIZE); + if (!num_fs) + pr_err("Can't find any bdev filesystem to be used for mount!\n"); + else { + pr_err("List of all bdev filesystem:\n"); + for (i = 0, p = fs_names; i < num_fs; i++, p += strlen(p)+1) + pr_err(" %s", p); + pr_err("\n"); + } + panic("VFS: Unable to mount root fs on %s", b); } if (!(flags & SB_RDONLY)) { -- 2.25.1 ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] init: Add bdev fs printk if mount_block_root failed 2023-05-18 3:53 [PATCH] init: Add bdev fs printk if mount_block_root failed Angus Chen @ 2023-05-18 20:02 ` Andrew Morton 2023-05-18 20:35 ` Nick Desaulniers 2023-05-19 6:23 ` Angus Chen 0 siblings, 2 replies; 6+ messages in thread From: Andrew Morton @ 2023-05-18 20:02 UTC (permalink / raw) To: Angus Chen Cc: masahiroy, vbabka, peterz, ndesaulniers, paulmck, rppt, linux-kernel, Al Viro On Thu, 18 May 2023 11:53:21 +0800 Angus Chen <angus.chen@jaguarmicro.com> wrote: > Attempt to printk all bdev fstype as root gives the following kernel panic: > > [ 1.729006] VFS: Cannot open root device "vda" or unknown-block(253,0): error -19 > [ 1.730603] Please append a correct "root=" boot option; here are the available partitions: > [ 1.732323] fd00 256000 vda > [ 1.732329] driver: virtio_blk > [ 1.734194] Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(253,0) > [ 1.734771] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 6.4.0-rc2+ #53 > [ 1.735194] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.10.2-1ubuntu1 04/01/2014 > [ 1.735772] Call Trace: > [ 1.735950] <TASK> > [ 1.736113] dump_stack_lvl+0x32/0x50 > [ 1.736367] panic+0x108/0x310 > [ 1.736570] mount_block_root+0x161/0x310 > [ 1.736849] ? rdinit_setup+0x40/0x40 > [ 1.737088] prepare_namespace+0x10c/0x180 > [ 1.737393] kernel_init_freeable+0x354/0x450 > [ 1.737707] ? rest_init+0xd0/0xd0 > [ 1.737945] kernel_init+0x16/0x130 > [ 1.738196] ret_from_fork+0x1f/0x30 > > QEMU command line: > "qemu-system-x86_64 -append root=/dev/vda rootfstype=ext4 ..." > > This error is because ext4 is not buildin and request ext4 module fail. > > As a hint, printk all the bdev fstype available for prompts. > Seems reasonable. I reworded the changelog a bit: : Booting with the QEMU command line: : "qemu-system-x86_64 -append root=/dev/vda rootfstype=ext4 ..." : will panic if ext4 is not builtin and a request to load the ext4 module : fails. : : [ 1.729006] VFS: Cannot open root device "vda" or unknown-block(253,0): error -19 : [ 1.730603] Please append a correct "root=" boot option; here are the available partitions: : [ 1.732323] fd00 256000 vda : [ 1.732329] driver: virtio_blk : [ 1.734194] Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(253,0) : [ 1.734771] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 6.4.0-rc2+ #53 : [ 1.735194] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.10.2-1ubuntu1 04/01/2014 : [ 1.735772] Call Trace: : [ 1.735950] <TASK> : [ 1.736113] dump_stack_lvl+0x32/0x50 : [ 1.736367] panic+0x108/0x310 : [ 1.736570] mount_block_root+0x161/0x310 : [ 1.736849] ? rdinit_setup+0x40/0x40 : [ 1.737088] prepare_namespace+0x10c/0x180 : [ 1.737393] kernel_init_freeable+0x354/0x450 : [ 1.737707] ? rest_init+0xd0/0xd0 : [ 1.737945] kernel_init+0x16/0x130 : [ 1.738196] ret_from_fork+0x1f/0x30 : : As a hint, print all the bdev fstypes which are available. > --- a/init/do_mounts.c > +++ b/init/do_mounts.c > @@ -427,8 +427,19 @@ void __init mount_block_root(char *name, int flags) > printk("VFS: Cannot open root device \"%s\" or %s: error %d\n", > root_device_name, b, err); > printk("Please append a correct \"root=\" boot option; here are the available partitions:\n"); > - > printk_all_partitions(); > + > + if (root_fs_names) > + num_fs = list_bdev_fs_names(fs_names, PAGE_SIZE); > + if (!num_fs) > + pr_err("Can't find any bdev filesystem to be used for mount!\n"); > + else { > + pr_err("List of all bdev filesystem:\n"); > + for (i = 0, p = fs_names; i < num_fs; i++, p += strlen(p)+1) > + pr_err(" %s", p); > + pr_err("\n"); > + } > + > panic("VFS: Unable to mount root fs on %s", b); > } > if (!(flags & SB_RDONLY)) { And I added a little fix. --- a/init/do_mounts.c~init-add-bdev-fs-printk-if-mount_block_root-failed-fix +++ a/init/do_mounts.c @@ -434,7 +434,7 @@ retry: if (!num_fs) pr_err("Can't find any bdev filesystem to be used for mount!\n"); else { - pr_err("List of all bdev filesystem:\n"); + pr_err("List of all bdev filesystems:\n"); for (i = 0, p = fs_names; i < num_fs; i++, p += strlen(p)+1) pr_err(" %s", p); pr_err("\n"); _ This function now uses a jumble of printk() and pr_err(). Perhaps someone will go through and rationalize all of this sometime. ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] init: Add bdev fs printk if mount_block_root failed 2023-05-18 20:02 ` Andrew Morton @ 2023-05-18 20:35 ` Nick Desaulniers 2023-05-19 6:34 ` Angus Chen 2023-05-19 6:23 ` Angus Chen 1 sibling, 1 reply; 6+ messages in thread From: Nick Desaulniers @ 2023-05-18 20:35 UTC (permalink / raw) To: Andrew Morton, Angus Chen Cc: masahiroy, vbabka, peterz, paulmck, rppt, linux-kernel, Al Viro On Thu, May 18, 2023 at 1:02 PM Andrew Morton <akpm@linux-foundation.org> wrote: > > On Thu, 18 May 2023 11:53:21 +0800 Angus Chen <angus.chen@jaguarmicro.com> wrote: > > > Attempt to printk all bdev fstype as root gives the following kernel panic: > > > > [ 1.729006] VFS: Cannot open root device "vda" or unknown-block(253,0): error -19 > > [ 1.730603] Please append a correct "root=" boot option; here are the available partitions: > > [ 1.732323] fd00 256000 vda > > [ 1.732329] driver: virtio_blk > > [ 1.734194] Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(253,0) > > [ 1.734771] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 6.4.0-rc2+ #53 > > [ 1.735194] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.10.2-1ubuntu1 04/01/2014 > > [ 1.735772] Call Trace: > > [ 1.735950] <TASK> > > [ 1.736113] dump_stack_lvl+0x32/0x50 > > [ 1.736367] panic+0x108/0x310 > > [ 1.736570] mount_block_root+0x161/0x310 > > [ 1.736849] ? rdinit_setup+0x40/0x40 > > [ 1.737088] prepare_namespace+0x10c/0x180 > > [ 1.737393] kernel_init_freeable+0x354/0x450 > > [ 1.737707] ? rest_init+0xd0/0xd0 > > [ 1.737945] kernel_init+0x16/0x130 > > [ 1.738196] ret_from_fork+0x1f/0x30 > > > > QEMU command line: > > "qemu-system-x86_64 -append root=/dev/vda rootfstype=ext4 ..." > > > > This error is because ext4 is not buildin and request ext4 module fail. Cool! I'm glad this got picked up; I personally find it confusing when trying to start from something like an allnoconfig build then start enabling configs then hitting this panic; it's unclear to users that they are missing the config for the FS they are trying to load and on first glance looks like something much worse is going wrong. In that sense, I view this as a win. Thanks for the patch! Acked-by: Nick Desaulniers <ndesaulniers@google.com> I wish the commit message showed an example of the panic after the patch, to contrast the before vs. after. > > > > As a hint, printk all the bdev fstype available for prompts. > > > > Seems reasonable. I reworded the changelog a bit: > > : Booting with the QEMU command line: > : "qemu-system-x86_64 -append root=/dev/vda rootfstype=ext4 ..." > : will panic if ext4 is not builtin and a request to load the ext4 module > : fails. > : > : [ 1.729006] VFS: Cannot open root device "vda" or unknown-block(253,0): error -19 > : [ 1.730603] Please append a correct "root=" boot option; here are the available partitions: > : [ 1.732323] fd00 256000 vda > : [ 1.732329] driver: virtio_blk > : [ 1.734194] Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(253,0) > : [ 1.734771] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 6.4.0-rc2+ #53 > : [ 1.735194] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.10.2-1ubuntu1 04/01/2014 > : [ 1.735772] Call Trace: > : [ 1.735950] <TASK> > : [ 1.736113] dump_stack_lvl+0x32/0x50 > : [ 1.736367] panic+0x108/0x310 > : [ 1.736570] mount_block_root+0x161/0x310 > : [ 1.736849] ? rdinit_setup+0x40/0x40 > : [ 1.737088] prepare_namespace+0x10c/0x180 > : [ 1.737393] kernel_init_freeable+0x354/0x450 > : [ 1.737707] ? rest_init+0xd0/0xd0 > : [ 1.737945] kernel_init+0x16/0x130 > : [ 1.738196] ret_from_fork+0x1f/0x30 > : > : As a hint, print all the bdev fstypes which are available. > > > --- a/init/do_mounts.c > > +++ b/init/do_mounts.c > > @@ -427,8 +427,19 @@ void __init mount_block_root(char *name, int flags) > > printk("VFS: Cannot open root device \"%s\" or %s: error %d\n", > > root_device_name, b, err); > > printk("Please append a correct \"root=\" boot option; here are the available partitions:\n"); > > - > > printk_all_partitions(); > > + > > + if (root_fs_names) > > + num_fs = list_bdev_fs_names(fs_names, PAGE_SIZE); > > + if (!num_fs) > > + pr_err("Can't find any bdev filesystem to be used for mount!\n"); > > + else { > > + pr_err("List of all bdev filesystem:\n"); > > + for (i = 0, p = fs_names; i < num_fs; i++, p += strlen(p)+1) > > + pr_err(" %s", p); > > + pr_err("\n"); > > + } > > + > > panic("VFS: Unable to mount root fs on %s", b); > > } > > if (!(flags & SB_RDONLY)) { > > And I added a little fix. > > --- a/init/do_mounts.c~init-add-bdev-fs-printk-if-mount_block_root-failed-fix > +++ a/init/do_mounts.c > @@ -434,7 +434,7 @@ retry: > if (!num_fs) > pr_err("Can't find any bdev filesystem to be used for mount!\n"); > else { > - pr_err("List of all bdev filesystem:\n"); > + pr_err("List of all bdev filesystems:\n"); > for (i = 0, p = fs_names; i < num_fs; i++, p += strlen(p)+1) > pr_err(" %s", p); > pr_err("\n"); > _ > > > This function now uses a jumble of printk() and pr_err(). Perhaps > someone will go through and rationalize all of this sometime. > -- Thanks, ~Nick Desaulniers ^ permalink raw reply [flat|nested] 6+ messages in thread
* RE: [PATCH] init: Add bdev fs printk if mount_block_root failed 2023-05-18 20:35 ` Nick Desaulniers @ 2023-05-19 6:34 ` Angus Chen 2023-05-19 15:58 ` Nick Desaulniers 0 siblings, 1 reply; 6+ messages in thread From: Angus Chen @ 2023-05-19 6:34 UTC (permalink / raw) To: Nick Desaulniers, Andrew Morton Cc: masahiroy, vbabka, peterz, paulmck, rppt, linux-kernel, Al Viro > -----Original Message----- > From: Nick Desaulniers <ndesaulniers@google.com> > Sent: Friday, May 19, 2023 4:36 AM > To: Andrew Morton <akpm@linux-foundation.org>; Angus Chen > <angus.chen@jaguarmicro.com> > Cc: masahiroy@kernel.org; vbabka@suse.cz; peterz@infradead.org; > paulmck@kernel.org; rppt@kernel.org; linux-kernel@vger.kernel.org; Al Viro > <viro@zeniv.linux.org.uk> > Subject: Re: [PATCH] init: Add bdev fs printk if mount_block_root failed > > On Thu, May 18, 2023 at 1:02 PM Andrew Morton <akpm@linux-foundation.org> > wrote: > > > > On Thu, 18 May 2023 11:53:21 +0800 Angus Chen > <angus.chen@jaguarmicro.com> wrote: > > > > > Attempt to printk all bdev fstype as root gives the following kernel panic: > > > > > > [ 1.729006] VFS: Cannot open root device "vda" or > unknown-block(253,0): error -19 > > > [ 1.730603] Please append a correct "root=" boot option; here are the > available partitions: > > > [ 1.732323] fd00 256000 vda > > > [ 1.732329] driver: virtio_blk > > > [ 1.734194] Kernel panic - not syncing: VFS: Unable to mount root fs on > unknown-block(253,0) > > > [ 1.734771] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 6.4.0-rc2+ #53 > > > [ 1.735194] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), > BIOS 1.10.2-1ubuntu1 04/01/2014 > > > [ 1.735772] Call Trace: > > > [ 1.735950] <TASK> > > > [ 1.736113] dump_stack_lvl+0x32/0x50 > > > [ 1.736367] panic+0x108/0x310 > > > [ 1.736570] mount_block_root+0x161/0x310 > > > [ 1.736849] ? rdinit_setup+0x40/0x40 > > > [ 1.737088] prepare_namespace+0x10c/0x180 > > > [ 1.737393] kernel_init_freeable+0x354/0x450 > > > [ 1.737707] ? rest_init+0xd0/0xd0 > > > [ 1.737945] kernel_init+0x16/0x130 > > > [ 1.738196] ret_from_fork+0x1f/0x30 > > > > > > QEMU command line: > > > "qemu-system-x86_64 -append root=/dev/vda rootfstype=ext4 ..." > > > > > > This error is because ext4 is not buildin and request ext4 module fail. > > Cool! I'm glad this got picked up; I personally find it confusing when > trying to start from something like an allnoconfig build then start > enabling configs then hitting this panic; it's unclear to users that > they are missing the config for the FS they are trying to load and on > first glance looks like something much worse is going wrong. In that > sense, I view this as a win. Thanks for the patch! Thank you, you are welcome. > > Acked-by: Nick Desaulniers <ndesaulniers@google.com> > > I wish the commit message showed an example of the panic after the > patch, to contrast the before vs. after. en ,Did a need to send a v2 or just let it go this time? The information is print: [ 1.570841] VFS: Cannot open root device "vda" or unknown-block(253,0): error -19 [ 1.571513] Please append a correct "root=" boot option; here are the available partitions: [ 1.572056] fd00 256000 vda [ 1.572058] driver: virtio_blk [ 1.572525] List of all bdev filesystem: [ 1.572780] ext2 [ 1.572781] [ 1.573027] Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(253,0) Or: [ 1.510467] VFS: Cannot open root device "vda" or unknown-block(253,0): error -19 [ 1.512033] Please append a correct "root=" boot option; here are the available partitions: [ 1.513724] fd00 256000 vda [ 1.513731] driver: virtio_blk [ 1.514280] Can't find any bdev filesystem! [ 1.514540] Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(253,0) > > > > > > > As a hint, printk all the bdev fstype available for prompts. > > > > > > > Seems reasonable. I reworded the changelog a bit: > > > > : Booting with the QEMU command line: > > : "qemu-system-x86_64 -append root=/dev/vda rootfstype=ext4 ..." > > : will panic if ext4 is not builtin and a request to load the ext4 module > > : fails. > > : > > : [ 1.729006] VFS: Cannot open root device "vda" or unknown-block(253,0): > error -19 > > : [ 1.730603] Please append a correct "root=" boot option; here are the > available partitions: > > : [ 1.732323] fd00 256000 vda > > : [ 1.732329] driver: virtio_blk > > : [ 1.734194] Kernel panic - not syncing: VFS: Unable to mount root fs on > unknown-block(253,0) > > : [ 1.734771] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 6.4.0-rc2+ #53 > > : [ 1.735194] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), > BIOS 1.10.2-1ubuntu1 04/01/2014 > > : [ 1.735772] Call Trace: > > : [ 1.735950] <TASK> > > : [ 1.736113] dump_stack_lvl+0x32/0x50 > > : [ 1.736367] panic+0x108/0x310 > > : [ 1.736570] mount_block_root+0x161/0x310 > > : [ 1.736849] ? rdinit_setup+0x40/0x40 > > : [ 1.737088] prepare_namespace+0x10c/0x180 > > : [ 1.737393] kernel_init_freeable+0x354/0x450 > > : [ 1.737707] ? rest_init+0xd0/0xd0 > > : [ 1.737945] kernel_init+0x16/0x130 > > : [ 1.738196] ret_from_fork+0x1f/0x30 > > : > > : As a hint, print all the bdev fstypes which are available. > > > > > --- a/init/do_mounts.c > > > +++ b/init/do_mounts.c > > > @@ -427,8 +427,19 @@ void __init mount_block_root(char *name, int > flags) > > > printk("VFS: Cannot open root device \"%s\" or %s: > error %d\n", > > > root_device_name, b, err); > > > printk("Please append a correct \"root=\" boot option; > here are the available partitions:\n"); > > > - > > > printk_all_partitions(); > > > + > > > + if (root_fs_names) > > > + num_fs = list_bdev_fs_names(fs_names, > PAGE_SIZE); > > > + if (!num_fs) > > > + pr_err("Can't find any bdev filesystem to be used > for mount!\n"); > > > + else { > > > + pr_err("List of all bdev filesystem:\n"); > > > + for (i = 0, p = fs_names; i < num_fs; i++, p += > strlen(p)+1) > > > + pr_err(" %s", p); > > > + pr_err("\n"); > > > + } > > > + > > > panic("VFS: Unable to mount root fs on %s", b); > > > } > > > if (!(flags & SB_RDONLY)) { > > > > And I added a little fix. > > > > --- a/init/do_mounts.c~init-add-bdev-fs-printk-if-mount_block_root-failed-fix > > +++ a/init/do_mounts.c > > @@ -434,7 +434,7 @@ retry: > > if (!num_fs) > > pr_err("Can't find any bdev filesystem to be > used for mount!\n"); > > else { > > - pr_err("List of all bdev filesystem:\n"); > > + pr_err("List of all bdev filesystems:\n"); > > for (i = 0, p = fs_names; i < num_fs; i++, p += > strlen(p)+1) > > pr_err(" %s", p); > > pr_err("\n"); > > _ > > > > > > This function now uses a jumble of printk() and pr_err(). Perhaps > > someone will go through and rationalize all of this sometime. > > > > > -- > Thanks, > ~Nick Desaulniers ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] init: Add bdev fs printk if mount_block_root failed 2023-05-19 6:34 ` Angus Chen @ 2023-05-19 15:58 ` Nick Desaulniers 0 siblings, 0 replies; 6+ messages in thread From: Nick Desaulniers @ 2023-05-19 15:58 UTC (permalink / raw) To: Angus Chen Cc: Andrew Morton, masahiroy, vbabka, peterz, paulmck, rppt, linux-kernel, Al Viro On Thu, May 18, 2023 at 11:34 PM Angus Chen <angus.chen@jaguarmicro.com> wrote: > > > > > -----Original Message----- > > From: Nick Desaulniers <ndesaulniers@google.com> > > Sent: Friday, May 19, 2023 4:36 AM > > To: Andrew Morton <akpm@linux-foundation.org>; Angus Chen > > <angus.chen@jaguarmicro.com> > > Cc: masahiroy@kernel.org; vbabka@suse.cz; peterz@infradead.org; > > paulmck@kernel.org; rppt@kernel.org; linux-kernel@vger.kernel.org; Al Viro > > <viro@zeniv.linux.org.uk> > > Subject: Re: [PATCH] init: Add bdev fs printk if mount_block_root failed > > > > I wish the commit message showed an example of the panic after the > > patch, to contrast the before vs. after. > en ,Did a need to send a v2 or just let it go this time? Nah, it's fine. LGTM > The information is print: > [ 1.570841] VFS: Cannot open root device "vda" or unknown-block(253,0): error -19 > [ 1.571513] Please append a correct "root=" boot option; here are the available partitions: > [ 1.572056] fd00 256000 vda > [ 1.572058] driver: virtio_blk > [ 1.572525] List of all bdev filesystem: > [ 1.572780] ext2 > [ 1.572781] > [ 1.573027] Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(253,0) > > Or: > [ 1.510467] VFS: Cannot open root device "vda" or unknown-block(253,0): error -19 > [ 1.512033] Please append a correct "root=" boot option; here are the available partitions: > [ 1.513724] fd00 256000 vda > [ 1.513731] driver: virtio_blk > [ 1.514280] Can't find any bdev filesystem! > [ 1.514540] Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(253,0) -- Thanks, ~Nick Desaulniers ^ permalink raw reply [flat|nested] 6+ messages in thread
* RE: [PATCH] init: Add bdev fs printk if mount_block_root failed 2023-05-18 20:02 ` Andrew Morton 2023-05-18 20:35 ` Nick Desaulniers @ 2023-05-19 6:23 ` Angus Chen 1 sibling, 0 replies; 6+ messages in thread From: Angus Chen @ 2023-05-19 6:23 UTC (permalink / raw) To: Andrew Morton Cc: masahiroy, vbabka, peterz, ndesaulniers, paulmck, rppt, linux-kernel, Al Viro > -----Original Message----- > From: Andrew Morton <akpm@linux-foundation.org> > Sent: Friday, May 19, 2023 4:02 AM > To: Angus Chen <angus.chen@jaguarmicro.com> > Cc: masahiroy@kernel.org; vbabka@suse.cz; peterz@infradead.org; > ndesaulniers@google.com; paulmck@kernel.org; rppt@kernel.org; > linux-kernel@vger.kernel.org; Al Viro <viro@zeniv.linux.org.uk> > Subject: Re: [PATCH] init: Add bdev fs printk if mount_block_root failed > > On Thu, 18 May 2023 11:53:21 +0800 Angus Chen > <angus.chen@jaguarmicro.com> wrote: > > > Attempt to printk all bdev fstype as root gives the following kernel panic: > > > > [ 1.729006] VFS: Cannot open root device "vda" or unknown-block(253,0): > error -19 > > [ 1.730603] Please append a correct "root=" boot option; here are the > available partitions: > > [ 1.732323] fd00 256000 vda > > [ 1.732329] driver: virtio_blk > > [ 1.734194] Kernel panic - not syncing: VFS: Unable to mount root fs on > unknown-block(253,0) > > [ 1.734771] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 6.4.0-rc2+ #53 > > [ 1.735194] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), > BIOS 1.10.2-1ubuntu1 04/01/2014 > > [ 1.735772] Call Trace: > > [ 1.735950] <TASK> > > [ 1.736113] dump_stack_lvl+0x32/0x50 > > [ 1.736367] panic+0x108/0x310 > > [ 1.736570] mount_block_root+0x161/0x310 > > [ 1.736849] ? rdinit_setup+0x40/0x40 > > [ 1.737088] prepare_namespace+0x10c/0x180 > > [ 1.737393] kernel_init_freeable+0x354/0x450 > > [ 1.737707] ? rest_init+0xd0/0xd0 > > [ 1.737945] kernel_init+0x16/0x130 > > [ 1.738196] ret_from_fork+0x1f/0x30 > > > > QEMU command line: > > "qemu-system-x86_64 -append root=/dev/vda rootfstype=ext4 ..." > > > > This error is because ext4 is not buildin and request ext4 module fail. > > > > As a hint, printk all the bdev fstype available for prompts. > > > > Seems reasonable. I reworded the changelog a bit: > > : Booting with the QEMU command line: > : "qemu-system-x86_64 -append root=/dev/vda rootfstype=ext4 ..." > : will panic if ext4 is not builtin and a request to load the ext4 module > : fails. > : > : [ 1.729006] VFS: Cannot open root device "vda" or unknown-block(253,0): > error -19 > : [ 1.730603] Please append a correct "root=" boot option; here are the > available partitions: > : [ 1.732323] fd00 256000 vda > : [ 1.732329] driver: virtio_blk > : [ 1.734194] Kernel panic - not syncing: VFS: Unable to mount root fs on > unknown-block(253,0) > : [ 1.734771] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 6.4.0-rc2+ #53 > : [ 1.735194] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS > 1.10.2-1ubuntu1 04/01/2014 > : [ 1.735772] Call Trace: > : [ 1.735950] <TASK> > : [ 1.736113] dump_stack_lvl+0x32/0x50 > : [ 1.736367] panic+0x108/0x310 > : [ 1.736570] mount_block_root+0x161/0x310 > : [ 1.736849] ? rdinit_setup+0x40/0x40 > : [ 1.737088] prepare_namespace+0x10c/0x180 > : [ 1.737393] kernel_init_freeable+0x354/0x450 > : [ 1.737707] ? rest_init+0xd0/0xd0 > : [ 1.737945] kernel_init+0x16/0x130 > : [ 1.738196] ret_from_fork+0x1f/0x30 > : > : As a hint, print all the bdev fstypes which are available. Thank you for your reply. more readable now. > > > --- a/init/do_mounts.c > > +++ b/init/do_mounts.c > > @@ -427,8 +427,19 @@ void __init mount_block_root(char *name, int flags) > > printk("VFS: Cannot open root device \"%s\" or %s: error %d\n", > > root_device_name, b, err); > > printk("Please append a correct \"root=\" boot option; here are the > available partitions:\n"); > > - > > printk_all_partitions(); > > + > > + if (root_fs_names) > > + num_fs = list_bdev_fs_names(fs_names, PAGE_SIZE); > > + if (!num_fs) > > + pr_err("Can't find any bdev filesystem to be used for mount!\n"); > > + else { > > + pr_err("List of all bdev filesystem:\n"); > > + for (i = 0, p = fs_names; i < num_fs; i++, p += strlen(p)+1) > > + pr_err(" %s", p); > > + pr_err("\n"); > > + } > > + > > panic("VFS: Unable to mount root fs on %s", b); > > } > > if (!(flags & SB_RDONLY)) { > > And I added a little fix. > > --- a/init/do_mounts.c~init-add-bdev-fs-printk-if-mount_block_root-failed-fix > +++ a/init/do_mounts.c > @@ -434,7 +434,7 @@ retry: > if (!num_fs) > pr_err("Can't find any bdev filesystem to be used for mount!\n"); > else { > - pr_err("List of all bdev filesystem:\n"); > + pr_err("List of all bdev filesystems:\n"); > for (i = 0, p = fs_names; i < num_fs; i++, p += strlen(p)+1) > pr_err(" %s", p); > pr_err("\n"); > _ > > > This function now uses a jumble of printk() and pr_err(). Perhaps > someone will go through and rationalize all of this sometime. Yes, I took the printk first but got a warning from checkpatch.pl. Thanks. ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2023-05-19 15:59 UTC | newest] Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2023-05-18 3:53 [PATCH] init: Add bdev fs printk if mount_block_root failed Angus Chen 2023-05-18 20:02 ` Andrew Morton 2023-05-18 20:35 ` Nick Desaulniers 2023-05-19 6:34 ` Angus Chen 2023-05-19 15:58 ` Nick Desaulniers 2023-05-19 6:23 ` Angus Chen
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®