mirror of
https://github.com/tbsdtv/linux_media.git
synced 2025-07-23 20:51:03 +02:00
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: Christoph Hellwig <hch@lst.de> Link: https://lore.kernel.org/r/20230531125535.676098-12-hch@lst.de Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
committed by
Jens Axboe
parent
07d63cbb67
commit
3701c600a3
@@ -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)
|
static dev_t __init parse_root_device(char *root_device_name)
|
||||||
{
|
{
|
||||||
if (!strncmp(root_device_name, "mtd", 3) ||
|
if (!strncmp(root_device_name, "mtd", 3) ||
|
||||||
@@ -642,16 +662,8 @@ void __init prepare_namespace(void)
|
|||||||
if (initrd_load(saved_root_name))
|
if (initrd_load(saved_root_name))
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
/* wait for any asynchronous scanning to complete */
|
if (root_wait)
|
||||||
if ((ROOT_DEV == 0) && root_wait) {
|
wait_for_root(saved_root_name);
|
||||||
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();
|
|
||||||
}
|
|
||||||
|
|
||||||
mount_root(saved_root_name);
|
mount_root(saved_root_name);
|
||||||
out:
|
out:
|
||||||
devtmpfs_mount();
|
devtmpfs_mount();
|
||||||
|
Reference in New Issue
Block a user