/* * This file handles mounting various file systems into the VFS. This is the * mount system call. */ #include #include #include #include "namespace.h" int mount_fstype(const char *name, int flags, const char *src, void *data, Inode **root); /* Mount a file system */ int mount(const char *src, const char *target, const char *type, unsigned long flags, void *data) { Inode *mnt = NULL; int res = mount_fstype(type, flags, src, data, &mnt); if (res < 0) return res; if (!mnt) return -ENODEV; /* Mount as VFS root */ if (!target && !current->fs->root) { current->fs->root = get(mnt); current->fs->cwd = get(mnt); return 0; } return 0; }