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*68561Smckusick * @(#)vfs_conf.c 8.9 (Berkeley) 03/21/95 837488Smckusick */ 937488Smckusick 1051456Sbostic #include <sys/param.h> 1151456Sbostic #include <sys/mount.h> 1253494Sheideman #include <sys/vnode.h> 1351519Sbostic 1451519Sbostic #ifdef FFS 15*68561Smckusick #include <ufs/ufs/dinode.h> 1651456Sbostic #include <ufs/ffs/ffs_extern.h> 1737488Smckusick 1837488Smckusick /* 1937488Smckusick * This specifies the filesystem used to mount the root. 2037488Smckusick * This specification should be done by /etc/config. 2137488Smckusick */ 2251456Sbostic int (*mountroot)() = ffs_mountroot; 2351519Sbostic #endif 2437488Smckusick 2537488Smckusick /* 2637488Smckusick * These define the root filesystem and device. 2737488Smckusick */ 2837488Smckusick struct mount *rootfs; 2964407Sbostic struct vnode *rootvnode; 3037488Smckusick 3137488Smckusick /* 3237488Smckusick * Set up the filesystem operations for vnodes. 3337488Smckusick * The types are defined in mount.h. 3437488Smckusick */ 3551519Sbostic #ifdef FFS 3637488Smckusick extern struct vfsops ufs_vfsops; 3752414Storek #define UFS_VFSOPS &ufs_vfsops 3852414Storek #else 3952414Storek #define UFS_VFSOPS NULL 4051519Sbostic #endif 4137488Smckusick 4251456Sbostic #ifdef LFS 4351456Sbostic extern struct vfsops lfs_vfsops; 4452414Storek #define LFS_VFSOPS &lfs_vfsops 4552414Storek #else 4652414Storek #define LFS_VFSOPS NULL 4737488Smckusick #endif 4837488Smckusick 4939046Smckusick #ifdef MFS 5039046Smckusick extern struct vfsops mfs_vfsops; 5152414Storek #define MFS_VFSOPS &mfs_vfsops 5252414Storek #else 5352414Storek #define MFS_VFSOPS NULL 5439046Smckusick #endif 5539046Smckusick 5651456Sbostic #ifdef NFS 5751456Sbostic extern struct vfsops nfs_vfsops; 5852414Storek #define NFS_VFSOPS &nfs_vfsops 5952414Storek #else 6052414Storek #define NFS_VFSOPS NULL 6151456Sbostic #endif 6251456Sbostic 6353827Spendry #ifdef FDESC 6453827Spendry extern struct vfsops fdesc_vfsops; 6553827Spendry #define FDESC_VFSOPS &fdesc_vfsops 6653827Spendry #else 6753827Spendry #define FDESC_VFSOPS NULL 6853827Spendry #endif 6953827Spendry 7053827Spendry #ifdef PORTAL 7153827Spendry extern struct vfsops portal_vfsops; 7253827Spendry #define PORTAL_VFSOPS &portal_vfsops 7353827Spendry #else 7453827Spendry #define PORTAL_VFSOPS NULL 7553827Spendry #endif 7653827Spendry 7754989Sheideman #ifdef NULLFS 7854989Sheideman extern struct vfsops null_vfsops; 7954989Sheideman #define NULL_VFSOPS &null_vfsops 8054989Sheideman #else 8154989Sheideman #define NULL_VFSOPS NULL 8254989Sheideman #endif 8354989Sheideman 8454989Sheideman #ifdef UMAPFS 8554989Sheideman extern struct vfsops umap_vfsops; 8654989Sheideman #define UMAP_VFSOPS &umap_vfsops 8754989Sheideman #else 8854989Sheideman #define UMAP_VFSOPS NULL 8954989Sheideman #endif 9054989Sheideman 9155336Spendry #ifdef KERNFS 9255336Spendry extern struct vfsops kernfs_vfsops; 9355336Spendry #define KERNFS_VFSOPS &kernfs_vfsops 9455336Spendry #else 9555336Spendry #define KERNFS_VFSOPS NULL 9655336Spendry #endif 9754989Sheideman 9865147Spendry #ifdef PROCFS 9965147Spendry extern struct vfsops procfs_vfsops; 10065147Spendry #define PROCFS_VFSOPS &procfs_vfsops 10165147Spendry #else 10265147Spendry #define PROCFS_VFSOPS NULL 10365147Spendry #endif 10455336Spendry 10565669Shibler #ifdef AFS 10665669Shibler extern struct vfsops afs_vfsops; 10765669Shibler #define AFS_VFSOPS &afs_vfsops 10865669Shibler #else 10965669Shibler #define AFS_VFSOPS NULL 11065669Shibler #endif 11165669Shibler 11265897Shibler #ifdef CD9660 11365899Shibler extern struct vfsops cd9660_vfsops; 11465899Shibler #define CD9660_VFSOPS &cd9660_vfsops 11565669Shibler #else 11665899Shibler #define CD9660_VFSOPS NULL 11765669Shibler #endif 11865669Shibler 11965937Spendry #ifdef UNION 12065937Spendry extern struct vfsops union_vfsops; 12165937Spendry #define UNION_VFSOPS &union_vfsops 12265937Spendry #else 12365937Spendry #define UNION_VFSOPS NULL 12465937Spendry #endif 12565937Spendry 12637488Smckusick struct vfsops *vfssw[] = { 12751456Sbostic NULL, /* 0 = MOUNT_NONE */ 12852414Storek UFS_VFSOPS, /* 1 = MOUNT_UFS */ 12952414Storek NFS_VFSOPS, /* 2 = MOUNT_NFS */ 13052414Storek MFS_VFSOPS, /* 3 = MOUNT_MFS */ 13151456Sbostic NULL, /* 4 = MOUNT_PC */ 13252414Storek LFS_VFSOPS, /* 5 = MOUNT_LFS */ 13366526Spendry NULL, /* 6 = MOUNT_LOFS */ 13453827Spendry FDESC_VFSOPS, /* 7 = MOUNT_FDESC */ 13553827Spendry PORTAL_VFSOPS, /* 8 = MOUNT_PORTAL */ 13654989Sheideman NULL_VFSOPS, /* 9 = MOUNT_NULL */ 13754989Sheideman UMAP_VFSOPS, /* 10 = MOUNT_UMAP */ 13855336Spendry KERNFS_VFSOPS, /* 11 = MOUNT_KERNFS */ 13965147Spendry PROCFS_VFSOPS, /* 12 = MOUNT_PROCFS */ 14065669Shibler AFS_VFSOPS, /* 13 = MOUNT_AFS */ 14165899Shibler CD9660_VFSOPS, /* 14 = MOUNT_CD9660 */ 14265937Spendry UNION_VFSOPS, /* 15 = MOUNT_UNION */ 14354989Sheideman 0 14437488Smckusick }; 14553579Sheideman 14653579Sheideman 14753579Sheideman /* 14853579Sheideman * 14954724Sbostic * vfs_opv_descs enumerates the list of vnode classes, each with it's own 15054724Sbostic * vnode operation vector. It is consulted at system boot to build operation 15154724Sbostic * vectors. It is NULL terminated. 15253579Sheideman * 15353579Sheideman */ 15453579Sheideman extern struct vnodeopv_desc ffs_vnodeop_opv_desc; 15553579Sheideman extern struct vnodeopv_desc ffs_specop_opv_desc; 15653579Sheideman extern struct vnodeopv_desc ffs_fifoop_opv_desc; 15753579Sheideman extern struct vnodeopv_desc lfs_vnodeop_opv_desc; 15853579Sheideman extern struct vnodeopv_desc lfs_specop_opv_desc; 15953579Sheideman extern struct vnodeopv_desc lfs_fifoop_opv_desc; 16053579Sheideman extern struct vnodeopv_desc mfs_vnodeop_opv_desc; 16153579Sheideman extern struct vnodeopv_desc dead_vnodeop_opv_desc; 16253579Sheideman extern struct vnodeopv_desc fifo_vnodeop_opv_desc; 16353579Sheideman extern struct vnodeopv_desc spec_vnodeop_opv_desc; 16453579Sheideman extern struct vnodeopv_desc nfsv2_vnodeop_opv_desc; 16553579Sheideman extern struct vnodeopv_desc spec_nfsv2nodeop_opv_desc; 16653579Sheideman extern struct vnodeopv_desc fifo_nfsv2nodeop_opv_desc; 16753943Spendry extern struct vnodeopv_desc fdesc_vnodeop_opv_desc; 16853943Spendry extern struct vnodeopv_desc portal_vnodeop_opv_desc; 16954989Sheideman extern struct vnodeopv_desc null_vnodeop_opv_desc; 17054989Sheideman extern struct vnodeopv_desc umap_vnodeop_opv_desc; 17155336Spendry extern struct vnodeopv_desc kernfs_vnodeop_opv_desc; 17265147Spendry extern struct vnodeopv_desc procfs_vnodeop_opv_desc; 17365899Shibler extern struct vnodeopv_desc cd9660_vnodeop_opv_desc; 17465899Shibler extern struct vnodeopv_desc cd9660_specop_opv_desc; 17565899Shibler extern struct vnodeopv_desc cd9660_fifoop_opv_desc; 17665937Spendry extern struct vnodeopv_desc union_vnodeop_opv_desc; 17753579Sheideman 17853579Sheideman struct vnodeopv_desc *vfs_opv_descs[] = { 17953579Sheideman &ffs_vnodeop_opv_desc, 18053579Sheideman &ffs_specop_opv_desc, 18154343Smckusick #ifdef FIFO 18253579Sheideman &ffs_fifoop_opv_desc, 18354343Smckusick #endif 18453760Smckusick &dead_vnodeop_opv_desc, 18554343Smckusick #ifdef FIFO 18653760Smckusick &fifo_vnodeop_opv_desc, 18754343Smckusick #endif 18853760Smckusick &spec_vnodeop_opv_desc, 18953760Smckusick #ifdef LFS 19053579Sheideman &lfs_vnodeop_opv_desc, 19153579Sheideman &lfs_specop_opv_desc, 19254343Smckusick #ifdef FIFO 19353579Sheideman &lfs_fifoop_opv_desc, 19453760Smckusick #endif 19554343Smckusick #endif 19653760Smckusick #ifdef MFS 19753579Sheideman &mfs_vnodeop_opv_desc, 19853760Smckusick #endif 19953760Smckusick #ifdef NFS 20053579Sheideman &nfsv2_vnodeop_opv_desc, 20153579Sheideman &spec_nfsv2nodeop_opv_desc, 20254343Smckusick #ifdef FIFO 20353579Sheideman &fifo_nfsv2nodeop_opv_desc, 20453760Smckusick #endif 20554343Smckusick #endif 20653943Spendry #ifdef FDESC 20753943Spendry &fdesc_vnodeop_opv_desc, 20853943Spendry #endif 20953943Spendry #ifdef PORTAL 21053943Spendry &portal_vnodeop_opv_desc, 21153943Spendry #endif 21254989Sheideman #ifdef NULLFS 21354989Sheideman &null_vnodeop_opv_desc, 21454989Sheideman #endif 21554989Sheideman #ifdef UMAPFS 21654989Sheideman &umap_vnodeop_opv_desc, 21754989Sheideman #endif 21855336Spendry #ifdef KERNFS 21955336Spendry &kernfs_vnodeop_opv_desc, 22055336Spendry #endif 22165147Spendry #ifdef PROCFS 22265147Spendry &procfs_vnodeop_opv_desc, 22365147Spendry #endif 22465897Shibler #ifdef CD9660 22565899Shibler &cd9660_vnodeop_opv_desc, 22665899Shibler &cd9660_specop_opv_desc, 22765669Shibler #ifdef FIFO 22865899Shibler &cd9660_fifoop_opv_desc, 22965669Shibler #endif 23065669Shibler #endif 23165937Spendry #ifdef UNION 23265937Spendry &union_vnodeop_opv_desc, 23365937Spendry #endif 23453579Sheideman NULL 23553579Sheideman }; 236