Module Name:    src
Committed By:   pooka
Date:           Mon Mar 29 13:11:34 UTC 2010

Modified Files:
        src/sys/fs/cd9660: cd9660_vnops.c
        src/sys/fs/efs: efs_vnops.c
        src/sys/fs/hfs: hfs_vnops.c
        src/sys/fs/puffs: puffs_vnops.c
        src/sys/fs/tmpfs: tmpfs_fifoops.h tmpfs_vnops.c
        src/sys/kern: vfs_vnops.c
        src/sys/miscfs/fifofs: fifo.h fifo_vnops.c
        src/sys/nfs: nfs_vnops.c
        src/sys/sys: vnode.h
        src/sys/ufs/ext2fs: ext2fs_vnops.c
        src/sys/ufs/ffs: ffs_vnops.c
        src/sys/ufs/lfs: lfs_vnops.c
        src/sys/ufs/ufs: ufs_vnops.c

Log Message:
Stop exposing fifofs internals and leave only fifo_vnodeop_p visible.


To generate a diff of this commit:
cvs rdiff -u -r1.38 -r1.39 src/sys/fs/cd9660/cd9660_vnops.c
cvs rdiff -u -r1.20 -r1.21 src/sys/fs/efs/efs_vnops.c
cvs rdiff -u -r1.16 -r1.17 src/sys/fs/hfs/hfs_vnops.c
cvs rdiff -u -r1.143 -r1.144 src/sys/fs/puffs/puffs_vnops.c
cvs rdiff -u -r1.6 -r1.7 src/sys/fs/tmpfs/tmpfs_fifoops.h
cvs rdiff -u -r1.67 -r1.68 src/sys/fs/tmpfs/tmpfs_vnops.c
cvs rdiff -u -r1.169 -r1.170 src/sys/kern/vfs_vnops.c
cvs rdiff -u -r1.25 -r1.26 src/sys/miscfs/fifofs/fifo.h
cvs rdiff -u -r1.67 -r1.68 src/sys/miscfs/fifofs/fifo_vnops.c
cvs rdiff -u -r1.282 -r1.283 src/sys/nfs/nfs_vnops.c
cvs rdiff -u -r1.214 -r1.215 src/sys/sys/vnode.h
cvs rdiff -u -r1.91 -r1.92 src/sys/ufs/ext2fs/ext2fs_vnops.c
cvs rdiff -u -r1.113 -r1.114 src/sys/ufs/ffs/ffs_vnops.c
cvs rdiff -u -r1.226 -r1.227 src/sys/ufs/lfs/lfs_vnops.c
cvs rdiff -u -r1.180 -r1.181 src/sys/ufs/ufs/ufs_vnops.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/fs/cd9660/cd9660_vnops.c
diff -u src/sys/fs/cd9660/cd9660_vnops.c:1.38 src/sys/fs/cd9660/cd9660_vnops.c:1.39
--- src/sys/fs/cd9660/cd9660_vnops.c:1.38	Fri Jul  3 21:17:40 2009
+++ src/sys/fs/cd9660/cd9660_vnops.c	Mon Mar 29 13:11:32 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: cd9660_vnops.c,v 1.38 2009/07/03 21:17:40 elad Exp $	*/
+/*	$NetBSD: cd9660_vnops.c,v 1.39 2010/03/29 13:11:32 pooka Exp $	*/
 
 /*-
  * Copyright (c) 1994
@@ -37,7 +37,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: cd9660_vnops.c,v 1.38 2009/07/03 21:17:40 elad Exp $");
+__KERNEL_RCSID(0, "$NetBSD: cd9660_vnops.c,v 1.39 2010/03/29 13:11:32 pooka Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -948,45 +948,45 @@
 int (**cd9660_fifoop_p)(void *);
 const struct vnodeopv_entry_desc cd9660_fifoop_entries[] = {
 	{ &vop_default_desc, vn_default_error },
-	{ &vop_lookup_desc, fifo_lookup },		/* lookup */
-	{ &vop_create_desc, fifo_create },		/* create */
-	{ &vop_mknod_desc, fifo_mknod },		/* mknod */
-	{ &vop_open_desc, fifo_open },			/* open */
-	{ &vop_close_desc, fifo_close },		/* close */
+	{ &vop_lookup_desc, vn_fifo_bypass },		/* lookup */
+	{ &vop_create_desc, vn_fifo_bypass },		/* create */
+	{ &vop_mknod_desc, vn_fifo_bypass },		/* mknod */
+	{ &vop_open_desc, vn_fifo_bypass },		/* open */
+	{ &vop_close_desc, vn_fifo_bypass },		/* close */
 	{ &vop_access_desc, cd9660_access },		/* access */
 	{ &vop_getattr_desc, cd9660_getattr },		/* getattr */
 	{ &vop_setattr_desc, cd9660_setattr },		/* setattr */
-	{ &vop_read_desc, fifo_read },			/* read */
-	{ &vop_write_desc, fifo_write },		/* write */
+	{ &vop_read_desc, vn_fifo_bypass },		/* read */
+	{ &vop_write_desc, vn_fifo_bypass },		/* write */
 	{ &vop_fcntl_desc, genfs_fcntl },		/* fcntl */
-	{ &vop_ioctl_desc, fifo_ioctl },		/* ioctl */
-	{ &vop_poll_desc, fifo_poll },			/* poll */
-	{ &vop_kqfilter_desc, fifo_kqfilter },		/* kqfilter */
-	{ &vop_revoke_desc, fifo_revoke },		/* revoke */
-	{ &vop_mmap_desc, fifo_mmap },			/* mmap */
-	{ &vop_fsync_desc, fifo_fsync },		/* fsync */
-	{ &vop_seek_desc, fifo_seek },			/* seek */
-	{ &vop_remove_desc, fifo_remove },		/* remove */
-	{ &vop_link_desc, fifo_link }	,		/* link */
-	{ &vop_rename_desc, fifo_rename },		/* rename */
-	{ &vop_mkdir_desc, fifo_mkdir },		/* mkdir */
-	{ &vop_rmdir_desc, fifo_rmdir },		/* rmdir */
-	{ &vop_symlink_desc, fifo_symlink },		/* symlink */
-	{ &vop_readdir_desc, fifo_readdir },		/* readdir */
-	{ &vop_readlink_desc, fifo_readlink },		/* readlink */
-	{ &vop_abortop_desc, fifo_abortop },		/* abortop */
+	{ &vop_ioctl_desc, vn_fifo_bypass },		/* ioctl */
+	{ &vop_poll_desc, vn_fifo_bypass },		/* poll */
+	{ &vop_kqfilter_desc, vn_fifo_bypass },		/* kqfilter */
+	{ &vop_revoke_desc, vn_fifo_bypass },		/* revoke */
+	{ &vop_mmap_desc, vn_fifo_bypass },		/* mmap */
+	{ &vop_fsync_desc, vn_fifo_bypass },		/* fsync */
+	{ &vop_seek_desc, vn_fifo_bypass },		/* seek */
+	{ &vop_remove_desc, vn_fifo_bypass },		/* remove */
+	{ &vop_link_desc, vn_fifo_bypass } ,		/* link */
+	{ &vop_rename_desc, vn_fifo_bypass },		/* rename */
+	{ &vop_mkdir_desc, vn_fifo_bypass },		/* mkdir */
+	{ &vop_rmdir_desc, vn_fifo_bypass },		/* rmdir */
+	{ &vop_symlink_desc, vn_fifo_bypass },		/* symlink */
+	{ &vop_readdir_desc, vn_fifo_bypass },		/* readdir */
+	{ &vop_readlink_desc, vn_fifo_bypass },		/* readlink */
+	{ &vop_abortop_desc, vn_fifo_bypass },		/* abortop */
 	{ &vop_inactive_desc, cd9660_inactive },	/* inactive */
 	{ &vop_reclaim_desc, cd9660_reclaim },		/* reclaim */
 	{ &vop_lock_desc, genfs_lock },			/* lock */
 	{ &vop_unlock_desc, genfs_unlock },		/* unlock */
-	{ &vop_bmap_desc, fifo_bmap },			/* bmap */
-	{ &vop_strategy_desc, fifo_strategy },		/* strategy */
+	{ &vop_bmap_desc, vn_fifo_bypass },		/* bmap */
+	{ &vop_strategy_desc, vn_fifo_bypass },		/* strategy */
 	{ &vop_print_desc, cd9660_print },		/* print */
 	{ &vop_islocked_desc, genfs_islocked },		/* islocked */
-	{ &vop_pathconf_desc, fifo_pathconf },		/* pathconf */
-	{ &vop_advlock_desc, fifo_advlock },		/* advlock */
+	{ &vop_pathconf_desc, vn_fifo_bypass },		/* pathconf */
+	{ &vop_advlock_desc, vn_fifo_bypass },		/* advlock */
 	{ &vop_bwrite_desc, vn_bwrite },		/* bwrite */
-	{ &vop_putpages_desc, fifo_putpages }, 		/* putpages */
+	{ &vop_putpages_desc, vn_fifo_bypass }, 	/* putpages */
 	{ NULL, NULL }
 };
 const struct vnodeopv_desc cd9660_fifoop_opv_desc =

Index: src/sys/fs/efs/efs_vnops.c
diff -u src/sys/fs/efs/efs_vnops.c:1.20 src/sys/fs/efs/efs_vnops.c:1.21
--- src/sys/fs/efs/efs_vnops.c:1.20	Fri Jul  3 22:25:51 2009
+++ src/sys/fs/efs/efs_vnops.c	Mon Mar 29 13:11:32 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: efs_vnops.c,v 1.20 2009/07/03 22:25:51 pooka Exp $	*/
+/*	$NetBSD: efs_vnops.c,v 1.21 2010/03/29 13:11:32 pooka Exp $	*/
 
 /*
  * Copyright (c) 2006 Stephen M. Rumble <rum...@ephemeral.org>
@@ -17,7 +17,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: efs_vnops.c,v 1.20 2009/07/03 22:25:51 pooka Exp $");
+__KERNEL_RCSID(0, "$NetBSD: efs_vnops.c,v 1.21 2010/03/29 13:11:32 pooka Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -910,42 +910,42 @@
 int (**efs_fifoop_p)(void *);
 const struct vnodeopv_entry_desc efs_fifoop_entries[] = {
 	{ &vop_default_desc,	vn_default_error},	/* error handler */
