kernel: Remove fdescfs. devfs handles this.
authorSascha Wildner <saw@online.de>
Sun, 15 Mar 2015 09:48:43 +0000 (10:48 +0100)
committerSascha Wildner <saw@online.de>
Sun, 15 Mar 2015 09:48:43 +0000 (10:48 +0100)
24 files changed:
Makefile_upgrade.inc
etc/defaults/rc.conf
etc/rc.d/jail
sbin/mount/mount.8
sbin/mount_std/Makefile
sbin/mount_std/mount_std.8
sbin/mount_ufs/mount_ufs.8
share/man/man5/Makefile
share/man/man5/fdesc.5 [deleted file]
share/man/man5/rc.conf.5
sys/boot/dloader/loader-bootp.conf
sys/boot/dloader/loader.conf
sys/conf/files
sys/conf/options
sys/config/LINT
sys/config/LINT64
sys/sys/vfscache.h
sys/vfs/Makefile
sys/vfs/fdesc/Makefile [deleted file]
sys/vfs/fdesc/fdesc.h [deleted file]
sys/vfs/fdesc/fdesc_vfsops.c [deleted file]
sys/vfs/fdesc/fdesc_vnops.c [deleted file]
test/stress/stress2/misc/all.sh
test/stress/stress2/misc/fdescfs.sh [deleted file]

index d4ca7a0..2906b2e 100644 (file)
@@ -2884,6 +2884,12 @@ TO_REMOVE+=/usr/share/man/man4/iwl.4.gz
 TO_REMOVE+=/boot/kernel/if_rtw.ko
 TO_REMOVE+=/usr/share/man/cat4/rtw.4.gz
 TO_REMOVE+=/usr/share/man/man4/rtw.4.gz
+TO_REMOVE+=/boot/kernel/fdesc.ko
+TO_REMOVE+=/sbin/mount_fdesc
+TO_REMOVE+=/usr/share/man/cat5/fdesc.5.gz
+TO_REMOVE+=/usr/share/man/man5/fdesc.5.gz
+TO_REMOVE+=/usr/share/man/cat8/mount_fdesc.8.gz
+TO_REMOVE+=/usr/share/man/man8/mount_fdesc.8.gz
 
 .if ${MACHINE_ARCH} == "x86_64"
 TO_REMOVE+=/usr/sbin/stlstats
index 112b8e2..fefeaba 100644 (file)
@@ -407,7 +407,6 @@ jail_sysvipc_allow="NO"     # Allow SystemV IPC use from within a jail
 #jail_example_interface=""                     # Interface to create the IP alias on
 #jail_example_exec_start="/bin/sh /etc/rc"             # command to execute in jail for starting
 #jail_example_exec_stop="/bin/sh /etc/rc.shutdown"     # command to execute in jail for stopping
-#jail_example_fdesc_enable="NO"                        # mount fdesc in the jail
 #jail_example_procfs_enable="NO"               # mount procfs in jail
 #jail_example_devfs_enable="NO"                        # mount devfs in jail
 #jail_example_mount_enable="NO"                        # mount/umount jail's fs
index c52d8cb..789d829 100644 (file)
@@ -1,7 +1,6 @@
 #!/bin/sh
 #
 # $FreeBSD: src/etc/rc.d/jail,v 1.23.2.9 2007/01/11 18:16:58 simon Exp $
-# $DragonFly: src/etc/rc.d/jail,v 1.5 2007/08/10 21:01:05 swildner Exp $
 #
 
 # PROVIDE: jail
@@ -29,7 +28,6 @@ init_variables()
 
        eval _rootdir=\"\$jail_${_j}_rootdir\"
        _devdir="${_rootdir}/dev"
-       _fdescdir="${_rootdir}/dev/fd"
        _procdir="${_rootdir}/proc"
        eval _hostname=\"\$jail_${_j}_hostname\"
        eval _ip=\"\$jail_${_j}_ip\"
@@ -53,8 +51,6 @@ init_variables()
 
        eval _devfs=\"\${jail_${_j}_devfs_enable:-${jail_devfs_enable}}\"
        [ -z "${_devfs}" ] && _devfs="NO"
-       eval _fdesc=\"\${jail_${_j}_fdesc_enable:-${jail_fdesc_enable}}\"
-       [ -z "${_fdesc}" ] && _fdesc="NO"
        eval _procfs=\"\${jail_${_j}_procfs_enable:-${jail_procfs_enable}}\"
        [ -z "${_procfs}" ] && _procfs="NO"
 
@@ -71,7 +67,6 @@ init_variables()
        # Debugging aid
        #
        debug "$_j devfs enable: $_devfs"
-       debug "$_j fdesc enable: $_fdesc"
        debug "$_j procfs enable: $_procfs"
        debug "$_j mount enable: $_mount"
        debug "$_j hostname: $_hostname"
@@ -79,7 +74,6 @@ init_variables()
        debug "$_j interface: $_interface"
        debug "$_j root: $_rootdir"
        debug "$_j devdir: $_devdir"
-       debug "$_j fdescdir: $_fdescdir"
        debug "$_j procdir: $_procdir"
        debug "$_j fstab: $_fstab"
        debug "$_j exec start: $_exec_start"
