xref: /linux/init/do_mounts.h (revision 100c85421b52e41269ada88f7d71a6b8a06c7a11)
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