xref: /csrg-svn/sys/kern/vfs_conf.c (revision 65937)
137488Smckusick /*
263180Sbostic  * Copyright (c) 1989, 1993
363180Sbostic  *	The Regents of the University of California.  All rights reserved.
437488Smckusick  *
544456Sbostic  * %sccs.include.redist.c%
637488Smckusick  *
7*65937Spendry  *	@(#)vfs_conf.c	8.7 (Berkeley) 01/28/94
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;
2864407Sbostic struct vnode *rootvnode;
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 
8354989Sheideman #ifdef NULLFS
8454989Sheideman extern	struct vfsops null_vfsops;
8554989Sheideman #define NULL_VFSOPS	&null_vfsops
8654989Sheideman #else
8754989Sheideman #define NULL_VFSOPS	NULL
8854989Sheideman #endif
8954989Sheideman 
9054989Sheideman #ifdef UMAPFS
9154989Sheideman extern	struct vfsops umap_vfsops;
9254989Sheideman #define UMAP_VFSOPS	&umap_vfsops
9354989Sheideman #else
9454989Sheideman #define UMAP_VFSOPS	NULL
9554989Sheideman #endif
9654989Sheideman 
9755336Spendry #ifdef KERNFS
9855336Spendry extern	struct vfsops kernfs_vfsops;
9955336Spendry #define KERNFS_VFSOPS	&kernfs_vfsops
10055336Spendry #else
10155336Spendry #define KERNFS_VFSOPS	NULL
10255336Spendry #endif
10354989Sheideman 
10465147Spendry #ifdef PROCFS
10565147Spendry extern	struct vfsops procfs_vfsops;
10665147Spendry #define PROCFS_VFSOPS	&procfs_vfsops
10765147Spendry #else
10865147Spendry #define PROCFS_VFSOPS	NULL
10965147Spendry #endif
11055336Spendry 
11165669Shibler #ifdef AFS
11265669Shibler extern	struct vfsops afs_vfsops;
11365669Shibler #define AFS_VFSOPS	&afs_vfsops
11465669Shibler #else
11565669Shibler #define AFS_VFSOPS	NULL
11665669Shibler #endif
11765669Shibler 
11865897Shibler #ifdef CD9660
11965899Shibler extern	struct vfsops cd9660_vfsops;
12065899Shibler #define CD9660_VFSOPS	&cd9660_vfsops
12165669Shibler #else
12265899Shibler #define CD9660_VFSOPS	NULL
12365669Shibler #endif
12465669Shibler 
125*65937Spendry #ifdef UNION
126*65937Spendry extern	struct vfsops union_vfsops;
127*65937Spendry #define	UNION_VFSOPS	&union_vfsops
128*65937Spendry #else
129*65937Spendry #define	UNION_VFSOPS	NULL
130*65937Spendry #endif
131*65937Spendry 
13237488Smckusick struct vfsops *vfssw[] = {
13351456Sbostic 	NULL,			/* 0 = MOUNT_NONE */
13452414Storek 	UFS_VFSOPS,		/* 1 = MOUNT_UFS */
13552414Storek 	NFS_VFSOPS,		/* 2 = MOUNT_NFS */
13652414Storek 	MFS_VFSOPS,		/* 3 = MOUNT_MFS */
13751456Sbostic 	NULL,			/* 4 = MOUNT_PC */
13852414Storek 	LFS_VFSOPS,		/* 5 = MOUNT_LFS */
13953827Spendry 	LOFS_VFSOPS,		/* 6 = MOUNT_LOFS */
14053827Spendry 	FDESC_VFSOPS,		/* 7 = MOUNT_FDESC */
14153827Spendry 	PORTAL_VFSOPS,		/* 8 = MOUNT_PORTAL */
14254989Sheideman 	NULL_VFSOPS,		/* 9 = MOUNT_NULL */
14354989Sheideman 	UMAP_VFSOPS,		/* 10 = MOUNT_UMAP */
14455336Spendry 	KERNFS_VFSOPS,		/* 11 = MOUNT_KERNFS */
14565147Spendry 	PROCFS_VFSOPS,		/* 12 = MOUNT_PROCFS */
14665669Shibler 	AFS_VFSOPS,		/* 13 = MOUNT_AFS */
14765899Shibler 	CD9660_VFSOPS,		/* 14 = MOUNT_CD9660 */
148*65937Spendry 	UNION_VFSOPS,		/* 15 = MOUNT_UNION */
14954989Sheideman 	0
15037488Smckusick };
15153579Sheideman 
15253579Sheideman 
15353579Sheideman /*
15453579Sheideman  *
15554724Sbostic  * vfs_opv_descs enumerates the list of vnode classes, each with it's own
15654724Sbostic  * vnode operation vector.  It is consulted at system boot to build operation
15754724Sbostic  * vectors.  It is NULL terminated.
15853579Sheideman  *
15953579Sheideman  */
16053579Sheideman extern struct vnodeopv_desc ffs_vnodeop_opv_desc;
16153579Sheideman extern struct vnodeopv_desc ffs_specop_opv_desc;
16253579Sheideman extern struct vnodeopv_desc ffs_fifoop_opv_desc;
16353579Sheideman extern struct vnodeopv_desc lfs_vnodeop_opv_desc;
16453579Sheideman extern struct vnodeopv_desc lfs_specop_opv_desc;
16553579Sheideman extern struct vnodeopv_desc lfs_fifoop_opv_desc;
16653579Sheideman extern struct vnodeopv_desc mfs_vnodeop_opv_desc;
16753579Sheideman extern struct vnodeopv_desc dead_vnodeop_opv_desc;
16853579Sheideman extern struct vnodeopv_desc fifo_vnodeop_opv_desc;
16953579Sheideman extern struct vnodeopv_desc spec_vnodeop_opv_desc;
17053579Sheideman extern struct vnodeopv_desc nfsv2_vnodeop_opv_desc;
17153579Sheideman extern struct vnodeopv_desc spec_nfsv2nodeop_opv_desc;
17253579Sheideman extern struct vnodeopv_desc fifo_nfsv2nodeop_opv_desc;
17353943Spendry extern struct vnodeopv_desc lofs_vnodeop_opv_desc;
17453943Spendry extern struct vnodeopv_desc fdesc_vnodeop_opv_desc;
17553943Spendry extern struct vnodeopv_desc portal_vnodeop_opv_desc;
17654989Sheideman extern struct vnodeopv_desc null_vnodeop_opv_desc;
17754989Sheideman extern struct vnodeopv_desc umap_vnodeop_opv_desc;
17855336Spendry extern struct vnodeopv_desc kernfs_vnodeop_opv_desc;
17965147Spendry extern struct vnodeopv_desc procfs_vnodeop_opv_desc;
18065899Shibler extern struct vnodeopv_desc cd9660_vnodeop_opv_desc;
18165899Shibler extern struct vnodeopv_desc cd9660_specop_opv_desc;
18265899Shibler extern struct vnodeopv_desc cd9660_fifoop_opv_desc;
183*65937Spendry extern struct vnodeopv_desc union_vnodeop_opv_desc;
18453579Sheideman 
18553579Sheideman struct vnodeopv_desc *vfs_opv_descs[] = {
18653579Sheideman 	&ffs_vnodeop_opv_desc,
18753579Sheideman 	&ffs_specop_opv_desc,
18854343Smckusick #ifdef FIFO
18953579Sheideman 	&ffs_fifoop_opv_desc,
19054343Smckusick #endif
19153760Smckusick 	&dead_vnodeop_opv_desc,
19254343Smckusick #ifdef FIFO
19353760Smckusick 	&fifo_vnodeop_opv_desc,
19454343Smckusick #endif
19553760Smckusick 	&spec_vnodeop_opv_desc,
19653760Smckusick #ifdef LFS
19753579Sheideman 	&lfs_vnodeop_opv_desc,
19853579Sheideman 	&lfs_specop_opv_desc,
19954343Smckusick #ifdef FIFO
20053579Sheideman 	&lfs_fifoop_opv_desc,
20153760Smckusick #endif
20254343Smckusick #endif
20353760Smckusick #ifdef MFS
20453579Sheideman 	&mfs_vnodeop_opv_desc,
20553760Smckusick #endif
20653760Smckusick #ifdef NFS
20753579Sheideman 	&nfsv2_vnodeop_opv_desc,
20853579Sheideman 	&spec_nfsv2nodeop_opv_desc,
20954343Smckusick #ifdef FIFO
21053579Sheideman 	&fifo_nfsv2nodeop_opv_desc,
21153760Smckusick #endif
21254343Smckusick #endif
21353943Spendry #ifdef LOFS
21453943Spendry 	&lofs_vnodeop_opv_desc,
21553943Spendry #endif
21653943Spendry #ifdef FDESC
21753943Spendry 	&fdesc_vnodeop_opv_desc,
21853943Spendry #endif
21953943Spendry #ifdef PORTAL
22053943Spendry 	&portal_vnodeop_opv_desc,
22153943Spendry #endif
22254989Sheideman #ifdef NULLFS
22354989Sheideman 	&null_vnodeop_opv_desc,
22454989Sheideman #endif
22554989Sheideman #ifdef UMAPFS
22654989Sheideman 	&umap_vnodeop_opv_desc,
22754989Sheideman #endif
22855336Spendry #ifdef KERNFS
22955336Spendry 	&kernfs_vnodeop_opv_desc,
23055336Spendry #endif
23165147Spendry #ifdef PROCFS
23265147Spendry 	&procfs_vnodeop_opv_desc,
23365147Spendry #endif
23465897Shibler #ifdef CD9660
23565899Shibler 	&cd9660_vnodeop_opv_desc,
23665899Shibler 	&cd9660_specop_opv_desc,
23765669Shibler #ifdef FIFO
23865899Shibler 	&cd9660_fifoop_opv_desc,
23965669Shibler #endif
24065669Shibler #endif
241*65937Spendry #ifdef UNION
242*65937Spendry 	&union_vnodeop_opv_desc,
243*65937Spendry #endif
24453579Sheideman 	NULL
24553579Sheideman };
246