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