@@ -185,11 +179,6 @@ jail_umount_fs()
 {
        local _device _mountpt _rest
 
-       if checkyesno _fdesc; then
-               if [ -d "${_fdescdir}" ] ; then
-                       secure_umount ${_fdescdir}
-               fi
-       fi
        if checkyesno _devfs; then
            if [ -d "${_devdir}" ] ; then
                secure_umount ${_devdir}
@@ -286,14 +275,6 @@ jail_start()
                                devfs_mount_jail "${_devdir}"
                        fi
                fi
-               if checkyesno _fdesc; then
-                       if is_symlinked_mountpoint ${_fdescdir}; then
-                               warn "${_fdescdir} has symlink as parent, not mounting"
-                       else
-                               info "Mounting fdesc on ${_fdescdir}"
-                               mount -t fdesc fdesc "${_fdescdir}"
-                       fi
-               fi
                if checkyesno _procfs; then
                        if is_symlinked_mountpoint ${_procdir}; then
                                warn "${_procdir} has symlink as parent, not mounting"
index 36b46df..3bacd61 100644 (file)
@@ -407,7 +407,6 @@ have permission to load the module.
 .Xr mount_cd9660 8 ,
 .Xr mount_devfs 8 ,
 .Xr mount_ext2fs 8 ,
-.Xr mount_fdesc 8 ,
 .Xr mount_hammer 8 ,
 .Xr mount_hpfs 8 ,
 .Xr mount_linprocfs 8 ,
index f77d81f..230cdc0 100644 (file)
@@ -3,15 +3,13 @@
 
 PROG=  mount_std
 MAN=   mount_std.8
-MLINKS=        mount_std.8 mount_fdesc.8 \
-       mount_std.8 mount_linprocfs.8 \
+MLINKS=        mount_std.8 mount_linprocfs.8 \
        mount_std.8 mount_procfs.8
 
 LDADD= -lutil
 DPADD= ${LIBUTIL}
 
-LINKS= ${BINDIR}/mount_std ${BINDIR}/mount_fdesc \
-       ${BINDIR}/mount_std ${BINDIR}/mount_linprocfs \
+LINKS= ${BINDIR}/mount_std ${BINDIR}/mount_linprocfs \
        ${BINDIR}/mount_std ${BINDIR}/mount_procfs
 
 .include <bsd.prog.mk>
index 6678b51..884d805 100644 (file)
@@ -37,7 +37,6 @@
 .Os
 .Sh NAME
 .Nm mount_std ,
-.Nm mount_fdesc ,
 .Nm mount_linprocfs ,
 .Nm mount_procfs
 .Nd mount
@@ -55,7 +54,6 @@ command is a generic mechanism for attaching ``standard'' filesystems to
 the filesystem.  The
 .Nm
 command currently supports the following filesystems:
-.Nm fdesc ,
 .Nm linprocfs
 and
 .Nm procfs .
@@ -114,7 +112,6 @@ command.
 .Pp
 Refer to the following manual pages for detailed information
 on these file system:
-.Xr fdesc 5 ,
 .Xr linprocfs 5
 and
 .Xr procfs 5 .
@@ -136,7 +133,6 @@ loadable module for it was found.
 .Xr mount 2 ,
 .Xr unmount 2 ,
 .Xr getvfsbyname 3 ,
-.Xr fdesc 5 ,
 .Xr fstab 5 ,
 .Xr linprocfs 5 ,
 .Xr procfs 5 ,
@@ -149,10 +145,8 @@ utility first appeared in
 Loadable filesystem modules first appeared in
 .Fx 2.0 .
 The
-.Dq fdesc
-and
 .Dq procfs
-filesystem types first appeared in
+filesystem type first appeared in
 .Fx 2.0 ;
 the
 .Dq linprocfs
index f5a1ea2..f777f27 100644 (file)
@@ -407,7 +407,6 @@ have permission to load the module.
 .Xr mount_cd9660 8 ,
 .Xr mount_devfs 8 ,
 .Xr mount_ext2fs 8 ,
-.Xr mount_fdesc 8 ,
 .Xr mount_hammer 8 ,
 .Xr mount_hpfs 8 ,
 .Xr mount_linprocfs 8 ,
index 0df1b88..30bc689 100644 (file)
@@ -16,7 +16,6 @@ MAN=  acct.5 \
        ethers.5 \
        eui64.5 \
        fbtab.5 \
-       fdesc.5 \
        ffs.5 \
        forward.5 \
        fs.5 \
diff --git a/share/man/man5/fdesc.5 b/share/man/man5/fdesc.5
deleted file mode 100644 (file)
index c564823..0000000
+++ /dev/null
@@ -1,148 +0,0 @@
-.\" Copyright (c) 1996
-.\"    Mike Pritchard <mpp@FreeBSD.org>.  All rights reserved.
-.\"
-.\" Copyright (c) 1992, 1993, 1994
-.\"    The Regents of the University of California.  All rights reserved.
-.\" All rights reserved.
-.\"
-.\" This code is derived from software donated to Berkeley by
-.\" Jan-Simon Pendry.
-.\"
-.\" 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. 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.
-.\"
-.\" $FreeBSD: src/share/man/man5/fdesc.5,v 1.6.2.4 2001/12/20 16:50:57 ru Exp $
-.\"
-.Dd December 14, 1996
-.Dt FDESC 5
-.Os
-.Sh NAME
-.Nm fdesc
-.Nd file-descriptor file system
-.Sh SYNOPSIS
-.Bd -literal
-fdesc  /dev    fdesc rw 0 0
-.Ed
-.Sh DESCRIPTION
-The file-descriptor file system, or
-.Nm ,
-provides access to the per-process file descriptor
-namespace in the global filesystem namespace.
-The conventional mount point is
-.Pa /dev
-and the filesystem should be union mounted in order to augment,
-rather than replace, the existing entries in
-.Pa /dev .
-.Pp
-The contents of the mount point are
-.Pa fd ,
-.Pa stderr ,
-.Pa stdin ,
-.Pa stdout
-and
-.Pa tty .
-.Pp
-.Pa fd
-is a directory whose contents
-appear as a list of numbered files
-which correspond to the open files of the process reading the
-directory.
-The files
-.Pa /dev/fd/0
-through
-.Pa /dev/fd/#
-refer to file descriptors which can be accessed through the file
-system.
-If the file descriptor is open and the mode the file is being opened
-with is a subset of the mode of the existing descriptor, the call:
-.Bd -literal -offset indent
-fd = open("/dev/fd/0", mode);
-.Ed
-.Pp
-and the call:
-.Bd -literal -offset indent
-fd = fcntl(0, F_DUPFD, 0);
-.Ed
-.Pp
-are equivalent.
-.Pp
-The files
-.Pa /dev/stdin ,
-.Pa /dev/stdout
-and
-.Pa /dev/stderr
-appear as symlinks to the relevant entry in the
-.Pa /dev/fd
-sub-directory.
-Opening them is equivalent to the following calls:
-.Bd -literal -offset indent
-fd = fcntl(STDIN_FILENO,  F_DUPFD, 0);
-fd = fcntl(STDOUT_FILENO, F_DUPFD, 0);
-fd = fcntl(STDERR_FILENO, F_DUPFD, 0);
-.Ed
-.Pp
-Flags to the
-.Xr open 2
-call other than
-.Dv O_RDONLY ,
-.Dv O_WRONLY
-and
-.Dv O_RDWR
-are ignored.
-.Pp
-The
-.Pa /dev/tty
-entry is an indirect reference to the current process's controlling terminal.
-It appears as a named pipe (FIFO) but behaves in exactly the same way as
-the real controlling terminal device.
-.Sh FILES
-.Bl -tag -width /dev/stderr -compact
-.It Pa /dev/fd/#
-.It Pa /dev/stdin
-.It Pa /dev/stdout
-.It Pa /dev/stderr
-.It Pa /dev/tty
-.El
-.Sh SEE ALSO
-.Xr tty 4 ,
-.Xr mount_fdesc 8
-.Sh HISTORY
-The
-.Nm
-filesystem first appeared in
-.Bx 4.4 .
-The
-.Nm
-manual page first appeared in
-.Fx 2.2 .
-.Sh AUTHORS
-.An -nosplit
-The
-.Nm
-manual page was written by
-.An Mike Pritchard Aq Mt mpp@FreeBSD.org ,
-and was based on the
-.Xr mount_fdesc 8
-manual page written by
-.An Jan-Simon Pendry .
index 4a4d378..8a8f45e 100644 (file)
@@ -2321,19 +2321,6 @@ to
 .Dq Li YES
 by default for every jail in
 .Va jail_list .
-.It Va jail_fdesc_enable
-.Pq Vt bool
-Set to
-.Dq Li NO
-by default.
-When set to
-.Dq Li YES ,
-sets
-.Va jail_ Ns Ao Ar jname Ac Ns Va _fdesc_enable
-to
-.Dq Li YES
-by default for every jail in
-.Va jail_list .
 .It Va jail_procfs_enable
 .Pq Vt bool
 Set to
@@ -2417,16 +2404,6 @@ When set to
 mount all file systems from
 .Va jail_ Ns Ao Ar jname Ac Ns Va _fstab
 at jail startup.
-.It Va jail_ Ns Ao Ar jname Ac Ns Va _fdesc_enable
-.Pq Vt bool
-Set to
-.Dq Li NO
-by default.
-When set to
-.Dq Li YES ,
-mount the file-descriptor file system inside jail
-.Ar jname
-at jail startup.
 .It Va jail_ Ns Ao Ar jname Ac Ns Va _procfs_enable
 .Pq Vt bool
 Set to
index 74b3230..e80abbc 100644 (file)
@@ -108,7 +108,6 @@ module_path=";modules"              # Set the module search path
 
 cd9660_load="NO"               # ISO 9660 filesystem
 ext2fs_load="NO"               # ext2 filesystem
-fdesc_load="NO"                        # Filedescriptors filesystem
 mfs_load="NO"                  # Memory filesystem
 msdos_load="NO"                        # FAT-12/16/32
 nfs_load="NO"                  # NFS
index 8dd8512..397aeff 100644 (file)
@@ -116,7 +116,6 @@ bitmap_type="splash_image_data" # and place it on the module_path
 
 cd9660_load="NO"               # ISO 9660 filesystem
 ext2fs_load="NO"               # ext2 filesystem
-fdesc_load="NO"                        # Filedescriptors filesystem
 mfs_load="NO"                  # Memory filesystem
 msdos_load="NO"                        # FAT-12/16/32
 nfs_load="NO"                  # NFS
index 9b38556..1635958 100644 (file)
@@ -1149,8 +1149,6 @@ kern/vfs_aio.c            standard
 kern/subr_cpu_topology.c       standard
 kern/sys_vmm.c         standard
 vfs/deadfs/dead_vnops.c        standard
-vfs/fdesc/fdesc_vfsops.c       optional fdesc
-vfs/fdesc/fdesc_vnops.c        optional fdesc
 vfs/fifofs/fifo_vnops.c        standard
 vfs/nullfs/null_vfsops.c       optional nullfs
 vfs/nullfs/null_vnops.c        optional nullfs
index 49c8440..755fb87 100644 (file)
@@ -122,7 +122,6 @@ INCLUDE_CONFIG_FILE opt_config.h
 # dependencies.  Unusability is enforced by hiding the defines for the
 # options in a never-included header.
 EXT2FS         opt_dontuse.h
-FDESC          opt_dontuse.h
 HAMMER         opt_dontuse.h
 HPFS           opt_dontuse.h
 MFS            opt_dontuse.h
index 1f6b691..54a9f75 100644 (file)
@@ -587,7 +587,6 @@ options     NFS                     #Network filesystem
 # The rest are optional:
 #options       NFS_NOSERVER            #Disable the NFS-server code.
 options        CD9660                  #ISO 9660 filesystem
-options        FDESC                   #File descriptor filesystem
 options                HAMMER                  #HAMMER filesystem
 options        HPFS                    #OS/2 File system
 options        MSDOSFS                 #MS DOS filesystem
index d610647..25623eb 100644 (file)
@@ -507,7 +507,6 @@ options     NFS                     #Network filesystem
 # The rest are optional:
 #options       NFS_NOSERVER            #Disable the NFS-server code.
 options        CD9660                  #ISO 9660 filesystem
-options        FDESC                   #File descriptor filesystem
 options                HAMMER                  #HAMMER filesystem
 options        HPFS                    #OS/2 File system
 options        MSDOSFS                 #MS DOS filesystem
index be325ea..473c925 100644 (file)
@@ -108,7 +108,7 @@ enum vtype  { VNON, VREG, VDIR, VBLK, VCHR, VLNK, VSOCK, VFIFO, VBAD,
  * and should NEVER be inspected by the kernel.
  */
 enum vtagtype  {
-       VT_NON, VT_UFS, VT_NFS, VT_MFS, VT_PC, VT_LFS, VT_LOFS, VT_FDESC,
+       VT_NON, VT_UFS, VT_NFS, VT_MFS, VT_PC, VT_LFS, VT_LOFS, VT_UNUSED7,
        VT_PORTAL, VT_NULL, VT_UNUSED10, VT_KERNFS, VT_PROCFS, VT_AFS,
        VT_ISOFS, VT_UNION, VT_MSDOSFS, VT_TFS, VT_VFS, VT_CODA, VT_NTFS,
        VT_HPFS, VT_SMBFS, VT_UDF, VT_EXT2FS, VT_SYNTH,
index 8dfa359..06dce51 100644 (file)
@@ -2,7 +2,7 @@
 #
 
 SUBDIR=fifofs msdosfs portal nfs procfs puffs \
-       hpfs ntfs smbfs isofs fdesc mfs udf \
+       hpfs ntfs smbfs isofs mfs udf \
        nullfs hammer tmpfs
 
 .include <bsd.subdir.mk>
diff --git a/sys/vfs/fdesc/Makefile b/sys/vfs/fdesc/Makefile
deleted file mode 100644 (file)
index 662047e..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-# $FreeBSD: src/sys/modules/fdesc/Makefile,v 1.6 1999/12/12 16:47:24 peter Exp $
-# $DragonFly: src/sys/vfs/fdesc/Makefile,v 1.4 2004/08/13 17:51:10 dillon Exp $
-
-KMOD=  fdesc
-SRCS=  fdesc_vfsops.c fdesc_vnops.c
-CFLAGS+= -DFDESC
-
-.include <bsd.kmod.mk>
diff --git a/sys/vfs/fdesc/fdesc.h b/sys/vfs/fdesc/fdesc.h
deleted file mode 100644 (file)
index 271b00b..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Copyright (c) 1992, 1993
- *     The Regents of the University of California.  All rights reserved.
- *
- * This code is derived from software donated to Berkeley by
- * Jan-Simon Pendry.
- *
- * 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.
- *
- *     @(#)fdesc.h     8.5 (Berkeley) 1/21/94
- *
- * $FreeBSD: src/sys/miscfs/fdesc/fdesc.h,v 1.8.2.1 2001/10/22 22:49:26 chris Exp $
- * $DragonFly: src/sys/vfs/fdesc/fdesc.h,v 1.6 2006/05/06 18:48:52 dillon Exp $
- */
-
-#ifdef _KERNEL
-struct fdescmount {
-       struct vnode    *f_root;        /* Root node */
-};
-
-#define FD_ROOT                1
-#define FD_DESC                3
-
-typedef enum {
-       Froot,
-       Fdesc
-} fdntype;
-
-struct fdescnode {
-       LIST_ENTRY(fdescnode) fd_hash;  /* Hash list */
-       struct vnode    *fd_vnode;      /* Back ptr to vnode */
-       fdntype         fd_type;        /* Type of this node */
-       unsigned        fd_fd;          /* Fd to be dup'ed */
-       int             fd_ix;          /* filesystem index */
-};
-
-#define VFSTOFDESC(mp) ((struct fdescmount *)((mp)->mnt_data))
-#define        VTOFDESC(vp) ((struct fdescnode *)(vp)->v_data)
-
-extern int fdesc_init (struct vfsconf *);
-extern int fdesc_uninit (struct vfsconf *);
-extern int fdesc_root (struct mount *, struct vnode **);
-extern int fdesc_allocvp (fdntype, int, struct mount *, struct vnode **);
-#endif /* _KERNEL */
diff --git a/sys/vfs/fdesc/fdesc_vfsops.c b/sys/vfs/fdesc/fdesc_vfsops.c
deleted file mode 100644 (file)
index 1a26873..0000000
+++ /dev/null
@@ -1,180 +0,0 @@
-/*
- * Copyright (c) 1992, 1993, 1995
- *     The Regents of the University of California.  All rights reserved.
- *
- * This code is derived from software donated to Berkeley by
- * Jan-Simon Pendry.
- *
- * 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. 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.
- *
- *     @(#)fdesc_vfsops.c      8.4 (Berkeley) 1/21/94
- *
- * $FreeBSD: src/sys/miscfs/fdesc/fdesc_vfsops.c,v 1.22.2.3 2002/08/23 17:42:39 njl Exp $
- */
-
-/*
- * /dev/fd Filesystem
- */
-
-#include <sys/param.h>
-#include <sys/systm.h>
-#include <sys/filedesc.h>
-#include <sys/kernel.h>
-#include <sys/lock.h>
-#include <sys/malloc.h>
-#include <sys/mount.h>
-#include <sys/proc.h>
-#include <sys/resourcevar.h>
-#include <sys/socket.h>
-#include <sys/vnode.h>
-
-#include "fdesc.h"
-
-extern struct vop_ops fdesc_vnode_vops;
-
-static MALLOC_DEFINE(M_FDESCMNT, "FDESC mount", "FDESC mount structure");
-
-static int     fdesc_mount (struct mount *mp, char *path, caddr_t data,
-                               struct ucred *cred);
-static int     fdesc_unmount (struct mount *mp, int mntflags);
-static int     fdesc_statfs (struct mount *mp, struct statfs *sbp,
-                               struct ucred *cred);
-  
-/*
- * Mount the per-process file descriptors (/dev/fd)
- */
-static int
-fdesc_mount(struct mount *mp, char *path, caddr_t data, struct ucred *cred)
-{
-       int error = 0;
-       struct fdescmount *fmp;
-       struct vnode *rvp;
-
-       if (path == NULL)
-               panic("fdesc_mount: cannot mount as root");
-
-       /*
-        * Update is a no-op
-        */
-       if (mp->mnt_flag & MNT_UPDATE)
-               return (EOPNOTSUPP);
-
-       vfs_add_vnodeops(mp, &fdesc_vnode_vops, &mp->mnt_vn_norm_ops);
-
-       error = fdesc_allocvp(Froot, FD_ROOT, mp, &rvp);
-       if (error)
-               return (error);
-
-       fmp = kmalloc(sizeof(struct fdescmount), M_FDESCMNT, M_WAITOK); /* XXX */
-       rvp->v_type = VDIR;
-       vsetflags(rvp, VROOT);
-       fmp->f_root = rvp;
-       /* XXX -- don't mark as local to work around fts() problems */
-       /*mp->mnt_flag |= MNT_LOCAL;*/
-       mp->mnt_data = (qaddr_t) fmp;
-       vfs_getnewfsid(mp);
-
-       bzero(mp->mnt_stat.f_mntfromname, MNAMELEN);
-       bcopy("fdesc", mp->mnt_stat.f_mntfromname, sizeof("fdesc"));
-       fdesc_statfs(mp, &mp->mnt_stat, cred);
-       return (0);
-}
-
-static int
-fdesc_unmount(struct mount *mp, int mntflags)
-{
-       int error;
-       int flags = 0;
-
-       if (mntflags & MNT_FORCE)
-               flags |= FORCECLOSE;
-
-       /*
-        * Clear out buffer cache.  I don't think we
-        * ever get anything cached at this level at the
-        * moment, but who knows...
-        *
-        * There is 1 extra root vnode reference corresponding
-        * to f_root.
-        */
-       if ((error = vflush(mp, 1, flags)) != 0)
-               return (error);
-
-       /*
-        * Finally, throw away the fdescmount structure
-        */
-       kfree(mp->mnt_data, M_FDESCMNT);        /* XXX */
-       mp->mnt_data = NULL;
-
-       return (0);
-}
-
-int
-fdesc_root(struct mount *mp, struct vnode **vpp)
-{
-       struct vnode *vp;
-       int error;
-
-       /*
-        * Return locked reference to root.
-        */
-       vp = VFSTOFDESC(mp)->f_root;
-       error = vget(vp, LK_EXCLUSIVE | LK_RETRY);
-       if (error == 0)
-               *vpp = vp;
-       return (error);
-}
-
-static int
-fdesc_statfs(struct mount *mp, struct statfs *sbp, struct ucred *cred)
-{
-       sbp->f_flags = 0;
-       sbp->f_bsize = DEV_BSIZE;
-       sbp->f_iosize = DEV_BSIZE;
-       sbp->f_blocks = 2;              /* 1K to keep df happy */
-       sbp->f_bfree = 0;
-       sbp->f_bavail = 0;
-       sbp->f_files = 0;               /* dummy up these fields */
-       sbp->f_ffree = 0;
-       if (sbp != &mp->mnt_stat) {
-               sbp->f_type = mp->mnt_vfc->vfc_typenum;
-               bcopy(&mp->mnt_stat.f_fsid, &sbp->f_fsid, sizeof(sbp->f_fsid));
-               bcopy(mp->mnt_stat.f_mntfromname, sbp->f_mntfromname, MNAMELEN);
-       }
-       return (0);
-}
-
-static struct vfsops fdesc_vfsops = {
-       .vfs_mount =            fdesc_mount,
-       .vfs_unmount =          fdesc_unmount,
-       .vfs_root =             fdesc_root,
-       .vfs_statfs =           fdesc_statfs,
-       .vfs_sync =             vfs_stdsync,
-       .vfs_init =             fdesc_init,
-       .vfs_uninit =           fdesc_uninit
-};
-
-VFS_SET(fdesc_vfsops, fdesc, VFCF_SYNTHETIC);
-MODULE_VERSION(fdesc, 1);
diff --git a/sys/vfs/fdesc/fdesc_vnops.c b/sys/vfs/fdesc/fdesc_vnops.c
deleted file mode 100644 (file)
index 970fa76..0000000
+++ /dev/null
@@ -1,539 +0,0 @@
-/*
- * Copyright (c) 1992, 1993
- *     The Regents of the University of California.  All rights reserved.
- *
- * This code is derived from software donated to Berkeley by
- * Jan-Simon Pendry.
- *
- * 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. 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.
- *
- *     @(#)fdesc_vnops.c       8.9 (Berkeley) 1/21/94
- *
- * $FreeBSD: src/sys/miscfs/fdesc/fdesc_vnops.c,v 1.47.2.1 2001/10/22 22:49:26 chris Exp $
- */
-
-/*
- * /dev/fd Filesystem
- */
-
-#include <sys/param.h>
-#include <sys/systm.h>
-#include <sys/conf.h>
-#include <sys/dirent.h>
-#include <sys/filedesc.h>
-#include <sys/kernel.h>        /* boottime */
-#include <sys/lock.h>
-#include <sys/malloc.h>
-#include <sys/file.h>  /* Must come after sys/malloc.h */
-#include <sys/mount.h>
-#include <sys/proc.h>
-#include <sys/namei.h>
-#include <sys/socket.h>
-#include <sys/stat.h>
-#include <sys/vnode.h>
-#include <sys/file2.h>
-
-#include <machine/limits.h>
-
-#include "fdesc.h"
-
-#define FDL_WANT       0x01
-#define FDL_LOCKED     0x02
-static int fdcache_lock;
-
-#define        NFDCACHE 4
-#define FD_NHASH(ix) \
-       (&fdhashtbl[(ix) & fdhash])
-static LIST_HEAD(fdhashhead, fdescnode) *fdhashtbl;
-static u_long fdhash;
-
-static int     fdesc_getattr (struct vop_getattr_args *ap);
-static int     fdesc_inactive (struct vop_inactive_args *ap);
-static int     fdesc_lookup (struct vop_old_lookup_args *ap);
-static int     fdesc_open (struct vop_open_args *ap);
-static int     fdesc_print (struct vop_print_args *ap);
-static int     fdesc_readdir (struct vop_readdir_args *ap);
-static int     fdesc_reclaim (struct vop_reclaim_args *ap);
-static int     fdesc_setattr (struct vop_setattr_args *ap);
-
-/*
- * Initialise cache headers
- */
-int
-fdesc_init(struct vfsconf *vfsp)
-{
-
-       fdhashtbl = hashinit(NFDCACHE, M_CACHE, &fdhash);
-       return (0);
-}
-
-int
-fdesc_uninit(struct vfsconf *vfsp)
-{
-       if (fdhashtbl)
-               hashdestroy(fdhashtbl, M_CACHE, fdhash);
-       return (0);
-}
-int
-fdesc_allocvp(fdntype ftype, int ix, struct mount *mp, struct vnode **vpp)
-{
-       struct fdhashhead *fc;
-       struct fdescnode *fd;
-       int error = 0;
-
-       fc = FD_NHASH(ix);
-loop:
-       LIST_FOREACH(fd, fc, fd_hash) {
-               if (fd->fd_ix == ix && fd->fd_vnode->v_mount == mp) {
-                       if (vget(fd->fd_vnode, LK_EXCLUSIVE|LK_SLEEPFAIL))
-                               goto loop;
-                       *vpp = fd->fd_vnode;
-                       return (error);
-               }
-       }
-
-       /*
-        * otherwise lock the array while we call getnewvnode
-        * since that can block.
-        */
-       if (fdcache_lock & FDL_LOCKED) {
-               fdcache_lock |= FDL_WANT;
-               tsleep((caddr_t) &fdcache_lock, 0, "fdalvp", 0);
-               goto loop;
-       }
-       fdcache_lock |= FDL_LOCKED;
-
-       /*
-        * Do the MALLOC before the getnewvnode since doing so afterward
-        * might cause a bogus v_data pointer to get dereferenced
-        * elsewhere if MALLOC should block.
-        */
-       fd = kmalloc(sizeof(struct fdescnode), M_TEMP, M_WAITOK);
-
-       error = getnewvnode(VT_FDESC, mp, vpp, 0, 0);
-       if (error) {
-               kfree(fd, M_TEMP);
-               goto out;
-       }
-       (*vpp)->v_data = fd;
-       fd->fd_vnode = *vpp;
-       fd->fd_type = ftype;
-       fd->fd_fd = -1;
-       fd->fd_ix = ix;
-       LIST_INSERT_HEAD(fc, fd, fd_hash);
-       vx_unlock(*vpp);
-
-out:
-       fdcache_lock &= ~FDL_LOCKED;
-
-       if (fdcache_lock & FDL_WANT) {
-               fdcache_lock &= ~FDL_WANT;
-               wakeup((caddr_t) &fdcache_lock);
-       }
-
-       return (error);
-}
-
-/*
- * vp is the current namei directory
- * ndp is the name to locate in that directory...
- *
- * fdesc_lookup(struct vnode *a_dvp, struct vnode **a_vpp,
- *             struct componentname *a_cnp)
- */
-static int
-fdesc_lookup(struct vop_old_lookup_args *ap)
-{
-       struct componentname *cnp = ap->a_cnp;
-       struct thread *td = cnp->cn_td;
-       struct proc *p = td->td_proc;
-       struct vnode **vpp = ap->a_vpp;
-       struct vnode *dvp = ap->a_dvp;
-       char *pname = cnp->cn_nameptr;
-       int nlen = cnp->cn_namelen;
-       int nfiles;
-       u_int fd;
-       int error;
-       struct vnode *fvp;
-
-       KKASSERT(p);
-       nfiles = p->p_fd->fd_nfiles;
-       if (cnp->cn_nameiop == NAMEI_DELETE || cnp->cn_nameiop == NAMEI_RENAME) {
-               error = EROFS;
-               goto bad;
-       }
-
-       vn_unlock(dvp);
-       if (cnp->cn_namelen == 1 && *pname == '.') {
-               *vpp = dvp;
-               vref(dvp);      
-               vn_lock(dvp, LK_SHARED | LK_RETRY);
-               return (0);
-       }
-
-       if (VTOFDESC(dvp)->fd_type != Froot) {
-               error = ENOTDIR;
-               goto bad;
-       }
-
-       fd = 0;
-       /* the only time a leading 0 is acceptable is if it's "0" */
-       if (*pname == '0' && nlen != 1) {
-               error = ENOENT;
-               goto bad;
-       }
-       while (nlen--) {
-               if (*pname < '0' || *pname > '9') {
-                       error = ENOENT;
-                       goto bad;
-               }
-               fd = 10 * fd + *pname++ - '0';
-       }
-
-       if (fd >= nfiles || p->p_fd->fd_files[fd].fp == NULL) {
-               error = EBADF;
-               goto bad;
-       }
-
-       error = fdesc_allocvp(Fdesc, FD_DESC+fd, dvp->v_mount, &fvp);
-       if (error)
-               goto bad;
-       VTOFDESC(fvp)->fd_fd = fd;
-       vn_lock(fvp, LK_SHARED | LK_RETRY);
-       *vpp = fvp;
-       return (0);
-
-bad:
-       vn_lock(dvp, LK_SHARED | LK_RETRY);
-       *vpp = NULL;
-       return (error);
-}
-
-/*
- * fdesc_open(struct vnode *a_vp, int a_mode, struct ucred *a_cred,
- *           struct file *a_fp)
- */
-static int
-fdesc_open(struct vop_open_args *ap)
-{
-       struct vnode *vp = ap->a_vp;
-       struct lwp *lp = curthread->td_lwp;
-
-       KKASSERT(lp);
-
-       if (VTOFDESC(vp)->fd_type == Froot)
-               return (vop_stdopen(ap));
-
-       /*
-        * XXX Kludge: set lp->lwp_dupfd to contain the value of the the file
-        * descriptor being sought for duplication. The error return ensures
-        * that the vnode for this device will be released by vn_open. Open
-        * will detect this special error and take the actions in dupfdopen.
-        * Other callers of vn_open or VOP_OPEN will simply report the
-        * error.
-        */
-       lp->lwp_dupfd = VTOFDESC(vp)->fd_fd;    /* XXX */
-       return (ENODEV);
-}
-
-/*
- * fdesc_getattr(struct vnode *a_vp, struct vattr *a_vap, struct ucred *a_cred)
- */
-static int
-fdesc_getattr(struct vop_getattr_args *ap)
-{
-       struct proc *p = curproc;
-       struct vnode *vp = ap->a_vp;
-       struct vattr *vap = ap->a_vap;
-       struct file *fp;
-       struct stat stb;
-       u_int fd;
-       int error = 0;
-
-       KKASSERT(p);
-
-       switch (VTOFDESC(vp)->fd_type) {
-       case Froot:
-               VATTR_NULL(vap);
-
-               vap->va_mode = S_IRUSR|S_IXUSR|S_IRGRP|S_IXGRP|S_IROTH|S_IXOTH;
-               vap->va_type = VDIR;
-               vap->va_nlink = 2;
-               vap->va_size = DEV_BSIZE;
-               vap->va_fileid = VTOFDESC(vp)->fd_ix;
-               vap->va_uid = 0;
-               vap->va_gid = 0;
-               vap->va_blocksize = DEV_BSIZE;
-               vap->va_atime.tv_sec = boottime.tv_sec;
-               vap->va_atime.tv_nsec = 0;
-               vap->va_mtime = vap->va_atime;
-               vap->va_ctime = vap->va_mtime;
-               vap->va_gen = 0;
-               vap->va_flags = 0;
-               vap->va_rmajor = VNOVAL;
-               vap->va_rminor = VNOVAL;
-               vap->va_bytes = 0;
-               break;
-
-       case Fdesc:
-               fd = VTOFDESC(vp)->fd_fd;
-
-               fp = holdfp(p->p_fd, fd, -1);
-               if (fp == NULL)
-                       return (EBADF);
-
-               bzero(&stb, sizeof(stb));
-               error = fo_stat(fp, &stb, curproc->p_ucred);
-               fdrop(fp);
-
-               if (error == 0) {
-                       VATTR_NULL(vap);
-                       vap->va_type = IFTOVT(stb.st_mode);
-                       vap->va_mode = stb.st_mode;
-#define FDRX (VREAD|VEXEC)
-                       if (vap->va_type == VDIR)
-                               vap->va_mode &= ~((FDRX)|(FDRX>>3)|(FDRX>>6));
-#undef FDRX
-                       vap->va_nlink = 1;
-                       vap->va_flags = 0;
-                       vap->va_bytes = stb.st_blocks * stb.st_blksize;
-                       vap->va_fileid = VTOFDESC(vp)->fd_ix;
-                       vap->va_size = stb.st_size;
-                       vap->va_blocksize = stb.st_blksize;
-                       vap->va_rmajor = umajor(stb.st_rdev);
-                       vap->va_rminor = uminor(stb.st_rdev);
-
-                       /*
-                        * If no time data is provided, use the current time.
-                        */
-                       if (stb.st_atimespec.tv_sec == 0 &&
-                           stb.st_atimespec.tv_nsec == 0)
-                               nanotime(&stb.st_atimespec);
-
-                       if (stb.st_ctimespec.tv_sec == 0 &&
-                           stb.st_ctimespec.tv_nsec == 0)
-                               nanotime(&stb.st_ctimespec);
-
-                       if (stb.st_mtimespec.tv_sec == 0 &&
-                           stb.st_mtimespec.tv_nsec == 0)
-                               nanotime(&stb.st_mtimespec);
-
-                       vap->va_atime = stb.st_atimespec;
-                       vap->va_mtime = stb.st_mtimespec;
-                       vap->va_ctime = stb.st_ctimespec;
-                       vap->va_uid = stb.st_uid;
-                       vap->va_gid = stb.st_gid;
-               }
-               break;
-
-       default:
-               panic("fdesc_getattr");
-               break;
-       }
-
-       if (error == 0)
-               vp->v_type = vap->va_type;
-       return (error);
-}
-
-/*
- * fdesc_setattr(struct vnode *a_vp, struct vattr *a_vap,
- *              struct ucred *a_cred)
- */
-static int
-fdesc_setattr(struct vop_setattr_args *ap)
-{
-       struct proc *p = curproc;
-       struct vattr *vap = ap->a_vap;
-       struct file *fp;
-       unsigned fd;
-       int error;
-
-       /*
-        * Can't mess with the root vnode
-        */
-       if (VTOFDESC(ap->a_vp)->fd_type == Froot)
-               return (EACCES);
-
-       fd = VTOFDESC(ap->a_vp)->fd_fd;
-       KKASSERT(p);
-
-       /*
-        * Allow setattr where there is an underlying vnode.
-        */
-       error = holdvnode(p->p_fd, fd, &fp);
-       if (error) {
-               /*
-                * holdvnode() returns EINVAL if the file descriptor is not
-                * backed by a vnode.  Silently drop all changes except
-                * chflags(2) in this case.
-                */
-               if (error == EINVAL) {
-                       if (vap->va_flags != VNOVAL)
-                               error = EOPNOTSUPP;
-                       else
-                               error = 0;
-               }
-       } else {
-               fdrop(fp);
-       }
-       return (error);
-}
-
-#define UIO_MX 16
-
-/*
- * fdesc_readdir(struct vnode *a_vp, struct uio *a_uio, struct ucred *a_cred,
- *              int *a_eofflag, off_t *a_cookies, int a_ncookies)
- */
-static int
-fdesc_readdir(struct vop_readdir_args *ap)
-{
-       struct uio *uio = ap->a_uio;
-       struct filedesc *fdp;
-       int error, i, fcnt;
-       size_t namelen;
-       char name[20]; /* enough for %d */
-
-       /*
-        * We don't allow exporting fdesc mounts, and currently local
-        * requests do not need cookies.
-        */
-       if (ap->a_ncookies)
-               panic("fdesc_readdir: not hungry");
-
-       if (VTOFDESC(ap->a_vp)->fd_type != Froot)
-               panic("fdesc_readdir: not dir");
-
-       if (uio->uio_offset < 0 || uio->uio_offset > INT_MAX)
-               return(EINVAL);
-       i = (int)uio->uio_offset;
-       KKASSERT(uio->uio_td->td_proc);
-       fdp = uio->uio_td->td_proc->p_fd;
-       error = 0;
-
-       fcnt = i - 2;           /* The first two nodes are `.' and `..' */
-
-       while (fcnt < fdp->fd_nfiles && uio->uio_resid > 0 && !error) {
-               switch (i) {
-               case 0: /* `.' */
-                       if (vop_write_dirent(&error, uio, FD_ROOT + i, DT_DIR,
-                                        1, "."))
-                               goto done;
-                       if (error)
-                               return (error);
-                       break;
-               case 1: /* `..' */
-                       if (vop_write_dirent(&error, uio, FD_ROOT + i, DT_DIR,
-                                            2, ".."))
-                               goto done;
-                       if (error)
-                               return (error);
-                       break;
-               default:
-                       if (fdp->fd_files[fcnt].fp == NULL) {
-                               fcnt++;
-                               continue;
-                       }
-
-                       namelen = ksnprintf(name, sizeof(name), "%d", fcnt);
-                       if (vop_write_dirent(&error, uio, FD_ROOT + i,
-                                            DT_UNKNOWN, namelen, name))
-                               goto done;
-                       if (error)
-                               return (error);
-                       break;
-               }
-               i++;
-               fcnt++;
-       }
-
-done:
-       if (i >= 2)
-               uio->uio_offset = fcnt + 2;
-       else
-               uio->uio_offset = i;
-       return (error);
-}
-
-/*
- * fdesc_inactive(struct vnode *a_vp)
- */
-static int
-fdesc_inactive(struct vop_inactive_args *ap)
-{
-       struct vnode *vp = ap->a_vp;
-
-       /*
-        * Clear out the v_type field to avoid
-        * nasty things happening in vgone().
-        */
-       vp->v_type = VNON;
-       return (0);
-}
-
-/*
- * fdesc_reclaim(struct vnode *a_vp)
- */
-static int
-fdesc_reclaim(struct vop_reclaim_args *ap)
-{
-       struct vnode *vp = ap->a_vp;
-       struct fdescnode *fd = VTOFDESC(vp);
-
-       LIST_REMOVE(fd, fd_hash);
-       kfree(vp->v_data, M_TEMP);
-       vp->v_data = 0;
-
-       return (0);
-}
-
-/*
- * Print out the contents of a /dev/fd vnode.
- *
- * fdesc_print(struct vnode *a_vp)
- */
-/* ARGSUSED */
-static int
-fdesc_print(struct vop_print_args *ap)
-{
-       kprintf("tag VT_NON, fdesc vnode\n");
-       return (0);
-}
-
-struct vop_ops fdesc_vnode_vops = {
-       .vop_default =          vop_defaultop,
-       .vop_access =           (void *)vop_null,
-       .vop_getattr =          fdesc_getattr,
-       .vop_inactive =         fdesc_inactive,
-       .vop_old_lookup =       fdesc_lookup,
-       .vop_open =             fdesc_open,
-       .vop_pathconf =         vop_stdpathconf,
-       .vop_print =            fdesc_print,
-       .vop_readdir =          fdesc_readdir,
-       .vop_reclaim =          fdesc_reclaim,
-       .vop_setattr =          fdesc_setattr
-};
-
index c8cdd96..dabb792 100755 (executable)
@@ -43,7 +43,6 @@
 # crossmp2.sh                  N       panic: sx lock still held                       20071101
 # devfs.sh                     Y
 # devfs2.sh                    Y                                                       20070503
-# fdescfs.sh                   Y
 # fpclone.sh                   N       No problem seen
 # fpclone2.sh                  N       No problem seen
 # fs.sh                                Y
diff --git a/test/stress/stress2/misc/fdescfs.sh b/test/stress/stress2/misc/fdescfs.sh
deleted file mode 100755 (executable)
index a01ab93..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-#!/bin/sh
-
-#
-# Copyright (c) 2008 Peter Holm <pho@FreeBSD.org>
-# 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.
-#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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.
-#
-# $FreeBSD$
-#
-
-#
-
-[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1
-
-. ../default.cfg
-
-mounts=15              # Number of parallel scripts
-mdstart=$mdstart       # Use md unit numbers from this point
-D=$diskimage
-
-if [ $# -eq 0 ]; then
-       # start the parallel tests
-       for i in `jot $mounts`; do
-               ./$0 $i &
-               ./$0 find &
-       done
-
-       for i in `jot $mounts`; do
-               wait; wait
-       done
-else
-       if [ $1 = find ]; then
-               exec 6< /dev/zero
-               exec 7< /dev/zero
-               exec 8< /dev/zero
-               exec 9< /dev/zero
-               for i in `jot 128`; do
-                       ls -l ${mntpoint}* > /dev/null 2>&1
-               done
-       else
-
-               # The test: Parallel mount and unmounts
-               for i in `jot 128`; do
-#                      mount -t fdescfs null  ${mntpoint}$1    # This causes mound to complain
-                       mount_fdescfs null ${mntpoint}$1
-                       while mount | grep -wq ${mntpoint}$1; do
-                               umount -f ${mntpoint}$1 > /dev/null 2>&1
-                       done
-               done
-       fi
-fi