1 /* 2 * Copyright (c) 1989, 1993 3 * The Regents of the University of California. All rights reserved. 4 * 5 * %sccs.include.redist.c% 6 * 7 * @(#)vfs_conf.c 8.9 (Berkeley) 03/21/95 8 */ 9 10 #include <sys/param.h> 11 #include <sys/mount.h> 12 #include <sys/vnode.h> 13 14 #ifdef FFS 15 #include <ufs/ufs/dinode.h> 16 #include <ufs/ffs/ffs_extern.h> 17 18 /* 19 * This specifies the filesystem used to mount the root. 20 * This specification should be done by /etc/config. 21 */ 22 int (*mountroot)() = ffs_mountroot; 23 #endif 24 25 /* 26 * These define the root filesystem and device. 27 */ 28 struct mount *rootfs; 29 struct vnode *rootvnode; 30 31 /* 32 * Set up the filesystem operations for vnodes. 33 * The types are defined in mount.h. 34 */ 35 #ifdef FFS 36 extern struct vfsops ufs_vfsops; 37 #define UFS_VFSOPS &ufs_vfsops 38 #else 39 #define UFS_VFSOPS NULL 40 #endif 41 42 #ifdef LFS 43 extern struct vfsops lfs_vfsops; 44 #define LFS_VFSOPS &lfs_vfsops 45 #else 46 #define LFS_VFSOPS NULL 47 #endif 48 49 #ifdef MFS 50 extern struct vfsops mfs_vfsops; 51 #define MFS_VFSOPS &mfs_vfsops 52 #else 53 #define MFS_VFSOPS NULL 54 #endif 55 56 #ifdef NFS 57 extern struct vfsops nfs_vfsops; 58 #define NFS_VFSOPS &nfs_vfsops 59 #else 60 #define NFS_VFSOPS NULL 61 #endif 62 63 #ifdef FDESC 64 extern struct vfsops fdesc_vfsops; 65 #define FDESC_VFSOPS &fdesc_vfsops 66 #else 67 #define FDESC_VFSOPS NULL 68 #endif 69 70 #ifdef PORTAL 71 extern struct vfsops portal_vfsops; 72 #define PORTAL_VFSOPS &portal_vfsops 73 #else 74 #define PORTAL_VFSOPS NULL 75 #endif 76 77 #ifdef NULLFS 78 extern struct vfsops null_vfsops; 79 #define NULL_VFSOPS &null_vfsops 80 #else 81 #define NULL_VFSOPS NULL 82 #endif 83 84 #ifdef UMAPFS 85 extern struct vfsops umap_vfsops; 86 #define UMAP_VFSOPS &umap_vfsops 87 #else 88 #define UMAP_VFSOPS NULL 89 #endif 90 91 #ifdef KERNFS 92 extern struct vfsops kernfs_vfsops; 93 #define KERNFS_VFSOPS &kernfs_vfsops 94 #else 95 #define KERNFS_VFSOPS NULL 96 #endif 97 98 #ifdef PROCFS 99 extern struct vfsops procfs_vfsops; 100 #define PROCFS_VFSOPS &procfs_vfsops 101 #else 102 #define PROCFS_VFSOPS NULL 103 #endif 104 105 #ifdef AFS 106 extern struct vfsops afs_vfsops; 107 #define AFS_VFSOPS &afs_vfsops 108 #else 109 #define AFS_VFSOPS NULL 110 #endif 111 112 #ifdef CD9660 113 extern struct vfsops cd9660_vfsops; 114 #define CD9660_VFSOPS &cd9660_vfsops 115 #else 116 #define CD9660_VFSOPS NULL 117 #endif 118 119 #ifdef UNION 120 extern struct vfsops union_vfsops; 121 #define UNION_VFSOPS &union_vfsops 122 #else 123 #define UNION_VFSOPS NULL 124 #endif 125 126 struct vfsops *vfssw[] = { 127 NULL, /* 0 = MOUNT_NONE */ 128 UFS_VFSOPS, /* 1 = MOUNT_UFS */ 129 NFS_VFSOPS, /* 2 = MOUNT_NFS */ 130 MFS_VFSOPS, /* 3 = MOUNT_MFS */ 131 NULL, /* 4 = MOUNT_PC */ 132 LFS_VFSOPS, /* 5 = MOUNT_LFS */ 133 NULL, /* 6 = MOUNT_LOFS */ 134 FDESC_VFSOPS, /* 7 = MOUNT_FDESC */ 135 PORTAL_VFSOPS, /* 8 = MOUNT_PORTAL */ 136 NULL_VFSOPS, /* 9 = MOUNT_NULL */ 137 UMAP_VFSOPS, /* 10 = MOUNT_UMAP */ 138 KERNFS_VFSOPS, /* 11 = MOUNT_KERNFS */ 139 PROCFS_VFSOPS, /* 12 = MOUNT_PROCFS */ 140 AFS_VFSOPS, /* 13 = MOUNT_AFS */ 141 CD9660_VFSOPS, /* 14 = MOUNT_CD9660 */ 142 UNION_VFSOPS, /* 15 = MOUNT_UNION */ 143 0 144 }; 145 146 147 /* 148 * 149 * vfs_opv_descs enumerates the list of vnode classes, each with it's own 150 * vnode operation vector. It is consulted at system boot to build operation 151 * vectors. It is NULL terminated. 152 * 153 */ 154 extern struct vnodeopv_desc ffs_vnodeop_opv_desc; 155 extern struct vnodeopv_desc ffs_specop_opv_desc; 156 extern struct vnodeopv_desc ffs_fifoop_opv_desc; 157 extern struct vnodeopv_desc lfs_vnodeop_opv_desc; 158 extern struct vnodeopv_desc lfs_specop_opv_desc; 159 extern struct vnodeopv_desc lfs_fifoop_opv_desc; 160 extern struct vnodeopv_desc mfs_vnodeop_opv_desc; 161 extern struct vnodeopv_desc dead_vnodeop_opv_desc; 162 extern struct vnodeopv_desc fifo_vnodeop_opv_desc; 163 extern struct vnodeopv_desc spec_vnodeop_opv_desc; 164 extern struct vnodeopv_desc nfsv2_vnodeop_opv_desc; 165 extern struct vnodeopv_desc spec_nfsv2nodeop_opv_desc; 166 extern struct vnodeopv_desc fifo_nfsv2nodeop_opv_desc; 167 extern struct vnodeopv_desc fdesc_vnodeop_opv_desc; 168 extern struct vnodeopv_desc portal_vnodeop_opv_desc; 169 extern struct vnodeopv_desc null_vnodeop_opv_desc; 170 extern struct vnodeopv_desc umap_vnodeop_opv_desc; 171 extern struct vnodeopv_desc kernfs_vnodeop_opv_desc; 172 extern struct vnodeopv_desc procfs_vnodeop_opv_desc; 173 extern struct vnodeopv_desc cd9660_vnodeop_opv_desc; 174 extern struct vnodeopv_desc cd9660_specop_opv_desc; 175 extern struct vnodeopv_desc cd9660_fifoop_opv_desc; 176 extern struct vnodeopv_desc union_vnodeop_opv_desc; 177 178 struct vnodeopv_desc *vfs_opv_descs[] = { 179 &ffs_vnodeop_opv_desc, 180 &ffs_specop_opv_desc, 181 #ifdef FIFO 182 &ffs_fifoop_opv_desc, 183 #endif 184 &dead_vnodeop_opv_desc, 185 #ifdef FIFO 186 &fifo_vnodeop_opv_desc, 187 #endif 188 &spec_vnodeop_opv_desc, 189 #ifdef LFS 190 &lfs_vnodeop_opv_desc, 191 &lfs_specop_opv_desc, 192 #ifdef FIFO 193 &lfs_fifoop_opv_desc, 194 #endif 195 #endif 196 #ifdef MFS 197 &mfs_vnodeop_opv_desc, 198 #endif 199 #ifdef NFS 200 &nfsv2_vnodeop_opv_desc, 201 &spec_nfsv2nodeop_opv_desc, 202 #ifdef FIFO 203 &fifo_nfsv2nodeop_opv_desc, 204 #endif 205 #endif 206 #ifdef FDESC 207 &fdesc_vnodeop_opv_desc, 208 #endif 209 #ifdef PORTAL 210 &portal_vnodeop_opv_desc, 211 #endif 212 #ifdef NULLFS 213 &null_vnodeop_opv_desc, 214 #endif 215 #ifdef UMAPFS 216 &umap_vnodeop_opv_desc, 217 #endif 218 #ifdef KERNFS 219 &kernfs_vnodeop_opv_desc, 220 #endif 221 #ifdef PROCFS 222 &procfs_vnodeop_opv_desc, 223 #endif 224 #ifdef CD9660 225 &cd9660_vnodeop_opv_desc, 226 &cd9660_specop_opv_desc, 227 #ifdef FIFO 228 &cd9660_fifoop_opv_desc, 229 #endif 230 #endif 231 #ifdef UNION 232 &union_vnodeop_opv_desc, 233 #endif 234 NULL 235 }; 236