-	{ &vop_lookup_desc,	fifo_lookup	},	/* lookup */
-	{ &vop_create_desc,	fifo_create	},	/* create */
-	{ &vop_mknod_desc,	fifo_mknod	},	/* mknod */
-	{ &vop_open_desc,	fifo_open	},	/* open */
-	{ &vop_close_desc,	fifo_close	},	/* close */
+	{ &vop_lookup_desc,	vn_fifo_bypass	},	/* lookup */
+	{ &vop_create_desc,	vn_fifo_bypass	},	/* create */
+	{ &vop_mknod_desc,	vn_fifo_bypass	},	/* mknod */
+	{ &vop_open_desc,	vn_fifo_bypass	},	/* open */
+	{ &vop_close_desc,	vn_fifo_bypass	},	/* close */
 	{ &vop_access_desc,	efs_access	},	/* access */
 	{ &vop_getattr_desc,	efs_getattr	},	/* getattr */
 	{ &vop_setattr_desc,	genfs_eopnotsupp},	/* setattr */
-	{ &vop_read_desc,	fifo_read	},	/* read */
-	{ &vop_write_desc,	fifo_write	},	/* write */
-	{ &vop_ioctl_desc,	fifo_ioctl	},	/* ioctl */
+	{ &vop_read_desc,	vn_fifo_bypass	},	/* read */
+	{ &vop_write_desc,	vn_fifo_bypass	},	/* write */
+	{ &vop_ioctl_desc,	vn_fifo_bypass	},	/* ioctl */
 	{ &vop_fcntl_desc,	genfs_fcntl	},	/* fcntl */
-	{ &vop_poll_desc,	fifo_poll	},	/* poll */
-	{ &vop_kqfilter_desc,	fifo_kqfilter	},	/* kqfilter */
-	{ &vop_revoke_desc,	fifo_revoke	},	/* revoke */
-	{ &vop_mmap_desc,	fifo_mmap	},	/* mmap */
-	{ &vop_fsync_desc,	fifo_fsync	},	/* fsync */
-	{ &vop_seek_desc,	fifo_seek	},	/* seek */
-	{ &vop_remove_desc,	fifo_remove	},	/* remove */
-	{ &vop_link_desc,	fifo_link	},	/* link */
-	{ &vop_rename_desc,	fifo_rename	},	/* rename */
-	{ &vop_mkdir_desc,	fifo_mkdir	},	/* mkdir */
-	{ &vop_rmdir_desc,	fifo_rmdir	},	/* rmdir */
-	{ &vop_symlink_desc,	fifo_symlink	},	/* symlink */
-	{ &vop_readdir_desc,	fifo_readdir	},	/* readdir */
-	{ &vop_readlink_desc,	fifo_readlink	},	/* readlink */
-	{ &vop_abortop_desc,	fifo_abortop	},	/* abortop */
+	{ &vop_poll_desc,	vn_fifo_bypass	},	/* poll */
+	{ &vop_kqfilter_desc,	vn_fifo_bypass	},	/* kqfilter */
+	{ &vop_revoke_desc,	vn_fifo_bypass	},	/* revoke */
+	{ &vop_mmap_desc,	vn_fifo_bypass	},	/* mmap */
+	{ &vop_fsync_desc,	vn_fifo_bypass	},	/* fsync */
+	{ &vop_seek_desc,	vn_fifo_bypass	},	/* seek */
+	{ &vop_remove_desc,	vn_fifo_bypass	},	/* remove */
+	{ &vop_link_desc,	vn_fifo_bypass	},	/* link */
+	{ &vop_rename_desc,	vn_fifo_bypass	},	/* rename */
+	{ &vop_mkdir_desc,	vn_fifo_bypass	},	/* mkdir */
+	{ &vop_rmdir_desc,	vn_fifo_bypass	},	/* rmdir */
+	{ &vop_symlink_desc,	vn_fifo_bypass	},	/* symlink */
+	{ &vop_readdir_desc,	vn_fifo_bypass	},	/* readdir */
+	{ &vop_readlink_desc,	vn_fifo_bypass	},	/* readlink */
+	{ &vop_abortop_desc,	vn_fifo_bypass	},	/* abortop */
 	{ &vop_inactive_desc,	efs_inactive	},	/* inactive */
 	{ &vop_reclaim_desc,	efs_reclaim	},	/* reclaim */
 	{ &vop_lock_desc,	genfs_lock,	},	/* lock */
 	{ &vop_unlock_desc,	genfs_unlock,	},	/* unlock */
 	{ &vop_islocked_desc,	genfs_islocked,	},	/* islocked */
-	{ &vop_bmap_desc,	fifo_bmap	},	/* bmap */
+	{ &vop_bmap_desc,	vn_fifo_bypass	},	/* bmap */
 	{ &vop_print_desc,	efs_print	},	/* print */
-	{ &vop_pathconf_desc,	fifo_pathconf	},	/* pathconf */
-	{ &vop_advlock_desc,	fifo_advlock	},	/* advlock */
+	{ &vop_pathconf_desc,	vn_fifo_bypass	},	/* pathconf */
+	{ &vop_advlock_desc,	vn_fifo_bypass	},	/* advlock */
 							/* blkatoff */
 							/* valloc */
 							/* balloc */
@@ -953,7 +953,7 @@
 							/* truncate */
 							/* whiteout */
 	{ &vop_bwrite_desc,	vn_bwrite	},	/* bwrite */
