1b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */ 21da177e4SLinus Torvalds #include <linux/kernel.h> 3bff61975SNeilBrown #include <linux/blkdev.h> 41da177e4SLinus Torvalds #include <linux/init.h> 51da177e4SLinus Torvalds #include <linux/syscalls.h> 61da177e4SLinus Torvalds #include <linux/unistd.h> 71da177e4SLinus Torvalds #include <linux/slab.h> 81da177e4SLinus Torvalds #include <linux/mount.h> 91da177e4SLinus Torvalds #include <linux/major.h> 101da177e4SLinus Torvalds #include <linux/root_dev.h> 11c60166f0SChristoph Hellwig #include <linux/init_syscalls.h> 12*386dc41cSChristian Brauner #include <linux/task_work.h> 13*386dc41cSChristian Brauner #include <linux/file.h> 141da177e4SLinus Torvalds 15c8643c72SChristoph Hellwig void mount_root_generic(char *name, char *pretty_name, int flags); 16c8643c72SChristoph Hellwig void mount_root(char *root_device_name); 171da177e4SLinus Torvalds extern int root_mountflags; 181da177e4SLinus Torvalds 1909cbcec0SChristoph Hellwig static inline __init int create_dev(char *name, dev_t dev) 201da177e4SLinus Torvalds { 218fb9f73eSChristoph Hellwig init_unlink(name); 225fee64fcSChristoph Hellwig return init_mknod(name, S_IFBLK | 0600, new_encode_dev(dev)); 231da177e4SLinus Torvalds } 241da177e4SLinus Torvalds 251da177e4SLinus Torvalds #ifdef CONFIG_BLK_DEV_RAM 261da177e4SLinus Torvalds 271da177e4SLinus Torvalds int __init rd_load_disk(int n); 281da177e4SLinus Torvalds int __init rd_load_image(char *from); 291da177e4SLinus Torvalds 301da177e4SLinus Torvalds #else 311da177e4SLinus Torvalds 321da177e4SLinus Torvalds static inline int rd_load_disk(int n) { return 0; } 331da177e4SLinus Torvalds static inline int rd_load_image(char *from) { return 0; } 341da177e4SLinus Torvalds 351da177e4SLinus Torvalds #endif 361da177e4SLinus Torvalds 371da177e4SLinus Torvalds #ifdef CONFIG_BLK_DEV_INITRD 38c8643c72SChristoph Hellwig bool __init initrd_load(char *root_device_name); 391da177e4SLinus Torvalds #else 40c8643c72SChristoph Hellwig static inline bool initrd_load(char *root_device_name) 41c8643c72SChristoph Hellwig { 42c8643c72SChristoph Hellwig return false; 43c8643c72SChristoph Hellwig } 441da177e4SLinus Torvalds 451da177e4SLinus Torvalds #endif 46*386dc41cSChristian Brauner 47*386dc41cSChristian Brauner /* Ensure that async file closing finished to prevent spurious errors. */ 48*386dc41cSChristian Brauner static inline void init_flush_fput(void) 49*386dc41cSChristian Brauner { 50*386dc41cSChristian Brauner flush_delayed_fput(); 51*386dc41cSChristian Brauner task_work_run(); 52*386dc41cSChristian Brauner } 53