NetBSD/sys/kern/vfs_conf.c

155 lines
4.0 KiB
C
Raw Normal View History

1993-03-21 12:45:37 +03:00
/*
* Copyright (c) 1989 The Regents of the University of California.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* This product includes software developed by the University of
* California, Berkeley and its contributors.
* 4. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* from: @(#)vfs_conf.c 7.3 (Berkeley) 6/28/90
* $Id: vfs_conf.c,v 1.17 1994/04/14 04:05:29 cgd Exp $
1993-03-21 12:45:37 +03:00
*/
1993-12-18 07:21:37 +03:00
#include <sys/param.h>
#include <sys/mount.h>
1993-03-21 12:45:37 +03:00
/*
* These define the root filesystem and device.
*/
struct mount *rootfs;
struct vnode *rootdir;
/*
* Set up the filesystem operations for vnodes.
* The types are defined in mount.h.
*/
1994-03-10 00:21:37 +03:00
#ifdef FFS
1993-03-21 12:45:37 +03:00
extern struct vfsops ufs_vfsops;
1994-03-10 00:21:37 +03:00
#endif
1993-03-21 12:45:37 +03:00
1993-04-11 00:18:57 +04:00
#ifdef NFSCLIENT
1993-03-21 12:45:37 +03:00
extern struct vfsops nfs_vfsops;
#endif
#ifdef MFS
extern struct vfsops mfs_vfsops;
#endif
#ifdef MSDOSFS
brought in fixed/renamed/matching MS-DOS FS code, from Jeff Polk <polk@bsdi.com>. His notes are as follows: ------------------------------------------------------------------------------ July 22, 1993 - Changed name of entire package from PCFS to MSDOSFS - Fixed bugs: root directory size in clusters instead of bytes growing directory didn't update in-core size link, symlink, mknod didn't free locked parent (deadlock) lookup returned real error on create and rename instead of EJUSTRETURN rename changed `.' entry in child instead of name entry in parent rename removed `.' entry in child instead of removing entry in parent when moving a directory from one dir to another createde() left new node locked when write of parent failed (deadlock) removede() decremented refcount even on error (rmdir's which failed due to write errors left in-core cache entries inconsistent) changed validation for filesystem to not check for the boot signature since some disks (e.g., mtools) aren't bootable directories are always show current time as modify time (needed for NFS export since DOS never updates dir mod times -- ctime is true create time). - Added support for cookies changes to the readdir() vnode interface (#ifdef __bsdi__) - Punted on the whole problem of inode generation numbers. This means that there's a chance of using a stale file handle to access a new file, but it doesn't appear to be the common case, and I don't see how to generate reasonable generation numbers without changing something on the disk (which is the way the SVR4 filesystem survival kit guys did it). I don't think it would be very safe to change the on-disk format. Jeff Polk (polk@BSDI.COM) ------------------------------------------------------------------------------
1993-08-13 15:35:13 +04:00
extern struct vfsops msdosfs_vfsops;
#endif
1993-03-21 12:45:37 +03:00
#ifdef ISOFS
extern struct vfsops isofs_vfsops;
#endif
#ifdef FDESC
extern struct vfsops fdesc_vfsops;
#endif
#ifdef KERNFS
extern struct vfsops kernfs_vfsops;
#endif
1993-08-24 16:56:22 +04:00
#ifdef PROCFS
extern struct vfsops procfs_vfsops;
#endif
1993-12-22 16:43:18 +03:00
#ifdef LOFS
extern struct vfsops lofs_vfsops;
#endif
#ifdef PORTAL
extern struct vfsops portal_vfsops;
#endif
/*
* XXX ORDERING MATTERS, for COMPAT_09. when that goes away,
* empty slots can go away.
*/
1993-03-21 12:45:37 +03:00
struct vfsops *vfssw[] = {
(struct vfsops *)0, /* 0 = MOUNT_NONE */
1994-03-10 00:21:37 +03:00
#ifdef FFS
1993-03-21 12:45:37 +03:00
&ufs_vfsops, /* 1 = MOUNT_UFS */
1994-03-10 00:21:37 +03:00
#else
(struct vfsops *)0,
#endif
1993-04-11 00:18:57 +04:00
#ifdef NFSCLIENT
1993-03-21 12:45:37 +03:00
&nfs_vfsops, /* 2 = MOUNT_NFS */
#else
(struct vfsops *)0,
#endif
#ifdef MFS
&mfs_vfsops, /* 3 = MOUNT_MFS */
#else
(struct vfsops *)0,
#endif
#ifdef MSDOSFS
brought in fixed/renamed/matching MS-DOS FS code, from Jeff Polk <polk@bsdi.com>. His notes are as follows: ------------------------------------------------------------------------------ July 22, 1993 - Changed name of entire package from PCFS to MSDOSFS - Fixed bugs: root directory size in clusters instead of bytes growing directory didn't update in-core size link, symlink, mknod didn't free locked parent (deadlock) lookup returned real error on create and rename instead of EJUSTRETURN rename changed `.' entry in child instead of name entry in parent rename removed `.' entry in child instead of removing entry in parent when moving a directory from one dir to another createde() left new node locked when write of parent failed (deadlock) removede() decremented refcount even on error (rmdir's which failed due to write errors left in-core cache entries inconsistent) changed validation for filesystem to not check for the boot signature since some disks (e.g., mtools) aren't bootable directories are always show current time as modify time (needed for NFS export since DOS never updates dir mod times -- ctime is true create time). - Added support for cookies changes to the readdir() vnode interface (#ifdef __bsdi__) - Punted on the whole problem of inode generation numbers. This means that there's a chance of using a stale file handle to access a new file, but it doesn't appear to be the common case, and I don't see how to generate reasonable generation numbers without changing something on the disk (which is the way the SVR4 filesystem survival kit guys did it). I don't think it would be very safe to change the on-disk format. Jeff Polk (polk@BSDI.COM) ------------------------------------------------------------------------------
1993-08-13 15:35:13 +04:00
&msdosfs_vfsops, /* 4 = MOUNT_MSDOS */
#else
(struct vfsops *)0,
#endif
1993-03-21 12:45:37 +03:00
#ifdef ISOFS
&isofs_vfsops, /* 5 = MOUNT_ISOFS */
#else
(struct vfsops *)0,
#endif
#ifdef FDESC
&fdesc_vfsops, /* 6 = MOUNT_FDESC */
#else
(struct vfsops *)0,
#endif
#ifdef KERNFS
1993-03-27 02:40:42 +03:00
&kernfs_vfsops, /* 7 = MOUNT_KERNFS */
#else
(struct vfsops *)0,
#endif
(struct vfsops *)0, /* 8 = XXX CURRENTLY EMPTY */
(struct vfsops *)0, /* 9 = XXX CURRENTLY EMPTY */
1993-08-24 16:56:22 +04:00
#ifdef PROCFS
&procfs_vfsops, /* 10 = MOUNT_PROCFS */
#else
(struct vfsops *)0,
#endif
1993-12-22 16:43:18 +03:00
#ifdef LOFS
&lofs_vfsops, /* 11 = MOUNT_LOFS */
#else
(struct vfsops *)0,
#endif
#ifdef PORTAL
&portal_vfsops, /* 12 = MOUNT_PORTAL */
#else
(struct vfsops *)0,
#endif
#ifdef LKM /* for LKM's. add new FS's before these */
(struct vfsops *)0,
(struct vfsops *)0,
(struct vfsops *)0,
#endif
1993-03-21 12:45:37 +03:00
};
int nvfssw = sizeof(vfssw) / sizeof(struct vfsops *);