summaryrefslogtreecommitdiffstats
path: root/sys/fs
diff options
context:
space:
mode:
authorphk <phk@FreeBSD.org>2004-12-01 23:16:38 +0000
committerphk <phk@FreeBSD.org>2004-12-01 23:16:38 +0000
commit59f305606cbc120b44978581149ef1a3e62bf3b4 (patch)
treef548d86b8998e8d581602fc54079bbb1534e7c18 /sys/fs
parent350be3accf1712e54ae2732ca42ad409bbf20df7 (diff)
downloadFreeBSD-src-59f305606cbc120b44978581149ef1a3e62bf3b4.zip
FreeBSD-src-59f305606cbc120b44978581149ef1a3e62bf3b4.tar.gz
Back when VOP_* was introduced, we did not have new-style struct
initializations but we did have lofty goals and big ideals. Adjust to more contemporary circumstances and gain type checking. Replace the entire vop_t frobbing thing with properly typed structures. The only casualty is that we can not add a new VOP_ method with a loadable module. History has not given us reason to belive this would ever be feasible in the the first place. Eliminate in toto VOCALL(), vop_t, VNODEOP_SET() etc. Give coda correct prototypes and function definitions for all vop_()s. Generate a bit more data from the vnode_if.src file: a struct vop_vector and protype typedefs for all vop methods. Add a new vop_bypass() and make vop_default be a pointer to another struct vop_vector. Remove a lot of vfs_init since vop_vector is ready to use from the compiler. Cast various vop_mumble() to void * with uppercase name, for instance VOP_PANIC, VOP_NULL etc. Implement VCALL() by making vdesc_offset the offsetof() the relevant function pointer in vop_vector. This is disgusting but since the code is generated by a script comparatively safe. The alternative for nullfs etc. would be much worse. Fix up all vnode method vectors to remove casts so they become typesafe. (The bulk of this is generated by scripts)
Diffstat (limited to 'sys/fs')
-rw-r--r--sys/fs/cd9660/cd9660_vfsops.c4
-rw-r--r--sys/fs/cd9660/cd9660_vnops.c57
-rw-r--r--sys/fs/cd9660/iso.h5
-rw-r--r--sys/fs/coda/coda_vnops.c229
-rw-r--r--sys/fs/coda/coda_vnops.h54
-rw-r--r--sys/fs/deadfs/dead_vnops.c60
-rw-r--r--sys/fs/devfs/devfs_vnops.c109
-rw-r--r--sys/fs/fdescfs/fdesc_vnops.c33
-rw-r--r--sys/fs/fifofs/fifo.h2
-rw-r--r--sys/fs/fifofs/fifo_vnops.c66
-rw-r--r--sys/fs/hpfs/hpfs.h2
-rw-r--r--sys/fs/hpfs/hpfs_vfsops.c2
-rw-r--r--sys/fs/hpfs/hpfs_vnops.c54
-rw-r--r--sys/fs/msdosfs/denode.h2
-rw-r--r--sys/fs/msdosfs/msdosfs_denode.c2
-rw-r--r--sys/fs/msdosfs/msdosfs_vnops.c60
-rw-r--r--sys/fs/ntfs/ntfs.h2
-rw-r--r--sys/fs/ntfs/ntfs_vfsops.c2
-rw-r--r--sys/fs/ntfs/ntfs_vnops.c66
-rw-r--r--sys/fs/nullfs/null.h2
-rw-r--r--sys/fs/nullfs/null_subr.c2
-rw-r--r--sys/fs/nullfs/null_vfsops.c2
-rw-r--r--sys/fs/nullfs/null_vnops.c48
-rw-r--r--sys/fs/nwfs/nwfs.h3
-rw-r--r--sys/fs/nwfs/nwfs_node.c4
-rw-r--r--sys/fs/nwfs/nwfs_vnops.c62
-rw-r--r--sys/fs/portalfs/portal.h2
-rw-r--r--sys/fs/portalfs/portal_vfsops.c2
-rw-r--r--sys/fs/portalfs/portal_vnops.c28
-rw-r--r--sys/fs/pseudofs/pseudofs_vncache.c4
-rw-r--r--sys/fs/pseudofs/pseudofs_vnops.c57
-rw-r--r--sys/fs/smbfs/smbfs_node.c4
-rw-r--r--sys/fs/smbfs/smbfs_vnops.c69
-rw-r--r--sys/fs/udf/udf_vnops.c35
-rw-r--r--sys/fs/umapfs/umap.h1
-rw-r--r--sys/fs/umapfs/umap_vnops.c24
-rw-r--r--sys/fs/unionfs/union.h2
-rw-r--r--sys/fs/unionfs/union_subr.c8
-rw-r--r--sys/fs/unionfs/union_vnops.c106
39 files changed, 529 insertions, 747 deletions
diff --git a/sys/fs/cd9660/cd9660_vfsops.c b/sys/fs/cd9660/cd9660_vfsops.c
index 9500695..685158d 100644
--- a/sys/fs/cd9660/cd9660_vfsops.c
+++ b/sys/fs/cd9660/cd9660_vfsops.c
@@ -729,7 +729,7 @@ cd9660_vget_internal(mp, ino, flags, vpp, relocated, isodir)
return (0);
/* Allocate a new vnode/iso_node. */
- if ((error = getnewvnode("isofs", mp, cd9660_vnodeop_p, &vp)) != 0) {
+ if ((error = getnewvnode("isofs", mp, &cd9660_vnodeops, &vp)) != 0) {
*vpp = NULLVP;
return (error);
}
@@ -870,7 +870,7 @@ cd9660_vget_internal(mp, ino, flags, vpp, relocated, isodir)
*/
switch (vp->v_type = IFTOVT(ip->inode.iso_mode)) {
case VFIFO:
- vp->v_op = cd9660_fifoop_p;
+ vp->v_op = &cd9660_fifoops;
break;
default:
break;
diff --git a/sys/fs/cd9660/cd9660_vnops.c b/sys/fs/cd9660/cd9660_vnops.c
index 9761c2f..4a9e473 100644
--- a/sys/fs/cd9660/cd9660_vnops.c
+++ b/sys/fs/cd9660/cd9660_vnops.c
@@ -780,44 +780,33 @@ cd9660_pathconf(ap)
/*
* Global vfs data structures for cd9660
*/
-vop_t **cd9660_vnodeop_p;
-static struct vnodeopv_entry_desc cd9660_vnodeop_entries[] = {
- { &vop_default_desc, (vop_t *) vop_defaultop },
- { &vop_access_desc, (vop_t *) cd9660_access },
- { &vop_bmap_desc, (vop_t *) cd9660_bmap },
- { &vop_cachedlookup_desc, (vop_t *) cd9660_lookup },
- { &vop_getattr_desc, (vop_t *) cd9660_getattr },
- { &vop_inactive_desc, (vop_t *) cd9660_inactive },
- { &vop_ioctl_desc, (vop_t *) cd9660_ioctl },
- { &vop_lookup_desc, (vop_t *) vfs_cache_lookup },
- { &vop_pathconf_desc, (vop_t *) cd9660_pathconf },
- { &vop_read_desc, (vop_t *) cd9660_read },
- { &vop_readdir_desc, (vop_t *) cd9660_readdir },
- { &vop_readlink_desc, (vop_t *) cd9660_readlink },
- { &vop_reclaim_desc, (vop_t *) cd9660_reclaim },
- { &vop_setattr_desc, (vop_t *) cd9660_setattr },
- { &vop_strategy_desc, (vop_t *) cd9660_strategy },
- { NULL, NULL }
+struct vop_vector cd9660_vnodeops = {
+ .vop_default = &default_vnodeops,
+ .vop_access = cd9660_access,
+ .vop_bmap = cd9660_bmap,
+ .vop_cachedlookup = cd9660_lookup,
+ .vop_getattr = cd9660_getattr,
+ .vop_inactive = cd9660_inactive,
+ .vop_ioctl = cd9660_ioctl,
+ .vop_lookup = vfs_cache_lookup,
+ .vop_pathconf = cd9660_pathconf,
+ .vop_read = cd9660_read,
+ .vop_readdir = cd9660_readdir,
+ .vop_readlink = cd9660_readlink,
+ .vop_reclaim = cd9660_reclaim,
+ .vop_setattr = cd9660_setattr,
+ .vop_strategy = cd9660_strategy,
};
-static struct vnodeopv_desc cd9660_vnodeop_opv_desc =
- { &cd9660_vnodeop_p, cd9660_vnodeop_entries };
-VNODEOP_SET(cd9660_vnodeop_opv_desc);
/*
* Special device vnode ops
*/
-vop_t **cd9660_fifoop_p;
-static struct vnodeopv_entry_desc cd9660_fifoop_entries[] = {
- { &vop_default_desc, (vop_t *) fifo_vnoperate },
- { &vop_access_desc, (vop_t *) cd9660_access },
- { &vop_getattr_desc, (vop_t *) cd9660_getattr },
- { &vop_inactive_desc, (vop_t *) cd9660_inactive },
- { &vop_reclaim_desc, (vop_t *) cd9660_reclaim },
- { &vop_setattr_desc, (vop_t *) cd9660_setattr },
- { NULL, NULL }
+struct vop_vector cd9660_fifoops = {
+ .vop_default = &fifo_specops,
+ .vop_access = cd9660_access,
+ .vop_getattr = cd9660_getattr,
+ .vop_inactive = cd9660_inactive,
+ .vop_reclaim = cd9660_reclaim,
+ .vop_setattr = cd9660_setattr,
};
-static struct vnodeopv_desc cd9660_fifoop_opv_desc =
- { &cd9660_fifoop_p, cd9660_fifoop_entries };
-
-VNODEOP_SET(cd9660_fifoop_opv_desc);
diff --git a/sys/fs/cd9660/iso.h b/sys/fs/cd9660/iso.h
index d748063..f0b5221 100644
--- a/sys/fs/cd9660/iso.h
+++ b/sys/fs/cd9660/iso.h
@@ -263,9 +263,8 @@ int cd9660_uninit(struct vfsconf *);
#define cd9660_sysctl ((int (*)(int *, u_int, void *, size_t *, void *, \
size_t, struct proc *))eopnotsupp)
-extern vop_t **cd9660_vnodeop_p;
-extern vop_t **cd9660_specop_p;
-extern vop_t **cd9660_fifoop_p;
+extern struct vop_vector cd9660_vnodeops;
+extern struct vop_vector cd9660_fifoops;
int isochar(u_char *, u_char *, int, u_short *, int *, int, void *);
int isofncmp(u_char *, int, u_char *, int, int, int, void *, void *);
diff --git a/sys/fs/coda/coda_vnops.c b/sys/fs/coda/coda_vnops.c
index a7e84a8..5ce7891 100644
--- a/sys/fs/coda/coda_vnops.c
+++ b/sys/fs/coda/coda_vnops.c
@@ -94,9 +94,6 @@ int coda_printf_delay = 0; /* in microseconds */
int coda_vnop_print_entry = 0;
static int coda_lockdebug = 0;
-/* Definition of the vfs operation vector */
-static int (**coda_vnodeop_p)(void *);
-
/*
* Some NetBSD details:
*
@@ -108,85 +105,54 @@ static int (**coda_vnodeop_p)(void *);
/* Definition of the vnode operation vector */
-struct vnodeopv_entry_desc coda_vnodeop_entries[] = {
- { &vop_default_desc, coda_vop_error },
- { &vop_lookup_desc, coda_lookup }, /* lookup */
- { &vop_create_desc, coda_create }, /* create */
- { &vop_mknod_desc, coda_vop_error }, /* mknod */
- { &vop_open_desc, coda_open }, /* open */
- { &vop_close_desc, coda_close }, /* close */
- { &vop_access_desc, coda_access }, /* access */
- { &vop_getattr_desc, coda_getattr }, /* getattr */
- { &vop_setattr_desc, coda_setattr }, /* setattr */
- { &vop_read_desc, coda_read }, /* read */
- { &vop_write_desc, coda_write }, /* write */
- { &vop_ioctl_desc, coda_ioctl }, /* ioctl */
- { &vop_fsync_desc, coda_fsync }, /* fsync */
- { &vop_remove_desc, coda_remove }, /* remove */
- { &vop_link_desc, coda_link }, /* link */
- { &vop_rename_desc, coda_rename }, /* rename */
- { &vop_mkdir_desc, coda_mkdir }, /* mkdir */
- { &vop_rmdir_desc, coda_rmdir }, /* rmdir */
- { &vop_symlink_desc, coda_symlink }, /* symlink */
- { &vop_readdir_desc, coda_readdir }, /* readdir */
- { &vop_readlink_desc, coda_readlink }, /* readlink */
- { &vop_inactive_desc, coda_inactive }, /* inactive */
- { &vop_reclaim_desc, coda_reclaim }, /* reclaim */
- { &vop_lock_desc, coda_lock }, /* lock */
- { &vop_unlock_desc, coda_unlock }, /* unlock */
- { &vop_bmap_desc, coda_bmap }, /* bmap */
- { &vop_print_desc, coda_vop_error }, /* print */
- { &vop_islocked_desc, coda_islocked }, /* islocked */
- { &vop_pathconf_desc, coda_pathconf }, /* pathconf */
- { &vop_advlock_desc, coda_vop_nop }, /* advlock */
- { &vop_lease_desc, coda_vop_nop }, /* lease */
- { &vop_poll_desc, (vop_t *) vop_stdpoll },
- { &vop_getpages_desc, (vop_t*)vop_stdgetpages }, /* pager intf.*/
- { &vop_putpages_desc, (vop_t*)vop_stdputpages }, /* pager intf.*/
- { &vop_createvobject_desc, (vop_t*)vop_stdcreatevobject },
- { &vop_destroyvobject_desc, (vop_t*)vop_stddestroyvobject },
- { &vop_getvobject_desc, (vop_t*)vop_stdgetvobject },
-
-#if 0
-
- we need to define these someday
-#define UFS_BLKATOFF(aa, bb, cc, dd) VFSTOUFS((aa)->v_mount)->um_blkatoff(aa, bb, cc, dd)
-#define UFS_VALLOC(aa, bb, cc, dd) VFSTOUFS((aa)->v_mount)->um_valloc(aa, bb, cc, dd)
-#define UFS_VFREE(aa, bb, cc) VFSTOUFS((aa)->v_mount)->um_vfree(aa, bb, cc)
-#define UFS_TRUNCATE(aa, bb, cc, dd, ee) VFSTOUFS((aa)->v_mount)->um_truncate(aa, bb, cc, dd, ee)
-#define UFS_UPDATE(aa, bb) VFSTOUFS((aa)->v_mount)->um_update(aa, bb)
-
+struct vop_vector coda_vnodeops = {
+ .vop_default = VOP_PANIC,
+ .vop_lookup = coda_lookup, /* lookup */
+ .vop_create = coda_create, /* create */
+ .vop_mknod = VOP_PANIC, /* mknod */
+ .vop_open = coda_open, /* open */
+ .vop_close = coda_close, /* close */
+ .vop_access = coda_access, /* access */
+ .vop_getattr = coda_getattr, /* getattr */
+ .vop_setattr = coda_setattr, /* setattr */
+ .vop_read = coda_read, /* read */
+ .vop_write = coda_write, /* write */
+ .vop_ioctl = coda_ioctl, /* ioctl */
+ .vop_fsync = coda_fsync, /* fsync */
+ .vop_remove = coda_remove, /* remove */
+ .vop_link = coda_link, /* link */
+ .vop_rename = coda_rename, /* rename */
+ .vop_mkdir = coda_mkdir, /* mkdir */
+ .vop_rmdir = coda_rmdir, /* rmdir */
+ .vop_symlink = coda_symlink, /* symlink */
+ .vop_readdir = coda_readdir, /* readdir */
+ .vop_readlink = coda_readlink, /* readlink */
+ .vop_inactive = coda_inactive, /* inactive */
+ .vop_reclaim = coda_reclaim, /* reclaim */
+ .vop_lock = coda_lock, /* lock */
+ .vop_unlock = coda_unlock, /* unlock */
+ .vop_bmap = coda_bmap, /* bmap */
+ .vop_print = VOP_PANIC, /* print */
+ .vop_islocked = coda_islocked, /* islocked */
+ .vop_pathconf = coda_pathconf, /* pathconf */
+ .vop_advlock = VOP_NULL, /* advlock */
+ .vop_lease = VOP_NULL, /* lease */
+ .vop_poll = vop_stdpoll,
+ .vop_getpages = vop_stdgetpages, /* pager intf.*/
+ .vop_putpages = vop_stdputpages, /* pager intf.*/
+ .vop_createvobject = vop_stdcreatevobject,
+ .vop_destroyvobject = vop_stddestroyvobject,
+ .vop_getvobject = vop_stdgetvobject,
+ .vop_getwritemount = vop_stdgetwritemount,
+
+#if 0
missing
- { &vop_reallocblks_desc, (vop_t *) ufs_missingop },
- { &vop_cachedlookup_desc, (vop_t *) ufs_lookup },
- { &vop_whiteout_desc, (vop_t *) ufs_whiteout },
+ .vop_cachedlookup = ufs_lookup,
+ .vop_whiteout = ufs_whiteout,
#endif
- { &vop_createvobject_desc, (vop_t *) vop_stdcreatevobject },
- { &vop_destroyvobject_desc, (vop_t *) vop_stddestroyvobject },
- { &vop_getvobject_desc, (vop_t *) vop_stdgetvobject },
- { &vop_getwritemount_desc, (vop_t *) vop_stdgetwritemount },
- { (struct vnodeop_desc*)NULL, (int(*)(void *))NULL }
};
-static struct vnodeopv_desc coda_vnodeop_opv_desc =
- { &coda_vnodeop_p, coda_vnodeop_entries };
-
-VNODEOP_SET(coda_vnodeop_opv_desc);
-
-/* A generic panic: we were called with something we didn't define yet */
-int
-coda_vop_error(void *anon) {
- struct vnodeop_desc **desc = (struct vnodeop_desc **)anon;
-
- myprintf(("coda_vop_error: Vnode operation %s called, but not defined.\n",
- (*desc)->vdesc_name));
- /*
- panic("coda_vop_error");
- */
- return EIO;
-}
-
/* A generic do-nothing. For lease_check, advlock */
int
coda_vop_nop(void *anon) {
@@ -220,8 +186,7 @@ coda_vnodeopstats_init(void)
* cache file, and then opens it.
*/
int
-coda_open(v)
- void *v;
+coda_open(struct vop_open_args *ap)
{
/*
* NetBSD can pass the O_EXCL flag in mode, even though the check
@@ -229,7 +194,6 @@ coda_open(v)
* is passed the EXCL, it must be a bug. We strip the flag here.
*/
/* true args */
- struct vop_open_args *ap = v;
register struct vnode **vpp = &(ap->a_vp);
struct cnode *cp = VTOC(*vpp);
int flag = ap->a_mode & (~O_EXCL);
@@ -317,11 +281,9 @@ coda_open(v)
* Close the cache file used for I/O and notify Venus.
*/
int
-coda_close(v)
- void *v;
+coda_close(struct vop_close_args *ap)
{
/* true args */
- struct vop_close_args *ap = v;
struct vnode *vp = ap->a_vp;
struct cnode *cp = VTOC(vp);
int flag = ap->a_fflag;
@@ -375,10 +337,8 @@ coda_close(v)
}
int
-coda_read(v)
- void *v;
+coda_read(struct vop_read_args *ap)
{
- struct vop_read_args *ap = v;
ENTRY;
return(coda_rdwr(ap->a_vp, ap->a_uio, UIO_READ,
@@ -386,10 +346,8 @@ coda_read(v)
}
int
-coda_write(v)
- void *v;
+coda_write(struct vop_write_args *ap)
{
- struct vop_write_args *ap = v;
ENTRY;
return(coda_rdwr(ap->a_vp, ap->a_uio, UIO_WRITE,
@@ -525,11 +483,9 @@ printf("coda_rdwr: Internally Opening %p\n", vp);
int
-coda_ioctl(v)
- void *v;
+coda_ioctl(struct vop_ioctl_args *ap)
{
/* true args */
- struct vop_ioctl_args *ap = v;
struct vnode *vp = ap->a_vp;
int com = ap->a_command;
caddr_t data = ap->a_data;
@@ -575,7 +531,7 @@ coda_ioctl(v)
* Make sure this is a coda style cnode, but it may be a
* different vfsp
*/
- if (tvp->v_op != coda_vnodeop_p) {
+ if (tvp->v_op != &coda_vnodeops) {
vrele(tvp);
NDFREE(&ndp, NDF_ONLY_PNBUF);
MARK_INT_FAIL(CODA_IOCTL_STATS);
@@ -611,11 +567,9 @@ coda_ioctl(v)
* opened the file, and therefore should already have access.
*/
int
-coda_getattr(v)
- void *v;
+coda_getattr(struct vop_getattr_args *ap)
{
/* true args */
- struct vop_getattr_args *ap = v;
struct vnode *vp = ap->a_vp;
struct cnode *cp = VTOC(vp);
struct vattr *vap = ap->a_vap;
@@ -673,11 +627,9 @@ coda_getattr(v)
}
int
-coda_setattr(v)
- void *v;
+coda_setattr(struct vop_setattr_args *ap)
{
/* true args */
- struct vop_setattr_args *ap = v;
register struct vnode *vp = ap->a_vp;
struct cnode *cp = VTOC(vp);
register struct vattr *vap = ap->a_vap;
@@ -713,11 +665,9 @@ coda_setattr(v)
}
int
-coda_access(v)
- void *v;
+coda_access(struct vop_access_args *ap)
{
/* true args */
- struct vop_access_args *ap = v;
struct vnode *vp = ap->a_vp;
struct cnode *cp = VTOC(vp);
int mode = ap->a_mode;
@@ -757,11 +707,9 @@ coda_access(v)
}
int
-coda_readlink(v)
- void *v;
+coda_readlink(struct vop_readlink_args *ap)
{
/* true args */
- struct vop_readlink_args *ap = v;
struct vnode *vp = ap->a_vp;
struct cnode *cp = VTOC(vp);
struct uio *uiop = ap->a_uio;
@@ -810,11 +758,9 @@ coda_readlink(v)
}
int
-coda_fsync(v)
- void *v;
+coda_fsync(struct vop_fsync_args *ap)
{
/* true args */
- struct vop_fsync_args *ap = v;
struct vnode *vp = ap->a_vp;
struct cnode *cp = VTOC(vp);
struct ucred *cred = ap->a_cred;
@@ -876,13 +822,11 @@ coda_fsync(v)
}
int
-coda_inactive(v)
- void *v;
+coda_inactive(struct vop_inactive_args *ap)
{
/* XXX - at the moment, inactive doesn't look at cred, and doesn't
have a proc pointer. Oops. */
/* true args */
- struct vop_inactive_args *ap = v;
struct vnode *vp = ap->a_vp;
struct cnode *cp = VTOC(vp);
struct ucred *cred __attribute__((unused)) = NULL;
@@ -951,11 +895,9 @@ coda_inactive(v)
* It appears that in NetBSD, lookup is supposed to return the vnode locked
*/
int
-coda_lookup(v)
- void *v;
+coda_lookup(struct vop_lookup_args *ap)
{
/* true args */
- struct vop_lookup_args *ap = v;
struct vnode *dvp = ap->a_dvp;
struct cnode *dcp = VTOC(dvp);
struct vnode **vpp = ap->a_vpp;
@@ -1112,11 +1054,9 @@ coda_lookup(v)
/*ARGSUSED*/
int
-coda_create(v)
- void *v;
+coda_create(struct vop_create_args *ap)
{
/* true args */
- struct vop_create_args *ap = v;
struct vnode *dvp = ap->a_dvp;
struct cnode *dcp = VTOC(dvp);
struct vattr *va = ap->a_vap;
@@ -1200,11 +1140,9 @@ coda_create(v)
}
int
-coda_remove(v)
- void *v;
+coda_remove(struct vop_remove_args *ap)
{
/* true args */
- struct vop_remove_args *ap = v;
struct vnode *dvp = ap->a_dvp;
struct cnode *cp = VTOC(dvp);
struct componentname *cnp = ap->a_cnp;
@@ -1258,11 +1196,9 @@ coda_remove(v)
}
int
-coda_link(v)
- void *v;
+coda_link(struct vop_link_args *ap)
{
/* true args */
- struct vop_link_args *ap = v;
struct vnode *vp = ap->a_vp;
struct cnode *cp = VTOC(vp);
struct vnode *tdvp = ap->a_tdvp;
@@ -1308,11 +1244,9 @@ coda_link(v)
}
int
-coda_rename(v)
- void *v;
+coda_rename(struct vop_rename_args *ap)
{
/* true args */
- struct vop_rename_args *ap = v;
struct vnode *odvp = ap->a_fdvp;
struct cnode *odcp = VTOC(odvp);
struct componentname *fcnp = ap->a_fcnp;
@@ -1403,11 +1337,9 @@ coda_rename(v)
}
int
-coda_mkdir(v)
- void *v;
+coda_mkdir(struct vop_mkdir_args *ap)
{
/* true args */
- struct vop_mkdir_args *ap = v;
struct vnode *dvp = ap->a_dvp;
struct cnode *dcp = VTOC(dvp);
struct componentname *cnp = ap->a_cnp;
@@ -1474,11 +1406,9 @@ coda_mkdir(v)
}
int
-coda_rmdir(v)
- void *v;
+coda_rmdir(struct vop_rmdir_args *ap)
{
/* true args */
- struct vop_rmdir_args *ap = v;
struct vnode *dvp = ap->a_dvp;
struct cnode *dcp = VTOC(dvp);
struct componentname *cnp = ap->a_cnp;
@@ -1523,11 +1453,9 @@ coda_rmdir(v)
}
int
-coda_symlink(v)
- void *v;
+coda_symlink(struct vop_symlink_args *ap)
{
/* true args */
- struct vop_symlink_args *ap = v;
struct vnode *tdvp = ap->a_dvp;
struct cnode *tdcp = VTOC(tdvp);
struct componentname *cnp = ap->a_cnp;
@@ -1594,11 +1522,9 @@ coda_symlink(v)
* Read directory entries.
*/
int
-coda_readdir(v)
- void *v;
+coda_readdir(struct vop_readdir_args *ap)
{
/* true args */
- struct vop_readdir_args *ap = v;
struct vnode *vp = ap->a_vp;
struct cnode *cp = VTOC(vp);
register struct uio *uiop = ap->a_uio;
@@ -1671,12 +1597,10 @@ printf("coda_readdir: Internally Opening %p\n", vp);
* Convert from filesystem blocks to device blocks
*/
int
-coda_bmap(v)
- void *v;
+coda_bmap(struct vop_bmap_args *ap)
{
/* XXX on the global proc */
/* true args */
- struct vop_bmap_args *ap = v;
struct vnode *vp __attribute__((unused)) = ap->a_vp; /* file's vnode */
daddr_t bn __attribute__((unused)) = ap->a_bn; /* fs block number */
struct bufobj **bop = ap->a_bop; /* RETURN bufobj of device */
@@ -1706,11 +1630,9 @@ coda_bmap(v)
}
int
-coda_reclaim(v)
- void *v;
+coda_reclaim(struct vop_reclaim_args *ap)
{
/* true args */
- struct vop_reclaim_args *ap = v;
struct vnode *vp = ap->a_vp;
struct cnode *cp = VTOC(vp);
/* upcall decl */
@@ -1745,11 +1667,9 @@ coda_reclaim(v)
}
int
-coda_lock(v)
- void *v;
+coda_lock(struct vop_lock_args *ap)
{
/* true args */
- struct vop_lock_args *ap = v;
struct vnode *vp = ap->a_vp;
struct cnode *cp = VTOC(vp);
struct thread *td = ap->a_td;
@@ -1772,11 +1692,9 @@ coda_lock(v)
}
int
-coda_unlock(v)
- void *v;
+coda_unlock(struct vop_unlock_args *ap)
{
/* true args */
- struct vop_unlock_args *ap = v;
struct vnode *vp = ap->a_vp;
struct cnode *cp = VTOC(vp);
struct thread *td = ap->a_td;
@@ -1793,11 +1711,9 @@ coda_unlock(v)
}
int
-coda_islocked(v)
- void *v;
+coda_islocked(struct vop_islocked_args *ap)
{
/* true args */
- struct vop_islocked_args *ap = v;
struct cnode *cp = VTOC(ap->a_vp);
ENTRY;
@@ -1924,7 +1840,7 @@ make_coda_node(fid, vfsp, type)
lockinit(&cp->c_lock, PINOD, "cnode", 0, 0);
cp->c_fid = *fid;
- err = getnewvnode("coda", vfsp, coda_vnodeop_p, &vp);
+ err = getnewvnode("coda", vfsp, &coda_vnodeops, &vp);
if (err) {
panic("coda: getnewvnode returned error %d\n", err);
}
@@ -1941,14 +1857,11 @@ make_coda_node(fid, vfsp, type)
}
int
-coda_pathconf(v)
- void *v;
+coda_pathconf( struct vop_pathconf_args *ap)
{
- struct vop_pathconf_args *ap;
int error;
register_t *retval;
- ap = v;
retval = ap->a_retval;
error = 0;
diff --git a/sys/fs/coda/coda_vnops.h b/sys/fs/coda/coda_vnops.h
index 88a398e..8aae9b2 100644
--- a/sys/fs/coda/coda_vnops.h
+++ b/sys/fs/coda/coda_vnops.h
@@ -47,38 +47,38 @@
/* NetBSD interfaces to the vnodeops */
-int coda_open(void *);
-int coda_close(void *);
-int coda_read(void *);
-int coda_write(void *);
-int coda_ioctl(void *);
+vop_open_t coda_open;
+vop_close_t coda_close;
+vop_read_t coda_read;
+vop_write_t coda_write;
+vop_ioctl_t coda_ioctl;
/* 1.3 int cfs_select(void *);*/
-int coda_getattr(void *);
-int coda_setattr(void *);
-int coda_access(void *);
+vop_getattr_t coda_getattr;
+vop_setattr_t coda_setattr;
+vop_access_t coda_access;
int coda_abortop(void *);
-int coda_readlink(void *);
-int coda_fsync(void *);
-int coda_inactive(void *);
-int coda_lookup(void *);
-int coda_create(void *);
-int coda_remove(void *);
-int coda_link(void *);
-int coda_rename(void *);
-int coda_mkdir(void *);
-int coda_rmdir(void *);
-int coda_symlink(void *);
-int coda_readdir(void *);
-int coda_bmap(void *);
-int coda_strategy(void *);
-int coda_reclaim(void *);
-int coda_lock(void *);
-int coda_unlock(void *);
-int coda_islocked(void *);
+vop_readlink_t coda_readlink;
+vop_fsync_t coda_fsync;
+vop_inactive_t coda_inactive;
+vop_lookup_t coda_lookup;
+vop_create_t coda_create;
+vop_remove_t coda_remove;
+vop_link_t coda_link;
+vop_rename_t coda_rename;
+vop_mkdir_t coda_mkdir;
+vop_rmdir_t coda_rmdir;
+vop_symlink_t coda_symlink;
+vop_readdir_t coda_readdir;
+vop_bmap_t coda_bmap;
+vop_strategy_t coda_strategy;
+vop_reclaim_t coda_reclaim;
+vop_lock_t coda_lock;
+vop_unlock_t coda_unlock;
+vop_islocked_t coda_islocked;
int coda_vop_error(void *);
int coda_vop_nop(void *);
int coda_fbsd_getpages (void *);
-int coda_pathconf(void *);
+vop_pathconf_t coda_pathconf;
int coda_rdwr(struct vnode *vp, struct uio *uiop, enum uio_rw rw,
int ioflag, struct ucred *cred, struct thread *td);
diff --git a/sys/fs/deadfs/dead_vnops.c b/sys/fs/deadfs/dead_vnops.c
index 0f2094b..fce152a 100644
--- a/sys/fs/deadfs/dead_vnops.c
+++ b/sys/fs/deadfs/dead_vnops.c
@@ -51,40 +51,34 @@ static vop_poll_t dead_poll;
static vop_read_t dead_read;
static vop_write_t dead_write;
-vop_t **dead_vnodeop_p;
-static struct vnodeopv_entry_desc dead_vnodeop_entries[] = {
- { &vop_default_desc, (vop_t *) vop_defaultop },
- { &vop_access_desc, (vop_t *) vop_ebadf },
- { &vop_advlock_desc, (vop_t *) vop_ebadf },
- { &vop_bmap_desc, (vop_t *) dead_bmap },
- { &vop_create_desc, (vop_t *) vop_panic },
- { &vop_getattr_desc, (vop_t *) vop_ebadf },
- { &vop_inactive_desc, (vop_t *) vop_null },
- { &vop_ioctl_desc, (vop_t *) dead_ioctl },
- { &vop_link_desc, (vop_t *) vop_panic },
- { &vop_lock_desc, (vop_t *) dead_lock },
- { &vop_lookup_desc, (vop_t *) dead_lookup },
- { &vop_mkdir_desc, (vop_t *) vop_panic },
- { &vop_mknod_desc, (vop_t *) vop_panic },
- { &vop_open_desc, (vop_t *) dead_open },
- { &vop_pathconf_desc, (vop_t *) vop_ebadf }, /* per pathconf(2) */
- { &vop_poll_desc, (vop_t *) dead_poll },
- { &vop_read_desc, (vop_t *) dead_read },
- { &vop_readdir_desc, (vop_t *) vop_ebadf },
- { &vop_readlink_desc, (vop_t *) vop_ebadf },
- { &vop_reclaim_desc, (vop_t *) vop_null },
- { &vop_remove_desc, (vop_t *) vop_panic },
- { &vop_rename_desc, (vop_t *) vop_panic },
- { &vop_rmdir_desc, (vop_t *) vop_panic },
- { &vop_setattr_desc, (vop_t *) vop_ebadf },
- { &vop_symlink_desc, (vop_t *) vop_panic },
- { &vop_write_desc, (vop_t *) dead_write },
- { NULL, NULL }
+struct vop_vector dead_vnodeops = {
+ .vop_default = &default_vnodeops,
+ .vop_access = VOP_EBADF,
+ .vop_advlock = VOP_EBADF,
+ .vop_bmap = dead_bmap,
+ .vop_create = VOP_PANIC,
+ .vop_getattr = VOP_EBADF,
+ .vop_inactive = VOP_NULL,
+ .vop_ioctl = dead_ioctl,
+ .vop_link = VOP_PANIC,
+ .vop_lock = dead_lock,
+ .vop_lookup = dead_lookup,
+ .vop_mkdir = VOP_PANIC,
+ .vop_mknod = VOP_PANIC,
+ .vop_open = dead_open,
+ .vop_pathconf = VOP_EBADF, /* per pathconf(2) */
+ .vop_poll = dead_poll,
+ .vop_read = dead_read,
+ .vop_readdir = VOP_EBADF,
+ .vop_readlink = VOP_EBADF,
+ .vop_reclaim = VOP_NULL,
+ .vop_remove = VOP_PANIC,
+ .vop_rename = VOP_PANIC,
+ .vop_rmdir = VOP_PANIC,
+ .vop_setattr = VOP_EBADF,
+ .vop_symlink = VOP_PANIC,
+ .vop_write = dead_write,
};
-static struct vnodeopv_desc dead_vnodeop_opv_desc =
- { &dead_vnodeop_p, dead_vnodeop_entries };
-
-VNODEOP_SET(dead_vnodeop_opv_desc);
/*
* Trivial lookup routine that always fails.
diff --git a/sys/fs/devfs/devfs_vnops.c b/sys/fs/devfs/devfs_vnops.c
index a765b5a..1eecbf1 100644
--- a/sys/fs/devfs/devfs_vnops.c
+++ b/sys/fs/devfs/devfs_vnops.c
@@ -110,8 +110,7 @@ static vop_setlabel_t devfs_setlabel;
#endif
static vop_symlink_t devfs_symlink;
-static vop_t **devfs_vnodeop_p;
-vop_t **devfs_specop_p;
+extern struct vop_vector devfs_vnodeops;
static int
devfs_fp_check(struct file *fp, struct cdev **devp, struct cdevsw **dswp)
@@ -187,7 +186,7 @@ loop:
} else {
dev = NULL;
}
- error = getnewvnode("devfs", mp, devfs_vnodeop_p, &vp);
+ error = getnewvnode("devfs", mp, &devfs_vnodeops, &vp);
if (error != 0) {
printf("devfs_allocv: failed to allocate new vnode\n");
return (error);
@@ -196,7 +195,7 @@ loop:
if (de->de_dirent->d_type == DT_CHR) {
vp->v_type = VCHR;
vp = addaliasu(vp, dev->si_udev);
- vp->v_op = devfs_specop_p;
+ vp->v_op = &devfs_specops;
} else if (de->de_dirent->d_type == DT_DIR) {
vp->v_type = VDIR;
} else if (de->de_dirent->d_type == DT_LNK) {
@@ -1369,67 +1368,55 @@ devfs_write_f(struct file *fp, struct uio *uio, struct ucred *cred, int flags, s
return (error);
}
-static struct vnodeopv_entry_desc devfs_vnodeop_entries[] = {
- { &vop_default_desc, (vop_t *) vop_defaultop },
- { &vop_access_desc, (vop_t *) devfs_access },
- { &vop_getattr_desc, (vop_t *) devfs_getattr },
- { &vop_ioctl_desc, (vop_t *) devfs_rioctl },
- { &vop_lookup_desc, (vop_t *) devfs_lookup },
- { &vop_mknod_desc, (vop_t *) devfs_mknod },
- { &vop_pathconf_desc, (vop_t *) devfs_pathconf },
- { &vop_read_desc, (vop_t *) devfs_rread },
- { &vop_readdir_desc, (vop_t *) devfs_readdir },
- { &vop_readlink_desc, (vop_t *) devfs_readlink },
- { &vop_reclaim_desc, (vop_t *) devfs_reclaim },
- { &vop_remove_desc, (vop_t *) devfs_remove },
- { &vop_revoke_desc, (vop_t *) devfs_revoke },
- { &vop_setattr_desc, (vop_t *) devfs_setattr },
+static struct vop_vector devfs_vnodeops = {
+ .vop_default = &default_vnodeops,
+ .vop_access = devfs_access,
+ .vop_getattr = devfs_getattr,
+ .vop_ioctl = devfs_rioctl,
+ .vop_lookup = devfs_lookup,
+ .vop_mknod = devfs_mknod,
+ .vop_pathconf = devfs_pathconf,
+ .vop_read = devfs_rread,
+ .vop_readdir = devfs_readdir,
+ .vop_readlink = devfs_readlink,
+ .vop_reclaim = devfs_reclaim,
+ .vop_remove = devfs_remove,
+ .vop_revoke = devfs_revoke,
+ .vop_setattr = devfs_setattr,
#ifdef MAC
- { &vop_setlabel_desc, (vop_t *) devfs_setlabel },
+ .vop_setlabel = devfs_setlabel,
#endif
- { &vop_symlink_desc, (vop_t *) devfs_symlink },
- { NULL, NULL }
+ .vop_symlink = devfs_symlink,
};
-static struct vnodeopv_desc devfs_vnodeop_opv_desc =
- { &devfs_vnodeop_p, devfs_vnodeop_entries };
-
-VNODEOP_SET(devfs_vnodeop_opv_desc);
-
-static struct vnodeopv_entry_desc devfs_specop_entries[] = {
- { &vop_default_desc, (vop_t *) vop_defaultop },
- { &vop_access_desc, (vop_t *) devfs_access },
- { &vop_advlock_desc, (vop_t *) devfs_advlock },
- { &vop_bmap_desc, (vop_t *) vop_panic },
- { &vop_close_desc, (vop_t *) devfs_close },
- { &vop_create_desc, (vop_t *) vop_panic },
- { &vop_fsync_desc, (vop_t *) devfs_fsync },
- { &vop_getattr_desc, (vop_t *) devfs_getattr },
- { &vop_lease_desc, (vop_t *) vop_null },
- { &vop_link_desc, (vop_t *) vop_panic },
- { &vop_mkdir_desc, (vop_t *) vop_panic },
- { &vop_mknod_desc, (vop_t *) vop_panic },
- { &vop_open_desc, (vop_t *) devfs_open },
- { &vop_pathconf_desc, (vop_t *) devfs_pathconf },
- { &vop_print_desc, (vop_t *) devfs_print },
- { &vop_readdir_desc, (vop_t *) vop_panic },
- { &vop_readlink_desc, (vop_t *) vop_panic },
- { &vop_reallocblks_desc, (vop_t *) vop_panic },
- { &vop_reclaim_desc, (vop_t *) devfs_reclaim },
- { &vop_remove_desc, (vop_t *) devfs_remove },
- { &vop_rename_desc, (vop_t *) vop_panic },
- { &vop_revoke_desc, (vop_t *) devfs_revoke },
- { &vop_rmdir_desc, (vop_t *) vop_panic },
- { &vop_setattr_desc, (vop_t *) devfs_setattr },
+struct vop_vector devfs_specops = {
+ .vop_default = &default_vnodeops,
+ .vop_access = devfs_access,
+ .vop_advlock = devfs_advlock,
+ .vop_bmap = VOP_PANIC,
+ .vop_close = devfs_close,
+ .vop_create = VOP_PANIC,
+ .vop_fsync = devfs_fsync,
+ .vop_getattr = devfs_getattr,
+ .vop_lease = VOP_NULL,
+ .vop_link = VOP_PANIC,
+ .vop_mkdir = VOP_PANIC,
+ .vop_mknod = VOP_PANIC,
+ .vop_open = devfs_open,
+ .vop_pathconf = devfs_pathconf,
+ .vop_print = devfs_print,
+ .vop_readdir = VOP_PANIC,
+ .vop_readlink = VOP_PANIC,
+ .vop_reallocblks = VOP_PANIC,
+ .vop_reclaim = devfs_reclaim,
+ .vop_remove = devfs_remove,
+ .vop_rename = VOP_PANIC,
+ .vop_revoke = devfs_revoke,
+ .vop_rmdir = VOP_PANIC,
+ .vop_setattr = devfs_setattr,
#ifdef MAC
- { &vop_setlabel_desc, (vop_t *) devfs_setlabel },
+ .vop_setlabel = devfs_setlabel,
#endif
- { &vop_strategy_desc, (vop_t *) vop_panic },
- { &vop_symlink_desc, (vop_t *) vop_panic },
- { NULL, NULL }
+ .vop_strategy = VOP_PANIC,
+ .vop_symlink = VOP_PANIC,
};
-
-static struct vnodeopv_desc devfs_specop_opv_desc =
- { &devfs_specop_p, devfs_specop_entries };
-
-VNODEOP_SET(devfs_specop_opv_desc);
diff --git a/sys/fs/fdescfs/fdesc_vnops.c b/sys/fs/fdescfs/fdesc_vnops.c
index 3f25cda..ccaf342 100644
--- a/sys/fs/fdescfs/fdesc_vnops.c
+++ b/sys/fs/fdescfs/fdesc_vnops.c
@@ -60,8 +60,6 @@
#define FDL_LOCKED 0x02
static int fdcache_lock;
-static vop_t **fdesc_vnodeop_p;
-
#define NFDCACHE 4
#define FD_NHASH(ix) \
(&fdhashtbl[(ix) & fdhash])
@@ -76,6 +74,8 @@ static vop_readdir_t fdesc_readdir;
static vop_reclaim_t fdesc_reclaim;
static vop_setattr_t fdesc_setattr;
+extern struct vop_vector fdesc_vnodeops;
+
/*
* Initialise cache headers
*/
@@ -129,7 +129,7 @@ loop:
*/
MALLOC(fd, struct fdescnode *, sizeof(struct fdescnode), M_TEMP, M_WAITOK);
- error = getnewvnode("fdesc", mp, fdesc_vnodeop_p, vpp);
+ error = getnewvnode("fdesc", mp, &fdesc_vnodeops, vpp);
if (error) {
FREE(fd, M_TEMP);
goto out;
@@ -519,20 +519,15 @@ fdesc_reclaim(ap)
return (0);
}
-static struct vnodeopv_entry_desc fdesc_vnodeop_entries[] = {
- { &vop_default_desc, (vop_t *) vop_defaultop },
- { &vop_access_desc, (vop_t *) vop_null },
- { &vop_getattr_desc, (vop_t *) fdesc_getattr },
- { &vop_inactive_desc, (vop_t *) fdesc_inactive },
- { &vop_lookup_desc, (vop_t *) fdesc_lookup },
- { &vop_open_desc, (vop_t *) fdesc_open },
- { &vop_pathconf_desc, (vop_t *) vop_stdpathconf },
- { &vop_readdir_desc, (vop_t *) fdesc_readdir },
- { &vop_reclaim_desc, (vop_t *) fdesc_reclaim },
- { &vop_setattr_desc, (vop_t *) fdesc_setattr },
- { NULL, NULL }
+static struct vop_vector fdesc_vnodeops = {
+ .vop_default = &default_vnodeops,
+ .vop_access = VOP_NULL,
+ .vop_getattr = fdesc_getattr,
+ .vop_inactive = fdesc_inactive,
+ .vop_lookup = fdesc_lookup,
+ .vop_open = fdesc_open,
+ .vop_pathconf = vop_stdpathconf,
+ .vop_readdir = fdesc_readdir,
+ .vop_reclaim = fdesc_reclaim,
+ .vop_setattr = fdesc_setattr,
};
-static struct vnodeopv_desc fdesc_vnodeop_opv_desc =
- { &fdesc_vnodeop_p, fdesc_vnodeop_entries };
-
-VNODEOP_SET(fdesc_vnodeop_opv_desc);
diff --git a/sys/fs/fifofs/fifo.h b/sys/fs/fifofs/fifo.h
index 1148c9a..339763b 100644
--- a/sys/fs/fifofs/fifo.h
+++ b/sys/fs/fifofs/fifo.h
@@ -30,8 +30,6 @@
* $FreeBSD$
*/
-extern vop_t **fifo_vnodeop_p;
-
/*
* Prototypes for fifo operations on vnodes.
*/
diff --git a/sys/fs/fifofs/fifo_vnops.c b/sys/fs/fifofs/fifo_vnops.c
index a136e0f..53d267f 100644
--- a/sys/fs/fifofs/fifo_vnops.c
+++ b/sys/fs/fifofs/fifo_vnops.c
@@ -100,52 +100,36 @@ static struct filterops fiforead_filtops =
static struct filterops fifowrite_filtops =
{ 1, NULL, filt_fifowdetach, filt_fifowrite };
-vop_t **fifo_vnodeop_p;
-static struct vnodeopv_entry_desc fifo_vnodeop_entries[] = {
- { &vop_default_desc, (vop_t *) vop_defaultop },
- { &vop_access_desc, (vop_t *) vop_ebadf },
- { &vop_advlock_desc, (vop_t *) fifo_advlock },
- { &vop_close_desc, (vop_t *) fifo_close },
- { &vop_create_desc, (vop_t *) vop_panic },
- { &vop_getattr_desc, (vop_t *) vop_ebadf },
- { &vop_ioctl_desc, (vop_t *) fifo_ioctl },
- { &vop_kqfilter_desc, (vop_t *) fifo_kqfilter },
- { &vop_lease_desc, (vop_t *) vop_null },
- { &vop_link_desc, (vop_t *) vop_panic },
- { &vop_mkdir_desc, (vop_t *) vop_panic },
- { &vop_mknod_desc, (vop_t *) vop_panic },
- { &vop_open_desc, (vop_t *) fifo_open },
- { &vop_pathconf_desc, (vop_t *) fifo_pathconf },
- { &vop_print_desc, (vop_t *) fifo_print },
- { &vop_readdir_desc, (vop_t *) vop_panic },
- { &vop_readlink_desc, (vop_t *) vop_panic },
- { &vop_reallocblks_desc, (vop_t *) vop_panic },
- { &vop_reclaim_desc, (vop_t *) vop_null },
- { &vop_remove_desc, (vop_t *) vop_panic },
- { &vop_rename_desc, (vop_t *) vop_panic },
- { &vop_rmdir_desc, (vop_t *) vop_panic },
- { &vop_setattr_desc, (vop_t *) vop_ebadf },
- { &vop_symlink_desc, (vop_t *) vop_panic },
- { NULL, NULL }
+struct vop_vector fifo_specops = {
+ .vop_default = &default_vnodeops,
+ .vop_access = VOP_EBADF,
+ .vop_advlock = fifo_advlock,
+ .vop_close = fifo_close,
+ .vop_create = VOP_PANIC,
+ .vop_getattr = VOP_EBADF,
+ .vop_ioctl = fifo_ioctl,
+ .vop_kqfilter = fifo_kqfilter,
+ .vop_lease = VOP_NULL,
+ .vop_link = VOP_PANIC,
+ .vop_mkdir = VOP_PANIC,
+ .vop_mknod = VOP_PANIC,
+ .vop_open = fifo_open,
+ .vop_pathconf = fifo_pathconf,
+ .vop_print = fifo_print,
+ .vop_readdir = VOP_PANIC,
+ .vop_readlink = VOP_PANIC,
+ .vop_reallocblks = VOP_PANIC,
+ .vop_reclaim = VOP_NULL,
+ .vop_remove = VOP_PANIC,
+ .vop_rename = VOP_PANIC,
+ .vop_rmdir = VOP_PANIC,
+ .vop_setattr = VOP_EBADF,
+ .vop_symlink = VOP_PANIC,
};
-static struct vnodeopv_desc fifo_vnodeop_opv_desc =
- { &fifo_vnodeop_p, fifo_vnodeop_entries };
-
-VNODEOP_SET(fifo_vnodeop_opv_desc);
struct mtx fifo_mtx;
MTX_SYSINIT(fifo, &fifo_mtx, "fifo mutex", MTX_DEF);
-int
-fifo_vnoperate(ap)
- struct vop_generic_args /* {
- struct vnodeop_desc *a_desc;
- <other random data follows, presumably>
- } */ *ap;
-{
- return (VOCALL(fifo_vnodeop_p, ap->a_desc->vdesc_offset, ap));
-}
-
/*
* Dispose of fifo resources.
*/
diff --git a/sys/fs/hpfs/hpfs.h b/sys/fs/hpfs/hpfs.h
index 55ef3a3..c818d1b 100644
--- a/sys/fs/hpfs/hpfs.h
+++ b/sys/fs/hpfs/hpfs.h
@@ -387,7 +387,7 @@ MALLOC_DECLARE(M_HPFSNO);
#define HPTOV(h) ((struct vnode *)((h)->h_vp))
#define FID(f) (*((lsn_t *)(f)->fid_data))
-extern vop_t ** hpfs_vnodeop_p;
+extern struct vop_vector hpfs_vnodeops;
/* Hash routines, too small to be separate header */
void hpfs_hphashinit(void);
diff --git a/sys/fs/hpfs/hpfs_vfsops.c b/sys/fs/hpfs/hpfs_vfsops.c
index 4acf562..f1bd584 100644
--- a/sys/fs/hpfs/hpfs_vfsops.c
+++ b/sys/fs/hpfs/hpfs_vfsops.c
@@ -489,7 +489,7 @@ hpfs_vget(
MALLOC(hp, struct hpfsnode *, sizeof(struct hpfsnode),
M_HPFSNO, M_WAITOK);
- error = getnewvnode("hpfs", hpmp->hpm_mp, hpfs_vnodeop_p, &vp);
+ error = getnewvnode("hpfs", hpmp->hpm_mp, &hpfs_vnodeops, &vp);
if (error) {
printf("hpfs_vget: can't get new vnode\n");
FREE(hp, M_HPFSNO);
diff --git a/sys/fs/hpfs/hpfs_vnops.c b/sys/fs/hpfs/hpfs_vnops.c
index 2d9e40f..0381bef 100644
--- a/sys/fs/hpfs/hpfs_vnops.c
+++ b/sys/fs/hpfs/hpfs_vnops.c
@@ -1224,35 +1224,27 @@ hpfs_pathconf(ap)
/*
* Global vfs data structures
*/
-vop_t **hpfs_vnodeop_p;
-struct vnodeopv_entry_desc hpfs_vnodeop_entries[] = {
- { &vop_default_desc, (vop_t *)vop_defaultop },
-
- { &vop_getattr_desc, (vop_t *)hpfs_getattr },
- { &vop_setattr_desc, (vop_t *)hpfs_setattr },
- { &vop_inactive_desc, (vop_t *)hpfs_inactive },
- { &vop_reclaim_desc, (vop_t *)hpfs_reclaim },
- { &vop_print_desc, (vop_t *)hpfs_print },
- { &vop_create_desc, (vop_t *)hpfs_create },
- { &vop_remove_desc, (vop_t *)hpfs_remove },
- { &vop_cachedlookup_desc, (vop_t *)hpfs_lookup },
- { &vop_lookup_desc, (vop_t *)vfs_cache_lookup },
- { &vop_access_desc, (vop_t *)hpfs_access },
- { &vop_close_desc, (vop_t *)hpfs_close },
- { &vop_open_desc, (vop_t *)hpfs_open },
- { &vop_readdir_desc, (vop_t *)hpfs_readdir },
- { &vop_fsync_desc, (vop_t *)hpfs_fsync },
- { &vop_bmap_desc, (vop_t *)hpfs_bmap },
- { &vop_strategy_desc, (vop_t *)hpfs_strategy },
- { &vop_read_desc, (vop_t *)hpfs_read },
- { &vop_write_desc, (vop_t *)hpfs_write },
- { &vop_ioctl_desc, (vop_t *)hpfs_ioctl },
- { &vop_pathconf_desc, (vop_t *)hpfs_pathconf },
- { NULL, NULL }
+struct vop_vector hpfs_vnodeops = {
+ .vop_default = &default_vnodeops,
+
+ .vop_getattr = hpfs_getattr,
+ .vop_setattr = hpfs_setattr,
+ .vop_inactive = hpfs_inactive,
+ .vop_reclaim = hpfs_reclaim,
+ .vop_print = hpfs_print,
+ .vop_create = hpfs_create,
+ .vop_remove = hpfs_remove,
+ .vop_cachedlookup = hpfs_lookup,
+ .vop_lookup = vfs_cache_lookup,
+ .vop_access = hpfs_access,
+ .vop_close = hpfs_close,
+ .vop_open = hpfs_open,
+ .vop_readdir = hpfs_readdir,
+ .vop_fsync = hpfs_fsync,
+ .vop_bmap = hpfs_bmap,
+ .vop_strategy = hpfs_strategy,
+ .vop_read = hpfs_read,
+ .vop_write = hpfs_write,
+ .vop_ioctl = hpfs_ioctl,
+ .vop_pathconf = hpfs_pathconf,
};
-
-static
-struct vnodeopv_desc hpfs_vnodeop_opv_desc =
- { &hpfs_vnodeop_p, hpfs_vnodeop_entries };
-
-VNODEOP_SET(hpfs_vnodeop_opv_desc);
diff --git a/sys/fs/msdosfs/denode.h b/sys/fs/msdosfs/denode.h
index 0da4378..dfe7960 100644
--- a/sys/fs/msdosfs/denode.h
+++ b/sys/fs/msdosfs/denode.h
@@ -259,7 +259,7 @@ struct defid {
#endif
};
-extern vop_t **msdosfs_vnodeop_p;
+extern struct vop_vector msdosfs_vnodeops;
int msdosfs_lookup(struct vop_cachedlookup_args *);
int msdosfs_inactive(struct vop_inactive_args *);
diff --git a/sys/fs/msdosfs/msdosfs_denode.c b/sys/fs/msdosfs/msdosfs_denode.c
index 845e633..6fa4a44 100644
--- a/sys/fs/msdosfs/msdosfs_denode.c
+++ b/sys/fs/msdosfs/msdosfs_denode.c
@@ -248,7 +248,7 @@ deget(pmp, dirclust, diroffset, depp)
* copy it from the passed disk buffer.
*/
/* getnewvnode() does a VREF() on the vnode */
- error = getnewvnode("msdosfs", mntp, msdosfs_vnodeop_p, &nvp);
+ error = getnewvnode("msdosfs", mntp, &msdosfs_vnodeops, &nvp);
if (error) {
*depp = NULL;
FREE(ldep, M_MSDOSFSNODE);
diff --git a/sys/fs/msdosfs/msdosfs_vnops.c b/sys/fs/msdosfs/msdosfs_vnops.c
index bcf72e7..c735647 100644
--- a/sys/fs/msdosfs/msdosfs_vnops.c
+++ b/sys/fs/msdosfs/msdosfs_vnops.c
@@ -1871,37 +1871,31 @@ msdosfs_advlock(ap)
}
/* Global vfs data structures for msdosfs */
-vop_t **msdosfs_vnodeop_p;
-static struct vnodeopv_entry_desc msdosfs_vnodeop_entries[] = {
- { &vop_default_desc, (vop_t *) vop_defaultop },
- { &vop_access_desc, (vop_t *) msdosfs_access },
- { &vop_advlock_desc, (vop_t *) msdosfs_advlock },
- { &vop_bmap_desc, (vop_t *) msdosfs_bmap },
- { &vop_cachedlookup_desc, (vop_t *) msdosfs_lookup },
- { &vop_close_desc, (vop_t *) msdosfs_close },
- { &vop_create_desc, (vop_t *) msdosfs_create },
- { &vop_fsync_desc, (vop_t *) msdosfs_fsync },
- { &vop_getattr_desc, (vop_t *) msdosfs_getattr },
- { &vop_inactive_desc, (vop_t *) msdosfs_inactive },
- { &vop_link_desc, (vop_t *) msdosfs_link },
- { &vop_lookup_desc, (vop_t *) vfs_cache_lookup },
- { &vop_mkdir_desc, (vop_t *) msdosfs_mkdir },
- { &vop_mknod_desc, (vop_t *) msdosfs_mknod },
- { &vop_pathconf_desc, (vop_t *) msdosfs_pathconf },
- { &vop_print_desc, (vop_t *) msdosfs_print },
- { &vop_read_desc, (vop_t *) msdosfs_read },
- { &vop_readdir_desc, (vop_t *) msdosfs_readdir },
- { &vop_reclaim_desc, (vop_t *) msdosfs_reclaim },
- { &vop_remove_desc, (vop_t *) msdosfs_remove },
- { &vop_rename_desc, (vop_t *) msdosfs_rename },
- { &vop_rmdir_desc, (vop_t *) msdosfs_rmdir },
- { &vop_setattr_desc, (vop_t *) msdosfs_setattr },
- { &vop_strategy_desc, (vop_t *) msdosfs_strategy },
- { &vop_symlink_desc, (vop_t *) msdosfs_symlink },
- { &vop_write_desc, (vop_t *) msdosfs_write },
- { NULL, NULL }
+struct vop_vector msdosfs_vnodeops = {
+ .vop_default = &default_vnodeops,
+ .vop_access = msdosfs_access,
+ .vop_advlock = msdosfs_advlock,
+ .vop_bmap = msdosfs_bmap,
+ .vop_cachedlookup = msdosfs_lookup,
+ .vop_close = msdosfs_close,
+ .vop_create = msdosfs_create,
+ .vop_fsync = msdosfs_fsync,
+ .vop_getattr = msdosfs_getattr,
+ .vop_inactive = msdosfs_inactive,
+ .vop_link = msdosfs_link,
+ .vop_lookup = vfs_cache_lookup,
+ .vop_mkdir = msdosfs_mkdir,
+ .vop_mknod = msdosfs_mknod,
+ .vop_pathconf = msdosfs_pathconf,
+ .vop_print = msdosfs_print,
+ .vop_read = msdosfs_read,
+ .vop_readdir = msdosfs_readdir,
+ .vop_reclaim = msdosfs_reclaim,
+ .vop_remove = msdosfs_remove,
+ .vop_rename = msdosfs_rename,
+ .vop_rmdir = msdosfs_rmdir,
+ .vop_setattr = msdosfs_setattr,
+ .vop_strategy = msdosfs_strategy,
+ .vop_symlink = msdosfs_symlink,
+ .vop_write = msdosfs_write,
};
-static struct vnodeopv_desc msdosfs_vnodeop_opv_desc =
- { &msdosfs_vnodeop_p, msdosfs_vnodeop_entries };
-
-VNODEOP_SET(msdosfs_vnodeop_opv_desc);
diff --git a/sys/fs/ntfs/ntfs.h b/sys/fs/ntfs/ntfs.h
index 05560b1..506d6c9 100644
--- a/sys/fs/ntfs/ntfs.h
+++ b/sys/fs/ntfs/ntfs.h
@@ -304,4 +304,4 @@ MALLOC_DECLARE(M_NTFSNTHASH);
#define ddprintf(a)
#endif
-extern vop_t **ntfs_vnodeop_p;
+extern struct vop_vector ntfs_vnodeops;
diff --git a/sys/fs/ntfs/ntfs_vfsops.c b/sys/fs/ntfs/ntfs_vfsops.c
index 1705cc2..23c920e 100644
--- a/sys/fs/ntfs/ntfs_vfsops.c
+++ b/sys/fs/ntfs/ntfs_vfsops.c
@@ -726,7 +726,7 @@ ntfs_vgetex(
return (0);
}
- error = getnewvnode("ntfs", ntmp->ntm_mountp, ntfs_vnodeop_p, &vp);
+ error = getnewvnode("ntfs", ntmp->ntm_mountp, &ntfs_vnodeops, &vp);
if(error) {
ntfs_frele(fp);
ntfs_ntput(ip);
diff --git a/sys/fs/ntfs/ntfs_vnops.c b/sys/fs/ntfs/ntfs_vnops.c
index e578a717..700fd1a 100644
--- a/sys/fs/ntfs/ntfs_vnops.c
+++ b/sys/fs/ntfs/ntfs_vnops.c
@@ -77,9 +77,9 @@ static vop_access_t ntfs_access;
static vop_open_t ntfs_open;
static vop_close_t ntfs_close;
static vop_readdir_t ntfs_readdir;
-static vop_lookup_t ntfs_lookup;
+static vop_cachedlookup_t ntfs_lookup;
static vop_fsync_t ntfs_fsync;
-static int ntfs_pathconf(void *);
+static vop_pathconf_t ntfs_pathconf;
int ntfs_prtactive = 1; /* 1 => print out reclaim of active vnodes */
@@ -607,7 +607,7 @@ ntfs_readdir(ap)
int
ntfs_lookup(ap)
- struct vop_lookup_args /* {
+ struct vop_cachedlookup_args /* {
struct vnode *a_dvp;
struct vnode **a_vpp;
struct componentname *a_cnp;
@@ -717,14 +717,9 @@ ntfs_fsync(ap)
* Return POSIX pathconf information applicable to NTFS filesystem
*/
int
-ntfs_pathconf(v)
- void *v;
+ntfs_pathconf(ap)
+ struct vop_pathconf_args *ap;
{
- struct vop_pathconf_args /* {
- struct vnode *a_vp;
- int a_name;
- register_t *a_retval;
- } */ *ap = v;
switch (ap->a_name) {
case _PC_LINK_MAX:
@@ -751,35 +746,26 @@ ntfs_pathconf(v)
/*
* Global vfs data structures
*/
-vop_t **ntfs_vnodeop_p;
-static
-struct vnodeopv_entry_desc ntfs_vnodeop_entries[] = {
- { &vop_default_desc, (vop_t *)vop_defaultop },
-
- { &vop_getattr_desc, (vop_t *)ntfs_getattr },
- { &vop_inactive_desc, (vop_t *)ntfs_inactive },
- { &vop_reclaim_desc, (vop_t *)ntfs_reclaim },
- { &vop_pathconf_desc, ntfs_pathconf },
-
- { &vop_cachedlookup_desc, (vop_t *)ntfs_lookup },
- { &vop_lookup_desc, (vop_t *)vfs_cache_lookup },
-
- { &vop_access_desc, (vop_t *)ntfs_access },
- { &vop_close_desc, (vop_t *)ntfs_close },
- { &vop_open_desc, (vop_t *)ntfs_open },
- { &vop_readdir_desc, (vop_t *)ntfs_readdir },
- { &vop_fsync_desc, (vop_t *)ntfs_fsync },
-
- { &vop_bmap_desc, (vop_t *)ntfs_bmap },
- { &vop_strategy_desc, (vop_t *)ntfs_strategy },
- { &vop_read_desc, (vop_t *)ntfs_read },
- { &vop_write_desc, (vop_t *)ntfs_write },
-
- { NULL, NULL }
-};
+struct vop_vector ntfs_vnodeops = {
+ .vop_default = &default_vnodeops,
+
+ .vop_getattr = ntfs_getattr,
+ .vop_inactive = ntfs_inactive,
+ .vop_reclaim = ntfs_reclaim,
+ .vop_pathconf = ntfs_pathconf,
-static
-struct vnodeopv_desc ntfs_vnodeop_opv_desc =
- { &ntfs_vnodeop_p, ntfs_vnodeop_entries };
+ .vop_cachedlookup = ntfs_lookup,
+ .vop_lookup = vfs_cache_lookup,
-VNODEOP_SET(ntfs_vnodeop_opv_desc);
+ .vop_access = ntfs_access,
+ .vop_close = ntfs_close,
+ .vop_open = ntfs_open,
+ .vop_readdir = ntfs_readdir,
+ .vop_fsync = ntfs_fsync,
+
+ .vop_bmap = ntfs_bmap,
+ .vop_strategy = ntfs_strategy,
+ .vop_read = ntfs_read,
+ .vop_write = ntfs_write,
+
+};
diff --git a/sys/fs/nullfs/null.h b/sys/fs/nullfs/null.h
index b57e743..2569b38 100644
--- a/sys/fs/nullfs/null.h
+++ b/sys/fs/nullfs/null.h
@@ -68,7 +68,7 @@ struct vnode *null_checkvp(struct vnode *vp, char *fil, int lno);
#define NULLVPTOLOWERVP(vp) (VTONULL(vp)->null_lowervp)
#endif
-extern vop_t **null_vnodeop_p;
+extern struct vop_vector null_vnodeops;
#ifdef MALLOC_DECLARE
MALLOC_DECLARE(M_NULLFSNODE);
diff --git a/sys/fs/nullfs/null_subr.c b/sys/fs/nullfs/null_subr.c
index 7a2d752..1df0ea2 100644
--- a/sys/fs/nullfs/null_subr.c
+++ b/sys/fs/nullfs/null_subr.c
@@ -235,7 +235,7 @@ null_nodeget(mp, lowervp, vpp)
MALLOC(xp, struct null_node *, sizeof(struct null_node),
M_NULLFSNODE, M_WAITOK);
- error = getnewvnode("null", mp, null_vnodeop_p, &vp);
+ error = getnewvnode("null", mp, &null_vnodeops, &vp);
if (error) {
FREE(xp, M_NULLFSNODE);
return (error);
diff --git a/sys/fs/nullfs/null_vfsops.c b/sys/fs/nullfs/null_vfsops.c
index 1f49a7a..6a39dc0 100644
--- a/sys/fs/nullfs/null_vfsops.c
+++ b/sys/fs/nullfs/null_vfsops.c
@@ -105,7 +105,7 @@ nullfs_mount(struct mount *mp, struct thread *td)
* Unlock lower node to avoid deadlock.
* (XXX) VOP_ISLOCKED is needed?
*/
- if ((mp->mnt_vnodecovered->v_op == null_vnodeop_p) &&
+ if ((mp->mnt_vnodecovered->v_op == &null_vnodeops) &&
VOP_ISLOCKED(mp->mnt_vnodecovered, NULL)) {
VOP_UNLOCK(mp->mnt_vnodecovered, 0, td);
isvnunlocked = 1;
diff --git a/sys/fs/nullfs/null_vnops.c b/sys/fs/nullfs/null_vnops.c
index bdb98b5..41bf7ef 100644
--- a/sys/fs/nullfs/null_vnops.c
+++ b/sys/fs/nullfs/null_vnops.c
@@ -275,7 +275,7 @@ null_bypass(ap)
* that aren't. (We must always map first vp or vclean fails.)
*/
if (i && (*this_vp_p == NULLVP ||
- (*this_vp_p)->v_op != null_vnodeop_p)) {
+ (*this_vp_p)->v_op != &null_vnodeops)) {
old_vps[i] = NULLVP;
} else {
old_vps[i] = *this_vp_p;
@@ -857,30 +857,24 @@ null_getvobject(ap)
/*
* Global vfs data structures
*/
-vop_t **null_vnodeop_p;
-static struct vnodeopv_entry_desc null_vnodeop_entries[] = {
- { &vop_default_desc, (vop_t *) null_bypass },
-
- { &vop_access_desc, (vop_t *) null_access },
- { &vop_bmap_desc, (vop_t *) vop_eopnotsupp },
- { &vop_createvobject_desc, (vop_t *) null_createvobject },
- { &vop_destroyvobject_desc, (vop_t *) null_destroyvobject },
- { &vop_getattr_desc, (vop_t *) null_getattr },
- { &vop_getvobject_desc, (vop_t *) null_getvobject },
- { &vop_getwritemount_desc, (vop_t *) vop_stdgetwritemount},
- { &vop_inactive_desc, (vop_t *) null_inactive },
- { &vop_islocked_desc, (vop_t *) null_islocked },
- { &vop_lock_desc, (vop_t *) null_lock },
- { &vop_lookup_desc, (vop_t *) null_lookup },
- { &vop_print_desc, (vop_t *) null_print },
- { &vop_reclaim_desc, (vop_t *) null_reclaim },
- { &vop_rename_desc, (vop_t *) null_rename },
- { &vop_setattr_desc, (vop_t *) null_setattr },
- { &vop_strategy_desc, (vop_t *) vop_eopnotsupp },
- { &vop_unlock_desc, (vop_t *) null_unlock },
- { NULL, NULL }
+struct vop_vector null_vnodeops = {
+ .vop_bypass = null_bypass,
+
+ .vop_access = null_access,
+ .vop_bmap = VOP_EOPNOTSUPP,
+ .vop_createvobject = null_createvobject,
+ .vop_destroyvobject = null_destroyvobject,
+ .vop_getattr = null_getattr,
+ .vop_getvobject = null_getvobject,
+ .vop_getwritemount = vop_stdgetwritemount,
+ .vop_inactive = null_inactive,
+ .vop_islocked = null_islocked,
+ .vop_lock = null_lock,
+ .vop_lookup = null_lookup,
+ .vop_print = null_print,
+ .vop_reclaim = null_reclaim,
+ .vop_rename = null_rename,
+ .vop_setattr = null_setattr,
+ .vop_strategy = VOP_EOPNOTSUPP,
+ .vop_unlock = null_unlock,
};
-static struct vnodeopv_desc null_vnodeop_opv_desc =
- { &null_vnodeop_p, null_vnodeop_entries };
-
-VNODEOP_SET(null_vnodeop_opv_desc);
diff --git a/sys/fs/nwfs/nwfs.h b/sys/fs/nwfs/nwfs.h
index a8a9ad2..94395e4 100644
--- a/sys/fs/nwfs/nwfs.h
+++ b/sys/fs/nwfs/nwfs.h
@@ -78,6 +78,9 @@ int nwfs_ioctl(struct vop_ioctl_args *ap);
int nwfs_doio(struct vnode *vp, struct buf *bp, struct ucred *cr, struct thread *td);
int nwfs_vinvalbuf(struct vnode *vp, int flags, struct ucred *cred,
struct thread *td, int intrflg);
+
+extern struct vop_vector nwfs_vnodeops;
+
#endif /* _KERNEL */
#endif /* _NWFS_H_ */
diff --git a/sys/fs/nwfs/nwfs_node.c b/sys/fs/nwfs/nwfs_node.c
index b86f7d1..dc82df7 100644
--- a/sys/fs/nwfs/nwfs_node.c
+++ b/sys/fs/nwfs/nwfs_node.c
@@ -60,8 +60,6 @@
#define NWNOHASH(fhsum) (&nwhashtbl[(fhsum.f_id) & nwnodehash])
-extern vop_t **nwfs_vnodeop_p;
-
static LIST_HEAD(nwnode_hash_head,nwnode) *nwhashtbl;
static u_long nwnodehash;
static struct lock nwhashlock;
@@ -170,7 +168,7 @@ rescan:
* elsewhere if MALLOC should block.
*/
MALLOC(np, struct nwnode *, sizeof *np, M_NWNODE, M_WAITOK | M_ZERO);
- error = getnewvnode("nwfs", mp, nwfs_vnodeop_p, &vp);
+ error = getnewvnode("nwfs", mp, &nwfs_vnodeops, &vp);
if (error) {
*vpp = NULL;
FREE(np, M_NWNODE);
diff --git a/sys/fs/nwfs/nwfs_vnops.c b/sys/fs/nwfs/nwfs_vnops.c
index a3942d6..37775fe 100644
--- a/sys/fs/nwfs/nwfs_vnops.c
+++ b/sys/fs/nwfs/nwfs_vnops.c
@@ -83,41 +83,35 @@ static vop_print_t nwfs_print;
static vop_pathconf_t nwfs_pathconf;
/* Global vfs data structures for nwfs */
-vop_t **nwfs_vnodeop_p;
-static struct vnodeopv_entry_desc nwfs_vnodeop_entries[] = {
- { &vop_default_desc, (vop_t *) vop_defaultop },
- { &vop_access_desc, (vop_t *) nwfs_access },
- { &vop_open_desc, (vop_t *) nwfs_open },
- { &vop_close_desc, (vop_t *) nwfs_close },
- { &vop_create_desc, (vop_t *) nwfs_create },
- { &vop_fsync_desc, (vop_t *) nwfs_fsync },
- { &vop_getattr_desc, (vop_t *) nwfs_getattr },
- { &vop_getpages_desc, (vop_t *) nwfs_getpages },
- { &vop_putpages_desc, (vop_t *) nwfs_putpages },
- { &vop_ioctl_desc, (vop_t *) nwfs_ioctl },
- { &vop_inactive_desc, (vop_t *) nwfs_inactive },
- { &vop_link_desc, (vop_t *) nwfs_link },
- { &vop_lookup_desc, (vop_t *) nwfs_lookup },
- { &vop_mkdir_desc, (vop_t *) nwfs_mkdir },
- { &vop_mknod_desc, (vop_t *) nwfs_mknod },
- { &vop_pathconf_desc, (vop_t *) nwfs_pathconf },
- { &vop_print_desc, (vop_t *) nwfs_print },
- { &vop_read_desc, (vop_t *) nwfs_read },
- { &vop_readdir_desc, (vop_t *) nwfs_readdir },
- { &vop_reclaim_desc, (vop_t *) nwfs_reclaim },
- { &vop_remove_desc, (vop_t *) nwfs_remove },
- { &vop_rename_desc, (vop_t *) nwfs_rename },
- { &vop_rmdir_desc, (vop_t *) nwfs_rmdir },
- { &vop_setattr_desc, (vop_t *) nwfs_setattr },
- { &vop_strategy_desc, (vop_t *) nwfs_strategy },
- { &vop_symlink_desc, (vop_t *) nwfs_symlink },
- { &vop_write_desc, (vop_t *) nwfs_write },
- { NULL, NULL }
+static struct vop_vector nwfs_vnodeops = {
+ .vop_default = &default_vnodeops,
+ .vop_access = nwfs_access,
+ .vop_open = nwfs_open,
+ .vop_close = nwfs_close,
+ .vop_create = nwfs_create,
+ .vop_fsync = nwfs_fsync,
+ .vop_getattr = nwfs_getattr,
+ .vop_getpages = nwfs_getpages,
+ .vop_putpages = nwfs_putpages,
+ .vop_ioctl = nwfs_ioctl,
+ .vop_inactive = nwfs_inactive,
+ .vop_link = nwfs_link,
+ .vop_lookup = nwfs_lookup,
+ .vop_mkdir = nwfs_mkdir,
+ .vop_mknod = nwfs_mknod,
+ .vop_pathconf = nwfs_pathconf,
+ .vop_print = nwfs_print,
+ .vop_read = nwfs_read,
+ .vop_readdir = nwfs_readdir,
+ .vop_reclaim = nwfs_reclaim,
+ .vop_remove = nwfs_remove,
+ .vop_rename = nwfs_rename,
+ .vop_rmdir = nwfs_rmdir,
+ .vop_setattr = nwfs_setattr,
+ .vop_strategy = nwfs_strategy,
+ .vop_symlink = nwfs_symlink,
+ .vop_write = nwfs_write,
};
-static struct vnodeopv_desc nwfs_vnodeop_opv_desc =
- { &nwfs_vnodeop_p, nwfs_vnodeop_entries };
-
-VNODEOP_SET(nwfs_vnodeop_opv_desc);
/*
* nwfs_access vnode op
diff --git a/sys/fs/portalfs/portal.h b/sys/fs/portalfs/portal.h
index 02e42c7..5891b0f 100644
--- a/sys/fs/portalfs/portal.h
+++ b/sys/fs/portalfs/portal.h
@@ -63,5 +63,5 @@ struct portalnode {
#define PORTAL_ROOTFILEID 2
-extern vop_t **portal_vnodeop_p;
+extern struct vop_vector portal_vnodeops;
#endif /* _KERNEL */
diff --git a/sys/fs/portalfs/portal_vfsops.c b/sys/fs/portalfs/portal_vfsops.c
index 5ff1138..1326836 100644
--- a/sys/fs/portalfs/portal_vfsops.c
+++ b/sys/fs/portalfs/portal_vfsops.c
@@ -110,7 +110,7 @@ portal_omount(mp, path, data, td)
MALLOC(fmp, struct portalmount *, sizeof(struct portalmount),
M_PORTALFSMNT, M_WAITOK); /* XXX */
- error = getnewvnode("portal", mp, portal_vnodeop_p, &rvp); /* XXX */
+ error = getnewvnode("portal", mp, &portal_vnodeops, &rvp); /* XXX */
if (error) {
FREE(fmp, M_PORTALFSMNT);
FREE(pn, M_TEMP);
diff --git a/sys/fs/portalfs/portal_vnops.c b/sys/fs/portalfs/portal_vnops.c
index fcc5b55..5c40839 100644
--- a/sys/fs/portalfs/portal_vnops.c
+++ b/sys/fs/portalfs/portal_vnops.c
@@ -131,7 +131,7 @@ portal_lookup(ap)
MALLOC(pt, struct portalnode *, sizeof(struct portalnode),
M_TEMP, M_WAITOK);
- error = getnewvnode("portal", dvp->v_mount, portal_vnodeop_p, &fvp);
+ error = getnewvnode("portal", dvp->v_mount, &portal_vnodeops, &fvp);
if (error) {
FREE(pt, M_TEMP);
goto bad;
@@ -556,20 +556,14 @@ portal_reclaim(ap)
return (0);
}
-vop_t **portal_vnodeop_p;
-static struct vnodeopv_entry_desc portal_vnodeop_entries[] = {
- { &vop_default_desc, (vop_t *) vop_defaultop },
- { &vop_access_desc, (vop_t *) vop_null },
- { &vop_getattr_desc, (vop_t *) portal_getattr },
- { &vop_lookup_desc, (vop_t *) portal_lookup },
- { &vop_open_desc, (vop_t *) portal_open },
- { &vop_pathconf_desc, (vop_t *) vop_stdpathconf },
- { &vop_readdir_desc, (vop_t *) portal_readdir },
- { &vop_reclaim_desc, (vop_t *) portal_reclaim },
- { &vop_setattr_desc, (vop_t *) portal_setattr },
- { NULL, NULL }
+struct vop_vector portal_vnodeops = {
+ .vop_default = &default_vnodeops,
+ .vop_access = VOP_NULL,
+ .vop_getattr = portal_getattr,
+ .vop_lookup = portal_lookup,
+ .vop_open = portal_open,
+ .vop_pathconf = vop_stdpathconf,
+ .vop_readdir = portal_readdir,
+ .vop_reclaim = portal_reclaim,
+ .vop_setattr = portal_setattr,
};
-static struct vnodeopv_desc portal_vnodeop_opv_desc =
- { &portal_vnodeop_p, portal_vnodeop_entries };
-
-VNODEOP_SET(portal_vnodeop_opv_desc);
diff --git a/sys/fs/pseudofs/pseudofs_vncache.c b/sys/fs/pseudofs/pseudofs_vncache.c
index d237cd2..7bdf823 100644
--- a/sys/fs/pseudofs/pseudofs_vncache.c
+++ b/sys/fs/pseudofs/pseudofs_vncache.c
@@ -72,7 +72,7 @@ SYSCTL_INT(_vfs_pfs_vncache, OID_AUTO, misses, CTLFLAG_RD,
&pfs_vncache_misses, 0,
"number of cache misses since initialization");
-extern vop_t **pfs_vnodeop_p;
+extern struct vop_vector pfs_vnodeops; /* XXX -> .h file */
/*
* Initialize vnode cache
@@ -137,7 +137,7 @@ pfs_vncache_alloc(struct mount *mp, struct vnode **vpp,
MALLOC(pvd, struct pfs_vdata *, sizeof *pvd, M_PFSVNCACHE, M_WAITOK);
if (++pfs_vncache_entries > pfs_vncache_maxentries)
pfs_vncache_maxentries = pfs_vncache_entries;
- error = getnewvnode("pseudofs", mp, pfs_vnodeop_p, vpp);
+ error = getnewvnode("pseudofs", mp, &pfs_vnodeops, vpp);
if (error) {
FREE(pvd, M_PFSVNCACHE);
return (error);
diff --git a/sys/fs/pseudofs/pseudofs_vnops.c b/sys/fs/pseudofs/pseudofs_vnops.c
index d8fa427..c90c70e 100644
--- a/sys/fs/pseudofs/pseudofs_vnops.c
+++ b/sys/fs/pseudofs/pseudofs_vnops.c
@@ -763,7 +763,7 @@ pfs_setattr(struct vop_setattr_args *va)
* Read from a file
*/
static int
-pfs_write(struct vop_read_args *va)
+pfs_write(struct vop_write_args *va)
{
struct vnode *vn = va->a_vp;
struct pfs_vdata *pvd = (struct pfs_vdata *)vn->v_data;
@@ -822,35 +822,28 @@ pfs_write(struct vop_read_args *va)
/*
* Vnode operations
*/
-vop_t **pfs_vnodeop_p;
-static struct vnodeopv_entry_desc pfs_vnodeop_entries[] = {
- { &vop_default_desc, (vop_t *)vop_defaultop },
- { &vop_access_desc, (vop_t *)pfs_access },
- { &vop_close_desc, (vop_t *)pfs_close },
- { &vop_create_desc, (vop_t *)vop_eopnotsupp },
- { &vop_getattr_desc, (vop_t *)pfs_getattr },
- { &vop_getextattr_desc, (vop_t *)pfs_getextattr },
- { &vop_ioctl_desc, (vop_t *)pfs_ioctl },
- { &vop_link_desc, (vop_t *)vop_eopnotsupp },
- { &vop_lookup_desc, (vop_t *)pfs_lookup },
- { &vop_mkdir_desc, (vop_t *)vop_eopnotsupp },
- { &vop_mknod_desc, (vop_t *)vop_eopnotsupp },
- { &vop_open_desc, (vop_t *)pfs_open },
- { &vop_read_desc, (vop_t *)pfs_read },
- { &vop_readdir_desc, (vop_t *)pfs_readdir },
- { &vop_readlink_desc, (vop_t *)pfs_readlink },
- { &vop_reclaim_desc, (vop_t *)pfs_reclaim },
- { &vop_remove_desc, (vop_t *)vop_eopnotsupp },
- { &vop_rename_desc, (vop_t *)vop_eopnotsupp },
- { &vop_rmdir_desc, (vop_t *)vop_eopnotsupp },
- { &vop_setattr_desc, (vop_t *)pfs_setattr },
- { &vop_symlink_desc, (vop_t *)vop_eopnotsupp },
- { &vop_write_desc, (vop_t *)pfs_write },
- /* XXX I've probably forgotten a few that need vop_eopnotsupp */
- { NULL, (vop_t *)NULL }
+struct vop_vector pfs_vnodeops = {
+ .vop_default = &default_vnodeops,
+ .vop_access = pfs_access,
+ .vop_close = pfs_close,
+ .vop_create = VOP_EOPNOTSUPP,
+ .vop_getattr = pfs_getattr,
+ .vop_getextattr = pfs_getextattr,
+ .vop_ioctl = pfs_ioctl,
+ .vop_link = VOP_EOPNOTSUPP,
+ .vop_lookup = pfs_lookup,
+ .vop_mkdir = VOP_EOPNOTSUPP,
+ .vop_mknod = VOP_EOPNOTSUPP,
+ .vop_open = pfs_open,
+ .vop_read = pfs_read,
+ .vop_readdir = pfs_readdir,
+ .vop_readlink = pfs_readlink,
+ .vop_reclaim = pfs_reclaim,
+ .vop_remove = VOP_EOPNOTSUPP,
+ .vop_rename = VOP_EOPNOTSUPP,
+ .vop_rmdir = VOP_EOPNOTSUPP,
+ .vop_setattr = pfs_setattr,
+ .vop_symlink = VOP_EOPNOTSUPP,
+ .vop_write = pfs_write,
+ /* XXX I've probably forgotten a few that need VOP_EOPNOTSUPP */
};
-
-static struct vnodeopv_desc pfs_vnodeop_opv_desc =
- { &pfs_vnodeop_p, pfs_vnodeop_entries };
-
-VNODEOP_SET(pfs_vnodeop_opv_desc);
diff --git a/sys/fs/smbfs/smbfs_node.c b/sys/fs/smbfs/smbfs_node.c
index c76d73e..4f238e6 100644
--- a/sys/fs/smbfs/smbfs_node.c
+++ b/sys/fs/smbfs/smbfs_node.c
@@ -62,7 +62,7 @@
#define smbfs_hash_unlock(smp, td) lockmgr(&smp->sm_hashlock, LK_RELEASE, NULL, td)
-extern vop_t **smbfs_vnodeop_p;
+extern struct vop_vector smbfs_vnodeops; /* XXX -> .h file */
MALLOC_DEFINE(M_SMBNODE, "SMBFS node", "SMBFS vnode private part");
static MALLOC_DEFINE(M_SMBNODENAME, "SMBFS nname", "SMBFS node name");
@@ -236,7 +236,7 @@ loop:
return ENOENT;
MALLOC(np, struct smbnode *, sizeof *np, M_SMBNODE, M_WAITOK);
- error = getnewvnode("smbfs", mp, smbfs_vnodeop_p, &vp);
+ error = getnewvnode("smbfs", mp, &smbfs_vnodeops, &vp);
if (error) {
FREE(np, M_SMBNODE);
return error;
diff --git a/sys/fs/smbfs/smbfs_vnops.c b/sys/fs/smbfs/smbfs_vnops.c
index 7874830..7067ce8 100644
--- a/sys/fs/smbfs/smbfs_vnops.c
+++ b/sys/fs/smbfs/smbfs_vnops.c
@@ -84,46 +84,39 @@ static vop_pathconf_t smbfs_pathconf;
static vop_advlock_t smbfs_advlock;
static vop_getextattr_t smbfs_getextattr;
-vop_t **smbfs_vnodeop_p;
-static struct vnodeopv_entry_desc smbfs_vnodeop_entries[] = {
- { &vop_default_desc, (vop_t *) vop_defaultop },
- { &vop_access_desc, (vop_t *) smbfs_access },
- { &vop_advlock_desc, (vop_t *) smbfs_advlock },
- { &vop_close_desc, (vop_t *) smbfs_close },
- { &vop_create_desc, (vop_t *) smbfs_create },
- { &vop_fsync_desc, (vop_t *) smbfs_fsync },
- { &vop_getattr_desc, (vop_t *) smbfs_getattr },
- { &vop_getpages_desc, (vop_t *) smbfs_getpages },
- { &vop_inactive_desc, (vop_t *) smbfs_inactive },
- { &vop_ioctl_desc, (vop_t *) smbfs_ioctl },
- { &vop_link_desc, (vop_t *) smbfs_link },
- { &vop_lookup_desc, (vop_t *) smbfs_lookup },
- { &vop_mkdir_desc, (vop_t *) smbfs_mkdir },
- { &vop_mknod_desc, (vop_t *) smbfs_mknod },
- { &vop_open_desc, (vop_t *) smbfs_open },
- { &vop_pathconf_desc, (vop_t *) smbfs_pathconf },
- { &vop_print_desc, (vop_t *) smbfs_print },
- { &vop_putpages_desc, (vop_t *) smbfs_putpages },
- { &vop_read_desc, (vop_t *) smbfs_read },
- { &vop_readdir_desc, (vop_t *) smbfs_readdir },
- { &vop_reclaim_desc, (vop_t *) smbfs_reclaim },
- { &vop_remove_desc, (vop_t *) smbfs_remove },
- { &vop_rename_desc, (vop_t *) smbfs_rename },
- { &vop_rmdir_desc, (vop_t *) smbfs_rmdir },
- { &vop_setattr_desc, (vop_t *) smbfs_setattr },
- { &vop_strategy_desc, (vop_t *) smbfs_strategy },
- { &vop_symlink_desc, (vop_t *) smbfs_symlink },
- { &vop_write_desc, (vop_t *) smbfs_write },
- { &vop_getextattr_desc, (vop_t *) smbfs_getextattr },
-/* { &vop_setextattr_desc, (vop_t *) smbfs_setextattr },*/
- { NULL, NULL }
+struct vop_vector smbfs_vnodeops = {
+ .vop_default = &default_vnodeops,
+ .vop_access = smbfs_access,
+ .vop_advlock = smbfs_advlock,
+ .vop_close = smbfs_close,
+ .vop_create = smbfs_create,
+ .vop_fsync = smbfs_fsync,
+ .vop_getattr = smbfs_getattr,
+ .vop_getpages = smbfs_getpages,
+ .vop_inactive = smbfs_inactive,
+ .vop_ioctl = smbfs_ioctl,
+ .vop_link = smbfs_link,
+ .vop_lookup = smbfs_lookup,
+ .vop_mkdir = smbfs_mkdir,
+ .vop_mknod = smbfs_mknod,
+ .vop_open = smbfs_open,
+ .vop_pathconf = smbfs_pathconf,
+ .vop_print = smbfs_print,
+ .vop_putpages = smbfs_putpages,
+ .vop_read = smbfs_read,
+ .vop_readdir = smbfs_readdir,
+ .vop_reclaim = smbfs_reclaim,
+ .vop_remove = smbfs_remove,
+ .vop_rename = smbfs_rename,
+ .vop_rmdir = smbfs_rmdir,
+ .vop_setattr = smbfs_setattr,
+ .vop_strategy = smbfs_strategy,
+ .vop_symlink = smbfs_symlink,
+ .vop_write = smbfs_write,
+ .vop_getextattr = smbfs_getextattr,
+/* .vop_setextattr = smbfs_setextattr,*/
};
-static struct vnodeopv_desc smbfs_vnodeop_opv_desc =
- { &smbfs_vnodeop_p, smbfs_vnodeop_entries };
-
-VNODEOP_SET(smbfs_vnodeop_opv_desc);
-
static int
smbfs_access(ap)
struct vop_access_args /* {
diff --git a/sys/fs/udf/udf_vnops.c b/sys/fs/udf/udf_vnops.c
index c92bf5c..33dde60 100644
--- a/sys/fs/udf/udf_vnops.c
+++ b/sys/fs/udf/udf_vnops.c
@@ -68,26 +68,21 @@ static vop_reclaim_t udf_reclaim;
static int udf_readatoffset(struct udf_node *, int *, int, struct buf **, uint8_t **);
static int udf_bmap_internal(struct udf_node *, uint32_t, daddr_t *, uint32_t *);
-vop_t **udf_vnodeop_p;
-static struct vnodeopv_entry_desc udf_vnodeop_entries[] = {
- { &vop_default_desc, (vop_t *) vop_defaultop },
- { &vop_access_desc, (vop_t *) udf_access },
- { &vop_bmap_desc, (vop_t *) udf_bmap },
- { &vop_cachedlookup_desc, (vop_t *) udf_lookup },
- { &vop_getattr_desc, (vop_t *) udf_getattr },
- { &vop_ioctl_desc, (vop_t *) udf_ioctl },
- { &vop_lookup_desc, (vop_t *) vfs_cache_lookup },
- { &vop_pathconf_desc, (vop_t *) udf_pathconf },
- { &vop_read_desc, (vop_t *) udf_read },
- { &vop_readdir_desc, (vop_t *) udf_readdir },
- { &vop_readlink_desc, (vop_t *) udf_readlink },
- { &vop_reclaim_desc, (vop_t *) udf_reclaim },
- { &vop_strategy_desc, (vop_t *) udf_strategy },
- { NULL, NULL }
+static struct vop_vector udf_vnodeops = {
+ .vop_default = &default_vnodeops,
+ .vop_access = udf_access,
+ .vop_bmap = udf_bmap,
+ .vop_cachedlookup = udf_lookup,
+ .vop_getattr = udf_getattr,
+ .vop_ioctl = udf_ioctl,
+ .vop_lookup = vfs_cache_lookup,
+ .vop_pathconf = udf_pathconf,
+ .vop_read = udf_read,
+ .vop_readdir = udf_readdir,
+ .vop_readlink = udf_readlink,
+ .vop_reclaim = udf_reclaim,
+ .vop_strategy = udf_strategy,
};
-static struct vnodeopv_desc udf_vnodeop_opv_desc =
- { &udf_vnodeop_p, udf_vnodeop_entries };
-VNODEOP_SET(udf_vnodeop_opv_desc);
MALLOC_DEFINE(M_UDFFID, "UDF FID", "UDF FileId structure");
MALLOC_DEFINE(M_UDFDS, "UDF DS", "UDF Dirstream structure");
@@ -171,7 +166,7 @@ udf_allocv(struct mount *mp, struct vnode **vpp, struct thread *td)
int error;
struct vnode *vp;
- error = getnewvnode("udf", mp, udf_vnodeop_p, &vp);
+ error = getnewvnode("udf", mp, &udf_vnodeops, &vp);
if (error) {
printf("udf_allocv: failed to allocate new vnode\n");
return (error);
diff --git a/sys/fs/umapfs/umap.h b/sys/fs/umapfs/umap.h
index 10af870..4b74579 100644
--- a/sys/fs/umapfs/umap.h
+++ b/sys/fs/umapfs/umap.h
@@ -83,5 +83,4 @@ extern struct vnode *umap_checkvp(struct vnode *vp, char *fil, int lno);
#define UMAPVPTOLOWERVP(vp) (VTOUMAP(vp)->umap_lowervp)
#endif
-extern vop_t **umap_vnodeop_p;
#endif /* _KERNEL */
diff --git a/sys/fs/umapfs/umap_vnops.c b/sys/fs/umapfs/umap_vnops.c
index 1b56007..2aa4b9e 100644
--- a/sys/fs/umapfs/umap_vnops.c
+++ b/sys/fs/umapfs/umap_vnops.c
@@ -506,19 +506,13 @@ umap_rename(ap)
* go away with a merged buffer/block cache.
*
*/
-vop_t **umap_vnodeop_p;
-static struct vnodeopv_entry_desc umap_vnodeop_entries[] = {
- { &vop_default_desc, (vop_t *) umap_bypass },
- { &vop_getattr_desc, (vop_t *) umap_getattr },
- { &vop_inactive_desc, (vop_t *) umap_inactive },
- { &vop_lock_desc, (vop_t *) umap_lock },
- { &vop_print_desc, (vop_t *) umap_print },
- { &vop_reclaim_desc, (vop_t *) umap_reclaim },
- { &vop_rename_desc, (vop_t *) umap_rename },
- { &vop_unlock_desc, (vop_t *) umap_unlock },
- { NULL, NULL }
+static struct vop_vector umap_vnodeops = {
+ .vop_default = umap_bypass,
+ .vop_getattr = umap_getattr,
+ .vop_inactive = umap_inactive,
+ .vop_lock = umap_lock,
+ .vop_print = umap_print,
+ .vop_reclaim = umap_reclaim,
+ .vop_rename = umap_rename,
+ .vop_unlock = umap_unlock,
};
-static struct vnodeopv_desc umap_vnodeop_opv_desc =
- { &umap_vnodeop_p, umap_vnodeop_entries };
-
-VNODEOP_SET(umap_vnodeop_opv_desc);
diff --git a/sys/fs/unionfs/union.h b/sys/fs/unionfs/union.h
index f8af98a..8dfef3a 100644
--- a/sys/fs/unionfs/union.h
+++ b/sys/fs/unionfs/union.h
@@ -134,7 +134,7 @@ extern int (*union_dircheckp)(struct thread *, struct vnode **,
#define UDEBUG(x) if (uniondebug) printf x
#define UDEBUG_ENABLED 1
-extern vop_t **union_vnodeop_p;
+extern struct vop_vector union_vnodeops;
extern struct vfsops union_vfsops;
extern int uniondebug;
diff --git a/sys/fs/unionfs/union_subr.c b/sys/fs/unionfs/union_subr.c
index 364736c..64e7b14 100644
--- a/sys/fs/unionfs/union_subr.c
+++ b/sys/fs/unionfs/union_subr.c
@@ -444,7 +444,7 @@ loop:
do {
scan = VTOUNION(scan)->un_pvp;
- } while (scan && scan->v_op == union_vnodeop_p &&
+ } while (scan && scan->v_op == &union_vnodeops &&
scan != dvp);
if (scan != dvp) {
/*
@@ -547,7 +547,7 @@ loop:
* Create new node rather than replace old node.
*/
- error = getnewvnode("union", mp, union_vnodeop_p, vpp);
+ error = getnewvnode("union", mp, &union_vnodeops, vpp);
if (error) {
/*
* If an error occurs, clear out vnodes.
@@ -1206,7 +1206,7 @@ union_dircache_r(vp, vppp, cntp)
{
struct union_node *un;
- if (vp->v_op != union_vnodeop_p) {
+ if (vp->v_op != &union_vnodeops) {
if (vppp) {
VREF(vp);
*(*vppp)++ = vp;
@@ -1310,7 +1310,7 @@ union_dircheck(struct thread *td, struct vnode **vp, struct file *fp)
{
int error = 0;
- if ((*vp)->v_op == union_vnodeop_p) {
+ if ((*vp)->v_op == &union_vnodeops) {
struct vnode *lvp;
lvp = union_dircache_get(*vp, td);
diff --git a/sys/fs/unionfs/union_vnops.c b/sys/fs/unionfs/union_vnops.c
index 0338f21..b6b0966 100644
--- a/sys/fs/unionfs/union_vnops.c
+++ b/sys/fs/unionfs/union_vnops.c
@@ -1325,7 +1325,7 @@ union_rename(ap)
* replace the fdvp, release the original one and ref the new one.
*/
- if (fdvp->v_op == union_vnodeop_p) { /* always true */
+ if (fdvp->v_op == &union_vnodeops) { /* always true */
struct union_node *un = VTOUNION(fdvp);
if (un->un_uppervp == NULLVP) {
/*
@@ -1347,7 +1347,7 @@ union_rename(ap)
* replace the fvp, release the original one and ref the new one.
*/
- if (fvp->v_op == union_vnodeop_p) { /* always true */
+ if (fvp->v_op == &union_vnodeops) { /* always true */
struct union_node *un = VTOUNION(fvp);
#if 0
struct union_mount *um = MOUNTTOUNIONMOUNT(fvp->v_mount);
@@ -1405,7 +1405,7 @@ union_rename(ap)
* reference.
*/
- if (tdvp->v_op == union_vnodeop_p) {
+ if (tdvp->v_op == &union_vnodeops) {
struct union_node *un = VTOUNION(tdvp);
if (un->un_uppervp == NULLVP) {
@@ -1435,7 +1435,7 @@ union_rename(ap)
* file and change tvp to NULL.
*/
- if (tvp != NULLVP && tvp->v_op == union_vnodeop_p) {
+ if (tvp != NULLVP && tvp->v_op == &union_vnodeops) {
struct union_node *un = VTOUNION(tvp);
tvp = union_lock_upper(un, ap->a_tcnp->cn_thread);
@@ -2052,56 +2052,50 @@ union_setlabel(ap)
/*
* Global vfs data structures
*/
-vop_t **union_vnodeop_p;
-static struct vnodeopv_entry_desc union_vnodeop_entries[] = {
- { &vop_default_desc, (vop_t *) vop_defaultop },
- { &vop_access_desc, (vop_t *) union_access },
- { &vop_aclcheck_desc, (vop_t *) union_aclcheck },
- { &vop_advlock_desc, (vop_t *) union_advlock },
- { &vop_bmap_desc, (vop_t *) vop_eopnotsupp },
- { &vop_close_desc, (vop_t *) union_close },
- { &vop_closeextattr_desc, (vop_t *) union_closeextattr },
- { &vop_create_desc, (vop_t *) union_create },
- { &vop_createvobject_desc, (vop_t *) union_createvobject },
- { &vop_deleteextattr_desc, (vop_t *) union_deleteextattr },
- { &vop_destroyvobject_desc, (vop_t *) union_destroyvobject },
- { &vop_fsync_desc, (vop_t *) union_fsync },
- { &vop_getattr_desc, (vop_t *) union_getattr },
- { &vop_getacl_desc, (vop_t *) union_getacl },
- { &vop_getextattr_desc, (vop_t *) union_getextattr },
- { &vop_getvobject_desc, (vop_t *) union_getvobject },
- { &vop_inactive_desc, (vop_t *) union_inactive },
- { &vop_ioctl_desc, (vop_t *) union_ioctl },
- { &vop_lease_desc, (vop_t *) union_lease },
- { &vop_link_desc, (vop_t *) union_link },
- { &vop_listextattr_desc, (vop_t *) union_listextattr },
- { &vop_lookup_desc, (vop_t *) union_lookup },
- { &vop_mkdir_desc, (vop_t *) union_mkdir },
- { &vop_mknod_desc, (vop_t *) union_mknod },
- { &vop_open_desc, (vop_t *) union_open },
- { &vop_openextattr_desc, (vop_t *) union_openextattr },
- { &vop_pathconf_desc, (vop_t *) union_pathconf },
- { &vop_poll_desc, (vop_t *) union_poll },
- { &vop_print_desc, (vop_t *) union_print },
- { &vop_read_desc, (vop_t *) union_read },
- { &vop_readdir_desc, (vop_t *) union_readdir },
- { &vop_readlink_desc, (vop_t *) union_readlink },
- { &vop_getwritemount_desc, (vop_t *) union_getwritemount },
- { &vop_reclaim_desc, (vop_t *) union_reclaim },
- { &vop_remove_desc, (vop_t *) union_remove },
- { &vop_rename_desc, (vop_t *) union_rename },
- { &vop_rmdir_desc, (vop_t *) union_rmdir },
- { &vop_setacl_desc, (vop_t *) union_setacl },
- { &vop_setattr_desc, (vop_t *) union_setattr },
- { &vop_setextattr_desc, (vop_t *) union_setextattr },
- { &vop_setlabel_desc, (vop_t *) union_setlabel },
- { &vop_strategy_desc, (vop_t *) union_strategy },
- { &vop_symlink_desc, (vop_t *) union_symlink },
- { &vop_whiteout_desc, (vop_t *) union_whiteout },
- { &vop_write_desc, (vop_t *) union_write },
- { NULL, NULL }
+struct vop_vector union_vnodeops = {
+ .vop_default = &default_vnodeops,
+ .vop_access = union_access,
+ .vop_aclcheck = union_aclcheck,
+ .vop_advlock = union_advlock,
+ .vop_bmap = VOP_EOPNOTSUPP,
+ .vop_close = union_close,
+ .vop_closeextattr = union_closeextattr,
+ .vop_create = union_create,
+ .vop_createvobject = union_createvobject,
+ .vop_deleteextattr = union_deleteextattr,
+ .vop_destroyvobject = union_destroyvobject,
+ .vop_fsync = union_fsync,
+ .vop_getattr = union_getattr,
+ .vop_getacl = union_getacl,
+ .vop_getextattr = union_getextattr,
+ .vop_getvobject = union_getvobject,
+ .vop_inactive = union_inactive,
+ .vop_ioctl = union_ioctl,
+ .vop_lease = union_lease,
+ .vop_link = union_link,
+ .vop_listextattr = union_listextattr,
+ .vop_lookup = union_lookup,
+ .vop_mkdir = union_mkdir,
+ .vop_mknod = union_mknod,
+ .vop_open = union_open,
+ .vop_openextattr = union_openextattr,
+ .vop_pathconf = union_pathconf,
+ .vop_poll = union_poll,
+ .vop_print = union_print,
+ .vop_read = union_read,
+ .vop_readdir = union_readdir,
+ .vop_readlink = union_readlink,
+ .vop_getwritemount = union_getwritemount,
+ .vop_reclaim = union_reclaim,
+ .vop_remove = union_remove,
+ .vop_rename = union_rename,
+ .vop_rmdir = union_rmdir,
+ .vop_setacl = union_setacl,
+ .vop_setattr = union_setattr,
+ .vop_setextattr = union_setextattr,
+ .vop_setlabel = union_setlabel,
+ .vop_strategy = union_strategy,
+ .vop_symlink = union_symlink,
+ .vop_whiteout = union_whiteout,
+ .vop_write = union_write,
};
-static struct vnodeopv_desc union_vnodeop_opv_desc =
- { &union_vnodeop_p, union_vnodeop_entries };
-
-VNODEOP_SET(union_vnodeop_opv_desc);
OpenPOWER on IntegriCloud