Hello! Thanks for your reply! On Fri, May 21, 2021 at 5:41 AM Luis Chamberlain <mcgrof@xxxxxxxxxx> wrote: > > Can't docker instead allow to create containers prior to creating > your local docker network namespace? Not that its a great solution, > but just worth noting. > That's a solution, but I don't think it is feasible. Users may create many containers, and you can't make docker create all the containers first and create network namespace later, as you don't know if there are any containers to create later. > > > > struct file_system_type rootfs_fs_type = { > > .name = "rootfs", > > - .init_fs_context = rootfs_init_fs_context, > > + .init_fs_context = ramfs_init_fs_context, > > Why is this always static now? Why is that its correct > now for init_mount_tree() always to use the ramfs context? Because the root mount in init_mount_tree() is not used as rootfs any more. In do_populate_rootfs(), I mounted a second rootfs, which can be ramfs or tmpfs, and that's the real rootfs for initramfs. And I call this root as 'user_root', because it is created for user space. int __init mount_user_root(void) { return do_mount_root(user_root->dev_name, user_root->fs_name, root_mountflags, root_mount_data); } In other words, I moved the realization of 'rootfs_fs_type' here to do_populate_rootfs(), and fixed this 'rootfs_fs_type' with ramfs_init_fs_context, as it is a fake root now. Now, the rootfs that user space used is separated with the init_task, and that's exactly what a block root file system does. Thanks! Menglong Dong