summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorderaadt <deraadt@openbsd.org>2011-07-04 20:35:34 +0000
committerderaadt <deraadt@openbsd.org>2011-07-04 20:35:34 +0000
commit544451c3960bb24421c632fa5dfc8d4155fd076a (patch)
treeca1fd9074ba9268ec361d8586a138aee73f9be82
parentMake stdout line buffered. (diff)
downloadwireguard-openbsd-544451c3960bb24421c632fa5dfc8d4155fd076a.tar.xz
wireguard-openbsd-544451c3960bb24421c632fa5dfc8d4155fd076a.zip
move the specfs code to a place people can see it; ok guenther thib krw
-rw-r--r--lib/libkvm/kvm_file2.c5
-rw-r--r--lib/libkvm/kvm_udf.c5
-rw-r--r--sys/compat/common/vm_43.c5
-rw-r--r--sys/compat/svr4/svr4_misc.c5
-rw-r--r--sys/dev/vnd.c5
-rw-r--r--sys/isofs/cd9660/cd9660_vfsops.c4
-rw-r--r--sys/isofs/cd9660/cd9660_vnops.c4
-rw-r--r--sys/isofs/udf/udf_vfsops.c5
-rw-r--r--sys/isofs/udf/udf_vnops.c5
-rw-r--r--sys/kern/Makefile5
-rw-r--r--sys/kern/init_sysent.c2
-rw-r--r--sys/kern/syscalls.c2
-rw-r--r--sys/kern/vfs_bio.c5
-rw-r--r--sys/kern/vfs_default.c4
-rw-r--r--sys/kern/vfs_subr.c5
-rw-r--r--sys/kern/vfs_vnops.c4
-rw-r--r--sys/miscfs/specfs/spec_subr.c99
-rw-r--r--sys/miscfs/specfs/spec_vnops.c654
-rw-r--r--sys/miscfs/specfs/specdev.h114
-rw-r--r--sys/msdosfs/msdosfs_vfsops.c4
-rw-r--r--sys/msdosfs/msdosfs_vnops.c4
-rw-r--r--sys/ntfs/ntfs_subr.c5
-rw-r--r--sys/ntfs/ntfs_vfsops.c5
-rw-r--r--sys/ntfs/ntfs_vnops.c5
-rw-r--r--sys/sys/specdev.h2
-rw-r--r--sys/sys/syscall.h2
-rw-r--r--sys/sys/syscallargs.h2
-rw-r--r--sys/ufs/ext2fs/ext2fs_bmap.c5
-rw-r--r--sys/ufs/ext2fs/ext2fs_subr.c4
-rw-r--r--sys/ufs/ext2fs/ext2fs_vfsops.c5
-rw-r--r--sys/ufs/ext2fs/ext2fs_vnops.c4
-rw-r--r--sys/ufs/ffs/ffs_softdep.c4
-rw-r--r--sys/ufs/ffs/ffs_vfsops.c5
-rw-r--r--sys/ufs/ffs/ffs_vnops.c4
-rw-r--r--sys/ufs/mfs/mfs_vnops.c5
-rw-r--r--sys/ufs/ufs/ufs_bmap.c5
-rw-r--r--sys/ufs/ufs/ufs_vfsops.c5
-rw-r--r--sys/ufs/ufs/ufs_vnops.c4
-rw-r--r--sys/uvm/uvm_mmap.c5
-rw-r--r--sys/uvm/uvm_swap.c4
-rw-r--r--sys/uvm/uvm_vnode.c5
41 files changed, 71 insertions, 959 deletions
diff --git a/lib/libkvm/kvm_file2.c b/lib/libkvm/kvm_file2.c
index c7dc886f93e..e8778dff547 100644
--- a/lib/libkvm/kvm_file2.c
+++ b/lib/libkvm/kvm_file2.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: kvm_file2.c,v 1.16 2010/07/17 19:27:07 guenther Exp $ */
+/* $OpenBSD: kvm_file2.c,v 1.17 2011/07/04 20:35:35 deraadt Exp $ */
/*
* Copyright (c) 2009 Todd C. Miller <Todd.Miller@courtesan.com>
@@ -75,6 +75,7 @@
#include <sys/pipe.h>
#include <sys/stat.h>
#include <sys/sysctl.h>
+#include <sys/specdev.h>
#define _KERNEL
#include <ufs/ufs/quota.h>
@@ -93,8 +94,6 @@
#include <msdosfs/denode.h>
#include <msdosfs/msdosfsmount.h>
-#include <miscfs/specfs/specdev.h>
-
#include <net/route.h>
#include <netinet/in.h>
#include <netinet/in_systm.h>
diff --git a/lib/libkvm/kvm_udf.c b/lib/libkvm/kvm_udf.c
index bbc33c0009b..85fcdc4d69b 100644
--- a/lib/libkvm/kvm_udf.c
+++ b/lib/libkvm/kvm_udf.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: kvm_udf.c,v 1.3 2009/10/27 23:59:28 deraadt Exp $ */
+/* $OpenBSD: kvm_udf.c,v 1.4 2011/07/04 20:35:35 deraadt Exp $ */
/*
* Copyright (c) 2001, 2002 Scott Long <scottl@freebsd.org>
@@ -33,13 +33,12 @@
#undef _KERNEL
#include <sys/vnode.h>
#include <sys/sysctl.h>
+#include <sys/specdev.h>
#include <isofs/udf/ecma167-udf.h>
#include <isofs/udf/udf.h>
#include <isofs/udf/udf_extern.h>
-#include <miscfs/specfs/specdev.h>
-
#include <stdint.h>
#include <limits.h>
#include <kvm.h>
diff --git a/sys/compat/common/vm_43.c b/sys/compat/common/vm_43.c
index f0bad67b2da..58b26933060 100644
--- a/sys/compat/common/vm_43.c
+++ b/sys/compat/common/vm_43.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: vm_43.c,v 1.5 2003/06/02 23:27:59 millert Exp $ */
+/* $OpenBSD: vm_43.c,v 1.6 2011/07/04 20:35:35 deraadt Exp $ */
/* $NetBSD: vm_43.c,v 1.1 1996/02/05 01:58:29 christos Exp $ */
/*
@@ -52,12 +52,11 @@
#include <sys/file.h>
#include <sys/mman.h>
#include <sys/conf.h>
+#include <sys/specdev.h>
#include <sys/mount.h>
#include <sys/syscallargs.h>
-#include <miscfs/specfs/specdev.h>
-
#include <uvm/uvm_extern.h>
/* ARGSUSED */
diff --git a/sys/compat/svr4/svr4_misc.c b/sys/compat/svr4/svr4_misc.c
index 22327acbd4b..c5d64488cf4 100644
--- a/sys/compat/svr4/svr4_misc.c
+++ b/sys/compat/svr4/svr4_misc.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: svr4_misc.c,v 1.56 2010/12/15 04:59:52 tedu Exp $ */
+/* $OpenBSD: svr4_misc.c,v 1.57 2011/07/04 20:35:35 deraadt Exp $ */
/* $NetBSD: svr4_misc.c,v 1.42 1996/12/06 03:22:34 christos Exp $ */
/*
@@ -68,12 +68,11 @@
#include <sys/msg.h>
#include <sys/ptrace.h>
#include <sys/signalvar.h>
+#include <sys/specdev.h>
#include <netinet/in.h>
#include <sys/syscallargs.h>
-#include <miscfs/specfs/specdev.h>
-
#include <compat/svr4/svr4_types.h>
#include <compat/svr4/svr4_signal.h>
#include <compat/svr4/svr4_syscallargs.h>
diff --git a/sys/dev/vnd.c b/sys/dev/vnd.c
index ac98a693eca..e71d9d7850a 100644
--- a/sys/dev/vnd.c
+++ b/sys/dev/vnd.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: vnd.c,v 1.136 2011/07/03 18:08:14 matthew Exp $ */
+/* $OpenBSD: vnd.c,v 1.137 2011/07/04 20:35:34 deraadt Exp $ */
/* $NetBSD: vnd.c,v 1.26 1996/03/30 23:06:11 christos Exp $ */
/*
@@ -64,11 +64,10 @@
#include <sys/uio.h>
#include <sys/conf.h>
#include <sys/dkio.h>
+#include <sys/specdev.h>
#include <crypto/blf.h>
-#include <miscfs/specfs/specdev.h>
-
#include <dev/vndioctl.h>
#ifdef VNDDEBUG
diff --git a/sys/isofs/cd9660/cd9660_vfsops.c b/sys/isofs/cd9660/cd9660_vfsops.c
index c5b77a1ecdd..5d4434860f7 100644
--- a/sys/isofs/cd9660/cd9660_vfsops.c
+++ b/sys/isofs/cd9660/cd9660_vfsops.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: cd9660_vfsops.c,v 1.59 2011/07/04 04:30:41 tedu Exp $ */
+/* $OpenBSD: cd9660_vfsops.c,v 1.60 2011/07/04 20:35:35 deraadt Exp $ */
/* $NetBSD: cd9660_vfsops.c,v 1.26 1997/06/13 15:38:58 pk Exp $ */
/*-
@@ -43,7 +43,7 @@
#include <sys/proc.h>
#include <sys/kernel.h>
#include <sys/vnode.h>
-#include <miscfs/specfs/specdev.h>
+#include <sys/specdev.h>
#include <sys/mount.h>
#include <sys/buf.h>
#include <sys/file.h>
diff --git a/sys/isofs/cd9660/cd9660_vnops.c b/sys/isofs/cd9660/cd9660_vnops.c
index 43e3a37f2cc..3bd067e774a 100644
--- a/sys/isofs/cd9660/cd9660_vnops.c
+++ b/sys/isofs/cd9660/cd9660_vnops.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: cd9660_vnops.c,v 1.54 2011/07/04 04:30:41 tedu Exp $ */
+/* $OpenBSD: cd9660_vnops.c,v 1.55 2011/07/04 20:35:35 deraadt Exp $ */
/* $NetBSD: cd9660_vnops.c,v 1.42 1997/10/16 23:56:57 christos Exp $ */
/*-
@@ -56,9 +56,9 @@
#include <sys/ioccom.h>
#include <sys/cdio.h>
#include <sys/poll.h>
+#include <sys/specdev.h>
#include <miscfs/fifofs/fifo.h>
-#include <miscfs/specfs/specdev.h>
#include <isofs/cd9660/iso.h>
#include <isofs/cd9660/cd9660_extern.h>
diff --git a/sys/isofs/udf/udf_vfsops.c b/sys/isofs/udf/udf_vfsops.c
index e48b4b1318e..5e13fb6a772 100644
--- a/sys/isofs/udf/udf_vfsops.c
+++ b/sys/isofs/udf/udf_vfsops.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: udf_vfsops.c,v 1.37 2011/07/04 04:30:41 tedu Exp $ */
+/* $OpenBSD: udf_vfsops.c,v 1.38 2011/07/04 20:35:35 deraadt Exp $ */
/*
* Copyright (c) 2001, 2002 Scott Long <scottl@freebsd.org>
@@ -65,8 +65,7 @@
#include <sys/queue.h>
#include <sys/vnode.h>
#include <sys/endian.h>
-
-#include <miscfs/specfs/specdev.h>
+#include <sys/specdev.h>
#include <isofs/udf/ecma167-udf.h>
#include <isofs/udf/udf.h>
diff --git a/sys/isofs/udf/udf_vnops.c b/sys/isofs/udf/udf_vnops.c
index 4ee30e5b07b..bc1094c5bd2 100644
--- a/sys/isofs/udf/udf_vnops.c
+++ b/sys/isofs/udf/udf_vnops.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: udf_vnops.c,v 1.43 2011/04/05 14:14:07 thib Exp $ */
+/* $OpenBSD: udf_vnops.c,v 1.44 2011/07/04 20:35:35 deraadt Exp $ */
/*
* Copyright (c) 2001, 2002 Scott Long <scottl@freebsd.org>
@@ -48,8 +48,7 @@
#include <sys/queue.h>
#include <sys/unistd.h>
#include <sys/endian.h>
-
-#include <miscfs/specfs/specdev.h>
+#include <sys/specdev.h>
#include <isofs/udf/ecma167-udf.h>
#include <isofs/udf/udf.h>
diff --git a/sys/kern/Makefile b/sys/kern/Makefile
index 184b2121524..9c018ee3655 100644
--- a/sys/kern/Makefile
+++ b/sys/kern/Makefile
@@ -1,4 +1,4 @@
-# $OpenBSD: Makefile,v 1.29 2011/04/05 18:51:25 thib Exp $
+# $OpenBSD: Makefile,v 1.30 2011/07/04 20:35:35 deraadt Exp $
# Makefile for kernel tags files, init_sysent, etc.
@@ -36,8 +36,7 @@ DGEN= compat compat/common \
kern \
lib/libkern lib/libkern/arch/${MACHINE} \
lib/libkern/arch/${MACHINE_ARCH} \
- miscfs miscfs/deadfs miscfs/fifofs \
- miscfs/procfs miscfs/specfs \
+ miscfs miscfs/deadfs miscfs/fifofs miscfs/procfs \
msdosfs \
net netinet netmpls \
nfs \
diff --git a/sys/kern/init_sysent.c b/sys/kern/init_sysent.c
index d156c698732..5635b115d4b 100644
--- a/sys/kern/init_sysent.c
+++ b/sys/kern/init_sysent.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: init_sysent.c,v 1.119 2011/06/30 13:44:15 tedu Exp $ */
+/* $OpenBSD: init_sysent.c,v 1.120 2011/07/04 20:35:35 deraadt Exp $ */
/*
* System call switch table.
diff --git a/sys/kern/syscalls.c b/sys/kern/syscalls.c
index 97fec230aaa..ab43bbb6af7 100644
--- a/sys/kern/syscalls.c
+++ b/sys/kern/syscalls.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: syscalls.c,v 1.120 2011/06/30 13:44:15 tedu Exp $ */
+/* $OpenBSD: syscalls.c,v 1.121 2011/07/04 20:35:35 deraadt Exp $ */
/*
* System call names.
diff --git a/sys/kern/vfs_bio.c b/sys/kern/vfs_bio.c
index 6a6b1734dcc..9985e1b9a39 100644
--- a/sys/kern/vfs_bio.c
+++ b/sys/kern/vfs_bio.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: vfs_bio.c,v 1.131 2011/07/04 04:30:41 tedu Exp $ */
+/* $OpenBSD: vfs_bio.c,v 1.132 2011/07/04 20:35:35 deraadt Exp $ */
/* $NetBSD: vfs_bio.c,v 1.44 1996/06/11 11:15:36 pk Exp $ */
/*
@@ -56,11 +56,10 @@
#include <sys/resourcevar.h>
#include <sys/conf.h>
#include <sys/kernel.h>
+#include <sys/specdev.h>
#include <uvm/uvm_extern.h>
-#include <miscfs/specfs/specdev.h>
-
/*
* Definitions for the buffer free lists.
*/
diff --git a/sys/kern/vfs_default.c b/sys/kern/vfs_default.c
index f43f3f90fd6..b3e79470238 100644
--- a/sys/kern/vfs_default.c
+++ b/sys/kern/vfs_default.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: vfs_default.c,v 1.38 2011/07/02 22:20:08 nicm Exp $ */
+/* $OpenBSD: vfs_default.c,v 1.39 2011/07/04 20:35:35 deraadt Exp $ */
/*
* Portions of this code are:
@@ -45,7 +45,7 @@
#include <sys/malloc.h>
#include <sys/pool.h>
#include <sys/event.h>
-#include <miscfs/specfs/specdev.h>
+#include <sys/specdev.h>
int filt_generic_readwrite(struct knote *, long);
void filt_generic_detach(struct knote *);
diff --git a/sys/kern/vfs_subr.c b/sys/kern/vfs_subr.c
index 411acce3010..5c6c435ff61 100644
--- a/sys/kern/vfs_subr.c
+++ b/sys/kern/vfs_subr.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: vfs_subr.c,v 1.194 2011/07/02 15:52:25 thib Exp $ */
+/* $OpenBSD: vfs_subr.c,v 1.195 2011/07/04 20:35:35 deraadt Exp $ */
/* $NetBSD: vfs_subr.c,v 1.53 1996/04/22 01:39:13 christos Exp $ */
/*
@@ -60,12 +60,11 @@
#include <sys/syscallargs.h>
#include <sys/pool.h>
#include <sys/tree.h>
+#include <sys/specdev.h>
#include <uvm/uvm_extern.h>
#include <sys/sysctl.h>
-#include <miscfs/specfs/specdev.h>
-
enum vtype iftovt_tab[16] = {
VNON, VFIFO, VCHR, VNON, VDIR, VNON, VBLK, VNON,
VREG, VNON, VLNK, VNON, VSOCK, VNON, VNON, VBAD,
diff --git a/sys/kern/vfs_vnops.c b/sys/kern/vfs_vnops.c
index d92dd347348..c5f7d4c4dc8 100644
--- a/sys/kern/vfs_vnops.c
+++ b/sys/kern/vfs_vnops.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: vfs_vnops.c,v 1.65 2010/07/26 01:56:27 guenther Exp $ */
+/* $OpenBSD: vfs_vnops.c,v 1.66 2011/07/04 20:35:35 deraadt Exp $ */
/* $NetBSD: vfs_vnops.c,v 1.20 1996/02/04 02:18:41 christos Exp $ */
/*
@@ -53,9 +53,9 @@
#include <sys/cdio.h>
#include <sys/poll.h>
#include <sys/filedesc.h>
+#include <sys/specdev.h>
#include <uvm/uvm_extern.h>
-#include <miscfs/specfs/specdev.h>
int vn_read(struct file *, off_t *, struct uio *, struct ucred *);
int vn_write(struct file *, off_t *, struct uio *, struct ucred *);
diff --git a/sys/miscfs/specfs/spec_subr.c b/sys/miscfs/specfs/spec_subr.c
deleted file mode 100644
index 2077afe0b35..00000000000
--- a/sys/miscfs/specfs/spec_subr.c
+++ /dev/null
@@ -1,99 +0,0 @@
-/* $OpenBSD: spec_subr.c,v 1.4 2008/04/08 14:46:45 thib Exp $ */
-
-/*
- * Copyright (c) 2006 Pedro Martelletto <pedro@ambientworks.net>
- * Copyright (c) 2006 Thordur Bjornsson <thib@openbsd.org>
- *
- * Permission to use, copy, modify, and distribute this software for any
- * purpose with or without fee is hereby granted, provided that the above
- * copyright notice and this permission notice appear in all copies.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
- * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
- * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
- * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
- * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- */
-
-#include <sys/param.h>
-#include <sys/vnode.h>
-#include <sys/malloc.h>
-#include <sys/conf.h>
-#include <sys/stat.h>
-
-#include <miscfs/specfs/specdev.h>
-
-#ifdef CLONE_DEBUG
-#define DNPRINTF(m...) do { printf(m); } while (0)
-#else
-#define DNPRINTF(m...) /* nothing */
-#endif
-
-int
-spec_open_clone(struct vop_open_args *ap)
-{
- struct vnode *cvp, *vp = ap->a_vp;
- struct cloneinfo *cip;
- int error, i;
-
- DNPRINTF("cloning vnode\n");
-
- for (i = 1; i < sizeof(vp->v_specbitmap) * NBBY; i++)
- if (isclr(vp->v_specbitmap, i)) {
- setbit(vp->v_specbitmap, i);
- break;
- }
-
- if (i == sizeof(vp->v_specbitmap) * NBBY)
- return (EBUSY); /* too many open instances */
-
- error = cdevvp(makedev(major(vp->v_rdev), i), &cvp);
- if (error)
- return (error); /* out of vnodes */
-
- VOP_UNLOCK(vp, 0, ap->a_p);
-
- error = cdevsw[major(vp->v_rdev)].d_open(cvp->v_rdev, ap->a_mode,
- S_IFCHR, ap->a_p);
-
- vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, ap->a_p);
-
- if (error) {
- clrbit(vp->v_specbitmap, i);
- return (error); /* device open failed */
- }
-
- cvp->v_flag |= VCLONE;
-
- cip = malloc(sizeof(struct cloneinfo), M_TEMP, M_WAITOK);
- cip->ci_data = vp->v_data;
- cip->ci_vp = cvp;
-
- cvp->v_specparent = vp;
- vp->v_flag |= VCLONED;
- vp->v_data = cip;
-
- DNPRINTF("clone of vnode %p is vnode %p\n", vp, cvp);
-
- return (0); /* device cloned */
-}
-
-int
-spec_close_clone(struct vop_close_args *ap)
-{
- struct vnode *pvp, *vp = ap->a_vp;
- int error;
-
- error = cdevsw[major(vp->v_rdev)].d_close(vp->v_rdev, ap->a_fflag,
- S_IFCHR, ap->a_p);
- if (error)
- return (error); /* device close failed */
-
- pvp = vp->v_specparent; /* get parent device */
- clrbit(pvp->v_specbitmap, minor(vp->v_rdev));
- vrele(pvp);
-
- return (0); /* clone closed */
-}
diff --git a/sys/miscfs/specfs/spec_vnops.c b/sys/miscfs/specfs/spec_vnops.c
deleted file mode 100644
index faae895fb1f..00000000000
--- a/sys/miscfs/specfs/spec_vnops.c
+++ /dev/null
@@ -1,654 +0,0 @@
-/* $OpenBSD: spec_vnops.c,v 1.65 2011/07/04 17:12:53 nicm Exp $ */
-/* $NetBSD: spec_vnops.c,v 1.29 1996/04/22 01:42:38 christos Exp $ */
-
-/*
- * Copyright (c) 1989, 1993
- * 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. 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.
- *
- * @(#)spec_vnops.c 8.8 (Berkeley) 11/21/94
- */
-
-#include <sys/param.h>
-#include <sys/proc.h>
-#include <sys/systm.h>
-#include <sys/kernel.h>
-#include <sys/conf.h>
-#include <sys/buf.h>
-#include <sys/mount.h>
-#include <sys/namei.h>
-#include <sys/vnode.h>
-#include <sys/stat.h>
-#include <sys/errno.h>
-#include <sys/ioctl.h>
-#include <sys/file.h>
-#include <sys/disklabel.h>
-#include <sys/lockf.h>
-#include <sys/poll.h>
-#include <sys/dkio.h>
-
-#include <miscfs/specfs/specdev.h>
-
-#define v_lastr v_specinfo->si_lastr
-
-struct vnode *speclisth[SPECHSZ];
-
-struct vops spec_vops = {
- .vop_lookup = vop_generic_lookup,
- .vop_create = spec_badop,
- .vop_mknod = spec_badop,
- .vop_open = spec_open,
- .vop_close = spec_close,
- .vop_access = spec_access,
- .vop_getattr = spec_getattr,
- .vop_setattr = spec_setattr,
- .vop_read = spec_read,
- .vop_write = spec_write,
- .vop_ioctl = spec_ioctl,
- .vop_poll = spec_poll,
- .vop_kqfilter = spec_kqfilter,
- .vop_revoke = vop_generic_revoke,
- .vop_fsync = spec_fsync,
- .vop_remove = spec_badop,
- .vop_link = spec_badop,
- .vop_rename = spec_badop,
- .vop_mkdir = spec_badop,
- .vop_rmdir = spec_badop,
- .vop_symlink = spec_badop,
- .vop_readdir = spec_badop,
- .vop_readlink = spec_badop,
- .vop_abortop = spec_badop,
- .vop_inactive = spec_inactive,
- .vop_reclaim = nullop,
- .vop_lock = vop_generic_lock,
- .vop_unlock = vop_generic_unlock,
- .vop_islocked = vop_generic_islocked,
- .vop_bmap = vop_generic_bmap,
- .vop_strategy = spec_strategy,
- .vop_print = spec_print,
- .vop_pathconf = spec_pathconf,
- .vop_advlock = spec_advlock,
- .vop_bwrite = vop_generic_bwrite,
-};
-
-/*
- * Open a special file.
- */
-int
-spec_open(void *v)
-{
- struct vop_open_args *ap = v;
- struct proc *p = ap->a_p;
- struct vnode *vp = ap->a_vp;
- struct vnode *bvp;
- dev_t bdev;
- dev_t dev = (dev_t)vp->v_rdev;
- int maj = major(dev);
- int error;
-
- /*
- * Don't allow open if fs is mounted -nodev.
- */
- if (vp->v_mount && (vp->v_mount->mnt_flag & MNT_NODEV))
- return (ENXIO);
-
- switch (vp->v_type) {
-
- case VCHR:
- if ((u_int)maj >= nchrdev)
- return (ENXIO);
- if (ap->a_cred != FSCRED && (ap->a_mode & FWRITE)) {
- /*
- * When running in very secure mode, do not allow
- * opens for writing of any disk character devices.
- */
- if (securelevel >= 2 && cdevsw[maj].d_type == D_DISK)
- return (EPERM);
- /*
- * When running in secure mode, do not allow opens
- * for writing of /dev/mem, /dev/kmem, or character
- * devices whose corresponding block devices are
- * currently mounted.
- */
- if (securelevel >= 1) {
- if ((bdev = chrtoblk(dev)) != NODEV &&
- vfinddev(bdev, VBLK, &bvp) &&
- bvp->v_usecount > 0 &&
- (error = vfs_mountedon(bvp)))
- return (error);
- if (iskmemdev(dev))
- return (EPERM);
- }
- }
- if (cdevsw[maj].d_type == D_TTY)
- vp->v_flag |= VISTTY;
- if (cdevsw[maj].d_flags & D_CLONE)
- return (spec_open_clone(ap));
- VOP_UNLOCK(vp, 0, p);
- error = (*cdevsw[maj].d_open)(dev, ap->a_mode, S_IFCHR, ap->a_p);
- vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, p);
- return (error);
-
- case VBLK:
- if ((u_int)maj >= nblkdev)
- return (ENXIO);
- /*
- * When running in very secure mode, do not allow
- * opens for writing of any disk block devices.
- */
- if (securelevel >= 2 && ap->a_cred != FSCRED &&
- (ap->a_mode & FWRITE) && bdevsw[maj].d_type == D_DISK)
- return (EPERM);
- /*
- * Do not allow opens of block devices that are
- * currently mounted.
- */
- if ((error = vfs_mountedon(vp)) != 0)
- return (error);
- return ((*bdevsw[maj].d_open)(dev, ap->a_mode, S_IFBLK, ap->a_p));
- case VNON:
- case VLNK:
- case VDIR:
- case VREG:
- case VBAD:
- case VFIFO:
- case VSOCK:
- break;
- }
- return (0);
-}
-
-/*
- * Vnode op for read
- */
-int
-spec_read(void *v)
-{
- struct vop_read_args *ap = v;
- struct vnode *vp = ap->a_vp;
- struct uio *uio = ap->a_uio;
- struct proc *p = uio->uio_procp;
- struct buf *bp;
- daddr64_t bn, nextbn, bscale;
- int bsize;
- struct partinfo dpart;
- int n, on, majordev;
- int (*ioctl)(dev_t, u_long, caddr_t, int, struct proc *);
- int error = 0;
-
-#ifdef DIAGNOSTIC
- if (uio->uio_rw != UIO_READ)
- panic("spec_read mode");
- if (uio->uio_segflg == UIO_USERSPACE && uio->uio_procp != curproc)
- panic("spec_read proc");
-#endif
- if (uio->uio_resid == 0)
- return (0);
-
- switch (vp->v_type) {
-
- case VCHR:
- VOP_UNLOCK(vp, 0, p);
- error = (*cdevsw[major(vp->v_rdev)].d_read)
- (vp->v_rdev, uio, ap->a_ioflag);
- vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, p);
- return (error);
-
- case VBLK:
- if (uio->uio_offset < 0)
- return (EINVAL);
- bsize = BLKDEV_IOSIZE;
- if ((majordev = major(vp->v_rdev)) < nblkdev &&
- (ioctl = bdevsw[majordev].d_ioctl) != NULL &&
- (*ioctl)(vp->v_rdev, DIOCGPART, (caddr_t)&dpart, FREAD, p) == 0) {
- u_int32_t frag =
- DISKLABELV1_FFS_FRAG(dpart.part->p_fragblock);
- u_int32_t fsize =
- DISKLABELV1_FFS_FSIZE(dpart.part->p_fragblock);
- if (dpart.part->p_fstype == FS_BSDFFS && frag != 0 &&
- fsize != 0)
- bsize = frag * fsize;
- }
- bscale = btodb(bsize);
- do {
- bn = btodb(uio->uio_offset) & ~(bscale - 1);
- on = uio->uio_offset % bsize;
- n = min((bsize - on), uio->uio_resid);
- if (vp->v_lastr + bscale == bn) {
- nextbn = bn + bscale;
- error = breadn(vp, bn, bsize, &nextbn, &bsize,
- 1, &bp);
- } else
- error = bread(vp, bn, bsize, &bp);
- vp->v_lastr = bn;
- n = min(n, bsize - bp->b_resid);
- if (error) {
- brelse(bp);
- return (error);
- }
- error = uiomove((char *)bp->b_data + on, n, uio);
- brelse(bp);
- } while (error == 0 && uio->uio_resid > 0 && n != 0);
- return (error);
-
- default:
- panic("spec_read type");
- }
- /* NOTREACHED */
-}
-
-int
-spec_inactive(void *v)
-{
- struct vop_inactive_args *ap = v;
-
- VOP_UNLOCK(ap->a_vp, 0, ap->a_p);
- return (0);
-}
-
-/*
- * Vnode op for write
- */
-int
-spec_write(void *v)
-{
- struct vop_write_args *ap = v;
- struct vnode *vp = ap->a_vp;
- struct uio *uio = ap->a_uio;
- struct proc *p = uio->uio_procp;
- struct buf *bp;
- daddr64_t bn, bscale;
- int bsize;
- struct partinfo dpart;
- int n, on, majordev;
- int (*ioctl)(dev_t, u_long, caddr_t, int, struct proc *);
- int error = 0;
-
-#ifdef DIAGNOSTIC
- if (uio->uio_rw != UIO_WRITE)
- panic("spec_write mode");
- if (uio->uio_segflg == UIO_USERSPACE && uio->uio_procp != curproc)
- panic("spec_write proc");
-#endif
-
- switch (vp->v_type) {
-
- case VCHR:
- VOP_UNLOCK(vp, 0, p);
- error = (*cdevsw[major(vp->v_rdev)].d_write)
- (vp->v_rdev, uio, ap->a_ioflag);
- vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, p);
- return (error);
-
- case VBLK:
- if (uio->uio_resid == 0)
- return (0);
- if (uio->uio_offset < 0)
- return (EINVAL);
- bsize = BLKDEV_IOSIZE;
- if ((majordev = major(vp->v_rdev)) < nblkdev &&
- (ioctl = bdevsw[majordev].d_ioctl) != NULL &&
- (*ioctl)(vp->v_rdev, DIOCGPART, (caddr_t)&dpart, FREAD, p) == 0) {
- u_int32_t frag =
- DISKLABELV1_FFS_FRAG(dpart.part->p_fragblock);
- u_int32_t fsize =
- DISKLABELV1_FFS_FSIZE(dpart.part->p_fragblock);
- if (dpart.part->p_fstype == FS_BSDFFS && frag != 0 &&
- fsize != 0)
- bsize = frag * fsize;
- }
- bscale = btodb(bsize);
- do {
- bn = btodb(uio->uio_offset) & ~(bscale - 1);
- on = uio->uio_offset % bsize;
- n = min((bsize - on), uio->uio_resid);
- error = bread(vp, bn, bsize, &bp);
- n = min(n, bsize - bp->b_resid);
- if (error) {
- brelse(bp);
- return (error);
- }
- error = uiomove((char *)bp->b_data + on, n, uio);
- if (n + on == bsize)
- bawrite(bp);
- else
- bdwrite(bp);
- } while (error == 0 && uio->uio_resid > 0 && n != 0);
- return (error);
-
- default:
- panic("spec_write type");
- }
- /* NOTREACHED */
-}
-
-/*
- * Device ioctl operation.
- */
-int
-spec_ioctl(void *v)
-{
- struct vop_ioctl_args *ap = v;
- dev_t dev = ap->a_vp->v_rdev;
- int maj = major(dev);
-
- switch (ap->a_vp->v_type) {
-
- case VCHR:
- return ((*cdevsw[maj].d_ioctl)(dev, ap->a_command, ap->a_data,
- ap->a_fflag, ap->a_p));
-
- case VBLK:
- return ((*bdevsw[maj].d_ioctl)(dev, ap->a_command, ap->a_data,
- ap->a_fflag, ap->a_p));
-
- default:
- panic("spec_ioctl");
- /* NOTREACHED */
- }
-}
-
-int
-spec_poll(void *v)
-{
- struct vop_poll_args *ap = v;
- dev_t dev;
-
- switch (ap->a_vp->v_type) {
-
- default:
- return (ap->a_events &
- (POLLIN | POLLOUT | POLLRDNORM | POLLWRNORM));
-
- case VCHR:
- dev = ap->a_vp->v_rdev;
- return (*cdevsw[major(dev)].d_poll)(dev, ap->a_events, ap->a_p);
- }
-}
-int
-spec_kqfilter(void *v)
-{
- struct vop_kqfilter_args *ap = v;
-
- dev_t dev;
-
- dev = ap->a_vp->v_rdev;
- if (cdevsw[major(dev)].d_kqfilter)
- return (*cdevsw[major(dev)].d_kqfilter)(dev, ap->a_kn);
- return (EOPNOTSUPP);
-}
-
-/*
- * Synch buffers associated with a block device
- */
-int
-spec_fsync(void *v)
-{
- struct vop_fsync_args *ap = v;
- struct vnode *vp = ap->a_vp;
- struct buf *bp;
- struct buf *nbp;
- int s;
-
- if (vp->v_type == VCHR)
- return (0);
- /*
- * Flush all dirty buffers associated with a block device.
- */
-loop:
- s = splbio();
- for (bp = LIST_FIRST(&vp->v_dirtyblkhd);
- bp != LIST_END(&vp->v_dirtyblkhd); bp = nbp) {
- nbp = LIST_NEXT(bp, b_vnbufs);
- if ((bp->b_flags & B_BUSY))
- continue;
- if ((bp->b_flags & B_DELWRI) == 0)
- panic("spec_fsync: not dirty");
- bremfree(bp);
- buf_acquire(bp);
- splx(s);
- bawrite(bp);
- goto loop;
- }
- if (ap->a_waitfor == MNT_WAIT) {
- vwaitforio (vp, 0, "spec_fsync", 0);
-
-#ifdef DIAGNOSTIC
- if (!LIST_EMPTY(&vp->v_dirtyblkhd)) {
- splx(s);
- vprint("spec_fsync: dirty", vp);
- goto loop;
- }
-#endif
- }
- splx(s);
- return (0);
-}
-
-int
-spec_strategy(void *v)
-{
- struct vop_strategy_args *ap = v;
- struct buf *bp = ap->a_bp;
- int maj = major(bp->b_dev);
-
- if (LIST_FIRST(&bp->b_dep) != NULL)
- buf_start(bp);
-
- (*bdevsw[maj].d_strategy)(bp);
- return (0);
-}
-
-/*
- * Device close routine
- */
-int
-spec_close(void *v)
-{
- struct vop_close_args *ap = v;
- struct vnode *vp = ap->a_vp;
- dev_t dev = vp->v_rdev;
- int (*devclose)(dev_t, int, int, struct proc *);
- int mode, error;
-
- switch (vp->v_type) {
-
- case VCHR:
- /*
- * Hack: a tty device that is a controlling terminal
- * has a reference from the session structure.
- * We cannot easily tell that a character device is
- * a controlling terminal, unless it is the closing
- * process' controlling terminal. In that case,
- * if the reference count is 2 (this last descriptor
- * plus the session), release the reference from the session.
- */
- if (vcount(vp) == 2 && ap->a_p &&
- vp == ap->a_p->p_p->ps_session->s_ttyvp) {
- vrele(vp);
- ap->a_p->p_p->ps_session->s_ttyvp = NULL;
- }
- if (cdevsw[major(dev)].d_flags & D_CLONE)
- return (spec_close_clone(ap));
- /*
- * If the vnode is locked, then we are in the midst
- * of forcably closing the device, otherwise we only
- * close on last reference.
- */
- if (vcount(vp) > 1 && (vp->v_flag & VXLOCK) == 0)
- return (0);
- devclose = cdevsw[major(dev)].d_close;
- mode = S_IFCHR;
- break;
-
- case VBLK:
- /*
- * On last close of a block device (that isn't mounted)
- * we must invalidate any in core blocks, so that
- * we can, for instance, change floppy disks. In order to do
- * that, we must lock the vnode. If we are coming from
- * vclean(), the vnode is already locked.
- */
- if (!(vp->v_flag & VXLOCK))
- vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, ap->a_p);
- error = vinvalbuf(vp, V_SAVE, ap->a_cred, ap->a_p, 0, 0);
- if (!(vp->v_flag & VXLOCK))
- VOP_UNLOCK(vp, 0, ap->a_p);
- if (error)
- return (error);
- /*
- * We do not want to really close the device if it
- * is still in use unless we are trying to close it
- * forcibly. Since every use (buffer, vnode, swap, cmap)
- * holds a reference to the vnode, and because we mark
- * any other vnodes that alias this device, when the
- * sum of the reference counts on all the aliased
- * vnodes descends to one, we are on last close.
- */
- if (vcount(vp) > 1 && (vp->v_flag & VXLOCK) == 0)
- return (0);
- devclose = bdevsw[major(dev)].d_close;
- mode = S_IFBLK;
- break;
-
- default:
- panic("spec_close: not special");
- }
-
- return ((*devclose)(dev, ap->a_fflag, mode, ap->a_p));
-}
-
-int
-spec_getattr(void *v)
-{
- struct vop_getattr_args *ap = v;
- struct vnode *vp = ap->a_vp;
-
- if (!(vp->v_flag & VCLONE))
- return (EBADF);
-
- return (VOP_GETATTR(vp->v_specparent, ap->a_vap, ap->a_cred, ap->a_p));
-}
-
-int
-spec_setattr(void *v)
-{
- struct vop_getattr_args *ap = v;
- struct vnode *vp = ap->a_vp;
- int error;
-
- if (!(vp->v_flag & VCLONE))
- return (EBADF);
-
- vn_lock(vp->v_specparent, LK_EXCLUSIVE|LK_RETRY, ap->a_p);
- error = VOP_SETATTR(vp->v_specparent, ap->a_vap, ap->a_cred, ap->a_p);
- VOP_UNLOCK(vp, 0, ap->a_p);
-
- return (error);
-}
-
-int
-spec_access(void *v)
-{
- struct vop_access_args *ap = v;
- struct vnode *vp = ap->a_vp;
-
- if (!(vp->v_flag & VCLONE))
- return (EBADF);
-
- return (VOP_ACCESS(vp->v_specparent, ap->a_mode, ap->a_cred, ap->a_p));
-}
-
-/*
- * Print out the contents of a special device vnode.
- */
-int
-spec_print(void *v)
-{
- struct vop_print_args *ap = v;
-
- printf("tag VT_NON, dev %d, %d\n", major(ap->a_vp->v_rdev),
- minor(ap->a_vp->v_rdev));
- return 0;
-}
-
-/*
- * Return POSIX pathconf information applicable to special devices.
- */
-int
-spec_pathconf(void *v)
-{
- struct vop_pathconf_args *ap = v;
-
- switch (ap->a_name) {
- case _PC_LINK_MAX:
- *ap->a_retval = LINK_MAX;
- return (0);
- case _PC_MAX_CANON:
- *ap->a_retval = MAX_CANON;
- return (0);
- case _PC_MAX_INPUT:
- *ap->a_retval = MAX_INPUT;
- return (0);
- case _PC_PIPE_BUF:
- *ap->a_retval = PIPE_BUF;
- return (0);
- case _PC_CHOWN_RESTRICTED:
- *ap->a_retval = 1;
- return (0);
- case _PC_VDISABLE:
- *ap->a_retval = _POSIX_VDISABLE;
- return (0);
- default:
- return (EINVAL);
- }
- /* NOTREACHED */
-}
-
-/*
- * Special device advisory byte-level locks.
- */
-int
-spec_advlock(void *v)
-{
- struct vop_advlock_args *ap = v;
- struct vnode *vp = ap->a_vp;
-
- return (lf_advlock(&vp->v_speclockf, (off_t)0, ap->a_id,
- ap->a_op, ap->a_fl, ap->a_flags));
-}
-
-/*
- * Special device bad operation
- */
-/*ARGSUSED*/
-int
-spec_badop(void *v)
-{
-
- panic("spec_badop called");
- /* NOTREACHED */
-}
diff --git a/sys/miscfs/specfs/specdev.h b/sys/miscfs/specfs/specdev.h
deleted file mode 100644
index 66662c95919..00000000000
--- a/sys/miscfs/specfs/specdev.h
+++ /dev/null
@@ -1,114 +0,0 @@
-/* $OpenBSD: specdev.h,v 1.29 2010/12/21 20:14:43 thib Exp $ */
-/* $NetBSD: specdev.h,v 1.12 1996/02/13 13:13:01 mycroft Exp $ */
-
-/*
- * Copyright (c) 1990, 1993
- * 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. 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.
- *
- * @(#)specdev.h 8.3 (Berkeley) 8/10/94
- */
-
-/*
- * This structure defines the information maintained about
- * special devices. It is allocated in checkalias and freed
- * in vgone.
- */
-struct specinfo {
- struct vnode **si_hashchain;
- struct vnode *si_specnext;
- struct mount *si_mountpoint;
- dev_t si_rdev;
- struct lockf *si_lockf;
- daddr64_t si_lastr;
- union {
- struct vnode *ci_parent; /* pointer back to parent device */
- u_int8_t ci_bitmap[8]; /* bitmap of devices cloned off us */
- } si_ci;
-};
-
-struct cloneinfo {
- struct vnode *ci_vp; /* cloned vnode */
- void *ci_data; /* original vnode's v_data */
-};
-
-/*
- * Exported shorthand
- */
-#define v_rdev v_specinfo->si_rdev
-#define v_hashchain v_specinfo->si_hashchain
-#define v_specnext v_specinfo->si_specnext
-#define v_specmountpoint v_specinfo->si_mountpoint
-#define v_speclockf v_specinfo->si_lockf
-#define v_specparent v_specinfo->si_ci.ci_parent
-#define v_specbitmap v_specinfo->si_ci.ci_bitmap
-
-/*
- * Special device management
- */
-#define SPECHSZ 64
-#if ((SPECHSZ&(SPECHSZ-1)) == 0)
-#define SPECHASH(rdev) (((rdev>>5)+(rdev))&(SPECHSZ-1))
-#else
-#define SPECHASH(rdev) (((unsigned)((rdev>>5)+(rdev)))%SPECHSZ)
-#endif
-
-extern struct vnode *speclisth[SPECHSZ];
-
-#ifdef _KERNEL
-/*
- * Prototypes for special file operations on vnodes.
- */
-extern struct vops spec_vops;
-struct nameidata;
-struct componentname;
-struct ucred;
-struct flock;
-struct buf;
-struct uio;
-
-int spec_badop(void *);
-int spec_getattr(void *);
-int spec_setattr(void *);
-int spec_access(void *);
-int spec_open(void *);
-int spec_close(void *);
-int spec_read(void *);
-int spec_write(void *);
-int spec_ioctl(void *);
-int spec_poll(void *);
-int spec_kqfilter(void *);
-int spec_fsync(void *);
-int spec_inactive(void *);
-int spec_strategy(void *);
-int spec_print(void *);
-int spec_pathconf(void *);
-int spec_advlock(void *);
-
-/* spec_subr.c */
-int spec_open_clone(struct vop_open_args *);
-int spec_close_clone(struct vop_close_args *);
-#endif /* _KERNEL */
diff --git a/sys/msdosfs/msdosfs_vfsops.c b/sys/msdosfs/msdosfs_vfsops.c
index 0591459e0e0..5c56567dc03 100644
--- a/sys/msdosfs/msdosfs_vfsops.c
+++ b/sys/msdosfs/msdosfs_vfsops.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: msdosfs_vfsops.c,v 1.60 2011/07/04 04:30:41 tedu Exp $ */
+/* $OpenBSD: msdosfs_vfsops.c,v 1.61 2011/07/04 20:35:35 deraadt Exp $ */
/* $NetBSD: msdosfs_vfsops.c,v 1.48 1997/10/18 02:54:57 briggs Exp $ */
/*-
@@ -54,7 +54,7 @@
#include <sys/proc.h>
#include <sys/kernel.h>
#include <sys/vnode.h>
-#include <miscfs/specfs/specdev.h> /* XXX */ /* defines v_rdev */
+#include <sys/specdev.h> /* XXX */ /* defines v_rdev */
#include <sys/mount.h>
#include <sys/buf.h>
#include <sys/file.h>
diff --git a/sys/msdosfs/msdosfs_vnops.c b/sys/msdosfs/msdosfs_vnops.c
index eed2707068e..8f63fada548 100644
--- a/sys/msdosfs/msdosfs_vnops.c
+++ b/sys/msdosfs/msdosfs_vnops.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: msdosfs_vnops.c,v 1.78 2011/07/04 04:30:41 tedu Exp $ */
+/* $OpenBSD: msdosfs_vnops.c,v 1.79 2011/07/04 20:35:35 deraadt Exp $ */
/* $NetBSD: msdosfs_vnops.c,v 1.63 1997/10/17 11:24:19 ws Exp $ */
/*-
@@ -61,7 +61,7 @@
#include <sys/mount.h>
#include <sys/vnode.h>
#include <sys/signalvar.h>
-#include <miscfs/specfs/specdev.h> /* XXX */ /* defines v_rdev */
+#include <sys/specdev.h> /* XXX */ /* defines v_rdev */
#include <sys/malloc.h>
#include <sys/pool.h>
#include <sys/dirent.h> /* defines dirent structure */
diff --git a/sys/ntfs/ntfs_subr.c b/sys/ntfs/ntfs_subr.c
index 06bfda769b1..5b6be5c820a 100644
--- a/sys/ntfs/ntfs_subr.c
+++ b/sys/ntfs/ntfs_subr.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: ntfs_subr.c,v 1.24 2011/07/04 04:30:41 tedu Exp $ */
+/* $OpenBSD: ntfs_subr.c,v 1.25 2011/07/04 20:35:35 deraadt Exp $ */
/* $NetBSD: ntfs_subr.c,v 1.4 2003/04/10 21:37:32 jdolecek Exp $ */
/*-
@@ -40,8 +40,7 @@
#include <sys/file.h>
#include <sys/malloc.h>
#include <sys/rwlock.h>
-
-#include <miscfs/specfs/specdev.h>
+#include <sys/specdev.h>
/* #define NTFS_DEBUG 1 */
#include <ntfs/ntfs.h>
diff --git a/sys/ntfs/ntfs_vfsops.c b/sys/ntfs/ntfs_vfsops.c
index 768908f4a17..29b85366cc5 100644
--- a/sys/ntfs/ntfs_vfsops.c
+++ b/sys/ntfs/ntfs_vfsops.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: ntfs_vfsops.c,v 1.26 2011/07/04 04:30:41 tedu Exp $ */
+/* $OpenBSD: ntfs_vfsops.c,v 1.27 2011/07/04 20:35:35 deraadt Exp $ */
/* $NetBSD: ntfs_vfsops.c,v 1.7 2003/04/24 07:50:19 christos Exp $ */
/*-
@@ -43,6 +43,7 @@
#include <sys/systm.h>
#include <sys/device.h>
#include <sys/conf.h>
+#include <sys/specdev.h>
#if defined(__NetBSD__) || defined(__OpenBSD__)
#include <uvm/uvm_extern.h>
@@ -50,8 +51,6 @@
#include <vm/vm.h>
#endif
-#include <miscfs/specfs/specdev.h>
-
/*#define NTFS_DEBUG 1*/
#if defined(__FreeBSD__) || defined(__NetBSD__)
#include <fs/ntfs/ntfs.h>
diff --git a/sys/ntfs/ntfs_vnops.c b/sys/ntfs/ntfs_vnops.c
index 705855da01e..3acd2e00968 100644
--- a/sys/ntfs/ntfs_vnops.c
+++ b/sys/ntfs/ntfs_vnops.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: ntfs_vnops.c,v 1.23 2011/04/05 14:14:07 thib Exp $ */
+/* $OpenBSD: ntfs_vnops.c,v 1.24 2011/07/04 20:35:35 deraadt Exp $ */
/* $NetBSD: ntfs_vnops.c,v 1.6 2003/04/10 21:57:26 jdolecek Exp $ */
/*
@@ -47,14 +47,13 @@
#include <sys/malloc.h>
#include <sys/buf.h>
#include <sys/dirent.h>
+#include <sys/specdev.h>
/*#define NTFS_DEBUG 1*/
#include <ntfs/ntfs.h>
#include <ntfs/ntfs_inode.h>
#include <ntfs/ntfs_subr.h>
-#include <miscfs/specfs/specdev.h>
-
#include <sys/unistd.h> /* for pathconf(2) constants */
static int ntfs_read(void *);
diff --git a/sys/sys/specdev.h b/sys/sys/specdev.h
index 66662c95919..846daec47b8 100644
--- a/sys/sys/specdev.h
+++ b/sys/sys/specdev.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: specdev.h,v 1.29 2010/12/21 20:14:43 thib Exp $ */
+/* $OpenBSD: specdev.h,v 1.30 2011/07/04 20:35:35 deraadt Exp $ */
/* $NetBSD: specdev.h,v 1.12 1996/02/13 13:13:01 mycroft Exp $ */
/*
diff --git a/sys/sys/syscall.h b/sys/sys/syscall.h
index 0bfaac0ea45..4fd52a30d53 100644
--- a/sys/sys/syscall.h
+++ b/sys/sys/syscall.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: syscall.h,v 1.119 2011/06/30 13:44:15 tedu Exp $ */
+/* $OpenBSD: syscall.h,v 1.120 2011/07/04 20:35:35 deraadt Exp $ */
/*
* System call numbers.
diff --git a/sys/sys/syscallargs.h b/sys/sys/syscallargs.h
index 8e796044eae..8bc20b2fa44 100644
--- a/sys/sys/syscallargs.h
+++ b/sys/sys/syscallargs.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: syscallargs.h,v 1.121 2011/06/30 13:44:15 tedu Exp $ */
+/* $OpenBSD: syscallargs.h,v 1.122 2011/07/04 20:35:35 deraadt Exp $ */
/*
* System call argument lists.
diff --git a/sys/ufs/ext2fs/ext2fs_bmap.c b/sys/ufs/ext2fs/ext2fs_bmap.c
index 2d87ee895f4..f685d496984 100644
--- a/sys/ufs/ext2fs/ext2fs_bmap.c
+++ b/sys/ufs/ext2fs/ext2fs_bmap.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: ext2fs_bmap.c,v 1.18 2008/06/12 06:58:40 deraadt Exp $ */
+/* $OpenBSD: ext2fs_bmap.c,v 1.19 2011/07/04 20:35:35 deraadt Exp $ */
/* $NetBSD: ext2fs_bmap.c,v 1.5 2000/03/30 12:41:11 augustss Exp $ */
/*
@@ -46,8 +46,7 @@
#include <sys/vnode.h>
#include <sys/mount.h>
#include <sys/resourcevar.h>
-
-#include <miscfs/specfs/specdev.h>
+#include <sys/specdev.h>
#include <ufs/ufs/quota.h>
#include <ufs/ufs/inode.h>
diff --git a/sys/ufs/ext2fs/ext2fs_subr.c b/sys/ufs/ext2fs/ext2fs_subr.c
index 8878644ad64..eabec5a499f 100644
--- a/sys/ufs/ext2fs/ext2fs_subr.c
+++ b/sys/ufs/ext2fs/ext2fs_subr.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: ext2fs_subr.c,v 1.26 2011/07/04 04:30:41 tedu Exp $ */
+/* $OpenBSD: ext2fs_subr.c,v 1.27 2011/07/04 20:35:35 deraadt Exp $ */
/* $NetBSD: ext2fs_subr.c,v 1.1 1997/06/11 09:34:03 bouyer Exp $ */
/*
@@ -39,6 +39,7 @@
#include <sys/vnode.h>
#include <sys/mount.h>
#include <sys/buf.h>
+#include <sys/specdev.h>
#include <ufs/ufs/quota.h>
#include <ufs/ufs/inode.h>
@@ -47,7 +48,6 @@
#include <ufs/ext2fs/ext2fs.h>
#include <ufs/ext2fs/ext2fs_extern.h>
-#include <miscfs/specfs/specdev.h>
#include <miscfs/fifofs/fifo.h>
union _qcvt {
diff --git a/sys/ufs/ext2fs/ext2fs_vfsops.c b/sys/ufs/ext2fs/ext2fs_vfsops.c
index 356976e3715..a3f618ce44a 100644
--- a/sys/ufs/ext2fs/ext2fs_vfsops.c
+++ b/sys/ufs/ext2fs/ext2fs_vfsops.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: ext2fs_vfsops.c,v 1.63 2011/07/04 04:30:41 tedu Exp $ */
+/* $OpenBSD: ext2fs_vfsops.c,v 1.64 2011/07/04 20:35:35 deraadt Exp $ */
/* $NetBSD: ext2fs_vfsops.c,v 1.1 1997/06/11 09:34:07 bouyer Exp $ */
/*
@@ -54,8 +54,7 @@
#include <sys/pool.h>
#include <sys/lock.h>
#include <sys/dkio.h>
-
-#include <miscfs/specfs/specdev.h>
+#include <sys/specdev.h>
#include <ufs/ufs/quota.h>
#include <ufs/ufs/ufsmount.h>
diff --git a/sys/ufs/ext2fs/ext2fs_vnops.c b/sys/ufs/ext2fs/ext2fs_vnops.c
index 9a4c310ea45..c320d7c7096 100644
--- a/sys/ufs/ext2fs/ext2fs_vnops.c
+++ b/sys/ufs/ext2fs/ext2fs_vnops.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: ext2fs_vnops.c,v 1.60 2011/07/03 18:23:10 tedu Exp $ */
+/* $OpenBSD: ext2fs_vnops.c,v 1.61 2011/07/04 20:35:35 deraadt Exp $ */
/* $NetBSD: ext2fs_vnops.c,v 1.1 1997/06/11 09:34:09 bouyer Exp $ */
/*
@@ -55,11 +55,11 @@
#include <sys/malloc.h>
#include <sys/pool.h>
#include <sys/signalvar.h>
+#include <sys/specdev.h>
#include <uvm/uvm_extern.h>
#include <miscfs/fifofs/fifo.h>
-#include <miscfs/specfs/specdev.h>
#include <ufs/ufs/quota.h>
#include <ufs/ufs/inode.h>
diff --git a/sys/ufs/ffs/ffs_softdep.c b/sys/ufs/ffs/ffs_softdep.c
index f7d8f87f61d..86618b22045 100644
--- a/sys/ufs/ffs/ffs_softdep.c
+++ b/sys/ufs/ffs/ffs_softdep.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: ffs_softdep.c,v 1.106 2011/07/04 04:30:41 tedu Exp $ */
+/* $OpenBSD: ffs_softdep.c,v 1.107 2011/07/04 20:35:35 deraadt Exp $ */
/*
* Copyright 1998, 2000 Marshall Kirk McKusick. All Rights Reserved.
@@ -51,7 +51,7 @@
#include <sys/syslog.h>
#include <sys/systm.h>
#include <sys/vnode.h>
-#include <miscfs/specfs/specdev.h>
+#include <sys/specdev.h>
#include <ufs/ufs/dir.h>
#include <ufs/ufs/quota.h>
#include <ufs/ufs/inode.h>
diff --git a/sys/ufs/ffs/ffs_vfsops.c b/sys/ufs/ffs/ffs_vfsops.c
index 77acce3834b..0b9fec7fd2e 100644
--- a/sys/ufs/ffs/ffs_vfsops.c
+++ b/sys/ufs/ffs/ffs_vfsops.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: ffs_vfsops.c,v 1.132 2011/07/04 04:30:41 tedu Exp $ */
+/* $OpenBSD: ffs_vfsops.c,v 1.133 2011/07/04 20:35:35 deraadt Exp $ */
/* $NetBSD: ffs_vfsops.c,v 1.19 1996/02/09 22:22:26 christos Exp $ */
/*
@@ -51,11 +51,10 @@
#include <sys/pool.h>
#include <sys/dkio.h>
#include <sys/disk.h>
+#include <sys/specdev.h>
#include <dev/rndvar.h>
-#include <miscfs/specfs/specdev.h>
-
#include <ufs/ufs/quota.h>
#include <ufs/ufs/ufsmount.h>
#include <ufs/ufs/inode.h>
diff --git a/sys/ufs/ffs/ffs_vnops.c b/sys/ufs/ffs/ffs_vnops.c
index 1c7bda9692f..5465d05af64 100644
--- a/sys/ufs/ffs/ffs_vnops.c
+++ b/sys/ufs/ffs/ffs_vnops.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: ffs_vnops.c,v 1.64 2011/07/04 04:30:41 tedu Exp $ */
+/* $OpenBSD: ffs_vnops.c,v 1.65 2011/07/04 20:35:35 deraadt Exp $ */
/* $NetBSD: ffs_vnops.c,v 1.7 1996/05/11 18:27:24 mycroft Exp $ */
/*
@@ -47,10 +47,10 @@
#include <sys/signalvar.h>
#include <sys/pool.h>
#include <sys/event.h>
+#include <sys/specdev.h>
#include <uvm/uvm_extern.h>
-#include <miscfs/specfs/specdev.h>
#include <miscfs/fifofs/fifo.h>
#include <ufs/ufs/quota.h>
diff --git a/sys/ufs/mfs/mfs_vnops.c b/sys/ufs/mfs/mfs_vnops.c
index f9831d02740..62c2c8130c1 100644
--- a/sys/ufs/mfs/mfs_vnops.c
+++ b/sys/ufs/mfs/mfs_vnops.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: mfs_vnops.c,v 1.41 2011/04/05 14:14:07 thib Exp $ */
+/* $OpenBSD: mfs_vnops.c,v 1.42 2011/07/04 20:35:35 deraadt Exp $ */
/* $NetBSD: mfs_vnops.c,v 1.8 1996/03/17 02:16:32 christos Exp $ */
/*
@@ -40,8 +40,7 @@
#include <sys/buf.h>
#include <sys/vnode.h>
#include <sys/malloc.h>
-
-#include <miscfs/specfs/specdev.h>
+#include <sys/specdev.h>
#include <machine/vmparam.h>
diff --git a/sys/ufs/ufs/ufs_bmap.c b/sys/ufs/ufs/ufs_bmap.c
index d39fb8db443..377bb78718b 100644
--- a/sys/ufs/ufs/ufs_bmap.c
+++ b/sys/ufs/ufs/ufs_bmap.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: ufs_bmap.c,v 1.29 2008/06/12 06:58:40 deraadt Exp $ */
+/* $OpenBSD: ufs_bmap.c,v 1.30 2011/07/04 20:35:35 deraadt Exp $ */
/* $NetBSD: ufs_bmap.c,v 1.3 1996/02/09 22:36:00 christos Exp $ */
/*
@@ -44,8 +44,7 @@
#include <sys/vnode.h>
#include <sys/mount.h>
#include <sys/resourcevar.h>
-
-#include <miscfs/specfs/specdev.h>
+#include <sys/specdev.h>
#include <ufs/ufs/quota.h>
#include <ufs/ufs/inode.h>
diff --git a/sys/ufs/ufs/ufs_vfsops.c b/sys/ufs/ufs/ufs_vfsops.c
index 7f808285c9a..41661d0d699 100644
--- a/sys/ufs/ufs/ufs_vfsops.c
+++ b/sys/ufs/ufs/ufs_vfsops.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: ufs_vfsops.c,v 1.15 2006/04/04 11:21:40 pedro Exp $ */
+/* $OpenBSD: ufs_vfsops.c,v 1.16 2011/07/04 20:35:35 deraadt Exp $ */
/* $NetBSD: ufs_vfsops.c,v 1.4 1996/02/09 22:36:12 christos Exp $ */
/*
@@ -44,8 +44,7 @@
#include <sys/buf.h>
#include <sys/vnode.h>
#include <sys/malloc.h>
-
-#include <miscfs/specfs/specdev.h>
+#include <sys/specdev.h>
#include <ufs/ufs/quota.h>
#include <ufs/ufs/inode.h>
diff --git a/sys/ufs/ufs/ufs_vnops.c b/sys/ufs/ufs/ufs_vnops.c
index 2354c7244a3..436d2549450 100644
--- a/sys/ufs/ufs/ufs_vnops.c
+++ b/sys/ufs/ufs/ufs_vnops.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: ufs_vnops.c,v 1.100 2011/07/03 18:23:10 tedu Exp $ */
+/* $OpenBSD: ufs_vnops.c,v 1.101 2011/07/04 20:35:35 deraadt Exp $ */
/* $NetBSD: ufs_vnops.c,v 1.18 1996/05/11 18:28:04 mycroft Exp $ */
/*
@@ -55,10 +55,10 @@
#include <sys/lockf.h>
#include <sys/event.h>
#include <sys/poll.h>
+#include <sys/specdev.h>
#include <uvm/uvm_extern.h>
-#include <miscfs/specfs/specdev.h>
#include <miscfs/fifofs/fifo.h>
#include <ufs/ufs/quota.h>
diff --git a/sys/uvm/uvm_mmap.c b/sys/uvm/uvm_mmap.c
index e87b89dd160..e2cda075b0f 100644
--- a/sys/uvm/uvm_mmap.c
+++ b/sys/uvm/uvm_mmap.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: uvm_mmap.c,v 1.84 2011/06/06 17:10:23 ariane Exp $ */
+/* $OpenBSD: uvm_mmap.c,v 1.85 2011/07/04 20:35:35 deraadt Exp $ */
/* $NetBSD: uvm_mmap.c,v 1.49 2001/02/18 21:19:08 chs Exp $ */
/*
@@ -62,11 +62,10 @@
#include <sys/vnode.h>
#include <sys/conf.h>
#include <sys/stat.h>
+#include <sys/specdev.h>
#include <machine/exec.h> /* for __LDPGSZ */
-#include <miscfs/specfs/specdev.h>
-
#include <sys/syscallargs.h>
#include <uvm/uvm.h>
diff --git a/sys/uvm/uvm_swap.c b/sys/uvm/uvm_swap.c
index f7d16492256..406587f9125 100644
--- a/sys/uvm/uvm_swap.c
+++ b/sys/uvm/uvm_swap.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: uvm_swap.c,v 1.103 2011/07/03 18:34:14 oga Exp $ */
+/* $OpenBSD: uvm_swap.c,v 1.104 2011/07/04 20:35:35 deraadt Exp $ */
/* $NetBSD: uvm_swap.c,v 1.40 2000/11/17 11:39:39 mrg Exp $ */
/*
@@ -57,7 +57,7 @@
#include <sys/syslog.h>
#endif
-#include <miscfs/specfs/specdev.h>
+#include <sys/specdev.h>
#include "vnd.h"
diff --git a/sys/uvm/uvm_vnode.c b/sys/uvm/uvm_vnode.c
index 33ed7358934..130cf88ae0c 100644
--- a/sys/uvm/uvm_vnode.c
+++ b/sys/uvm/uvm_vnode.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: uvm_vnode.c,v 1.75 2011/07/04 00:15:47 oga Exp $ */
+/* $OpenBSD: uvm_vnode.c,v 1.76 2011/07/04 20:35:35 deraadt Exp $ */
/* $NetBSD: uvm_vnode.c,v 1.36 2000/11/24 20:34:01 chs Exp $ */
/*
@@ -61,8 +61,7 @@
#include <sys/conf.h>
#include <sys/rwlock.h>
#include <sys/dkio.h>
-
-#include <miscfs/specfs/specdev.h>
+#include <sys/specdev.h>
#include <uvm/uvm.h>
#include <uvm/uvm_vnode.h>