Commit 3701c600 authored by Christoph Hellwig's avatar Christoph Hellwig Committed by Jens Axboe

init: factor the root_wait logic in prepare_namespace into a helper

The root_wait logic is a bit obsfucated right now.  Expand it and move it
into a helper.
Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
Link: https://lore.kernel.org/r/20230531125535.676098-12-hch@lst.deSigned-off-by: default avatarJens Axboe <axboe@kernel.dk>
parent 07d63cbb
......@@ -606,6 +606,26 @@ void __init mount_root(char *root_device_name)
}
}
/* wait for any asynchronous scanning to complete */
static void __init wait_for_root(char *root_device_name)
{
if (ROOT_DEV != 0)
return;
pr_info("Waiting for root device %s...\n", root_device_name);
for (;;) {
if (driver_probe_done()) {
ROOT_DEV = name_to_dev_t(root_device_name);
if (ROOT_DEV)
break;
}
msleep(5);
}
async_synchronize_full();
}
static dev_t __init parse_root_device(char *root_device_name)
{
if (!strncmp(root_device_name, "mtd", 3) ||
......@@ -642,16 +662,8 @@ void __init prepare_namespace(void)
if (initrd_load(saved_root_name))
goto out;
/* wait for any asynchronous scanning to complete */
if ((ROOT_DEV == 0) && root_wait) {
printk(KERN_INFO "Waiting for root device %s...\n",
saved_root_name);
while (!driver_probe_done() ||
(ROOT_DEV = name_to_dev_t(saved_root_name)) == 0)
msleep(5);
async_synchronize_full();
}
if (root_wait)
wait_for_root(saved_root_name);
mount_root(saved_root_name);
out:
devtmpfs_mount();
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment