I'm using extroot on SD card in 4G dongle attached to USB of my TP-Link Archer C2. For reasons unknown to me it started to take more than 10 seconds to show among devices, this patch adds 2 more detection attempts/delays to already existing 5s. --- diff --git a/block.c b/block.c index b377429..c01deb0 100644 --- a/block.c +++ b/block.c @@ -497,6 +497,15 @@ return probe_path(path); } +static void _add_absent(struct probe_info *pr) +{ + struct probe_info *existing; + list_for_each_entry(existing, &devices, list) + if (!strcasecmp(existing->dev, pr->dev)) + return; + list_add_tail(&pr->list, &devices); +} + static int _cache_load(const char *path) { int gl_flags = GLOB_NOESCAPE | GLOB_MARK; @@ -509,7 +518,7 @@ for (j = 0; j < gl.gl_pathc; j++) { struct probe_info *pr = _probe_path(gl.gl_pathv[j]); if (pr) - list_add_tail(&pr->list, &devices); + _add_absent(pr); } globfree(&gl); @@ -1407,6 +1416,7 @@ struct probe_info *pr; struct mount *m; int err = -1; + int delay_count = 3; // better safe than sorry, 2 should be enough, hell, even 1 /* Load @cfg/etc/config/fstab */ if (config_load(cfg)) @@ -1426,7 +1436,7 @@ /* Find block device pointed by the mount config */ pr = find_block_info(m->uuid, m->label, m->device); - if (!pr && delay_root){ + while (!pr && delay_root && delay_count--) { ULOG_INFO("extroot: device not present, retrying in %u seconds\n", delay_root); sleep(delay_root); make_devs();
_______________________________________________ Lede-dev mailing list Lede-dev@lists.infradead.org http://lists.infradead.org/mailman/listinfo/lede-dev