53 lines
1.4 KiB
Diff
53 lines
1.4 KiB
Diff
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||
|
From: Arjan van de Ven <arjan@linux.intel.com>
|
||
|
Date: Wed, 17 May 2017 01:52:11 +0000
|
||
|
Subject: [PATCH] init: wait for partition and retry scan
|
||
|
|
||
|
As Clear Linux boots fast the device is not ready when
|
||
|
the mounting code is reached, so a retry device scan will
|
||
|
be performed every 0.5 sec for at least 40 sec
|
||
|
and synchronize the async task.
|
||
|
|
||
|
Signed-off-by: Miguel Bernal Marin <miguel.bernal.marin@linux.intel.com>
|
||
|
---
|
||
|
init/do_mounts.c | 10 ++++++++++
|
||
|
1 file changed, 10 insertions(+)
|
||
|
|
||
|
diff --git a/init/do_mounts.c b/init/do_mounts.c
|
||
|
index 9634ecf3743d..7f7d64621a2a 100644
|
||
|
--- a/init/do_mounts.c
|
||
|
+++ b/init/do_mounts.c
|
||
|
@@ -225,11 +225,19 @@ dev_t name_to_dev_t(const char *name)
|
||
|
char *p;
|
||
|
dev_t res = 0;
|
||
|
int part;
|
||
|
+ /* we will wait at least 40 sec */
|
||
|
+ int needtowait = 40<<1;
|
||
|
|
||
|
#ifdef CONFIG_BLOCK
|
||
|
if (strncmp(name, "PARTUUID=", 9) == 0) {
|
||
|
name += 9;
|
||
|
res = devt_from_partuuid(name);
|
||
|
+ while (!res && needtowait) {
|
||
|
+ /* waiting 0.5 sec */
|
||
|
+ msleep(500);
|
||
|
+ res = devt_from_partuuid(name);
|
||
|
+ needtowait--;
|
||
|
+ }
|
||
|
if (!res)
|
||
|
goto fail;
|
||
|
goto done;
|
||
|
@@ -585,7 +593,9 @@ void __init prepare_namespace(void)
|
||
|
* For example, it is not atypical to wait 5 seconds here
|
||
|
* for the touchpad of a laptop to initialize.
|
||
|
*/
|
||
|
+ async_synchronize_full();
|
||
|
wait_for_device_probe();
|
||
|
+ async_synchronize_full();
|
||
|
|
||
|
md_run_setup();
|
||
|
|
||
|
--
|
||
|
https://clearlinux.org
|
||
|
|