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