Move VFS /dev/ -> /dev_vfs/
authorBarret Rhoden <brho@cs.berkeley.edu>
Wed, 5 Oct 2016 20:22:41 +0000 (16:22 -0400)
committerBarret Rhoden <brho@cs.berkeley.edu>
Thu, 6 Oct 2016 19:41:48 +0000 (15:41 -0400)
Now that stdin/out/err are not in the VFS, we can move the VFS device
directory and get rid of that nasty sys_open() hack.

Code that uses devices, such as the mlx4 user-driver, need to look in
dev_vfs now.  mlx4 and blockdev still use devfs.c.

Signed-off-by: Barret Rhoden <brho@cs.berkeley.edu>
kern/src/devfs.c
kern/src/syscall.c

index e6926e3..3f5e658 100644 (file)
@@ -20,9 +20,9 @@ void devfs_init(void)
 {
        int mode;
        /* Make sure there is a dev directory */
-       struct dentry *dentry = lookup_dentry("/dev/", 0);
+       struct dentry *dentry = lookup_dentry("/dev_vfs/", 0);
        if (!dentry) {
-               assert(!do_mkdir("/dev/", S_IRWXU | S_IRWXG | S_IRWXO));
+               assert(!do_mkdir("/dev_vfs/", S_IRWXU | S_IRWXG | S_IRWXO));
        } else {
                kref_put(&dentry->d_kref);
        }
index 6b51cdf..999d118 100644 (file)
@@ -1597,24 +1597,10 @@ static intreg_t sys_openat(struct proc *p, int fromfd, const char *path,
        mode &= ~p->fs_env.umask;
        /* Only check the VFS for legacy opens.  It doesn't support openat.  Actual
         * openats won't check here, and file == 0. */
-#define REMOVE_BEFORE_FLIGHT 1
-#if REMOVE_BEFORE_FLIGHT
-       /*
-        * HACK. This is another stopgap until we move away from the
-        * vfs. People need to see /dev. This is written in such a way
-        * as to fail quickly, be easily removed, and still do what we
-        * want.
-        */
-       if ((fromfd == AT_FDCWD) && (path_l == 4) && (t_path[0] == '/')
-               && (t_path[1] == 'd') && (t_path[2] == 'e') && (t_path[3] == 'v')) {
-               set_errno(ENOENT);
-       } else {
-#endif
        if ((t_path[0] == '/') || (fromfd == AT_FDCWD))
                file = do_file_open(t_path, oflag, mode);
        else
                set_errno(ENOENT);      /* was not in the VFS. */
-       }
        if (file) {
                /* VFS lookup succeeded */
                /* stores the ref to file */