tools headers UAPI: Sync drm/i915_drm.h with the kernel sources
[linux-2.6-microblaze.git] / init / do_mounts_initrd.c
index 53314d7..533d81e 100644 (file)
@@ -51,14 +51,14 @@ static int __init early_initrd(char *p)
 }
 early_param("initrd", early_initrd);
 
-static int init_linuxrc(struct subprocess_info *info, struct cred *new)
+static int __init init_linuxrc(struct subprocess_info *info, struct cred *new)
 {
        ksys_unshare(CLONE_FS | CLONE_FILES);
        console_on_rootfs();
        /* move initrd over / and chdir/chroot in initrd root */
-       ksys_chdir("/root");
-       do_mount(".", "/", NULL, MS_MOVE, NULL);
-       ksys_chroot(".");
+       init_chdir("/root");
+       init_mount(".", "/", NULL, MS_MOVE, NULL);
+       init_chroot(".");
        ksys_setsid();
        return 0;
 }
@@ -70,12 +70,14 @@ static void __init handle_initrd(void)
        extern char *envp_init[];
        int error;
 
+       pr_warn("using deprecated initrd support, will be removed in 2021.\n");
+
        real_root_dev = new_encode_dev(ROOT_DEV);
        create_dev("/dev/root.old", Root_RAM0);
        /* mount initrd on rootfs' /root */
        mount_block_root("/dev/root.old", root_mountflags & ~MS_RDONLY);
-       ksys_mkdir("/old", 0700);
-       ksys_chdir("/old");
+       init_mkdir("/old", 0700);
+       init_chdir("/old");
 
        /*
         * In case that a resume from disk is carried out by linuxrc or one of
@@ -92,39 +94,30 @@ static void __init handle_initrd(void)
        current->flags &= ~PF_FREEZER_SKIP;
 
        /* move initrd to rootfs' /old */
-       do_mount("..", ".", NULL, MS_MOVE, NULL);
+       init_mount("..", ".", NULL, MS_MOVE, NULL);
        /* switch root and cwd back to / of rootfs */
-       ksys_chroot("..");
+       init_chroot("..");
 
        if (new_decode_dev(real_root_dev) == Root_RAM0) {
-               ksys_chdir("/old");
+               init_chdir("/old");
                return;
        }
 
-       ksys_chdir("/");
+       init_chdir("/");
        ROOT_DEV = new_decode_dev(real_root_dev);
        mount_root();
 
        printk(KERN_NOTICE "Trying to move old root to /initrd ... ");
-       error = do_mount("/old", "/root/initrd", NULL, MS_MOVE, NULL);
+       error = init_mount("/old", "/root/initrd", NULL, MS_MOVE, NULL);
        if (!error)
                printk("okay\n");
        else {
-               int fd = ksys_open("/dev/root.old", O_RDWR, 0);
                if (error == -ENOENT)
                        printk("/initrd does not exist. Ignored.\n");
                else
                        printk("failed\n");
                printk(KERN_NOTICE "Unmounting old root\n");
-               ksys_umount("/old", MNT_DETACH);
-               printk(KERN_NOTICE "Trying to free ramdisk memory ... ");
-               if (fd < 0) {
-                       error = fd;
-               } else {
-                       error = ksys_ioctl(fd, BLKFLSBUF, 0);
-                       ksys_close(fd);
-               }
-               printk(!error ? "okay\n" : "failed\n");
+               init_umount("/old", MNT_DETACH);
        }
 }
 
@@ -139,11 +132,11 @@ bool __init initrd_load(void)
                 * mounted in the normal path.
                 */
                if (rd_load_image("/initrd.image") && ROOT_DEV != Root_RAM0) {
-                       ksys_unlink("/initrd.image");
+                       init_unlink("/initrd.image");
                        handle_initrd();
                        return true;
                }
        }
-       ksys_unlink("/initrd.image");
+       init_unlink("/initrd.image");
        return false;
 }