summaryrefslogtreecommitdiff
path: root/sys/kern
diff options
context:
space:
mode:
Diffstat (limited to 'sys/kern')
-rw-r--r--sys/kern/vfs_init.c11
-rw-r--r--sys/kern/vfs_mount.c8
2 files changed, 12 insertions, 7 deletions
diff --git a/sys/kern/vfs_init.c b/sys/kern/vfs_init.c
index 6372f3d..08be17a 100644
--- a/sys/kern/vfs_init.c
+++ b/sys/kern/vfs_init.c
@@ -87,18 +87,17 @@ vfs_init(void)
continue;
}
- /* Mount if we can */
- if (ops->mount != NULL) {
- error = ops->mount(fip, NULL);
+ /* Initialize the filesystem */
+ if (ops->init != NULL) {
+ error = ops->init(fip);
}
if (error != 0) {
- dtrace("failed to mount %s\n", fip->name);
+ dtrace("failed to init %s\n", fip->name);
continue;
}
- dtrace("mounted %s\n", fip->name);
- fip->is_mounted = 1;
+ dtrace("initialized %s\n", fip->name);
++mount_count;
}
diff --git a/sys/kern/vfs_mount.c b/sys/kern/vfs_mount.c
index 51a464a..39f98d2 100644
--- a/sys/kern/vfs_mount.c
+++ b/sys/kern/vfs_mount.c
@@ -74,6 +74,7 @@ int
mount(struct mount_args *margs)
{
struct fs_info *fip;
+ struct vfsops *vfsops;
struct mount *mp;
int error;
@@ -95,13 +96,18 @@ mount(struct mount_args *margs)
return error;
}
+ vfsops = fip->vfsops;
+ if (vfsops->mount == NULL) {
+ return -ENOTSUP;
+ }
+
mp = kalloc(sizeof(*mp));
if (mp == NULL) {
return -ENOMEM;
}
mp->fip = fip;
- error = vnode_init(&mp->vp, VDIR);
+ error = vfsops->mount(fip, mp);
if (error < 0) {
kfree(mp);
return error;