block: re-discover mtd devices on extroot mount retry
authorJo-Philipp Wich <jo@mein.io>
Sun, 5 Jan 2020 16:21:25 +0000 (17:21 +0100)
committerJo-Philipp Wich <jo@mein.io>
Sun, 5 Jan 2020 16:41:25 +0000 (17:41 +0100)
When retrying extroot mounting after waiting for the underlying device to
appear, the internal device cache was rebuilt without mtd devices, leading
to the following error:

    block: extroot: unable to lookup root device /dev/...

The extroot mount procedure needs access to the actual mtd root device to
temporarily mount it for uuid file verification.

Fix this error by rebuilding the cache with mtd devices to allow the
`check_extroot()` procedure to find the internal root device.

Fixes: FS#2701
Fixes: fb0700f ("block: support hierarchical mount/umount")
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
block.c

diff --git a/block.c b/block.c
index b6d49a8543117bb91fa53bd7c8b1fad5f1e2dbdb..50d877fbeb08e1d2b445549224f0565eecd56791 100644 (file)
--- a/block.c
+++ b/block.c
@@ -1543,7 +1543,7 @@ static int mount_extroot(char *cfg)
                ULOG_INFO("extroot: device not present, retrying in %u seconds\n", delay_root);
                sleep(delay_root);
                make_devs();
-               cache_load(0);
+               cache_load(1);
                dev = find_block_device(m->uuid, m->label, m->device);
        }
        if (dev) {