-	{ &vop_strategy_desc,	fifo_strategy	},	/* strategy */
+	{ &vop_strategy_desc,	vn_fifo_bypass	},	/* strategy */
 	{ NULL, NULL }
 };
 const struct vnodeopv_desc efs_fifoop_opv_desc = {

Index: src/sys/fs/hfs/hfs_vnops.c
diff -u src/sys/fs/hfs/hfs_vnops.c:1.16 src/sys/fs/hfs/hfs_vnops.c:1.17
--- src/sys/fs/hfs/hfs_vnops.c:1.16	Fri Jan  8 11:35:08 2010
+++ src/sys/fs/hfs/hfs_vnops.c	Mon Mar 29 13:11:33 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: hfs_vnops.c,v 1.16 2010/01/08 11:35:08 pooka Exp $	*/
+/*	$NetBSD: hfs_vnops.c,v 1.17 2010/03/29 13:11:33 pooka Exp $	*/
 
 /*-
  * Copyright (c) 2005, 2007 The NetBSD Foundation, Inc.
@@ -101,7 +101,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: hfs_vnops.c,v 1.16 2010/01/08 11:35:08 pooka Exp $");
+__KERNEL_RCSID(0, "$NetBSD: hfs_vnops.c,v 1.17 2010/03/29 13:11:33 pooka Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_ipsec.h"
@@ -259,45 +259,45 @@
 int (**hfs_fifoop_p) (void *);
 const struct vnodeopv_entry_desc hfs_fifoop_entries[] = {
 	{ &vop_default_desc, vn_default_error },
-	{ &vop_lookup_desc, fifo_lookup },		/* lookup */
-	{ &vop_create_desc, fifo_create },		/* create */
-	{ &vop_mknod_desc, fifo_mknod },		/* mknod */
-	{ &vop_open_desc, fifo_open },			/* open */
-	{ &vop_close_desc, fifo_close },		/* close */
+	{ &vop_lookup_desc, vn_fifo_bypass },		/* lookup */
+	{ &vop_create_desc, vn_fifo_bypass },		/* create */
+	{ &vop_mknod_desc, vn_fifo_bypass },		/* mknod */
+	{ &vop_open_desc, vn_fifo_bypass },		/* open */
+	{ &vop_close_desc, vn_fifo_bypass },		/* close */
 	{ &vop_access_desc, hfs_vop_access },		/* access */
-	{ &vop_getattr_desc, hfs_vop_getattr },	/* getattr */
-	{ &vop_setattr_desc, hfs_vop_setattr },	/* setattr */
-	{ &vop_read_desc, fifo_read },			/* read */
-	{ &vop_write_desc, fifo_write },		/* write */
-	{ &vop_ioctl_desc, fifo_ioctl },		/* ioctl */
+	{ &vop_getattr_desc, hfs_vop_getattr },		/* getattr */
+	{ &vop_setattr_desc, hfs_vop_setattr },		/* setattr */
+	{ &vop_read_desc, vn_fifo_bypass },		/* read */
+	{ &vop_write_desc, vn_fifo_bypass },		/* write */
+	{ &vop_ioctl_desc, vn_fifo_bypass },		/* ioctl */
 	{ &vop_fcntl_desc, genfs_fcntl },		/* fcntl */
-	{ &vop_poll_desc, fifo_poll },			/* poll */
-	{ &vop_kqfilter_desc, fifo_kqfilter },		/* kqfilter */
-	{ &vop_revoke_desc, fifo_revoke },		/* revoke */
-	{ &vop_mmap_desc, fifo_mmap },			/* mmap */
-	{ &vop_fsync_desc, fifo_fsync },		/* fsync */
-	{ &vop_seek_desc, fifo_seek },			/* seek */
-	{ &vop_remove_desc, fifo_remove },		/* remove */
-	{ &vop_link_desc, fifo_link },			/* link */
-	{ &vop_rename_desc, fifo_rename },		/* rename */
-	{ &vop_mkdir_desc, fifo_mkdir },		/* mkdir */
-	{ &vop_rmdir_desc, fifo_rmdir },		/* rmdir */
-	{ &vop_symlink_desc, fifo_symlink },		/* symlink */
-	{ &vop_readdir_desc, fifo_readdir },		/* readdir */
-	{ &vop_readlink_desc, fifo_readlink },		/* readlink */
-	{ &vop_abortop_desc, fifo_abortop },		/* abortop */
+	{ &vop_poll_desc, vn_fifo_bypass },		/* poll */
+	{ &vop_kqfilter_desc, vn_fifo_bypass },		/* kqfilter */
+	{ &vop_revoke_desc, vn_fifo_bypass },		/* revoke */
+	{ &vop_mmap_desc, vn_fifo_bypass },		/* mmap */
+	{ &vop_fsync_desc, vn_fifo_bypass },		/* fsync */
+	{ &vop_seek_desc, vn_fifo_bypass },		/* seek */
+	{ &vop_remove_desc, vn_fifo_bypass },		/* remove */
+	{ &vop_link_desc, vn_fifo_bypass },		/* link */
+	{ &vop_rename_desc, vn_fifo_bypass },		/* rename */
+	{ &vop_mkdir_desc, vn_fifo_bypass },		/* mkdir */
+	{ &vop_rmdir_desc, vn_fifo_bypass },		/* rmdir */
+	{ &vop_symlink_desc, vn_fifo_bypass },		/* symlink */
+	{ &vop_readdir_desc, vn_fifo_bypass },		/* readdir */
+	{ &vop_readlink_desc, vn_fifo_bypass },		/* readlink */
+	{ &vop_abortop_desc, vn_fifo_bypass },		/* abortop */
 	{ &vop_inactive_desc, genfs_eopnotsupp },	/* inactive */
-	{ &vop_reclaim_desc, hfs_vop_reclaim },	/* reclaim */
+	{ &vop_reclaim_desc, hfs_vop_reclaim },		/* reclaim */
 	{ &vop_lock_desc, genfs_lock },			/* lock */
 	{ &vop_unlock_desc, genfs_unlock },		/* unlock */
-	{ &vop_bmap_desc, fifo_bmap },			/* bmap */
-	{ &vop_strategy_desc, fifo_strategy },		/* strategy */
+	{ &vop_bmap_desc, vn_fifo_bypass },		/* bmap */
+	{ &vop_strategy_desc, vn_fifo_bypass },		/* strategy */
 	{ &vop_print_desc, hfs_vop_print },		/* print */
 	{ &vop_islocked_desc, genfs_islocked },		/* islocked */
-	{ &vop_pathconf_desc, fifo_pathconf },		/* pathconf */
-	{ &vop_advlock_desc, fifo_advlock },		/* advlock */
+	{ &vop_pathconf_desc, vn_fifo_bypass },		/* pathconf */
+	{ &vop_advlock_desc, vn_fifo_bypass },		/* advlock */
 	{ &vop_bwrite_desc, vn_bwrite },		/* bwrite */
-	{ &vop_putpages_desc, fifo_putpages }, 		/* putpages */
+	{ &vop_putpages_desc, vn_fifo_bypass }, 	/* putpages */
 #if 0
 	{ &vop_openextattr_desc, ffs_openextattr },	/* openextattr */
 	{ &vop_closeextattr_desc, ffs_closeextattr },	/* closeextattr */

Index: src/sys/fs/puffs/puffs_vnops.c
diff -u src/sys/fs/puffs/puffs_vnops.c:1.143 src/sys/fs/puffs/puffs_vnops.c:1.144
--- src/sys/fs/puffs/puffs_vnops.c:1.143	Sat Mar 27 02:37:35 2010
+++ src/sys/fs/puffs/puffs_vnops.c	Mon Mar 29 13:11:33 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: puffs_vnops.c,v 1.143 2010/03/27 02:37:35 pooka Exp $	*/
+/*	$NetBSD: puffs_vnops.c,v 1.144 2010/03/29 13:11:33 pooka Exp $	*/
 
 /*
  * Copyright (c) 2005, 2006, 2007  Antti Kantee.  All Rights Reserved.
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: puffs_vnops.c,v 1.143 2010/03/27 02:37:35 pooka Exp $");
+__KERNEL_RCSID(0, "$NetBSD: puffs_vnops.c,v 1.144 2010/03/29 13:11:33 pooka Exp $");
 
 #include <sys/param.h>
 #include <sys/buf.h>
@@ -202,45 +202,45 @@
 int (**puffs_fifoop_p)(void *);
 const struct vnodeopv_entry_desc puffs_fifoop_entries[] = {
 	{ &vop_default_desc, vn_default_error },
-	{ &vop_lookup_desc, fifo_lookup },		/* lookup, ENOTDIR */
-	{ &vop_create_desc, fifo_create },		/* genfs_badop */
-	{ &vop_mknod_desc, fifo_mknod },		/* genfs_badop */
-	{ &vop_open_desc, fifo_open },			/* open */
-	{ &vop_close_desc, fifo_close },		/* close */
+	{ &vop_lookup_desc, vn_fifo_bypass },		/* lookup, ENOTDIR */
+	{ &vop_create_desc, vn_fifo_bypass },		/* genfs_badop */
+	{ &vop_mknod_desc, vn_fifo_bypass },		/* genfs_badop */
+	{ &vop_open_desc, vn_fifo_bypass },		/* open */
+	{ &vop_close_desc, vn_fifo_bypass },		/* close */
 	{ &vop_access_desc, puffs_vnop_checkop },	/* access */
 	{ &vop_getattr_desc, puffs_vnop_checkop },	/* getattr */
 	{ &vop_setattr_desc, puffs_vnop_checkop },	/* setattr */
 	{ &vop_read_desc, puffs_vnop_fifo_read },	/* read, update */
 	{ &vop_write_desc, puffs_vnop_fifo_write },	/* write, update */
-	{ &vop_ioctl_desc, fifo_ioctl },		/* ioctl */
+	{ &vop_ioctl_desc, vn_fifo_bypass },		/* ioctl */
 	{ &vop_fcntl_desc, genfs_fcntl },		/* dummy */
-	{ &vop_poll_desc, fifo_poll },			/* poll */
-	{ &vop_kqfilter_desc, fifo_kqfilter },		/* kqfilter */
-	{ &vop_revoke_desc, fifo_revoke },		/* genfs_revoke */
-	{ &vop_mmap_desc, fifo_mmap },			/* genfs_badop */
-	{ &vop_fsync_desc, fifo_fsync },		/* genfs_nullop*/
-	{ &vop_seek_desc, fifo_seek },			/* genfs_badop */
-	{ &vop_remove_desc, fifo_remove },		/* genfs_badop */
-	{ &vop_link_desc, fifo_link },			/* genfs_badop */
-	{ &vop_rename_desc, fifo_rename },		/* genfs_badop */
-	{ &vop_mkdir_desc, fifo_mkdir },		/* genfs_badop */
-	{ &vop_rmdir_desc, fifo_rmdir },		/* genfs_badop */
-	{ &vop_symlink_desc, fifo_symlink },		/* genfs_badop */
-	{ &vop_readdir_desc, fifo_readdir },		/* genfs_badop */
-	{ &vop_readlink_desc, fifo_readlink },		/* genfs_badop */
-	{ &vop_abortop_desc, fifo_abortop },		/* genfs_badop */
+	{ &vop_poll_desc, vn_fifo_bypass },		/* poll */
+	{ &vop_kqfilter_desc, vn_fifo_bypass },		/* kqfilter */
+	{ &vop_revoke_desc, vn_fifo_bypass },		/* genfs_revoke */
+	{ &vop_mmap_desc, vn_fifo_bypass },		/* genfs_badop */
+	{ &vop_fsync_desc, vn_fifo_bypass },		/* genfs_nullop*/
+	{ &vop_seek_desc, vn_fifo_bypass },		/* genfs_badop */
+	{ &vop_remove_desc, vn_fifo_bypass },		/* genfs_badop */
+	{ &vop_link_desc, vn_fifo_bypass },		/* genfs_badop */
+	{ &vop_rename_desc, vn_fifo_bypass },		/* genfs_badop */
+	{ &vop_mkdir_desc, vn_fifo_bypass },		/* genfs_badop */
+	{ &vop_rmdir_desc, vn_fifo_bypass },		/* genfs_badop */
+	{ &vop_symlink_desc, vn_fifo_bypass },		/* genfs_badop */
+	{ &vop_readdir_desc, vn_fifo_bypass },		/* genfs_badop */
+	{ &vop_readlink_desc, vn_fifo_bypass },		/* genfs_badop */
+	{ &vop_abortop_desc, vn_fifo_bypass },		/* genfs_badop */
 	{ &vop_inactive_desc, puffs_vnop_inactive },	/* REAL inactive */
 	{ &vop_reclaim_desc, puffs_vnop_reclaim },	/* REAL reclaim */
 	{ &vop_lock_desc, puffs_vnop_lock },		/* REAL lock */
 	{ &vop_unlock_desc, puffs_vnop_unlock },	/* REAL unlock */
-	{ &vop_bmap_desc, fifo_bmap },			/* dummy */
-	{ &vop_strategy_desc, fifo_strategy },		/* genfs_badop */
+	{ &vop_bmap_desc, vn_fifo_bypass },		/* dummy */
+	{ &vop_strategy_desc, vn_fifo_bypass },		/* genfs_badop */
 	{ &vop_print_desc, puffs_vnop_print },		/* REAL print */
 	{ &vop_islocked_desc, puffs_vnop_islocked },	/* REAL islocked */
-	{ &vop_pathconf_desc, fifo_pathconf },		/* pathconf */
-	{ &vop_advlock_desc, fifo_advlock },		/* genfs_einval */
+	{ &vop_pathconf_desc, vn_fifo_bypass },		/* pathconf */
+	{ &vop_advlock_desc, vn_fifo_bypass },		/* genfs_einval */
 	{ &vop_bwrite_desc, vn_bwrite },		/* bwrite */
-	{ &vop_putpages_desc, fifo_putpages }, 		/* genfs_null_putpages*/
+	{ &vop_putpages_desc, vn_fifo_bypass }, 	/* genfs_null_putpages*/
 #if 0
 	{ &vop_openextattr_desc, _openextattr },	/* openextattr */
 	{ &vop_closeextattr_desc, _closeextattr },	/* closeextattr */
@@ -2055,10 +2055,10 @@
 	int error;
 
 	/* kernel portion */
-	printf("tag VT_PUFFS, vnode %p, puffs node: %p"
-	    "    userspace cookie: %p\n", vp, pn, pn->pn_cookie);
+	printf("tag VT_PUFFS, vnode %p, puffs node: %p,\n"
+	    "\tuserspace cookie: %p", vp, pn, pn->pn_cookie);
 	if (vp->v_type == VFIFO)
-		fifo_printinfo(vp);
+		VOCALL(fifo_vnodeop_p, VOFFSET(vop_print), v);
 	printf("\n");
 
 	/* userspace portion */

Index: src/sys/fs/tmpfs/tmpfs_fifoops.h
diff -u src/sys/fs/tmpfs/tmpfs_fifoops.h:1.6 src/sys/fs/tmpfs/tmpfs_fifoops.h:1.7
--- src/sys/fs/tmpfs/tmpfs_fifoops.h:1.6	Mon Apr 28 20:24:02 2008
+++ src/sys/fs/tmpfs/tmpfs_fifoops.h	Mon Mar 29 13:11:33 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: tmpfs_fifoops.h,v 1.6 2008/04/28 20:24:02 martin Exp $	*/
+/*	$NetBSD: tmpfs_fifoops.h,v 1.7 2010/03/29 13:11:33 pooka Exp $	*/
 
 /*
  * Copyright (c) 2005 The NetBSD Foundation, Inc.
@@ -48,10 +48,10 @@
 
 extern int (**tmpfs_fifoop_p)(void *);
 
-#define	tmpfs_fifo_lookup	fifo_lookup
-#define	tmpfs_fifo_create	fifo_create
-#define	tmpfs_fifo_mknod	fifo_mknod
-#define	tmpfs_fifo_open		fifo_open
+#define	tmpfs_fifo_lookup	vn_fifo_bypass
+#define	tmpfs_fifo_create	vn_fifo_bypass
+#define	tmpfs_fifo_mknod	vn_fifo_bypass
+#define	tmpfs_fifo_open		vn_fifo_bypass
 int	tmpfs_fifo_close	(void *);
 #define	tmpfs_fifo_access	tmpfs_access
 #define	tmpfs_fifo_getattr	tmpfs_getattr
@@ -59,35 +59,35 @@
 int	tmpfs_fifo_read		(void *);
 int	tmpfs_fifo_write	(void *);
 #define	tmpfs_fifo_fcntl	tmpfs_fcntl
-#define	tmpfs_fifo_ioctl	fifo_ioctl
-#define	tmpfs_fifo_poll		fifo_poll
-#define	tmpfs_fifo_kqfilter	fifo_kqfilter
-#define	tmpfs_fifo_revoke	fifo_revoke
-#define	tmpfs_fifo_mmap		fifo_mmap
-#define	tmpfs_fifo_fsync	fifo_fsync
-#define	tmpfs_fifo_seek		fifo_seek
-#define	tmpfs_fifo_remove	fifo_remove
-#define	tmpfs_fifo_link		fifo_link
-#define	tmpfs_fifo_rename	fifo_rename
-#define	tmpfs_fifo_mkdir	fifo_mkdir
-#define	tmpfs_fifo_rmdir	fifo_rmdir
-#define	tmpfs_fifo_symlink	fifo_symlink
-#define	tmpfs_fifo_readdir	fifo_readdir
-#define	tmpfs_fifo_readlink	fifo_readlink
-#define	tmpfs_fifo_abortop	fifo_abortop
+#define	tmpfs_fifo_ioctl	vn_fifo_bypass
+#define	tmpfs_fifo_poll		vn_fifo_bypass
+#define	tmpfs_fifo_kqfilter	vn_fifo_bypass
+#define	tmpfs_fifo_revoke	vn_fifo_bypass
+#define	tmpfs_fifo_mmap		vn_fifo_bypass
+#define	tmpfs_fifo_fsync	vn_fifo_bypass
+#define	tmpfs_fifo_seek		vn_fifo_bypass
+#define	tmpfs_fifo_remove	vn_fifo_bypass
+#define	tmpfs_fifo_link		vn_fifo_bypass
+#define	tmpfs_fifo_rename	vn_fifo_bypass
+#define	tmpfs_fifo_mkdir	vn_fifo_bypass
+#define	tmpfs_fifo_rmdir	vn_fifo_bypass
+#define	tmpfs_fifo_symlink	vn_fifo_bypass
+#define	tmpfs_fifo_readdir	vn_fifo_bypass
+#define	tmpfs_fifo_readlink	vn_fifo_bypass
+#define	tmpfs_fifo_abortop	vn_fifo_bypass
 #define	tmpfs_fifo_inactive	tmpfs_inactive
 #define	tmpfs_fifo_reclaim	tmpfs_reclaim
 #define	tmpfs_fifo_lock		tmpfs_lock
 #define	tmpfs_fifo_unlock	tmpfs_unlock
-#define	tmpfs_fifo_bmap		fifo_bmap
-#define	tmpfs_fifo_strategy	fifo_strategy
+#define	tmpfs_fifo_bmap		vn_fifo_bypass
+#define	tmpfs_fifo_strategy	vn_fifo_bypass
 #define	tmpfs_fifo_print	tmpfs_print
-#define	tmpfs_fifo_pathconf	fifo_pathconf
+#define	tmpfs_fifo_pathconf	vn_fifo_bypass
 #define	tmpfs_fifo_islocked	tmpfs_islocked
-#define	tmpfs_fifo_advlock	fifo_advlock
+#define	tmpfs_fifo_advlock	vn_fifo_bypass
 #define	tmpfs_fifo_bwrite	tmpfs_bwrite
 #define	tmpfs_fifo_getpages	genfs_badop
-#define	tmpfs_fifo_putpages	fifo_putpages
+#define	tmpfs_fifo_putpages	vn_fifo_bypass
 
 /* --------------------------------------------------------------------- */
 #endif /* _FS_TMPFS_TMPFS_FIFOOPS_H_ */

Index: src/sys/fs/tmpfs/tmpfs_vnops.c
diff -u src/sys/fs/tmpfs/tmpfs_vnops.c:1.67 src/sys/fs/tmpfs/tmpfs_vnops.c:1.68
--- src/sys/fs/tmpfs/tmpfs_vnops.c:1.67	Sat Mar 27 02:37:34 2010
+++ src/sys/fs/tmpfs/tmpfs_vnops.c	Mon Mar 29 13:11:33 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: tmpfs_vnops.c,v 1.67 2010/03/27 02:37:34 pooka Exp $	*/
+/*	$NetBSD: tmpfs_vnops.c,v 1.68 2010/03/29 13:11:33 pooka Exp $	*/
 
 /*
  * Copyright (c) 2005, 2006, 2007 The NetBSD Foundation, Inc.
@@ -35,7 +35,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: tmpfs_vnops.c,v 1.67 2010/03/27 02:37:34 pooka Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tmpfs_vnops.c,v 1.68 2010/03/29 13:11:33 pooka Exp $");
 
 #include <sys/param.h>
 #include <sys/dirent.h>
@@ -1340,7 +1340,7 @@
 	    node->tn_mode, node->tn_uid, node->tn_gid,
 	    (uintmax_t)node->tn_size, node->tn_status);
 	if (vp->v_type == VFIFO)
-		fifo_printinfo(vp);
+		VOCALL(fifo_vnodeop_p, VOFFSET(vop_print), v);
 	printf("\n");
 
 	return 0;

Index: src/sys/kern/vfs_vnops.c
diff -u src/sys/kern/vfs_vnops.c:1.169 src/sys/kern/vfs_vnops.c:1.170
--- src/sys/kern/vfs_vnops.c:1.169	Fri Jan  8 11:35:10 2010
+++ src/sys/kern/vfs_vnops.c	Mon Mar 29 13:11:32 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: vfs_vnops.c,v 1.169 2010/01/08 11:35:10 pooka Exp $	*/
+/*	$NetBSD: vfs_vnops.c,v 1.170 2010/03/29 13:11:32 pooka Exp $	*/
 
 /*-
  * Copyright (c) 2009 The NetBSD Foundation, Inc.
@@ -66,7 +66,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: vfs_vnops.c,v 1.169 2010/01/08 11:35:10 pooka Exp $");
+__KERNEL_RCSID(0, "$NetBSD: vfs_vnops.c,v 1.170 2010/03/29 13:11:32 pooka Exp $");
 
 #include "veriexec.h"
 
@@ -91,6 +91,7 @@
 #include <sys/wapbl.h>
 
 #include <miscfs/specfs/specdev.h>
+#include <miscfs/fifofs/fifo.h>
 
 #include <uvm/uvm_extern.h>
 #include <uvm/uvm_readahead.h>
@@ -924,3 +925,11 @@
 		uvm_ra_freectx(ra);
 	}
 }
+
+int
+vn_fifo_bypass(void *v)
+{
+	struct vop_generic_args *ap = v;
+
+	return VOCALL(fifo_vnodeop_p, ap->a_desc->vdesc_offset, v);
+}

Index: src/sys/miscfs/fifofs/fifo.h
diff -u src/sys/miscfs/fifofs/fifo.h:1.25 src/sys/miscfs/fifofs/fifo.h:1.26
--- src/sys/miscfs/fifofs/fifo.h:1.25	Fri Jan 25 14:32:15 2008
+++ src/sys/miscfs/fifofs/fifo.h	Mon Mar 29 13:11:33 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: fifo.h,v 1.25 2008/01/25 14:32:15 ad Exp $	*/
+/*	$NetBSD: fifo.h,v 1.26 2010/03/29 13:11:33 pooka Exp $	*/
 
 /*
  * Copyright (c) 1991, 1993
@@ -31,48 +31,4 @@
  *	@(#)fifo.h	8.6 (Berkeley) 5/21/95
  */
 
-/*
- * Prototypes for fifo operations on vnodes.
- */
-int	fifo_lookup(void *);
-#define fifo_create	genfs_badop
-#define fifo_mknod	genfs_badop
-int	fifo_open(void *);
-int	fifo_close(void *);
-#define fifo_access	genfs_ebadf
-#define fifo_getattr	genfs_ebadf
-#define fifo_setattr	genfs_ebadf
-int	fifo_read(void *);
-int	fifo_write(void *);
-int	fifo_ioctl(void *);
-int	fifo_poll(void *);
-int	fifo_kqfilter(void *);
-#define fifo_revoke	genfs_revoke
-#define fifo_mmap	genfs_badop
-#define fifo_fsync	genfs_nullop
-#define fifo_seek	genfs_badop
-#define fifo_remove	genfs_badop
-#define fifo_link	genfs_badop
-#define fifo_rename	genfs_badop
-#define fifo_mkdir	genfs_badop
-#define fifo_rmdir	genfs_badop
-#define fifo_symlink	genfs_badop
-#define fifo_readdir	genfs_badop
-#define fifo_readlink	genfs_badop
-#define fifo_abortop	genfs_badop
-#define fifo_reclaim	genfs_nullop
-#define	fifo_lock	genfs_lock
-#define	fifo_unlock	genfs_unlock
-int	fifo_inactive(void *);
-int	fifo_bmap(void *);
-#define fifo_strategy	genfs_badop
-int	fifo_print(void *);
-#define fifo_islocked	genfs_islocked
-int	fifo_pathconf(void *);
-#define	fifo_advlock	genfs_einval
-#define fifo_bwrite	genfs_nullop
-#define	fifo_putpages	genfs_null_putpages
-
-void 	fifo_printinfo(struct vnode *);
-
 extern int (**fifo_vnodeop_p)(void *);

Index: src/sys/miscfs/fifofs/fifo_vnops.c
diff -u src/sys/miscfs/fifofs/fifo_vnops.c:1.67 src/sys/miscfs/fifofs/fifo_vnops.c:1.68
--- src/sys/miscfs/fifofs/fifo_vnops.c:1.67	Sat Mar 27 02:33:11 2010
+++ src/sys/miscfs/fifofs/fifo_vnops.c	Mon Mar 29 13:11:33 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: fifo_vnops.c,v 1.67 2010/03/27 02:33:11 pooka Exp $	*/
+/*	$NetBSD: fifo_vnops.c,v 1.68 2010/03/29 13:11:33 pooka Exp $	*/
 
 /*-
  * Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -58,7 +58,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: fifo_vnops.c,v 1.67 2010/03/27 02:33:11 pooka Exp $");
+__KERNEL_RCSID(0, "$NetBSD: fifo_vnops.c,v 1.68 2010/03/29 13:11:33 pooka Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -95,57 +95,11 @@
 	int		fi_writers;
 };
 
-int (**fifo_vnodeop_p)(void *);
-const struct vnodeopv_entry_desc fifo_vnodeop_entries[] = {
-	{ &vop_default_desc, vn_default_error },
-	{ &vop_lookup_desc, fifo_lookup },		/* lookup */
-	{ &vop_create_desc, fifo_create },		/* create */
-	{ &vop_mknod_desc, fifo_mknod },		/* mknod */
-	{ &vop_open_desc, fifo_open },			/* open */
-	{ &vop_close_desc, fifo_close },		/* close */
-	{ &vop_access_desc, fifo_access },		/* access */
-	{ &vop_getattr_desc, fifo_getattr },		/* getattr */
-	{ &vop_setattr_desc, fifo_setattr },		/* setattr */
-	{ &vop_read_desc, fifo_read },			/* read */
-	{ &vop_write_desc, fifo_write },		/* write */
-	{ &vop_ioctl_desc, fifo_ioctl },		/* ioctl */
-	{ &vop_poll_desc, fifo_poll },			/* poll */
-	{ &vop_kqfilter_desc, fifo_kqfilter },		/* kqfilter */
-	{ &vop_revoke_desc, fifo_revoke },		/* revoke */
-	{ &vop_mmap_desc, fifo_mmap },			/* mmap */
-	{ &vop_fsync_desc, fifo_fsync },		/* fsync */
-	{ &vop_seek_desc, fifo_seek },			/* seek */
-	{ &vop_remove_desc, fifo_remove },		/* remove */
-	{ &vop_link_desc, fifo_link },			/* link */
-	{ &vop_rename_desc, fifo_rename },		/* rename */
-	{ &vop_mkdir_desc, fifo_mkdir },		/* mkdir */
-	{ &vop_rmdir_desc, fifo_rmdir },		/* rmdir */
-	{ &vop_symlink_desc, fifo_symlink },		/* symlink */
-	{ &vop_readdir_desc, fifo_readdir },		/* readdir */
-	{ &vop_readlink_desc, fifo_readlink },		/* readlink */
-	{ &vop_abortop_desc, fifo_abortop },		/* abortop */
-	{ &vop_inactive_desc, fifo_inactive },		/* inactive */
-	{ &vop_reclaim_desc, fifo_reclaim },		/* reclaim */
-	{ &vop_lock_desc, fifo_lock },			/* lock */
-	{ &vop_unlock_desc, fifo_unlock },		/* unlock */
-	{ &vop_bmap_desc, fifo_bmap },			/* bmap */
-	{ &vop_strategy_desc, fifo_strategy },		/* strategy */
-	{ &vop_print_desc, fifo_print },		/* print */
-	{ &vop_islocked_desc, fifo_islocked },		/* islocked */
-	{ &vop_pathconf_desc, fifo_pathconf },		/* pathconf */
-	{ &vop_advlock_desc, fifo_advlock },		/* advlock */
-	{ &vop_bwrite_desc, fifo_bwrite },		/* bwrite */
-	{ &vop_putpages_desc, fifo_putpages }, 		/* putpages */
-	{ (struct vnodeop_desc*)NULL, (int(*)(void *))NULL }
-};
-const struct vnodeopv_desc fifo_vnodeop_opv_desc =
-	{ &fifo_vnodeop_p, fifo_vnodeop_entries };
-
 /*
  * Trivial lookup routine that always fails.
  */
 /* ARGSUSED */
-int
+static int
 fifo_lookup(void *v)
 {
 	struct vop_lookup_args /* {
@@ -163,7 +117,7 @@
  * to find an active instance of a fifo.
  */
 /* ARGSUSED */
-int
+static int
 fifo_open(void *v)
 {
 	struct vop_open_args /* {
@@ -278,7 +232,7 @@
  * Vnode op for read
  */
 /* ARGSUSED */
-int
+static int
 fifo_read(void *v)
 {
 	struct vop_read_args /* {
@@ -326,7 +280,7 @@
  * Vnode op for write
  */
 /* ARGSUSED */
-int
+static int
 fifo_write(void *v)
 {
 	struct vop_write_args /* {
@@ -359,7 +313,7 @@
  * Device ioctl operation.
  */
 /* ARGSUSED */
-int
+static int
 fifo_ioctl(void *v)
 {
 	struct vop_ioctl_args /* {
@@ -391,7 +345,7 @@
 }
 
 /* ARGSUSED */
-int
+static int
 fifo_poll(void *v)
 {
 	struct vop_poll_args /* {
@@ -417,7 +371,7 @@
 	return (revents);
 }
 
-int
+static int
 fifo_inactive(void *v)
 {
 	struct vop_inactive_args /* {
@@ -432,7 +386,7 @@
 /*
  * This is a noop, simply returning what one has been given.
  */
-int
+static int
 fifo_bmap(void *v)
 {
 	struct vop_bmap_args /* {
@@ -456,7 +410,7 @@
  * Device close routine
  */
 /* ARGSUSED */
-int
+static int
 fifo_close(void *v)
 {
 	struct vop_close_args /* {
@@ -505,39 +459,44 @@
 }
 
 /*
+ * Print out internal contents of a fifo vnode.
+ */
+static void
+fifo_printinfo(struct vnode *vp)
+{
+	struct fifoinfo	*fip;
+
+	fip = vp->v_fifoinfo;
+	printf(", fifo with %d readers and %d writers",
+	    fip->fi_readers, fip->fi_writers);
+}
+
+/*
  * Print out the contents of a fifo vnode.
  */
-int
+static int
 fifo_print(void *v)
 {
 	struct vop_print_args /* {
 		struct vnode	*a_vp;
 	} */ *ap = v;
 
-	printf("tag VT_NON");
+	/*
+	 * We are most likely being called with the vnode belonging
+	 * to some file system and this is not printed.
+	 */
+	if (ap->a_vp->v_tag == VT_NON)
+		printf("tag VT_NON");
+
 	fifo_printinfo(ap->a_vp);
 	printf("\n");
 	return 0;
 }
 
 /*
- * Print out internal contents of a fifo vnode.
- */
-void
-fifo_printinfo(struct vnode *vp)
-{
-	struct fifoinfo	*fip;
-
-	if ((fip = vp->v_fifoinfo) != NULL) {
-		printf(", fifo with %d readers and %d writers",
-		    fip->fi_readers, fip->fi_writers);
-	}
-}
-
-/*
  * Return POSIX pathconf information applicable to fifo's.
  */
-int
+static int
 fifo_pathconf(void *v)
 {
 	struct vop_pathconf_args /* {
@@ -641,7 +600,7 @@
 	{ 1, NULL, filt_fifowdetach, filt_fifowrite };
 
 /* ARGSUSED */
-int
+static int
 fifo_kqfilter(void *v)
 {
 	struct vop_kqfilter_args /* {
@@ -674,3 +633,49 @@
 
 	return (0);
 }
+
+int (**fifo_vnodeop_p)(void *);
+const struct vnodeopv_entry_desc fifo_vnodeop_entries[] = {
+	{ &vop_default_desc, vn_default_error },
+	{ &vop_lookup_desc, fifo_lookup },		/* lookup */
+	{ &vop_create_desc, genfs_badop },		/* create */
+	{ &vop_mknod_desc, genfs_badop },		/* mknod */
+	{ &vop_open_desc, fifo_open },			/* open */
+	{ &vop_close_desc, fifo_close },		/* close */
+	{ &vop_access_desc, genfs_ebadf },		/* access */
+	{ &vop_getattr_desc, genfs_ebadf },		/* getattr */
+	{ &vop_setattr_desc, genfs_ebadf },		/* setattr */
+	{ &vop_read_desc, fifo_read },			/* read */
+	{ &vop_write_desc, fifo_write },		/* write */
+	{ &vop_ioctl_desc, fifo_ioctl },		/* ioctl */
+	{ &vop_poll_desc, fifo_poll },			/* poll */
+	{ &vop_kqfilter_desc, fifo_kqfilter },		/* kqfilter */
+	{ &vop_revoke_desc, genfs_revoke },		/* revoke */
+	{ &vop_mmap_desc, genfs_badop },		/* mmap */
+	{ &vop_fsync_desc, genfs_nullop },		/* fsync */
+	{ &vop_seek_desc, genfs_badop },		/* seek */
+	{ &vop_remove_desc, genfs_badop },		/* remove */
+	{ &vop_link_desc, genfs_badop },		/* link */
+	{ &vop_rename_desc, genfs_badop },		/* rename */
+	{ &vop_mkdir_desc, genfs_badop },		/* mkdir */
+	{ &vop_rmdir_desc, genfs_badop },		/* rmdir */
+	{ &vop_symlink_desc, genfs_badop },		/* symlink */
+	{ &vop_readdir_desc, genfs_badop },		/* readdir */
+	{ &vop_readlink_desc, genfs_badop },		/* readlink */
+	{ &vop_abortop_desc, genfs_badop },		/* abortop */
+	{ &vop_inactive_desc, fifo_inactive },		/* inactive */
+	{ &vop_reclaim_desc, genfs_nullop },		/* reclaim */
+	{ &vop_lock_desc, genfs_lock },			/* lock */
+	{ &vop_unlock_desc, genfs_unlock },		/* unlock */
+	{ &vop_bmap_desc, fifo_bmap },			/* bmap */
+	{ &vop_strategy_desc, genfs_badop },		/* strategy */
+	{ &vop_print_desc, fifo_print },		/* print */
+	{ &vop_islocked_desc, genfs_islocked },		/* islocked */
+	{ &vop_pathconf_desc, fifo_pathconf },		/* pathconf */
+	{ &vop_advlock_desc, genfs_einval },		/* advlock */
+	{ &vop_bwrite_desc, genfs_nullop },		/* bwrite */
+	{ &vop_putpages_desc, genfs_null_putpages },	/* putpages */
+	{ (struct vnodeop_desc*)NULL, (int(*)(void *))NULL }
+};
+const struct vnodeopv_desc fifo_vnodeop_opv_desc =
+	{ &fifo_vnodeop_p, fifo_vnodeop_entries };

Index: src/sys/nfs/nfs_vnops.c
diff -u src/sys/nfs/nfs_vnops.c:1.282 src/sys/nfs/nfs_vnops.c:1.283
--- src/sys/nfs/nfs_vnops.c:1.282	Fri Jan  8 11:35:11 2010
+++ src/sys/nfs/nfs_vnops.c	Mon Mar 29 13:11:33 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: nfs_vnops.c,v 1.282 2010/01/08 11:35:11 pooka Exp $	*/
+/*	$NetBSD: nfs_vnops.c,v 1.283 2010/03/29 13:11:33 pooka Exp $	*/
 
 /*
  * Copyright (c) 1989, 1993
@@ -39,7 +39,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: nfs_vnops.c,v 1.282 2010/01/08 11:35:11 pooka Exp $");
+__KERNEL_RCSID(0, "$NetBSD: nfs_vnops.c,v 1.283 2010/03/29 13:11:33 pooka Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_nfs.h"
@@ -195,10 +195,10 @@
 int (**fifo_nfsv2nodeop_p)(void *);
 const struct vnodeopv_entry_desc fifo_nfsv2nodeop_entries[] = {
 	{ &vop_default_desc, vn_default_error },
-	{ &vop_lookup_desc, fifo_lookup },		/* lookup */
-	{ &vop_create_desc, fifo_create },		/* create */
-	{ &vop_mknod_desc, fifo_mknod },		/* mknod */
-	{ &vop_open_desc, fifo_open },			/* open */
+	{ &vop_lookup_desc, vn_fifo_bypass },		/* lookup */
+	{ &vop_create_desc, vn_fifo_bypass },		/* create */
+	{ &vop_mknod_desc, vn_fifo_bypass },		/* mknod */
+	{ &vop_open_desc, vn_fifo_bypass },		/* open */
 	{ &vop_close_desc, nfsfifo_close },		/* close */
 	{ &vop_access_desc, nfsspec_access },		/* access */
 	{ &vop_getattr_desc, nfs_getattr },		/* getattr */
@@ -206,34 +206,34 @@
 	{ &vop_read_desc, nfsfifo_read },		/* read */
 	{ &vop_write_desc, nfsfifo_write },		/* write */
 	{ &vop_fcntl_desc, genfs_fcntl },		/* fcntl */
-	{ &vop_ioctl_desc, fifo_ioctl },		/* ioctl */
-	{ &vop_poll_desc, fifo_poll },			/* poll */
-	{ &vop_kqfilter_desc, fifo_kqfilter },		/* kqfilter */
-	{ &vop_revoke_desc, fifo_revoke },		/* revoke */
-	{ &vop_mmap_desc, fifo_mmap },			/* mmap */
+	{ &vop_ioctl_desc, vn_fifo_bypass },		/* ioctl */
+	{ &vop_poll_desc, vn_fifo_bypass },		/* poll */
+	{ &vop_kqfilter_desc, vn_fifo_bypass },		/* kqfilter */
+	{ &vop_revoke_desc, vn_fifo_bypass },		/* revoke */
+	{ &vop_mmap_desc, vn_fifo_bypass },		/* mmap */
 	{ &vop_fsync_desc, nfs_fsync },			/* fsync */
-	{ &vop_seek_desc, fifo_seek },			/* seek */
-	{ &vop_remove_desc, fifo_remove },		/* remove */
-	{ &vop_link_desc, fifo_link },			/* link */
-	{ &vop_rename_desc, fifo_rename },		/* rename */
-	{ &vop_mkdir_desc, fifo_mkdir },		/* mkdir */
-	{ &vop_rmdir_desc, fifo_rmdir },		/* rmdir */
-	{ &vop_symlink_desc, fifo_symlink },		/* symlink */
-	{ &vop_readdir_desc, fifo_readdir },		/* readdir */
-	{ &vop_readlink_desc, fifo_readlink },		/* readlink */
-	{ &vop_abortop_desc, fifo_abortop },		/* abortop */
+	{ &vop_seek_desc, vn_fifo_bypass },		/* seek */
+	{ &vop_remove_desc, vn_fifo_bypass },		/* remove */
+	{ &vop_link_desc, vn_fifo_bypass },		/* link */
+	{ &vop_rename_desc, vn_fifo_bypass },		/* rename */
+	{ &vop_mkdir_desc, vn_fifo_bypass },		/* mkdir */
+	{ &vop_rmdir_desc, vn_fifo_bypass },		/* rmdir */
+	{ &vop_symlink_desc, vn_fifo_bypass },		/* symlink */
+	{ &vop_readdir_desc, vn_fifo_bypass },		/* readdir */
+	{ &vop_readlink_desc, vn_fifo_bypass },		/* readlink */
+	{ &vop_abortop_desc, vn_fifo_bypass },		/* abortop */
 	{ &vop_inactive_desc, nfs_inactive },		/* inactive */
 	{ &vop_reclaim_desc, nfs_reclaim },		/* reclaim */
 	{ &vop_lock_desc, nfs_lock },			/* lock */
 	{ &vop_unlock_desc, nfs_unlock },		/* unlock */
-	{ &vop_bmap_desc, fifo_bmap },			/* bmap */
+	{ &vop_bmap_desc, vn_fifo_bypass },		/* bmap */
 	{ &vop_strategy_desc, genfs_badop },		/* strategy */
 	{ &vop_print_desc, nfs_print },			/* print */
 	{ &vop_islocked_desc, nfs_islocked },		/* islocked */
-	{ &vop_pathconf_desc, fifo_pathconf },		/* pathconf */
-	{ &vop_advlock_desc, fifo_advlock },		/* advlock */
+	{ &vop_pathconf_desc, vn_fifo_bypass },		/* pathconf */
+	{ &vop_advlock_desc, vn_fifo_bypass },		/* advlock */
 	{ &vop_bwrite_desc, genfs_badop },		/* bwrite */
-	{ &vop_putpages_desc, fifo_putpages }, 		/* putpages */
+	{ &vop_putpages_desc, vn_fifo_bypass }, 	/* putpages */
 	{ NULL, NULL }
 };
 const struct vnodeopv_desc fifo_nfsv2nodeop_opv_desc =
@@ -3336,7 +3336,7 @@
 	    (unsigned long long)np->n_vattr->va_fileid, 
 	    (unsigned long long)np->n_vattr->va_fsid);
 	if (vp->v_type == VFIFO)
-		fifo_printinfo(vp);
+		VOCALL(fifo_vnodeop_p, VOFFSET(vop_print), v);
 	printf("\n");
 	return (0);
 }

Index: src/sys/sys/vnode.h
diff -u src/sys/sys/vnode.h:1.214 src/sys/sys/vnode.h:1.215
--- src/sys/sys/vnode.h:1.214	Thu Feb 11 23:16:35 2010
+++ src/sys/sys/vnode.h	Mon Mar 29 13:11:32 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: vnode.h,v 1.214 2010/02/11 23:16:35 haad Exp $	*/
+/*	$NetBSD: vnode.h,v 1.215 2010/03/29 13:11:32 pooka Exp $	*/
 
 /*-
  * Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -643,6 +643,7 @@
 	    const void *, struct lwp *);
 int	vn_extattr_rm(struct vnode *, int, int, const char *, struct lwp *);
 void	vn_ra_allocctx(struct vnode *);
+int	vn_fifo_bypass(void *);
 
 /* initialise global vnode management */
 void	vntblinit(void);

Index: src/sys/ufs/ext2fs/ext2fs_vnops.c
diff -u src/sys/ufs/ext2fs/ext2fs_vnops.c:1.91 src/sys/ufs/ext2fs/ext2fs_vnops.c:1.92
--- src/sys/ufs/ext2fs/ext2fs_vnops.c:1.91	Wed Oct 21 17:37:21 2009
+++ src/sys/ufs/ext2fs/ext2fs_vnops.c	Mon Mar 29 13:11:33 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: ext2fs_vnops.c,v 1.91 2009/10/21 17:37:21 pooka Exp $	*/
+/*	$NetBSD: ext2fs_vnops.c,v 1.92 2010/03/29 13:11:33 pooka Exp $	*/
 
 /*
  * Copyright (c) 1982, 1986, 1989, 1993
@@ -65,7 +65,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ext2fs_vnops.c,v 1.91 2009/10/21 17:37:21 pooka Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ext2fs_vnops.c,v 1.92 2010/03/29 13:11:33 pooka Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -1612,45 +1612,45 @@
 int (**ext2fs_fifoop_p)(void *);
 const struct vnodeopv_entry_desc ext2fs_fifoop_entries[] = {
 	{ &vop_default_desc, vn_default_error },
-	{ &vop_lookup_desc, fifo_lookup },		/* lookup */
-	{ &vop_create_desc, fifo_create },		/* create */
-	{ &vop_mknod_desc, fifo_mknod },		/* mknod */
-	{ &vop_open_desc, fifo_open },			/* open */
+	{ &vop_lookup_desc, vn_fifo_bypass },		/* lookup */
+	{ &vop_create_desc, vn_fifo_bypass },		/* create */
+	{ &vop_mknod_desc, vn_fifo_bypass },		/* mknod */
+	{ &vop_open_desc, vn_fifo_bypass },		/* open */
 	{ &vop_close_desc, ufsfifo_close },		/* close */
 	{ &vop_access_desc, ext2fs_access },		/* access */
 	{ &vop_getattr_desc, ext2fs_getattr },		/* getattr */
 	{ &vop_setattr_desc, ext2fs_setattr },		/* setattr */
 	{ &vop_read_desc, ufsfifo_read },		/* read */
 	{ &vop_write_desc, ufsfifo_write },		/* write */
-	{ &vop_ioctl_desc, fifo_ioctl },		/* ioctl */
+	{ &vop_ioctl_desc, vn_fifo_bypass },		/* ioctl */
 	{ &vop_fcntl_desc, ufs_fcntl },			/* fcntl */
-	{ &vop_poll_desc, fifo_poll },			/* poll */
-	{ &vop_kqfilter_desc, fifo_kqfilter },		/* kqfilter */
-	{ &vop_revoke_desc, fifo_revoke },		/* revoke */
-	{ &vop_mmap_desc, fifo_mmap },			/* mmap */
+	{ &vop_poll_desc, vn_fifo_bypass },		/* poll */
+	{ &vop_kqfilter_desc, vn_fifo_bypass },		/* kqfilter */
+	{ &vop_revoke_desc, vn_fifo_bypass },		/* revoke */
+	{ &vop_mmap_desc, vn_fifo_bypass },		/* mmap */
 	{ &vop_fsync_desc, ext2fs_fsync },		/* fsync */
-	{ &vop_seek_desc, fifo_seek },			/* seek */
-	{ &vop_remove_desc, fifo_remove },		/* remove */
-	{ &vop_link_desc, fifo_link },			/* link */
-	{ &vop_rename_desc, fifo_rename },		/* rename */
-	{ &vop_mkdir_desc, fifo_mkdir },		/* mkdir */
-	{ &vop_rmdir_desc, fifo_rmdir },		/* rmdir */
-	{ &vop_symlink_desc, fifo_symlink },		/* symlink */
-	{ &vop_readdir_desc, fifo_readdir },		/* readdir */
-	{ &vop_readlink_desc, fifo_readlink },		/* readlink */
-	{ &vop_abortop_desc, fifo_abortop },		/* abortop */
+	{ &vop_seek_desc, vn_fifo_bypass },		/* seek */
+	{ &vop_remove_desc, vn_fifo_bypass },		/* remove */
+	{ &vop_link_desc, vn_fifo_bypass },		/* link */
+	{ &vop_rename_desc, vn_fifo_bypass },		/* rename */
+	{ &vop_mkdir_desc, vn_fifo_bypass },		/* mkdir */
+	{ &vop_rmdir_desc, vn_fifo_bypass },		/* rmdir */
+	{ &vop_symlink_desc, vn_fifo_bypass },		/* symlink */
+	{ &vop_readdir_desc, vn_fifo_bypass },		/* readdir */
+	{ &vop_readlink_desc, vn_fifo_bypass },		/* readlink */
+	{ &vop_abortop_desc, vn_fifo_bypass },		/* abortop */
 	{ &vop_inactive_desc, ext2fs_inactive },	/* inactive */
 	{ &vop_reclaim_desc, ext2fs_reclaim },		/* reclaim */
 	{ &vop_lock_desc, ufs_lock },			/* lock */
 	{ &vop_unlock_desc, ufs_unlock },		/* unlock */
-	{ &vop_bmap_desc, fifo_bmap },			/* bmap */
-	{ &vop_strategy_desc, fifo_strategy },		/* strategy */
+	{ &vop_bmap_desc, vn_fifo_bypass },		/* bmap */
+	{ &vop_strategy_desc, vn_fifo_bypass },		/* strategy */
 	{ &vop_print_desc, ufs_print },			/* print */
 	{ &vop_islocked_desc, ufs_islocked },		/* islocked */
-	{ &vop_pathconf_desc, fifo_pathconf },		/* pathconf */
-	{ &vop_advlock_desc, fifo_advlock },		/* advlock */
+	{ &vop_pathconf_desc, vn_fifo_bypass },		/* pathconf */
+	{ &vop_advlock_desc, vn_fifo_bypass },		/* advlock */
 	{ &vop_bwrite_desc, vn_bwrite },		/* bwrite */
-	{ &vop_putpages_desc, fifo_putpages },		/* putpages */
+	{ &vop_putpages_desc, vn_fifo_bypass },		/* putpages */
 	{ NULL, NULL }
 };
 const struct vnodeopv_desc ext2fs_fifoop_opv_desc =

Index: src/sys/ufs/ffs/ffs_vnops.c
diff -u src/sys/ufs/ffs/ffs_vnops.c:1.113 src/sys/ufs/ffs/ffs_vnops.c:1.114
--- src/sys/ufs/ffs/ffs_vnops.c:1.113	Wed Nov  4 09:45:05 2009
+++ src/sys/ufs/ffs/ffs_vnops.c	Mon Mar 29 13:11:33 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: ffs_vnops.c,v 1.113 2009/11/04 09:45:05 hannken Exp $	*/
+/*	$NetBSD: ffs_vnops.c,v 1.114 2010/03/29 13:11:33 pooka Exp $	*/
 
 /*-
  * Copyright (c) 2008, 2009 The NetBSD Foundation, Inc.
@@ -61,7 +61,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ffs_vnops.c,v 1.113 2009/11/04 09:45:05 hannken Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ffs_vnops.c,v 1.114 2010/03/29 13:11:33 pooka Exp $");
 
 #if defined(_KERNEL_OPT)
 #include "opt_ffs.h"
@@ -213,45 +213,45 @@
 int (**ffs_fifoop_p)(void *);
 const struct vnodeopv_entry_desc ffs_fifoop_entries[] = {
 	{ &vop_default_desc, vn_default_error },
-	{ &vop_lookup_desc, fifo_lookup },		/* lookup */
-	{ &vop_create_desc, fifo_create },		/* create */
-	{ &vop_mknod_desc, fifo_mknod },		/* mknod */
-	{ &vop_open_desc, fifo_open },			/* open */
+	{ &vop_lookup_desc, vn_fifo_bypass },		/* lookup */
+	{ &vop_create_desc, vn_fifo_bypass },		/* create */
+	{ &vop_mknod_desc, vn_fifo_bypass },		/* mknod */
+	{ &vop_open_desc, vn_fifo_bypass },		/* open */
 	{ &vop_close_desc, ufsfifo_close },		/* close */
 	{ &vop_access_desc, ufs_access },		/* access */
 	{ &vop_getattr_desc, ufs_getattr },		/* getattr */
 	{ &vop_setattr_desc, ufs_setattr },		/* setattr */
 	{ &vop_read_desc, ufsfifo_read },		/* read */
 	{ &vop_write_desc, ufsfifo_write },		/* write */
-	{ &vop_ioctl_desc, fifo_ioctl },		/* ioctl */
+	{ &vop_ioctl_desc, vn_fifo_bypass },		/* ioctl */
 	{ &vop_fcntl_desc, ufs_fcntl },			/* fcntl */
-	{ &vop_poll_desc, fifo_poll },			/* poll */
-	{ &vop_kqfilter_desc, fifo_kqfilter },		/* kqfilter */
-	{ &vop_revoke_desc, fifo_revoke },		/* revoke */
-	{ &vop_mmap_desc, fifo_mmap },			/* mmap */
+	{ &vop_poll_desc, vn_fifo_bypass },		/* poll */
+	{ &vop_kqfilter_desc, vn_fifo_bypass },		/* kqfilter */
+	{ &vop_revoke_desc, vn_fifo_bypass },		/* revoke */
+	{ &vop_mmap_desc, vn_fifo_bypass },		/* mmap */
 	{ &vop_fsync_desc, ffs_fsync },			/* fsync */
-	{ &vop_seek_desc, fifo_seek },			/* seek */
-	{ &vop_remove_desc, fifo_remove },		/* remove */
-	{ &vop_link_desc, fifo_link },			/* link */
-	{ &vop_rename_desc, fifo_rename },		/* rename */
-	{ &vop_mkdir_desc, fifo_mkdir },		/* mkdir */
-	{ &vop_rmdir_desc, fifo_rmdir },		/* rmdir */
-	{ &vop_symlink_desc, fifo_symlink },		/* symlink */
-	{ &vop_readdir_desc, fifo_readdir },		/* readdir */
-	{ &vop_readlink_desc, fifo_readlink },		/* readlink */
-	{ &vop_abortop_desc, fifo_abortop },		/* abortop */
+	{ &vop_seek_desc, vn_fifo_bypass },		/* seek */
+	{ &vop_remove_desc, vn_fifo_bypass },		/* remove */
+	{ &vop_link_desc, vn_fifo_bypass },		/* link */
+	{ &vop_rename_desc, vn_fifo_bypass },		/* rename */
+	{ &vop_mkdir_desc, vn_fifo_bypass },		/* mkdir */
+	{ &vop_rmdir_desc, vn_fifo_bypass },		/* rmdir */
+	{ &vop_symlink_desc, vn_fifo_bypass },		/* symlink */
+	{ &vop_readdir_desc, vn_fifo_bypass },		/* readdir */
+	{ &vop_readlink_desc, vn_fifo_bypass },		/* readlink */
+	{ &vop_abortop_desc, vn_fifo_bypass },		/* abortop */
 	{ &vop_inactive_desc, ufs_inactive },		/* inactive */
 	{ &vop_reclaim_desc, ffs_reclaim },		/* reclaim */
 	{ &vop_lock_desc, ufs_lock },			/* lock */
 	{ &vop_unlock_desc, ufs_unlock },		/* unlock */
-	{ &vop_bmap_desc, fifo_bmap },			/* bmap */
-	{ &vop_strategy_desc, fifo_strategy },		/* strategy */
+	{ &vop_bmap_desc, vn_fifo_bypass },		/* bmap */
+	{ &vop_strategy_desc, vn_fifo_bypass },		/* strategy */
 	{ &vop_print_desc, ufs_print },			/* print */
 	{ &vop_islocked_desc, ufs_islocked },		/* islocked */
-	{ &vop_pathconf_desc, fifo_pathconf },		/* pathconf */
-	{ &vop_advlock_desc, fifo_advlock },		/* advlock */
+	{ &vop_pathconf_desc, vn_fifo_bypass },		/* pathconf */
+	{ &vop_advlock_desc, vn_fifo_bypass },		/* advlock */
 	{ &vop_bwrite_desc, vn_bwrite },		/* bwrite */
-	{ &vop_putpages_desc, fifo_putpages }, 		/* putpages */
+	{ &vop_putpages_desc, vn_fifo_bypass }, 	/* putpages */
 	{ &vop_openextattr_desc, ffs_openextattr },	/* openextattr */
 	{ &vop_closeextattr_desc, ffs_closeextattr },	/* closeextattr */
 	{ &vop_getextattr_desc, ffs_getextattr },	/* getextattr */

Index: src/sys/ufs/lfs/lfs_vnops.c
diff -u src/sys/ufs/lfs/lfs_vnops.c:1.226 src/sys/ufs/lfs/lfs_vnops.c:1.227
--- src/sys/ufs/lfs/lfs_vnops.c:1.226	Mon Dec  7 04:12:10 2009
+++ src/sys/ufs/lfs/lfs_vnops.c	Mon Mar 29 13:11:34 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: lfs_vnops.c,v 1.226 2009/12/07 04:12:10 eeh Exp $	*/
+/*	$NetBSD: lfs_vnops.c,v 1.227 2010/03/29 13:11:34 pooka Exp $	*/
 
 /*-
  * Copyright (c) 1999, 2000, 2001, 2002, 2003 The NetBSD Foundation, Inc.
@@ -60,7 +60,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: lfs_vnops.c,v 1.226 2009/12/07 04:12:10 eeh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: lfs_vnops.c,v 1.227 2010/03/29 13:11:34 pooka Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_compat_netbsd.h"
@@ -204,45 +204,45 @@
 int (**lfs_fifoop_p)(void *);
 const struct vnodeopv_entry_desc lfs_fifoop_entries[] = {
 	{ &vop_default_desc, vn_default_error },
-	{ &vop_lookup_desc, fifo_lookup },		/* lookup */
-	{ &vop_create_desc, fifo_create },		/* create */
-	{ &vop_mknod_desc, fifo_mknod },		/* mknod */
-	{ &vop_open_desc, fifo_open },			/* open */
+	{ &vop_lookup_desc, vn_fifo_bypass },		/* lookup */
+	{ &vop_create_desc, vn_fifo_bypass },		/* create */
+	{ &vop_mknod_desc, vn_fifo_bypass },		/* mknod */
+	{ &vop_open_desc, vn_fifo_bypass },		/* open */
 	{ &vop_close_desc, lfsfifo_close },		/* close */
 	{ &vop_access_desc, ufs_access },		/* access */
 	{ &vop_getattr_desc, lfs_getattr },		/* getattr */
 	{ &vop_setattr_desc, lfs_setattr },		/* setattr */
 	{ &vop_read_desc, ufsfifo_read },		/* read */
 	{ &vop_write_desc, ufsfifo_write },		/* write */
-	{ &vop_ioctl_desc, fifo_ioctl },		/* ioctl */
+	{ &vop_ioctl_desc, vn_fifo_bypass },		/* ioctl */
 	{ &vop_fcntl_desc, ufs_fcntl },			/* fcntl */
-	{ &vop_poll_desc, fifo_poll },			/* poll */
-	{ &vop_kqfilter_desc, fifo_kqfilter },		/* kqfilter */
-	{ &vop_revoke_desc, fifo_revoke },		/* revoke */
-	{ &vop_mmap_desc, fifo_mmap },			/* mmap */
-	{ &vop_fsync_desc, fifo_fsync },		/* fsync */
-	{ &vop_seek_desc, fifo_seek },			/* seek */
-	{ &vop_remove_desc, fifo_remove },		/* remove */
-	{ &vop_link_desc, fifo_link },			/* link */
-	{ &vop_rename_desc, fifo_rename },		/* rename */
-	{ &vop_mkdir_desc, fifo_mkdir },		/* mkdir */
-	{ &vop_rmdir_desc, fifo_rmdir },		/* rmdir */
-	{ &vop_symlink_desc, fifo_symlink },		/* symlink */
-	{ &vop_readdir_desc, fifo_readdir },		/* readdir */
-	{ &vop_readlink_desc, fifo_readlink },		/* readlink */
-	{ &vop_abortop_desc, fifo_abortop },		/* abortop */
+	{ &vop_poll_desc, vn_fifo_bypass },		/* poll */
+	{ &vop_kqfilter_desc, vn_fifo_bypass },		/* kqfilter */
+	{ &vop_revoke_desc, vn_fifo_bypass },		/* revoke */
+	{ &vop_mmap_desc, vn_fifo_bypass },		/* mmap */
+	{ &vop_fsync_desc, vn_fifo_bypass },		/* fsync */
+	{ &vop_seek_desc, vn_fifo_bypass },		/* seek */
+	{ &vop_remove_desc, vn_fifo_bypass },		/* remove */
+	{ &vop_link_desc, vn_fifo_bypass },		/* link */
+	{ &vop_rename_desc, vn_fifo_bypass },		/* rename */
+	{ &vop_mkdir_desc, vn_fifo_bypass },		/* mkdir */
+	{ &vop_rmdir_desc, vn_fifo_bypass },		/* rmdir */
+	{ &vop_symlink_desc, vn_fifo_bypass },		/* symlink */
+	{ &vop_readdir_desc, vn_fifo_bypass },		/* readdir */
+	{ &vop_readlink_desc, vn_fifo_bypass },		/* readlink */
+	{ &vop_abortop_desc, vn_fifo_bypass },		/* abortop */
 	{ &vop_inactive_desc, lfs_inactive },		/* inactive */
 	{ &vop_reclaim_desc, lfs_reclaim },		/* reclaim */
 	{ &vop_lock_desc, ufs_lock },			/* lock */
 	{ &vop_unlock_desc, ufs_unlock },		/* unlock */
-	{ &vop_bmap_desc, fifo_bmap },			/* bmap */
-	{ &vop_strategy_desc, fifo_strategy },		/* strategy */
+	{ &vop_bmap_desc, vn_fifo_bypass },		/* bmap */
+	{ &vop_strategy_desc, vn_fifo_bypass },		/* strategy */
 	{ &vop_print_desc, ufs_print },			/* print */
 	{ &vop_islocked_desc, ufs_islocked },		/* islocked */
-	{ &vop_pathconf_desc, fifo_pathconf },		/* pathconf */
-	{ &vop_advlock_desc, fifo_advlock },		/* advlock */
+	{ &vop_pathconf_desc, vn_fifo_bypass },		/* pathconf */
+	{ &vop_advlock_desc, vn_fifo_bypass },		/* advlock */
 	{ &vop_bwrite_desc, lfs_bwrite },		/* bwrite */
-	{ &vop_putpages_desc, fifo_putpages },		/* putpages */
+	{ &vop_putpages_desc, vn_fifo_bypass },		/* putpages */
 	{ NULL, NULL }
 };
 const struct vnodeopv_desc lfs_fifoop_opv_desc =

Index: src/sys/ufs/ufs/ufs_vnops.c
diff -u src/sys/ufs/ufs/ufs_vnops.c:1.180 src/sys/ufs/ufs/ufs_vnops.c:1.181
--- src/sys/ufs/ufs/ufs_vnops.c:1.180	Wed Oct 14 09:40:27 2009
+++ src/sys/ufs/ufs/ufs_vnops.c	Mon Mar 29 13:11:34 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: ufs_vnops.c,v 1.180 2009/10/14 09:40:27 hannken Exp $	*/
+/*	$NetBSD: ufs_vnops.c,v 1.181 2010/03/29 13:11:34 pooka Exp $	*/
 
 /*-
  * Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -66,7 +66,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ufs_vnops.c,v 1.180 2009/10/14 09:40:27 hannken Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ufs_vnops.c,v 1.181 2010/03/29 13:11:34 pooka Exp $");
 
 #if defined(_KERNEL_OPT)
 #include "opt_ffs.h"
@@ -1908,7 +1908,7 @@
 	    ip->i_mode, ip->i_uid, ip->i_gid,
 	    (long long)ip->i_size);
 	if (vp->v_type == VFIFO)
-		fifo_printinfo(vp);
+		VOCALL(fifo_vnodeop_p, VOFFSET(vop_print), v);
 	printf("\n");
 	return (0);
 }

Reply via email to