xref: /csrg-svn/sys/kern/vfs_conf.c (revision 54989)
137488Smckusick /*
237488Smckusick  * Copyright (c) 1989 The Regents of the University of California.
337488Smckusick  * All rights reserved.
437488Smckusick  *
544456Sbostic  * %sccs.include.redist.c%
637488Smckusick  *
7*54989Sheideman  *	@(#)vfs_conf.c	7.15 (Berkeley) 07/12/92
837488Smckusick  */
937488Smckusick 
1051456Sbostic #include <sys/param.h>
1151456Sbostic #include <sys/mount.h>
1253494Sheideman #include <sys/vnode.h>
1351519Sbostic 
1451519Sbostic #ifdef FFS
1551456Sbostic #include <ufs/ffs/ffs_extern.h>
1637488Smckusick 
1737488Smckusick /*
1837488Smckusick  * This specifies the filesystem used to mount the root.
1937488Smckusick  * This specification should be done by /etc/config.
2037488Smckusick  */
2151456Sbostic int (*mountroot)() = ffs_mountroot;
2251519Sbostic #endif
2337488Smckusick 
2437488Smckusick /*
2537488Smckusick  * These define the root filesystem and device.
2637488Smckusick  */
2737488Smckusick struct mount *rootfs;
2837488Smckusick struct vnode *rootdir;
2937488Smckusick 
3037488Smckusick /*
3137488Smckusick  * Set up the filesystem operations for vnodes.
3237488Smckusick  * The types are defined in mount.h.
3337488Smckusick  */
3451519Sbostic #ifdef FFS
3537488Smckusick extern	struct vfsops ufs_vfsops;
3652414Storek #define	UFS_VFSOPS	&ufs_vfsops
3752414Storek #else
3852414Storek #define	UFS_VFSOPS	NULL
3951519Sbostic #endif
4037488Smckusick 
4151456Sbostic #ifdef LFS
4251456Sbostic extern	struct vfsops lfs_vfsops;
4352414Storek #define	LFS_VFSOPS	&lfs_vfsops
4452414Storek #else
4552414Storek #define	LFS_VFSOPS	NULL
4637488Smckusick #endif
4737488Smckusick 
4839046Smckusick #ifdef MFS
4939046Smckusick extern	struct vfsops mfs_vfsops;
5052414Storek #define	MFS_VFSOPS	&mfs_vfsops
5152414Storek #else
5252414Storek #define	MFS_VFSOPS	NULL
5339046Smckusick #endif
5439046Smckusick 
5551456Sbostic #ifdef NFS
5651456Sbostic extern	struct vfsops nfs_vfsops;
5752414Storek #define	NFS_VFSOPS	&nfs_vfsops
5852414Storek #else
5952414Storek #define	NFS_VFSOPS	NULL
6051456Sbostic #endif
6151456Sbostic 
6253827Spendry #ifdef LOFS
6353827Spendry extern	struct vfsops lofs_vfsops;
6453827Spendry #define	LOFS_VFSOPS	&lofs_vfsops
6553827Spendry #else
6653827Spendry #define	LOFS_VFSOPS	NULL
6753827Spendry #endif
6853827Spendry 
6953827Spendry #ifdef FDESC
7053827Spendry extern	struct vfsops fdesc_vfsops;
7153827Spendry #define	FDESC_VFSOPS	&fdesc_vfsops
7253827Spendry #else
7353827Spendry #define	FDESC_VFSOPS	NULL
7453827Spendry #endif
7553827Spendry 
7653827Spendry #ifdef PORTAL
7753827Spendry extern	struct vfsops portal_vfsops;
7853827Spendry #define	PORTAL_VFSOPS	&portal_vfsops
7953827Spendry #else
8053827Spendry #define	PORTAL_VFSOPS	NULL
8153827Spendry #endif
8253827Spendry 
83*54989Sheideman #ifdef NULLFS
84*54989Sheideman extern	struct vfsops null_vfsops;
85*54989Sheideman #define NULL_VFSOPS	&null_vfsops
86*54989Sheideman #else
87*54989Sheideman #define NULL_VFSOPS	NULL
88*54989Sheideman #endif
89*54989Sheideman 
90*54989Sheideman #ifdef UMAPFS
91*54989Sheideman extern	struct vfsops umap_vfsops;
92*54989Sheideman #define UMAP_VFSOPS	&umap_vfsops
93*54989Sheideman #else
94*54989Sheideman #define UMAP_VFSOPS	NULL
95*54989Sheideman #endif
96*54989Sheideman 
97*54989Sheideman 
9837488Smckusick struct vfsops *vfssw[] = {
9951456Sbostic 	NULL,			/* 0 = MOUNT_NONE */
10052414Storek 	UFS_VFSOPS,		/* 1 = MOUNT_UFS */
10152414Storek 	NFS_VFSOPS,		/* 2 = MOUNT_NFS */
10252414Storek 	MFS_VFSOPS,		/* 3 = MOUNT_MFS */
10351456Sbostic 	NULL,			/* 4 = MOUNT_PC */
10452414Storek 	LFS_VFSOPS,		/* 5 = MOUNT_LFS */
10553827Spendry 	LOFS_VFSOPS,		/* 6 = MOUNT_LOFS */
10653827Spendry 	FDESC_VFSOPS,		/* 7 = MOUNT_FDESC */
10753827Spendry 	PORTAL_VFSOPS,		/* 8 = MOUNT_PORTAL */
108*54989Sheideman 	NULL_VFSOPS,		/* 9 = MOUNT_NULL */
109*54989Sheideman 	UMAP_VFSOPS,		/* 10 = MOUNT_UMAP */
110*54989Sheideman 	0
11137488Smckusick };
11253579Sheideman 
11353579Sheideman 
11453579Sheideman /*
11553579Sheideman  *
11654724Sbostic  * vfs_opv_descs enumerates the list of vnode classes, each with it's own
11754724Sbostic  * vnode operation vector.  It is consulted at system boot to build operation
11854724Sbostic  * vectors.  It is NULL terminated.
11953579Sheideman  *
12053579Sheideman  */
12153579Sheideman extern struct vnodeopv_desc ffs_vnodeop_opv_desc;
12253579Sheideman extern struct vnodeopv_desc ffs_specop_opv_desc;
12353579Sheideman extern struct vnodeopv_desc ffs_fifoop_opv_desc;
12453579Sheideman extern struct vnodeopv_desc lfs_vnodeop_opv_desc;
12553579Sheideman extern struct vnodeopv_desc lfs_specop_opv_desc;
12653579Sheideman extern struct vnodeopv_desc lfs_fifoop_opv_desc;
12753579Sheideman extern struct vnodeopv_desc mfs_vnodeop_opv_desc;
12853579Sheideman extern struct vnodeopv_desc dead_vnodeop_opv_desc;
12953579Sheideman extern struct vnodeopv_desc fifo_vnodeop_opv_desc;
13053579Sheideman extern struct vnodeopv_desc spec_vnodeop_opv_desc;
13153579Sheideman extern struct vnodeopv_desc nfsv2_vnodeop_opv_desc;
13253579Sheideman extern struct vnodeopv_desc spec_nfsv2nodeop_opv_desc;
13353579Sheideman extern struct vnodeopv_desc fifo_nfsv2nodeop_opv_desc;
13453943Spendry extern struct vnodeopv_desc lofs_vnodeop_opv_desc;
13553943Spendry extern struct vnodeopv_desc fdesc_vnodeop_opv_desc;
13653943Spendry extern struct vnodeopv_desc portal_vnodeop_opv_desc;
137*54989Sheideman extern struct vnodeopv_desc null_vnodeop_opv_desc;
138*54989Sheideman extern struct vnodeopv_desc umap_vnodeop_opv_desc;
13953579Sheideman 
14053579Sheideman struct vnodeopv_desc *vfs_opv_descs[] = {
14153579Sheideman 	&ffs_vnodeop_opv_desc,
14253579Sheideman 	&ffs_specop_opv_desc,
14354343Smckusick #ifdef FIFO
14453579Sheideman 	&ffs_fifoop_opv_desc,
14554343Smckusick #endif
14653760Smckusick 	&dead_vnodeop_opv_desc,
14754343Smckusick #ifdef FIFO
14853760Smckusick 	&fifo_vnodeop_opv_desc,
14954343Smckusick #endif
15053760Smckusick 	&spec_vnodeop_opv_desc,
15153760Smckusick #ifdef LFS
15253579Sheideman 	&lfs_vnodeop_opv_desc,
15353579Sheideman 	&lfs_specop_opv_desc,
15454343Smckusick #ifdef FIFO
15553579Sheideman 	&lfs_fifoop_opv_desc,
15653760Smckusick #endif
15754343Smckusick #endif
15853760Smckusick #ifdef MFS
15953579Sheideman 	&mfs_vnodeop_opv_desc,
16053760Smckusick #endif
16153760Smckusick #ifdef NFS
16253579Sheideman 	&nfsv2_vnodeop_opv_desc,
16353579Sheideman 	&spec_nfsv2nodeop_opv_desc,
16454343Smckusick #ifdef FIFO
16553579Sheideman 	&fifo_nfsv2nodeop_opv_desc,
16653760Smckusick #endif
16754343Smckusick #endif
16853943Spendry #ifdef LOFS
16953943Spendry 	&lofs_vnodeop_opv_desc,
17053943Spendry #endif
17153943Spendry #ifdef FDESC
17253943Spendry 	&fdesc_vnodeop_opv_desc,
17353943Spendry #endif
17453943Spendry #ifdef PORTAL
17553943Spendry 	&portal_vnodeop_opv_desc,
17653943Spendry #endif
177*54989Sheideman #ifdef NULLFS
178*54989Sheideman 	&null_vnodeop_opv_desc,
179*54989Sheideman #endif
180*54989Sheideman #ifdef UMAPFS
181*54989Sheideman 	&umap_vnodeop_opv_desc,
182*54989Sheideman #endif
18353579Sheideman 	NULL
18453579Sheideman };
185