summaryrefslogtreecommitdiff
path: root/init/initramfs.c
diff options
context:
space:
mode:
Diffstat (limited to 'init/initramfs.c')
-rw-r--r--init/initramfs.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/init/initramfs.c b/init/initramfs.c
index d53138c40639..214c2eaf4373 100644
--- a/init/initramfs.c
+++ b/init/initramfs.c
@@ -695,4 +695,23 @@ static int __init populate_rootfs(void)
}
return 0;
}
+
+#if IS_BUILTIN(CONFIG_INITRD_ASYNC)
+#include <linux/kthread.h>
+#include <linux/async.h>
+
+static void __init unpack_rootfs_async(void *unused, async_cookie_t cookie)
+{
+ populate_rootfs();
+}
+
+static int __init populate_rootfs_async(void)
+{
+ async_schedule(unpack_rootfs_async, NULL);
+ return 0;
+}
+
+pure_initcall(populate_rootfs_async);
+#else
rootfs_initcall(populate_rootfs);
+#endif