mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [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: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

* 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

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®