diff options
Diffstat (limited to 'sys/fs')
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); |