summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authorart <art@openbsd.org>2002-11-08 04:34:17 +0000
committerart <art@openbsd.org>2002-11-08 04:34:17 +0000
commitc20cb638e5619c72497e203896a65829053e2348 (patch)
treebc1c3ae9aeab3ed062030d52e919f43aadcaf966 /sys
parentDon't uvm_useracc and then vslock. vslock is better at finding illegal mappings. (diff)
downloadwireguard-openbsd-c20cb638e5619c72497e203896a65829053e2348.tar.xz
wireguard-openbsd-c20cb638e5619c72497e203896a65829053e2348.zip
Implement simple vnodeop inheritance for specfs and fifofs.
The inheritace is implemented by setting the default vnodeop to a bypass op that repeats the operation on the spec/fifo vnodeop vector. The overhead of one extra indirect function call is worth the cleanup and improved correctness. This actually solves a few bugs where some vnode ops were missing from some vectors (like kqfilter or revoke). (and even more on the ubc branch). Inspired by the same thing done in FreeBSD.
Diffstat (limited to 'sys')
-rw-r--r--sys/isofs/cd9660/cd9660_vnops.c63
-rw-r--r--sys/kern/spec_vnops.c12
-rw-r--r--sys/miscfs/fifofs/fifo.h4
-rw-r--r--sys/miscfs/fifofs/fifo_vnops.c18
-rw-r--r--sys/miscfs/specfs/spec_vnops.c12
-rw-r--r--sys/miscfs/specfs/specdev.h4
-rw-r--r--sys/nfs/nfs_vnops.c57
-rw-r--r--sys/sys/specdev.h4
-rw-r--r--sys/ufs/ext2fs/ext2fs_vnops.c55
-rw-r--r--sys/ufs/ffs/ffs_vnops.c53
-rw-r--r--sys/ufs/lfs/lfs_vnops.c68
11 files changed, 69 insertions, 281 deletions
diff --git a/sys/isofs/cd9660/cd9660_vnops.c b/sys/isofs/cd9660/cd9660_vnops.c
index 20a4854af8f..4e96ba3dc18 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.23 2002/05/24 13:41:27 art Exp $ */
+/* $OpenBSD: cd9660_vnops.c,v 1.24 2002/11/08 04:34:17 art Exp $ */
/* $NetBSD: cd9660_vnops.c,v 1.42 1997/10/16 23:56:57 christos Exp $ */
/*-
@@ -1061,7 +1061,7 @@ struct vnodeopv_entry_desc cd9660_vnodeop_entries[] = {
{ &vop_pathconf_desc, cd9660_pathconf },/* pathconf */
{ &vop_advlock_desc, cd9660_advlock }, /* advlock */
{ &vop_bwrite_desc, vop_generic_bwrite },
- { (struct vnodeop_desc*)NULL, (int(*)(void *))NULL }
+ { NULL, NULL }
};
struct vnodeopv_desc cd9660_vnodeop_opv_desc =
{ &cd9660_vnodeop_p, cd9660_vnodeop_entries };
@@ -1071,43 +1071,17 @@ struct vnodeopv_desc cd9660_vnodeop_opv_desc =
*/
int (**cd9660_specop_p)(void *);
struct vnodeopv_entry_desc cd9660_specop_entries[] = {
- { &vop_default_desc, vn_default_error },
- { &vop_lookup_desc, spec_lookup }, /* lookup */
- { &vop_create_desc, spec_create }, /* create */
- { &vop_mknod_desc, spec_mknod }, /* mknod */
- { &vop_open_desc, spec_open }, /* open */
- { &vop_close_desc, spec_close }, /* close */
+ { &vop_default_desc, spec_vnoperate },
{ &vop_access_desc, cd9660_access }, /* access */
{ &vop_getattr_desc, cd9660_getattr }, /* getattr */
{ &vop_setattr_desc, cd9660_setattr }, /* setattr */
- { &vop_read_desc, spec_read }, /* read */
- { &vop_write_desc, spec_write }, /* write */
- { &vop_lease_desc, spec_lease_check }, /* lease */
- { &vop_ioctl_desc, spec_ioctl }, /* ioctl */
- { &vop_select_desc, spec_select }, /* select */
- { &vop_revoke_desc, spec_revoke }, /* revoke */
- { &vop_fsync_desc, spec_fsync }, /* fsync */
- { &vop_remove_desc, spec_remove }, /* remove */
- { &vop_link_desc, spec_link }, /* link */
- { &vop_rename_desc, spec_rename }, /* rename */
- { &vop_mkdir_desc, spec_mkdir }, /* mkdir */
- { &vop_rmdir_desc, spec_rmdir }, /* rmdir */
- { &vop_symlink_desc, spec_symlink }, /* symlink */
- { &vop_readdir_desc, spec_readdir }, /* readdir */
- { &vop_readlink_desc, spec_readlink }, /* readlink */
- { &vop_abortop_desc, spec_abortop }, /* abortop */
{ &vop_inactive_desc, cd9660_inactive },/* inactive */
{ &vop_reclaim_desc, cd9660_reclaim }, /* reclaim */
{ &vop_lock_desc, cd9660_lock }, /* lock */
{ &vop_unlock_desc, cd9660_unlock }, /* unlock */
- { &vop_bmap_desc, spec_bmap }, /* bmap */
- { &vop_strategy_desc, spec_strategy }, /* strategy */
{ &vop_print_desc, cd9660_print }, /* print */
{ &vop_islocked_desc, cd9660_islocked },/* islocked */
- { &vop_pathconf_desc, spec_pathconf }, /* pathconf */
- { &vop_advlock_desc, spec_advlock }, /* advlock */
- { &vop_bwrite_desc, vop_generic_bwrite },
- { (struct vnodeop_desc*)NULL, (int(*)(void *))NULL }
+ { NULL, NULL }
};
struct vnodeopv_desc cd9660_specop_opv_desc =
{ &cd9660_specop_p, cd9660_specop_entries };
@@ -1115,43 +1089,18 @@ struct vnodeopv_desc cd9660_specop_opv_desc =
#ifdef FIFO
int (**cd9660_fifoop_p)(void *);
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_default_desc, fifo_vnoperate },
{ &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_lease_desc, fifo_lease_check }, /* lease */
- { &vop_ioctl_desc, fifo_ioctl }, /* ioctl */
- { &vop_select_desc, fifo_select }, /* select */
- { &vop_revoke_desc, fifo_revoke }, /* revoke */
- { &vop_fsync_desc, fifo_fsync }, /* fsync */
- { &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, cd9660_inactive },/* inactive */
{ &vop_reclaim_desc, cd9660_reclaim }, /* reclaim */
{ &vop_lock_desc, cd9660_lock }, /* lock */
{ &vop_unlock_desc, cd9660_unlock }, /* unlock */
- { &vop_bmap_desc, fifo_bmap }, /* bmap */
- { &vop_strategy_desc, fifo_strategy }, /* strategy */
{ &vop_print_desc, cd9660_print }, /* print */
{ &vop_islocked_desc, cd9660_islocked },/* islocked */
- { &vop_pathconf_desc, fifo_pathconf }, /* pathconf */
- { &vop_advlock_desc, fifo_advlock }, /* advlock */
{ &vop_bwrite_desc, vop_generic_bwrite },
- { (struct vnodeop_desc*)NULL, (int(*)(void *))NULL }
+ { NULL, NULL }
};
struct vnodeopv_desc cd9660_fifoop_opv_desc =
{ &cd9660_fifoop_p, cd9660_fifoop_entries };
diff --git a/sys/kern/spec_vnops.c b/sys/kern/spec_vnops.c
index 744a61f6388..067be255e05 100644
--- a/sys/kern/spec_vnops.c
+++ b/sys/kern/spec_vnops.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: spec_vnops.c,v 1.23 2002/03/14 01:27:08 millert Exp $ */
+/* $OpenBSD: spec_vnops.c,v 1.24 2002/11/08 04:34:17 art Exp $ */
/* $NetBSD: spec_vnops.c,v 1.29 1996/04/22 01:42:38 christos Exp $ */
/*
@@ -104,11 +104,19 @@ struct vnodeopv_entry_desc spec_vnodeop_entries[] = {
{ &vop_pathconf_desc, spec_pathconf }, /* pathconf */
{ &vop_advlock_desc, spec_advlock }, /* advlock */
{ &vop_bwrite_desc, spec_bwrite }, /* bwrite */
- { (struct vnodeop_desc*)NULL, (int(*)(void *))NULL }
+ { NULL, NULL }
};
struct vnodeopv_desc spec_vnodeop_opv_desc =
{ &spec_vnodeop_p, spec_vnodeop_entries };
+int
+spec_vnoperate(void *v)
+{
+ struct vop_generic_args *ap = v;
+
+ return (VOCALL(spec_vnodeop_p, ap->a_desc->vdesc_offset, ap));
+}
+
/*
* Trivial lookup routine that always fails.
*/
diff --git a/sys/miscfs/fifofs/fifo.h b/sys/miscfs/fifofs/fifo.h
index cce2369bb1f..5b9d090c015 100644
--- a/sys/miscfs/fifofs/fifo.h
+++ b/sys/miscfs/fifofs/fifo.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: fifo.h,v 1.11 2002/03/14 01:27:07 millert Exp $ */
+/* $OpenBSD: fifo.h,v 1.12 2002/11/08 04:34:17 art Exp $ */
/* $NetBSD: fifo.h,v 1.10 1996/02/09 22:40:15 christos Exp $ */
/*
@@ -83,6 +83,8 @@ int fifo_advlock(void *);
void fifo_printinfo(struct vnode *);
+int fifo_vnoperate(void *);
+
extern int (**fifo_vnodeop_p)(void *);
#endif /* FIFO */
diff --git a/sys/miscfs/fifofs/fifo_vnops.c b/sys/miscfs/fifofs/fifo_vnops.c
index 941fb4051a5..e6a693dc96b 100644
--- a/sys/miscfs/fifofs/fifo_vnops.c
+++ b/sys/miscfs/fifofs/fifo_vnops.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: fifo_vnops.c,v 1.13 2002/03/14 01:27:07 millert Exp $ */
+/* $OpenBSD: fifo_vnops.c,v 1.14 2002/11/08 04:34:17 art Exp $ */
/* $NetBSD: fifo_vnops.c,v 1.18 1996/03/16 23:52:42 christos Exp $ */
/*
@@ -103,9 +103,20 @@ struct vnodeopv_entry_desc fifo_vnodeop_entries[] = {
{ &vop_pathconf_desc, fifo_pathconf }, /* pathconf */
{ &vop_advlock_desc, fifo_advlock }, /* advlock */
{ &vop_bwrite_desc, fifo_bwrite }, /* bwrite */
- { (struct vnodeop_desc*)NULL, (int(*)(void *))NULL }
+ { NULL, NULL }
};
+struct vnodeopv_desc fifo_vnodeop_opv_desc =
+ { &fifo_vnodeop_p, fifo_vnodeop_entries };
+
+int
+fifo_vnoperate(void *v)
+{
+ struct vop_generic_args *ap = v;
+
+ return (VOCALL(fifo_vnodeop_p, ap->a_desc->vdesc_offset, ap));
+}
+
void filt_fifordetach(struct knote *kn);
int filt_fiforead(struct knote *kn, long hint);
void filt_fifowdetach(struct knote *kn);
@@ -116,9 +127,6 @@ struct filterops fiforead_filtops =
struct filterops fifowrite_filtops =
{ 1, NULL, filt_fifowdetach, filt_fifowrite };
-struct vnodeopv_desc fifo_vnodeop_opv_desc =
- { &fifo_vnodeop_p, fifo_vnodeop_entries };
-
/*
* Trivial lookup routine that always fails.
*/
diff --git a/sys/miscfs/specfs/spec_vnops.c b/sys/miscfs/specfs/spec_vnops.c
index 744a61f6388..067be255e05 100644
--- a/sys/miscfs/specfs/spec_vnops.c
+++ b/sys/miscfs/specfs/spec_vnops.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: spec_vnops.c,v 1.23 2002/03/14 01:27:08 millert Exp $ */
+/* $OpenBSD: spec_vnops.c,v 1.24 2002/11/08 04:34:17 art Exp $ */
/* $NetBSD: spec_vnops.c,v 1.29 1996/04/22 01:42:38 christos Exp $ */
/*
@@ -104,11 +104,19 @@ struct vnodeopv_entry_desc spec_vnodeop_entries[] = {
{ &vop_pathconf_desc, spec_pathconf }, /* pathconf */
{ &vop_advlock_desc, spec_advlock }, /* advlock */
{ &vop_bwrite_desc, spec_bwrite }, /* bwrite */
- { (struct vnodeop_desc*)NULL, (int(*)(void *))NULL }
+ { NULL, NULL }
};
struct vnodeopv_desc spec_vnodeop_opv_desc =
{ &spec_vnodeop_p, spec_vnodeop_entries };
+int
+spec_vnoperate(void *v)
+{
+ struct vop_generic_args *ap = v;
+
+ return (VOCALL(spec_vnodeop_p, ap->a_desc->vdesc_offset, ap));
+}
+
/*
* Trivial lookup routine that always fails.
*/
diff --git a/sys/miscfs/specfs/specdev.h b/sys/miscfs/specfs/specdev.h
index fc7366f6485..31e53f79f3a 100644
--- a/sys/miscfs/specfs/specdev.h
+++ b/sys/miscfs/specfs/specdev.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: specdev.h,v 1.13 2002/03/14 01:27:08 millert Exp $ */
+/* $OpenBSD: specdev.h,v 1.14 2002/11/08 04:34:17 art Exp $ */
/* $NetBSD: specdev.h,v 1.12 1996/02/13 13:13:01 mycroft Exp $ */
/*
@@ -121,3 +121,5 @@ int spec_advlock(void *);
#define spec_reallocblks spec_badop
#define spec_bwrite vop_generic_bwrite
#define spec_revoke vop_generic_revoke
+
+int spec_vnoperate(void *);
diff --git a/sys/nfs/nfs_vnops.c b/sys/nfs/nfs_vnops.c
index e79fd9c224c..b0875e2b024 100644
--- a/sys/nfs/nfs_vnops.c
+++ b/sys/nfs/nfs_vnops.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: nfs_vnops.c,v 1.51 2002/05/21 21:07:09 art Exp $ */
+/* $OpenBSD: nfs_vnops.c,v 1.52 2002/11/08 04:34:17 art Exp $ */
/* $NetBSD: nfs_vnops.c,v 1.62.4.1 1996/07/08 20:26:52 jtc Exp $ */
/*
@@ -126,7 +126,7 @@ struct vnodeopv_entry_desc nfsv2_vnodeop_entries[] = {
{ &vop_advlock_desc, nfs_advlock }, /* advlock */
{ &vop_reallocblks_desc, nfs_reallocblks }, /* reallocblks */
{ &vop_bwrite_desc, nfs_bwrite },
- { (struct vnodeop_desc*)NULL, (int(*)(void *))NULL }
+ { NULL, NULL }
};
struct vnodeopv_desc nfsv2_vnodeop_opv_desc =
{ &nfsv2_vnodeop_p, nfsv2_vnodeop_entries };
@@ -136,44 +136,21 @@ struct vnodeopv_desc nfsv2_vnodeop_opv_desc =
*/
int (**spec_nfsv2nodeop_p)(void *);
struct vnodeopv_entry_desc spec_nfsv2nodeop_entries[] = {
- { &vop_default_desc, vn_default_error },
- { &vop_lookup_desc, spec_lookup }, /* lookup */
- { &vop_create_desc, spec_create }, /* create */
- { &vop_mknod_desc, spec_mknod }, /* mknod */
- { &vop_open_desc, spec_open }, /* open */
+ { &vop_default_desc, spec_vnoperate },
{ &vop_close_desc, nfsspec_close }, /* close */
{ &vop_access_desc, nfsspec_access }, /* access */
{ &vop_getattr_desc, nfs_getattr }, /* getattr */
{ &vop_setattr_desc, nfs_setattr }, /* setattr */
{ &vop_read_desc, nfsspec_read }, /* read */
{ &vop_write_desc, nfsspec_write }, /* write */
- { &vop_lease_desc, spec_lease_check }, /* lease */
- { &vop_ioctl_desc, spec_ioctl }, /* ioctl */
- { &vop_select_desc, spec_select }, /* select */
- { &vop_revoke_desc, spec_revoke }, /* revoke */
{ &vop_fsync_desc, nfs_fsync }, /* fsync */
- { &vop_remove_desc, spec_remove }, /* remove */
- { &vop_link_desc, spec_link }, /* link */
- { &vop_rename_desc, spec_rename }, /* rename */
- { &vop_mkdir_desc, spec_mkdir }, /* mkdir */
- { &vop_rmdir_desc, spec_rmdir }, /* rmdir */
- { &vop_symlink_desc, spec_symlink }, /* symlink */
- { &vop_readdir_desc, spec_readdir }, /* readdir */
- { &vop_readlink_desc, spec_readlink }, /* readlink */
- { &vop_abortop_desc, spec_abortop }, /* 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, spec_bmap }, /* bmap */
- { &vop_strategy_desc, spec_strategy }, /* strategy */
{ &vop_print_desc, nfs_print }, /* print */
{ &vop_islocked_desc, nfs_islocked }, /* islocked */
- { &vop_pathconf_desc, spec_pathconf }, /* pathconf */
- { &vop_advlock_desc, spec_advlock }, /* advlock */
- { &vop_reallocblks_desc, spec_reallocblks }, /* reallocblks */
- { &vop_bwrite_desc, vop_generic_bwrite },
- { (struct vnodeop_desc*)NULL, (int(*)(void *))NULL }
+ { NULL, NULL }
};
struct vnodeopv_desc spec_nfsv2nodeop_opv_desc =
{ &spec_nfsv2nodeop_p, spec_nfsv2nodeop_entries };
@@ -181,44 +158,22 @@ struct vnodeopv_desc spec_nfsv2nodeop_opv_desc =
#ifdef FIFO
int (**fifo_nfsv2nodeop_p)(void *);
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_default_desc, fifo_vnoperate },
{ &vop_close_desc, nfsfifo_close }, /* close */
{ &vop_access_desc, nfsspec_access }, /* access */
{ &vop_getattr_desc, nfs_getattr }, /* getattr */
{ &vop_setattr_desc, nfs_setattr }, /* setattr */
{ &vop_read_desc, nfsfifo_read }, /* read */
{ &vop_write_desc, nfsfifo_write }, /* write */
- { &vop_lease_desc, fifo_lease_check }, /* lease */
- { &vop_ioctl_desc, fifo_ioctl }, /* ioctl */
- { &vop_select_desc, fifo_select }, /* select */
- { &vop_revoke_desc, fifo_revoke }, /* revoke */
{ &vop_fsync_desc, nfs_fsync }, /* fsync */
- { &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, 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_strategy_desc, fifo_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_reallocblks_desc, fifo_reallocblks }, /* reallocblks */
{ &vop_bwrite_desc, vop_generic_bwrite },
- { (struct vnodeop_desc*)NULL, (int(*)(void *))NULL }
+ { NULL, NULL }
};
struct vnodeopv_desc fifo_nfsv2nodeop_opv_desc =
{ &fifo_nfsv2nodeop_p, fifo_nfsv2nodeop_entries };
diff --git a/sys/sys/specdev.h b/sys/sys/specdev.h
index fc7366f6485..31e53f79f3a 100644
--- a/sys/sys/specdev.h
+++ b/sys/sys/specdev.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: specdev.h,v 1.13 2002/03/14 01:27:08 millert Exp $ */
+/* $OpenBSD: specdev.h,v 1.14 2002/11/08 04:34:17 art Exp $ */
/* $NetBSD: specdev.h,v 1.12 1996/02/13 13:13:01 mycroft Exp $ */
/*
@@ -121,3 +121,5 @@ int spec_advlock(void *);
#define spec_reallocblks spec_badop
#define spec_bwrite vop_generic_bwrite
#define spec_revoke vop_generic_revoke
+
+int spec_vnoperate(void *);
diff --git a/sys/ufs/ext2fs/ext2fs_vnops.c b/sys/ufs/ext2fs/ext2fs_vnops.c
index 09b96dd1d17..03def12f92e 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.24 2002/03/14 03:16:13 millert Exp $ */
+/* $OpenBSD: ext2fs_vnops.c,v 1.25 2002/11/08 04:34:18 art Exp $ */
/* $NetBSD: ext2fs_vnops.c,v 1.1 1997/06/11 09:34:09 bouyer Exp $ */
/*
@@ -1468,50 +1468,28 @@ struct vnodeopv_entry_desc ext2fs_vnodeop_entries[] = {
{ &vop_pathconf_desc, ufs_pathconf }, /* pathconf */
{ &vop_advlock_desc, ext2fs_advlock }, /* advlock */
{ &vop_bwrite_desc, vop_generic_bwrite }, /* bwrite */
- { (struct vnodeop_desc*)NULL, (int(*)(void *))NULL }
+ { NULL, NULL }
};
struct vnodeopv_desc ext2fs_vnodeop_opv_desc =
{ &ext2fs_vnodeop_p, ext2fs_vnodeop_entries };
int (**ext2fs_specop_p)(void *);
struct vnodeopv_entry_desc ext2fs_specop_entries[] = {
- { &vop_default_desc, vn_default_error },
- { &vop_lookup_desc, spec_lookup }, /* lookup */
- { &vop_create_desc, spec_create }, /* create */
- { &vop_mknod_desc, spec_mknod }, /* mknod */
- { &vop_open_desc, spec_open }, /* open */
+ { &vop_default_desc, spec_vnoperate },
{ &vop_close_desc, ufsspec_close }, /* close */
{ &vop_access_desc, ext2fs_access }, /* access */
{ &vop_getattr_desc, ext2fs_getattr }, /* getattr */
{ &vop_setattr_desc, ext2fs_setattr }, /* setattr */
{ &vop_read_desc, ufsspec_read }, /* read */
{ &vop_write_desc, ufsspec_write }, /* write */
- { &vop_lease_desc, spec_lease_check }, /* lease */
- { &vop_ioctl_desc, spec_ioctl }, /* ioctl */
- { &vop_select_desc, spec_select }, /* poll */
- { &vop_kqfilter_desc, spec_kqfilter }, /* kqfilter */
{ &vop_fsync_desc, ext2fs_fsync }, /* fsync */
- { &vop_remove_desc, spec_remove }, /* remove */
- { &vop_link_desc, spec_link }, /* link */
- { &vop_rename_desc, spec_rename }, /* rename */
- { &vop_mkdir_desc, spec_mkdir }, /* mkdir */
- { &vop_rmdir_desc, spec_rmdir }, /* rmdir */
- { &vop_symlink_desc, spec_symlink }, /* symlink */
- { &vop_readdir_desc, spec_readdir }, /* readdir */
- { &vop_readlink_desc, spec_readlink }, /* readlink */
- { &vop_abortop_desc, spec_abortop }, /* 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, spec_bmap }, /* bmap */
- { &vop_strategy_desc, spec_strategy }, /* strategy */
{ &vop_print_desc, ufs_print }, /* print */
{ &vop_islocked_desc, ufs_islocked }, /* islocked */
- { &vop_pathconf_desc, spec_pathconf }, /* pathconf */
- { &vop_advlock_desc, spec_advlock }, /* advlock */
- { &vop_bwrite_desc, vop_generic_bwrite }, /* bwrite */
- { (struct vnodeop_desc*)NULL, (int(*)(void *))NULL }
+ { NULL, NULL }
};
struct vnodeopv_desc ext2fs_specop_opv_desc =
{ &ext2fs_specop_p, ext2fs_specop_entries };
@@ -1519,43 +1497,22 @@ struct vnodeopv_desc ext2fs_specop_opv_desc =
#ifdef FIFO
int (**ext2fs_fifoop_p)(void *);
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_default_desc, fifo_vnoperate },
{ &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_lease_desc, fifo_lease_check }, /* lease */
- { &vop_ioctl_desc, fifo_ioctl }, /* ioctl */
- { &vop_select_desc, fifo_select }, /* select */
- { &vop_kqfilter_desc, fifo_kqfilter }, /* kqfilter */
{ &vop_fsync_desc, ext2fs_fsync }, /* fsync */
- { &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, 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_print_desc, ufs_print }, /* print */
{ &vop_islocked_desc, ufs_islocked }, /* islocked */
- { &vop_pathconf_desc, fifo_pathconf }, /* pathconf */
- { &vop_advlock_desc, fifo_advlock }, /* advlock */
{ &vop_bwrite_desc, vop_generic_bwrite }, /* bwrite */
- { (struct vnodeop_desc*)NULL, (int(*)(void *))NULL }
+ { NULL, NULL }
};
struct vnodeopv_desc ext2fs_fifoop_opv_desc =
{ &ext2fs_fifoop_p, ext2fs_fifoop_entries };
diff --git a/sys/ufs/ffs/ffs_vnops.c b/sys/ufs/ffs/ffs_vnops.c
index 1063d37d9ad..d678f56b3d4 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.27 2002/03/14 01:27:14 millert Exp $ */
+/* $OpenBSD: ffs_vnops.c,v 1.28 2002/11/08 04:34:18 art Exp $ */
/* $NetBSD: ffs_vnops.c,v 1.7 1996/05/11 18:27:24 mycroft Exp $ */
/*
@@ -119,44 +119,20 @@ struct vnodeopv_desc ffs_vnodeop_opv_desc =
int (**ffs_specop_p)(void *);
struct vnodeopv_entry_desc ffs_specop_entries[] = {
- { &vop_default_desc, vn_default_error },
- { &vop_lookup_desc, spec_lookup }, /* lookup */
- { &vop_create_desc, spec_create }, /* create */
- { &vop_mknod_desc, spec_mknod }, /* mknod */
- { &vop_open_desc, spec_open }, /* open */
+ { &vop_default_desc, spec_vnoperate },
{ &vop_close_desc, ufsspec_close }, /* close */
{ &vop_access_desc, ufs_access }, /* access */
{ &vop_getattr_desc, ufs_getattr }, /* getattr */
{ &vop_setattr_desc, ufs_setattr }, /* setattr */
{ &vop_read_desc, ufsspec_read }, /* read */
{ &vop_write_desc, ufsspec_write }, /* write */
- { &vop_lease_desc, spec_lease_check }, /* lease */
- { &vop_ioctl_desc, spec_ioctl }, /* ioctl */
- { &vop_select_desc, spec_select }, /* select */
- { &vop_kqfilter_desc, spec_kqfilter }, /* kqfilter */
- { &vop_revoke_desc, spec_revoke }, /* revoke */
{ &vop_fsync_desc, ffs_fsync }, /* fsync */
- { &vop_remove_desc, spec_remove }, /* remove */
- { &vop_link_desc, spec_link }, /* link */
- { &vop_rename_desc, spec_rename }, /* rename */
- { &vop_mkdir_desc, spec_mkdir }, /* mkdir */
- { &vop_rmdir_desc, spec_rmdir }, /* rmdir */
- { &vop_symlink_desc, spec_symlink }, /* symlink */
- { &vop_readdir_desc, spec_readdir }, /* readdir */
- { &vop_readlink_desc, spec_readlink }, /* readlink */
- { &vop_abortop_desc, spec_abortop }, /* 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, spec_bmap }, /* bmap */
- { &vop_strategy_desc, spec_strategy }, /* strategy */
{ &vop_print_desc, ufs_print }, /* print */
{ &vop_islocked_desc, ufs_islocked }, /* islocked */
- { &vop_pathconf_desc, spec_pathconf }, /* pathconf */
- { &vop_advlock_desc, spec_advlock }, /* advlock */
- { &vop_reallocblks_desc, spec_reallocblks }, /* reallocblks */
- { &vop_bwrite_desc, vop_generic_bwrite },
#ifdef UFS_EXTATTR
{ &vop_getextattr_desc, ufs_vop_getextattr },
{ &vop_setextattr_desc, ufs_vop_setextattr },
@@ -169,43 +145,20 @@ struct vnodeopv_desc ffs_specop_opv_desc =
#ifdef FIFO
int (**ffs_fifoop_p)(void *);
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_default_desc, fifo_vnoperate },
{ &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_lease_desc, fifo_lease_check }, /* lease */
- { &vop_ioctl_desc, fifo_ioctl }, /* ioctl */
- { &vop_select_desc, fifo_select }, /* select */
- { &vop_kqfilter_desc, fifo_kqfilter }, /* kqfilter */
- { &vop_revoke_desc, fifo_revoke }, /* revoke */
{ &vop_fsync_desc, ffs_fsync }, /* fsync */
- { &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, 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_print_desc, ufs_print }, /* print */
{ &vop_islocked_desc, ufs_islocked }, /* islocked */
- { &vop_pathconf_desc, fifo_pathconf }, /* pathconf */
- { &vop_advlock_desc, fifo_advlock }, /* advlock */
- { &vop_reallocblks_desc, fifo_reallocblks }, /* reallocblks */
{ &vop_bwrite_desc, vop_generic_bwrite },
#ifdef UFS_EXTATTR
{ &vop_getextattr_desc, ufs_vop_getextattr },
diff --git a/sys/ufs/lfs/lfs_vnops.c b/sys/ufs/lfs/lfs_vnops.c
index ff649b68399..23c27e8dd35 100644
--- a/sys/ufs/lfs/lfs_vnops.c
+++ b/sys/ufs/lfs/lfs_vnops.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: lfs_vnops.c,v 1.7 2002/03/14 01:27:15 millert Exp $ */
+/* $OpenBSD: lfs_vnops.c,v 1.8 2002/11/08 04:34:18 art Exp $ */
/* $NetBSD: lfs_vnops.c,v 1.11 1996/05/11 18:27:41 mycroft Exp $ */
/*
@@ -111,56 +111,28 @@ struct vnodeopv_entry_desc lfs_vnodeop_entries[] = {
{ &vop_truncate_desc, lfs_truncate }, /* truncate */
{ &vop_update_desc, lfs_update }, /* update */
{ &vop_bwrite_desc, lfs_bwrite }, /* bwrite */
- { (struct vnodeop_desc*)NULL, (int(*)(void *))NULL }
+ { NULL, NULL }
};
struct vnodeopv_desc lfs_vnodeop_opv_desc =
{ &lfs_vnodeop_p, lfs_vnodeop_entries };
int (**lfs_specop_p)(void *);
struct vnodeopv_entry_desc lfs_specop_entries[] = {
- { &vop_default_desc, vn_default_error },
- { &vop_lookup_desc, spec_lookup }, /* lookup */
- { &vop_create_desc, spec_create }, /* create */
- { &vop_mknod_desc, spec_mknod }, /* mknod */
- { &vop_open_desc, spec_open }, /* open */
+ { &vop_default_desc, spec_vnoperate },
{ &vop_close_desc, ufsspec_close }, /* close */
{ &vop_access_desc, ufs_access }, /* access */
{ &vop_getattr_desc, lfs_getattr }, /* getattr */
{ &vop_setattr_desc, ufs_setattr }, /* setattr */
{ &vop_read_desc, ufsspec_read }, /* read */
{ &vop_write_desc, ufsspec_write }, /* write */
- { &vop_lease_desc, spec_lease_check }, /* lease */
- { &vop_ioctl_desc, spec_ioctl }, /* ioctl */
- { &vop_select_desc, spec_select }, /* select */
- { &vop_mmap_desc, spec_mmap }, /* mmap */
- { &vop_fsync_desc, spec_fsync }, /* fsync */
- { &vop_seek_desc, spec_seek }, /* seek */
- { &vop_remove_desc, spec_remove }, /* remove */
- { &vop_link_desc, spec_link }, /* link */
- { &vop_rename_desc, spec_rename }, /* rename */
- { &vop_mkdir_desc, spec_mkdir }, /* mkdir */
- { &vop_rmdir_desc, spec_rmdir }, /* rmdir */
- { &vop_symlink_desc, spec_symlink }, /* symlink */
- { &vop_readdir_desc, spec_readdir }, /* readdir */
- { &vop_readlink_desc, spec_readlink }, /* readlink */
- { &vop_abortop_desc, spec_abortop }, /* 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, spec_bmap }, /* bmap */
- { &vop_strategy_desc, spec_strategy }, /* strategy */
{ &vop_print_desc, ufs_print }, /* print */
{ &vop_islocked_desc, ufs_islocked }, /* islocked */
- { &vop_pathconf_desc, spec_pathconf }, /* pathconf */
- { &vop_advlock_desc, spec_advlock }, /* advlock */
- { &vop_blkatoff_desc, spec_blkatoff }, /* blkatoff */
- { &vop_valloc_desc, spec_valloc }, /* valloc */
- { &vop_vfree_desc, lfs_vfree }, /* vfree */
- { &vop_truncate_desc, spec_truncate }, /* truncate */
- { &vop_update_desc, lfs_update }, /* update */
{ &vop_bwrite_desc, lfs_bwrite }, /* bwrite */
- { (struct vnodeop_desc*)NULL, (int(*)(void *))NULL }
+ { NULL, NULL }
};
struct vnodeopv_desc lfs_specop_opv_desc =
{ &lfs_specop_p, lfs_specop_entries };
@@ -168,49 +140,21 @@ struct vnodeopv_desc lfs_specop_opv_desc =
#ifdef FIFO
int (**lfs_fifoop_p)(void *);
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_default_desc, fifo_vnoperate },
{ &vop_close_desc, ufsfifo_close }, /* close */
{ &vop_access_desc, ufs_access }, /* access */
{ &vop_getattr_desc, lfs_getattr }, /* getattr */
{ &vop_setattr_desc, ufs_setattr }, /* setattr */
{ &vop_read_desc, ufsfifo_read }, /* read */
{ &vop_write_desc, ufsfifo_write }, /* write */
- { &vop_lease_desc, fifo_lease_check }, /* lease */
- { &vop_ioctl_desc, fifo_ioctl }, /* ioctl */
- { &vop_select_desc, fifo_select }, /* select */
- { &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, 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_print_desc, ufs_print }, /* print */
{ &vop_islocked_desc, ufs_islocked }, /* islocked */
- { &vop_pathconf_desc, fifo_pathconf }, /* pathconf */
- { &vop_advlock_desc, fifo_advlock }, /* advlock */
- { &vop_blkatoff_desc, fifo_blkatoff }, /* blkatoff */
- { &vop_valloc_desc, fifo_valloc }, /* valloc */
- { &vop_vfree_desc, lfs_vfree }, /* vfree */
- { &vop_truncate_desc, fifo_truncate }, /* truncate */
- { &vop_update_desc, lfs_update }, /* update */
{ &vop_bwrite_desc, lfs_bwrite }, /* bwrite */
- { (struct vnodeop_desc*)NULL, (int(*)(void *))NULL }
+ { NULL, NULL }
};
struct vnodeopv_desc lfs_fifoop_opv_desc =
{ &lfs_fifoop_p, lfs_fifoop_entries };