* rootwait regression in linux-next
@ 2023-06-06 17:09 Fabio Estevam
2023-06-07 5:37 ` Christoph Hellwig
0 siblings, 1 reply; 5+ messages in thread
From: Fabio Estevam @ 2023-06-06 17:09 UTC (permalink / raw)
To: Christoph Hellwig; +Cc: Jens Axboe, linux-kernel
Hi Christoph,
I observe the following boot regression in linux-next 20230606:
[ 1.757719] ALSA device list:
[ 1.760705] No soundcards found.
[ 1.774453] mmc1: SDHCI controller on 30b50000.mmc [30b50000.mmc] using ADMA
[ 1.786190] Disabling rootwait; root= is invalid.
[ 1.792548] /dev/root: Can't open blockdev
[ 1.796689] VFS: Cannot open root device "/dev/mmcblk1p1" or
unknown-block(0,0): error -6
[ 1.804886] Please append a correct "root=" boot option; here are
the available partitions:
[ 1.813270] 1f00 32768 mtdblock0
Kernel command line: root=/dev/mmcblk1p1 rw rootwait
If I try an ugly hack like this:
--- a/init/do_mounts.c
+++ b/init/do_mounts.c
@@ -412,7 +412,7 @@ static dev_t __init parse_root_device(char
*root_device_name)
return Root_RAM0;
error = early_lookup_bdev(root_device_name, &dev);
- if (error) {
+ if (0) {
if (error == -EINVAL && root_wait) {
pr_err("Disabling rootwait; root= is invalid.\n");
root_wait = 0;
Then the board boots fine:
[ 1.790845] Waiting for root device /dev/mmcblk1p1...
[ 2.058169] mmc1: host does not support reading read-only switch,
assuming write-enable
[ 2.097079] mmc1: new ultra high speed SDR104 SDHC card at address aaaa
[ 2.104925] mmcblk1: mmc1:aaaa SP32G 29.7 GiB
[ 2.113269] mmcblk1: p1 p2 p3
[ 2.154538] EXT4-fs (mmcblk1p1): recovery complete
[ 2.160651] EXT4-fs (mmcblk1p1): mounted filesystem
3e7994a8-04cb-45d2-a6f5-64462aa0ea05 r/w with ordered data mode. Quota
mode: none.
[ 2.172828] VFS: Mounted root (ext4 filesystem) on device 179:97.
What is the appropriate fix for this issue?
Thanks
^ permalink raw reply [flat|nested] 5+ messages in thread* Re: rootwait regression in linux-next 2023-06-06 17:09 rootwait regression in linux-next Fabio Estevam @ 2023-06-07 5:37 ` Christoph Hellwig 2023-06-07 12:05 ` Fabio Estevam 0 siblings, 1 reply; 5+ messages in thread From: Christoph Hellwig @ 2023-06-07 5:37 UTC (permalink / raw) To: Fabio Estevam; +Cc: Christoph Hellwig, Jens Axboe, linux-kernel Hi Fabio, can you try this patch? diff --git a/block/early-lookup.c b/block/early-lookup.c index 3ff0d2e4dcbfb8..ca3b4f494c9330 100644 --- a/block/early-lookup.c +++ b/block/early-lookup.c @@ -174,7 +174,7 @@ static int __init devt_from_devname(const char *name, dev_t *devt) while (p > s && isdigit(p[-1])) p--; if (p == s || !*p || *p == '0') - return -EINVAL; + return -ENOENT; /* try disk name without <part number> */ part = simple_strtoul(p, NULL, 10); ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: rootwait regression in linux-next 2023-06-07 5:37 ` Christoph Hellwig @ 2023-06-07 12:05 ` Fabio Estevam 2023-06-07 13:37 ` Christoph Hellwig 0 siblings, 1 reply; 5+ messages in thread From: Fabio Estevam @ 2023-06-07 12:05 UTC (permalink / raw) To: Christoph Hellwig; +Cc: Jens Axboe, linux-kernel Hi Christoph, On Wed, Jun 7, 2023 at 2:38 AM Christoph Hellwig <hch@lst.de> wrote: > > Hi Fabio, > > can you try this patch? > > diff --git a/block/early-lookup.c b/block/early-lookup.c > index 3ff0d2e4dcbfb8..ca3b4f494c9330 100644 > --- a/block/early-lookup.c > +++ b/block/early-lookup.c > @@ -174,7 +174,7 @@ static int __init devt_from_devname(const char *name, dev_t *devt) > while (p > s && isdigit(p[-1])) > p--; > if (p == s || !*p || *p == '0') > - return -EINVAL; > + return -ENOENT; Unfortunately, it does not help. I have added some debug prints: --- a/block/early-lookup.c +++ b/block/early-lookup.c @@ -157,15 +157,21 @@ static int __init devt_from_devname(const char *name, dev_t *devt) if (strlen(name) > 31) return -EINVAL; + + pr_err("***** %s: 1\n", __func__); strcpy(s, name); for (p = s; *p; p++) { if (*p == '/') *p = '!'; } + + pr_err("***** %s: 2\n", __func__); *devt = blk_lookup_devt(s, 0); if (*devt) return 0; + + pr_err("***** %s: 3\n", __func__); /* * Try non-existent, but valid partition, which may only exist after @@ -174,7 +180,9 @@ static int __init devt_from_devname(const char *name, dev_t *devt) while (p > s && isdigit(p[-1])) p--; if (p == s || !*p || *p == '0') - return -EINVAL; + return -ENOENT; + + pr_err("***** %s: 4\n", __func__); /* try disk name without <part number> */ part = simple_strtoul(p, NULL, 10); @@ -182,14 +190,18 @@ static int __init devt_from_devname(const char *name, dev_t *devt) *devt = blk_lookup_devt(s, part); if (*devt) return 0; + + pr_err("***** %s: 5\n", __func__); /* try disk name without p<part number> */ if (p < s + 2 || !isdigit(p[-2]) || p[-1] != 'p') return -EINVAL; + pr_err("***** %s: 6\n", __func__); p[-1] = '\0'; *devt = blk_lookup_devt(s, part); if (*devt) return 0; + pr_err("***** %s: 7\n", __func__); return -EINVAL; } [ 1.627144] mmc1: SDHCI controller on 30b50000.mmc [30b50000.mmc] using ADMA [ 1.629380] mmcblk2rpmb: mmc2:0001 DG4016 4.00 MiB, chardev (241:0) [ 1.664895] ***** devt_from_devname: 1 [ 1.668681] ***** devt_from_devname: 2 [ 1.672467] ***** devt_from_devname: 3 [ 1.676230] ***** devt_from_devname: 4 [ 1.680011] ***** devt_from_devname: 5 [ 1.683778] ***** devt_from_devname: 6 [ 1.687546] ***** devt_from_devname: 7 [ 1.691314] Disabling rootwait; root= is invalid. [ 1.696842] /dev/root: Can't open blockdev [ 1.700988] VFS: Cannot open root device "/dev/mmcblk1p1" or unknown-block(0,0): error -6 Let me know if you need me to run more debugging tests. ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: rootwait regression in linux-next 2023-06-07 12:05 ` Fabio Estevam @ 2023-06-07 13:37 ` Christoph Hellwig 2023-06-07 13:42 ` Fabio Estevam 0 siblings, 1 reply; 5+ messages in thread From: Christoph Hellwig @ 2023-06-07 13:37 UTC (permalink / raw) To: Fabio Estevam; +Cc: Christoph Hellwig, Jens Axboe, linux-kernel Hi Fabio, I guess we need an ENODEV for that last case as well. Please try this patch: diff --git a/block/early-lookup.c b/block/early-lookup.c index 3ff0d2e4dcbfb8..48ea3e982419cc 100644 --- a/block/early-lookup.c +++ b/block/early-lookup.c @@ -181,7 +181,7 @@ static int __init devt_from_devname(const char *name, dev_t *devt) *p = '\0'; *devt = blk_lookup_devt(s, part); if (*devt) - return 0; + return -ENODEV; /* try disk name without p<part number> */ if (p < s + 2 || !isdigit(p[-2]) || p[-1] != 'p') @@ -190,7 +190,7 @@ static int __init devt_from_devname(const char *name, dev_t *devt) *devt = blk_lookup_devt(s, part); if (*devt) return 0; - return -EINVAL; + return -ENODEV; } static int __init devt_from_devnum(const char *name, dev_t *devt) ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: rootwait regression in linux-next 2023-06-07 13:37 ` Christoph Hellwig @ 2023-06-07 13:42 ` Fabio Estevam 0 siblings, 0 replies; 5+ messages in thread From: Fabio Estevam @ 2023-06-07 13:42 UTC (permalink / raw) To: Christoph Hellwig; +Cc: Jens Axboe, linux-kernel Hi Christoph, On Wed, Jun 7, 2023 at 10:37 AM Christoph Hellwig <hch@lst.de> wrote: > > Hi Fabio, > > I guess we need an ENODEV for that last case as well. Please try this > patch: Yes, this one fixes the issue, thanks! Tested-by: Fabio Estevam <festevam@gmail.com> ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2023-06-07 13:43 UTC | newest] Thread overview: 5+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2023-06-06 17:09 rootwait regression in linux-next Fabio Estevam 2023-06-07 5:37 ` Christoph Hellwig 2023-06-07 12:05 ` Fabio Estevam 2023-06-07 13:37 ` Christoph Hellwig 2023-06-07 13:42 ` Fabio Estevam
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox