From 31bd717acabc9cb8944d583baf322cfe33af56ed Mon Sep 17 00:00:00 2001 From: Matthew Dillon Date: Wed, 19 Jul 2006 06:08:14 +0000 Subject: [PATCH] Introduce sys/syslink.h, the beginnings of a VOP-compatible RPC-like communications infrastructure that will be used for userland VFS and communications between hosts in a cluster. Begin merging the vnode operations vector code with syslink by replacing vnodeop_desc with syslink_desc. Also get rid of a lot of junk related to vnodeop_desc that is no longer used. --- sys/kern/vfs_default.c | 5 +- sys/kern/vfs_vopops.c | 127 ++++++++++----------- sys/sys/syslink.h | 171 ++++++++++++++++++++++++++++ sys/sys/vfsops.h | 122 ++++++++++---------- sys/sys/vnode.h | 63 +--------- sys/vfs/coda/coda_vnops.c | 10 +- sys/vfs/fifofs/fifo_vnops.c | 4 +- sys/vfs/gnu/ext2fs/ext2_vnops.c | 8 +- sys/vfs/isofs/cd9660/cd9660_vnops.c | 6 +- sys/vfs/mfs/mfs_vnops.c | 6 +- sys/vfs/nfs/nfs_vnops.c | 19 ++-- sys/vfs/ntfs/ntfs_vnops.c | 6 +- sys/vfs/nwfs/nwfs_vnops.c | 16 +-- sys/vfs/smbfs/smbfs_vnops.c | 14 +-- sys/vfs/specfs/spec_vnops.c | 4 +- sys/vfs/ufs/ufs_vnops.c | 10 +- sys/vfs/union/union_vnops.c | 10 +- 17 files changed, 357 insertions(+), 244 deletions(-) create mode 100644 sys/sys/syslink.h diff --git a/sys/kern/vfs_default.c b/sys/kern/vfs_default.c index c776c2ae41..c7cb029882 100644 --- a/sys/kern/vfs_default.c +++ b/sys/kern/vfs_default.c @@ -37,7 +37,7 @@ * * * $FreeBSD: src/sys/kern/vfs_default.c,v 1.28.2.7 2003/01/10 18:23:26 bde Exp $ - * $DragonFly: src/sys/kern/vfs_default.c,v 1.41 2006/07/18 22:22:12 dillon Exp $ + * $DragonFly: src/sys/kern/vfs_default.c,v 1.42 2006/07/19 06:08:06 dillon Exp $ */ #include @@ -152,8 +152,7 @@ vop_defaultop(struct vop_generic_args *ap) int vop_panic(struct vop_generic_args *ap) { - - panic("filesystem goof: vop_panic[%s]", ap->a_desc->vdesc_name); + panic("filesystem goof: vop_panic[%s]", ap->a_desc->sd_name); } /* diff --git a/sys/kern/vfs_vopops.c b/sys/kern/vfs_vopops.c index e7419cd820..c0e64242aa 100644 --- a/sys/kern/vfs_vopops.c +++ b/sys/kern/vfs_vopops.c @@ -32,7 +32,7 @@ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $DragonFly: src/sys/kern/vfs_vopops.c,v 1.28 2006/07/18 22:22:12 dillon Exp $ + * $DragonFly: src/sys/kern/vfs_vopops.c,v 1.29 2006/07/19 06:08:06 dillon Exp $ */ #include @@ -79,73 +79,70 @@ #define VARGSSTRUCT(name) struct __CONCAT(__CONCAT(vop_,name),_args) #define VNODEOP_DESC_INIT(name) \ - struct vnodeop_desc VDESCNAME(name) = { \ + struct syslink_desc VDESCNAME(name) = { \ __offsetof(struct vop_ops, __CONCAT(vop_, name)), \ #name } -#define VNODEOP_DESC_INIT_SIMPLE(name) \ - VNODEOP_DESC_INIT(name) - -VNODEOP_DESC_INIT_SIMPLE(default); -VNODEOP_DESC_INIT_SIMPLE(islocked); -VNODEOP_DESC_INIT_SIMPLE(old_lookup); -VNODEOP_DESC_INIT_SIMPLE(old_create); -VNODEOP_DESC_INIT_SIMPLE(old_whiteout); -VNODEOP_DESC_INIT_SIMPLE(old_mknod); -VNODEOP_DESC_INIT_SIMPLE(open); -VNODEOP_DESC_INIT_SIMPLE(close); -VNODEOP_DESC_INIT_SIMPLE(access); -VNODEOP_DESC_INIT_SIMPLE(getattr); -VNODEOP_DESC_INIT_SIMPLE(setattr); -VNODEOP_DESC_INIT_SIMPLE(read); -VNODEOP_DESC_INIT_SIMPLE(write); -VNODEOP_DESC_INIT_SIMPLE(ioctl); -VNODEOP_DESC_INIT_SIMPLE(poll); -VNODEOP_DESC_INIT_SIMPLE(kqfilter); -VNODEOP_DESC_INIT_SIMPLE(revoke); -VNODEOP_DESC_INIT_SIMPLE(mmap); -VNODEOP_DESC_INIT_SIMPLE(fsync); -VNODEOP_DESC_INIT_SIMPLE(old_remove); -VNODEOP_DESC_INIT_SIMPLE(old_link); -VNODEOP_DESC_INIT_SIMPLE(old_rename); - -VNODEOP_DESC_INIT_SIMPLE(old_mkdir); -VNODEOP_DESC_INIT_SIMPLE(old_rmdir); -VNODEOP_DESC_INIT_SIMPLE(old_symlink); -VNODEOP_DESC_INIT_SIMPLE(readdir); -VNODEOP_DESC_INIT_SIMPLE(readlink); -VNODEOP_DESC_INIT_SIMPLE(inactive); -VNODEOP_DESC_INIT_SIMPLE(reclaim); -VNODEOP_DESC_INIT_SIMPLE(lock); -VNODEOP_DESC_INIT_SIMPLE(unlock); -VNODEOP_DESC_INIT_SIMPLE(bmap); -VNODEOP_DESC_INIT_SIMPLE(strategy); -VNODEOP_DESC_INIT_SIMPLE(print); -VNODEOP_DESC_INIT_SIMPLE(pathconf); -VNODEOP_DESC_INIT_SIMPLE(advlock); -VNODEOP_DESC_INIT_SIMPLE(balloc); -VNODEOP_DESC_INIT_SIMPLE(reallocblks); -VNODEOP_DESC_INIT_SIMPLE(getpages); -VNODEOP_DESC_INIT_SIMPLE(putpages); -VNODEOP_DESC_INIT_SIMPLE(freeblks); -VNODEOP_DESC_INIT_SIMPLE(getacl); -VNODEOP_DESC_INIT_SIMPLE(setacl); -VNODEOP_DESC_INIT_SIMPLE(aclcheck); -VNODEOP_DESC_INIT_SIMPLE(getextattr); -VNODEOP_DESC_INIT_SIMPLE(setextattr); -VNODEOP_DESC_INIT_SIMPLE(mountctl); - -VNODEOP_DESC_INIT_SIMPLE(nresolve); -VNODEOP_DESC_INIT_SIMPLE(nlookupdotdot); -VNODEOP_DESC_INIT_SIMPLE(ncreate); -VNODEOP_DESC_INIT_SIMPLE(nmkdir); -VNODEOP_DESC_INIT_SIMPLE(nmknod); -VNODEOP_DESC_INIT_SIMPLE(nlink); -VNODEOP_DESC_INIT_SIMPLE(nsymlink); -VNODEOP_DESC_INIT_SIMPLE(nwhiteout); -VNODEOP_DESC_INIT_SIMPLE(nremove); -VNODEOP_DESC_INIT_SIMPLE(nrmdir); -VNODEOP_DESC_INIT_SIMPLE(nrename); +VNODEOP_DESC_INIT(default); +VNODEOP_DESC_INIT(islocked); +VNODEOP_DESC_INIT(old_lookup); +VNODEOP_DESC_INIT(old_create); +VNODEOP_DESC_INIT(old_whiteout); +VNODEOP_DESC_INIT(old_mknod); +VNODEOP_DESC_INIT(open); +VNODEOP_DESC_INIT(close); +VNODEOP_DESC_INIT(access); +VNODEOP_DESC_INIT(getattr); +VNODEOP_DESC_INIT(setattr); +VNODEOP_DESC_INIT(read); +VNODEOP_DESC_INIT(write); +VNODEOP_DESC_INIT(ioctl); +VNODEOP_DESC_INIT(poll); +VNODEOP_DESC_INIT(kqfilter); +VNODEOP_DESC_INIT(revoke); +VNODEOP_DESC_INIT(mmap); +VNODEOP_DESC_INIT(fsync); +VNODEOP_DESC_INIT(old_remove); +VNODEOP_DESC_INIT(old_link); +VNODEOP_DESC_INIT(old_rename); + +VNODEOP_DESC_INIT(old_mkdir); +VNODEOP_DESC_INIT(old_rmdir); +VNODEOP_DESC_INIT(old_symlink); +VNODEOP_DESC_INIT(readdir); +VNODEOP_DESC_INIT(readlink); +VNODEOP_DESC_INIT(inactive); +VNODEOP_DESC_INIT(reclaim); +VNODEOP_DESC_INIT(lock); +VNODEOP_DESC_INIT(unlock); +VNODEOP_DESC_INIT(bmap); +VNODEOP_DESC_INIT(strategy); +VNODEOP_DESC_INIT(print); +VNODEOP_DESC_INIT(pathconf); +VNODEOP_DESC_INIT(advlock); +VNODEOP_DESC_INIT(balloc); +VNODEOP_DESC_INIT(reallocblks); +VNODEOP_DESC_INIT(getpages); +VNODEOP_DESC_INIT(putpages); +VNODEOP_DESC_INIT(freeblks); +VNODEOP_DESC_INIT(getacl); +VNODEOP_DESC_INIT(setacl); +VNODEOP_DESC_INIT(aclcheck); +VNODEOP_DESC_INIT(getextattr); +VNODEOP_DESC_INIT(setextattr); +VNODEOP_DESC_INIT(mountctl); + +VNODEOP_DESC_INIT(nresolve); +VNODEOP_DESC_INIT(nlookupdotdot); +VNODEOP_DESC_INIT(ncreate); +VNODEOP_DESC_INIT(nmkdir); +VNODEOP_DESC_INIT(nmknod); +VNODEOP_DESC_INIT(nlink); +VNODEOP_DESC_INIT(nsymlink); +VNODEOP_DESC_INIT(nwhiteout); +VNODEOP_DESC_INIT(nremove); +VNODEOP_DESC_INIT(nrmdir); +VNODEOP_DESC_INIT(nrename); #define DO_OPS(ops, error, ap, vop_field) \ error = ops->vop_field(ap); diff --git a/sys/sys/syslink.h b/sys/sys/syslink.h new file mode 100644 index 0000000000..898acf9a27 --- /dev/null +++ b/sys/sys/syslink.h @@ -0,0 +1,171 @@ +/* + * Copyright (c) 2004-2006 The DragonFly Project. All rights reserved. + * + * This code is derived from software contributed to The DragonFly Project + * by Matthew Dillon + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name of The DragonFly Project nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific, prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $DragonFly: src/sys/sys/syslink.h,v 1.1 2006/07/19 06:08:07 dillon Exp $ + */ + +/* + * The syslink infrastructure implements an optimized RPC mechanism across a + * communications link. RPC functions are grouped together into larger + * protocols. Prototypes are typically associated with system structures + * but do not have to be. + * + * syslink - Implements a communications end-point and protocol. A + * syslink is typically directly embedded in a related + * structure. + * + * syslink_proto- Specifies a set of RPC functions. + * + * syslink_desc - Specifies a single RPC function within a protocol. + */ + +#ifndef _SYS_SYSLINK_H_ +#define _SYS_SYSLINK_H_ + +#ifndef _SYS_TYPES_H_ +#include +#endif + +/* + * SYSIDs are 64 bit entities. + */ +typedef u_int64_t sysid_t; + +/*************************************************************************** + * PROTOCOL API/ABI * + *************************************************************************** + * + * These structures implement the programming interface for end-points and + * RPC calls. + */ + +struct syslink; +struct syslink_ops; +struct syslink_proto; +struct syslink_transport; +struct syslink_desc; +struct syslink_generic_args; + +typedef int (*syslink_func_t)(struct syslink_generic_args *); + +/* + * A syslink structure represents an end-point for communications. System + * structures such as vnodes are typically associated with end-points and + * usually embed a syslink structure. There is typically one master + * structure (sl_remote_id == 0) and any number of slave structures at + * remote locations (sl_remote_id on slaves point to master). + * + * A ref counter is integrated into the structure and used by SYSLINK to + * keep track of sysid references sent to remote targets. This counter + * may also be used by the governing structure (e.g. vnode) so long as + * the SYSLINK API is used to manipulate it. + * + * An operations vector implements the ABI for the numerous functions + * associated with the system structure. E.G. VOPs for vnodes. The + * ops structure also references the transport and protocol layers. Using + * vnodes as an example, the ops structure would be replicated from a + * template on a per-mount basis. + */ +struct syslink { + sysid_t sl_sysid; /* syslink id of this end-point */ + sysid_t sl_remote_id; /* syslink id of remote end-point */ + int sl_refs; /* track references */ + struct syslink_ops *sl_ops; /* operations vector */ +}; + +/* + * The syslink_ops structure is typically embedded as part of a larger system + * structure. It conatins a reference to the transport layer (if any), + * protocol, and a structural offset range specifying the function vectors + * in the larger system structure. + * + * For example, vnode operations (VOPs) embed this structure in the vop_ops + * structure. + * + * The syslink_ops structure may be replaced as necessary. The VFS subsystem + * typically replicates syslink_ops on a per-mount basis and stores a pointer + * to the mount point in the larger system structure (vop_ops). + */ +struct syslink_ops { + struct syslink_proto *proto; + void *transport; /* FUTURE USE (transport layer) */ + int beg_offset; + int end_offset; +}; + +/* + * The syslink_desc structure describes a function vector in the protocol. + * This structure may be extended by the protocol to contain additional + * information. + */ +struct syslink_desc { + int sd_offset; /* offset into ops structure */ + const char *sd_name; /* name for debugging */ +}; + +/* + * The syslink_proto structure describes a protocol. The structure contains + * templates for the various ops structures required to implement the + * protocol. + */ +struct syslink_proto { + const char *sp_name; /* identifying name */ + int sp_flags; + int sp_opssize; /* structure embedding syslink_ops */ + struct syslink_ops *sp_call_encode; /* encode call */ + struct syslink_ops *sp_call_decode; /* decode call */ + struct syslink_ops *sp_reply_encode; /* encode reply */ + struct syslink_ops *sp_reply_decode; /* decode reply */ + struct syslink_ops *sp_ops; /* direct ABI calls */ +}; + +#define SPF_ALLOCATED 0x00000001 + +/* + * The syslink_generic_args structure contains the base data required in + * the arguments structure passed to any given ops function. This structure + * is typically extended with the actual call arguments. + */ +struct syslink_generic_args { + struct syslink_desc *a_desc; /* ABI method description */ + struct syslink *a_syslink; /* original syslink */ + /* extend arguments */ +}; + +typedef struct syslink *syslink_t; +typedef struct syslink_ops *syslink_ops_t; +typedef struct syslink_desc *syslink_desc_t; +typedef struct syslink_proto *syslink_proto_t; +typedef struct syslink_generic_args *syslink_generic_args_t; + +#endif diff --git a/sys/sys/vfsops.h b/sys/sys/vfsops.h index b8a9dd8a36..5383c52e27 100644 --- a/sys/sys/vfsops.h +++ b/sys/sys/vfsops.h @@ -31,7 +31,7 @@ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $DragonFly: src/sys/sys/vfsops.h,v 1.23 2006/07/18 22:22:15 dillon Exp $ + * $DragonFly: src/sys/sys/vfsops.h,v 1.24 2006/07/19 06:08:07 dillon Exp $ */ /* @@ -82,7 +82,7 @@ struct vm_page; struct vfscache; struct vop_generic_args { - struct vnodeop_desc *a_desc; /* command descriptor for the call */ + struct syslink_desc *a_desc; /* command descriptor for the call */ struct vop_ops *a_ops; /* operations vector for the call */ int a_reserved[4]; }; @@ -869,65 +869,65 @@ int vop_nrename_ap(struct vop_nrename_args *ap); * to convert VFS vector arrays (typically in vfs/blah/blah_vnops.c) * into a vop_ops operations vector. */ -extern struct vnodeop_desc vop_default_desc; -extern struct vnodeop_desc vop_islocked_desc; -extern struct vnodeop_desc vop_old_lookup_desc; -extern struct vnodeop_desc vop_old_create_desc; -extern struct vnodeop_desc vop_old_whiteout_desc; -extern struct vnodeop_desc vop_old_mknod_desc; -extern struct vnodeop_desc vop_open_desc; -extern struct vnodeop_desc vop_close_desc; -extern struct vnodeop_desc vop_access_desc; -extern struct vnodeop_desc vop_getattr_desc; -extern struct vnodeop_desc vop_setattr_desc; -extern struct vnodeop_desc vop_read_desc; -extern struct vnodeop_desc vop_write_desc; -extern struct vnodeop_desc vop_ioctl_desc; -extern struct vnodeop_desc vop_poll_desc; -extern struct vnodeop_desc vop_kqfilter_desc; -extern struct vnodeop_desc vop_revoke_desc; -extern struct vnodeop_desc vop_mmap_desc; -extern struct vnodeop_desc vop_fsync_desc; -extern struct vnodeop_desc vop_old_remove_desc; -extern struct vnodeop_desc vop_old_link_desc; -extern struct vnodeop_desc vop_old_rename_desc; -extern struct vnodeop_desc vop_old_mkdir_desc; -extern struct vnodeop_desc vop_old_rmdir_desc; -extern struct vnodeop_desc vop_old_symlink_desc; -extern struct vnodeop_desc vop_readdir_desc; -extern struct vnodeop_desc vop_readlink_desc; -extern struct vnodeop_desc vop_inactive_desc; -extern struct vnodeop_desc vop_reclaim_desc; -extern struct vnodeop_desc vop_lock_desc; -extern struct vnodeop_desc vop_unlock_desc; -extern struct vnodeop_desc vop_bmap_desc; -extern struct vnodeop_desc vop_strategy_desc; -extern struct vnodeop_desc vop_print_desc; -extern struct vnodeop_desc vop_pathconf_desc; -extern struct vnodeop_desc vop_advlock_desc; -extern struct vnodeop_desc vop_balloc_desc; -extern struct vnodeop_desc vop_reallocblks_desc; -extern struct vnodeop_desc vop_getpages_desc; -extern struct vnodeop_desc vop_putpages_desc; -extern struct vnodeop_desc vop_freeblks_desc; -extern struct vnodeop_desc vop_getacl_desc; -extern struct vnodeop_desc vop_setacl_desc; -extern struct vnodeop_desc vop_aclcheck_desc; -extern struct vnodeop_desc vop_getextattr_desc; -extern struct vnodeop_desc vop_setextattr_desc; -extern struct vnodeop_desc vop_mountctl_desc; - -extern struct vnodeop_desc vop_nresolve_desc; -extern struct vnodeop_desc vop_nlookupdotdot_desc; -extern struct vnodeop_desc vop_ncreate_desc; -extern struct vnodeop_desc vop_nmkdir_desc; -extern struct vnodeop_desc vop_nmknod_desc; -extern struct vnodeop_desc vop_nlink_desc; -extern struct vnodeop_desc vop_nsymlink_desc; -extern struct vnodeop_desc vop_nwhiteout_desc; -extern struct vnodeop_desc vop_nremove_desc; -extern struct vnodeop_desc vop_nrmdir_desc; -extern struct vnodeop_desc vop_nrename_desc; +extern struct syslink_desc vop_default_desc; +extern struct syslink_desc vop_islocked_desc; +extern struct syslink_desc vop_old_lookup_desc; +extern struct syslink_desc vop_old_create_desc; +extern struct syslink_desc vop_old_whiteout_desc; +extern struct syslink_desc vop_old_mknod_desc; +extern struct syslink_desc vop_open_desc; +extern struct syslink_desc vop_close_desc; +extern struct syslink_desc vop_access_desc; +extern struct syslink_desc vop_getattr_desc; +extern struct syslink_desc vop_setattr_desc; +extern struct syslink_desc vop_read_desc; +extern struct syslink_desc vop_write_desc; +extern struct syslink_desc vop_ioctl_desc; +extern struct syslink_desc vop_poll_desc; +extern struct syslink_desc vop_kqfilter_desc; +extern struct syslink_desc vop_revoke_desc; +extern struct syslink_desc vop_mmap_desc; +extern struct syslink_desc vop_fsync_desc; +extern struct syslink_desc vop_old_remove_desc; +extern struct syslink_desc vop_old_link_desc; +extern struct syslink_desc vop_old_rename_desc; +extern struct syslink_desc vop_old_mkdir_desc; +extern struct syslink_desc vop_old_rmdir_desc; +extern struct syslink_desc vop_old_symlink_desc; +extern struct syslink_desc vop_readdir_desc; +extern struct syslink_desc vop_readlink_desc; +extern struct syslink_desc vop_inactive_desc; +extern struct syslink_desc vop_reclaim_desc; +extern struct syslink_desc vop_lock_desc; +extern struct syslink_desc vop_unlock_desc; +extern struct syslink_desc vop_bmap_desc; +extern struct syslink_desc vop_strategy_desc; +extern struct syslink_desc vop_print_desc; +extern struct syslink_desc vop_pathconf_desc; +extern struct syslink_desc vop_advlock_desc; +extern struct syslink_desc vop_balloc_desc; +extern struct syslink_desc vop_reallocblks_desc; +extern struct syslink_desc vop_getpages_desc; +extern struct syslink_desc vop_putpages_desc; +extern struct syslink_desc vop_freeblks_desc; +extern struct syslink_desc vop_getacl_desc; +extern struct syslink_desc vop_setacl_desc; +extern struct syslink_desc vop_aclcheck_desc; +extern struct syslink_desc vop_getextattr_desc; +extern struct syslink_desc vop_setextattr_desc; +extern struct syslink_desc vop_mountctl_desc; + +extern struct syslink_desc vop_nresolve_desc; +extern struct syslink_desc vop_nlookupdotdot_desc; +extern struct syslink_desc vop_ncreate_desc; +extern struct syslink_desc vop_nmkdir_desc; +extern struct syslink_desc vop_nmknod_desc; +extern struct syslink_desc vop_nlink_desc; +extern struct syslink_desc vop_nsymlink_desc; +extern struct syslink_desc vop_nwhiteout_desc; +extern struct syslink_desc vop_nremove_desc; +extern struct syslink_desc vop_nrmdir_desc; +extern struct syslink_desc vop_nrename_desc; #endif diff --git a/sys/sys/vnode.h b/sys/sys/vnode.h index 638276da0f..1c579568cf 100644 --- a/sys/sys/vnode.h +++ b/sys/sys/vnode.h @@ -32,7 +32,7 @@ * * @(#)vnode.h 8.7 (Berkeley) 2/4/94 * $FreeBSD: src/sys/sys/vnode.h,v 1.111.2.19 2002/12/29 18:19:53 dillon Exp $ - * $DragonFly: src/sys/sys/vnode.h,v 1.61 2006/07/18 22:22:15 dillon Exp $ + * $DragonFly: src/sys/sys/vnode.h,v 1.62 2006/07/19 06:08:07 dillon Exp $ */ #ifndef _SYS_VNODE_H_ @@ -73,6 +73,9 @@ #ifndef _SYS_TREE_H_ #include #endif +#ifndef _SYS_SYSLINK_H_ +#include +#endif #ifndef _MACHINE_LOCK_H_ #include #endif @@ -382,62 +385,6 @@ extern int numvnodes; extern int freevnodes; extern int vfs_fastdev; /* fast specfs device access */ -#endif /* _KERNEL */ - -/* - * Mods for extensibility. - */ - -/* - * Flags for vdesc_flags: - */ -#define VDESC_MAX_VPS 8 -/* Low order 8 flag bits are reserved for willrele flags for vp arguments. */ -#define VDESC_VP0_WILLRELE 0x00000001 -#define VDESC_VP1_WILLRELE 0x00000002 -#define VDESC_VP2_WILLRELE 0x00000004 -#define VDESC_VP3_WILLRELE 0x00000008 -#define VDESC_VP4_WILLRELE 0x00000010 -#define VDESC_VP5_WILLRELE 0x00000020 -#define VDESC_VP6_WILLRELE 0x00000040 -#define VDESC_VP7_WILLRELE 0x00000080 -#define VDESC_NOMAP_VPP 0x00000100 -#define VDESC_VPP_WILLRELE 0x00000200 -#define VDESC_VP0_WILLUNLOCK 0x00010000 -#define VDESC_VP1_WILLUNLOCK 0x00020000 -#define VDESC_VP2_WILLUNLOCK 0x00040000 -#define VDESC_VP3_WILLUNLOCK 0x00080000 -#define VDESC_VP4_WILLUNLOCK 0x00100000 -#define VDESC_VP5_WILLUNLOCK 0x00200000 -#define VDESC_VP6_WILLUNLOCK 0x00400000 -#define VDESC_VP7_WILLUNLOCK 0x00800000 - -/* - * VDESC_NO_OFFSET is used to identify the end of the offset list - * and in places where no such field exists. - */ -#define VDESC_NO_OFFSET -1 - -/* - * This structure describes the vnode operation taking place. - */ -struct vnodeop_desc { - int vdesc_offset; /* offset in vector--first for speed */ - char *vdesc_name; /* a readable name for debugging */ - int vdesc_unused01; - int *vdesc_unused02; - int vdesc_unused03; - int vdesc_unused04; - int vdesc_unused05; - int vdesc_unused06; -}; - -#ifdef _KERNEL -/* - * A list of all the operation descs. - */ -extern struct vnodeop_desc *vnodeop_descs[]; - /* * Interlock for scanning list of vnodes attached to a mountpoint */ @@ -498,7 +445,7 @@ typedef int (*vocall_func_t)(struct vop_generic_args *); * vector function). */ #define VOCALL(vops, ap) \ - (*(vocall_func_t *)((char *)(vops)+((ap)->a_desc->vdesc_offset)))(ap) + (*(vocall_func_t *)((char *)(vops)+((ap)->a_desc->sd_offset)))(ap) #define VDESC(OP) (& __CONCAT(OP,_desc)) diff --git a/sys/vfs/coda/coda_vnops.c b/sys/vfs/coda/coda_vnops.c index eddd510f23..166e6fc722 100644 --- a/sys/vfs/coda/coda_vnops.c +++ b/sys/vfs/coda/coda_vnops.c @@ -28,7 +28,7 @@ * * @(#) src/sys/coda/coda_vnops.c,v 1.1.1.1 1998/08/29 21:14:52 rvb Exp $ * $FreeBSD: src/sys/coda/coda_vnops.c,v 1.22.2.1 2001/06/29 16:26:22 shafeeq Exp $ - * $DragonFly: src/sys/vfs/coda/Attic/coda_vnops.c,v 1.40 2006/07/19 05:59:54 dillon Exp $ + * $DragonFly: src/sys/vfs/coda/Attic/coda_vnops.c,v 1.41 2006/07/19 06:08:09 dillon Exp $ * */ @@ -185,10 +185,10 @@ struct vop_ops coda_vnode_ops = { int coda_vop_error(struct vop_generic_args *ap) { - struct vnodeop_desc *desc = ap->a_desc; + struct syslink_desc *desc = ap->a_desc; myprintf(("coda_vop_error: Vnode operation %s called, but not defined.\n", - desc->vdesc_name)); + desc->sd_name)); /* panic("coda_vop_error"); */ @@ -199,11 +199,11 @@ coda_vop_error(struct vop_generic_args *ap) int coda_vop_nop(struct vop_generic_args *ap) { - struct vnodeop_desc *desc = ap->a_desc; + struct syslink_desc *desc = ap->a_desc; if (codadebug) { myprintf(("Vnode operation %s called, but unsupported\n", - desc->vdesc_name)); + desc->sd_name)); } return (0); } diff --git a/sys/vfs/fifofs/fifo_vnops.c b/sys/vfs/fifofs/fifo_vnops.c index ffae4043ca..660dfcbd58 100644 --- a/sys/vfs/fifofs/fifo_vnops.c +++ b/sys/vfs/fifofs/fifo_vnops.c @@ -32,7 +32,7 @@ * * @(#)fifo_vnops.c 8.10 (Berkeley) 5/27/95 * $FreeBSD: src/sys/miscfs/fifofs/fifo_vnops.c,v 1.45.2.4 2003/04/22 10:11:24 bde Exp $ - * $DragonFly: src/sys/vfs/fifofs/fifo_vnops.c,v 1.31 2006/07/18 22:22:15 dillon Exp $ + * $DragonFly: src/sys/vfs/fifofs/fifo_vnops.c,v 1.32 2006/07/19 06:08:10 dillon Exp $ */ #include @@ -129,7 +129,7 @@ VNODEOP_SET(fifo_vnode_vops); static MALLOC_DEFINE(M_FIFOINFO, "Fifo info", "Fifo info entries"); /* - * fifo_vnoperate(struct vnodeop_desc *a_desc, ...) + * fifo_vnoperate() */ int fifo_vnoperate(struct vop_generic_args *ap) diff --git a/sys/vfs/gnu/ext2fs/ext2_vnops.c b/sys/vfs/gnu/ext2fs/ext2_vnops.c index 0eb8b95698..aebd048595 100644 --- a/sys/vfs/gnu/ext2fs/ext2_vnops.c +++ b/sys/vfs/gnu/ext2fs/ext2_vnops.c @@ -44,7 +44,7 @@ * @(#)ufs_vnops.c 8.27 (Berkeley) 5/27/95 * @(#)ext2_vnops.c 8.7 (Berkeley) 2/3/94 * $FreeBSD: src/sys/gnu/ext2fs/ext2_vnops.c,v 1.51.2.2 2003/01/02 17:26:18 bde Exp $ - * $DragonFly: src/sys/vfs/gnu/ext2fs/ext2_vnops.c,v 1.34 2006/07/18 22:22:15 dillon Exp $ + * $DragonFly: src/sys/vfs/gnu/ext2fs/ext2_vnops.c,v 1.35 2006/07/19 06:08:11 dillon Exp $ */ #include "opt_quota.h" @@ -2252,7 +2252,7 @@ VNODEOP_SET(ext2_spec_vops); VNODEOP_SET(ext2_fifo_vops); /* - * ext2_vnoperate(struct vnodeop_desc *a_desc) + * ext2_vnoperate() */ int ext2_vnoperate(struct vop_generic_args *ap) @@ -2261,7 +2261,7 @@ ext2_vnoperate(struct vop_generic_args *ap) } /* - * ext2_vnoperatefifo(struct vnodeop_desc *a_desc) + * ext2_vnoperatefifo() */ int ext2_vnoperatefifo(struct vop_generic_args *ap) @@ -2270,7 +2270,7 @@ ext2_vnoperatefifo(struct vop_generic_args *ap) } /* - * ext2_vnoperatespec(struct vnodeop_desc *a_desc) + * ext2_vnoperatespec() */ int ext2_vnoperatespec(struct vop_generic_args *ap) diff --git a/sys/vfs/isofs/cd9660/cd9660_vnops.c b/sys/vfs/isofs/cd9660/cd9660_vnops.c index d4b0a85d51..cbbc69745c 100644 --- a/sys/vfs/isofs/cd9660/cd9660_vnops.c +++ b/sys/vfs/isofs/cd9660/cd9660_vnops.c @@ -37,7 +37,7 @@ * * @(#)cd9660_vnops.c 8.19 (Berkeley) 5/27/95 * $FreeBSD: src/sys/isofs/cd9660/cd9660_vnops.c,v 1.62 1999/12/15 23:01:51 eivind Exp $ - * $DragonFly: src/sys/vfs/isofs/cd9660/cd9660_vnops.c,v 1.28 2006/07/18 22:22:15 dillon Exp $ + * $DragonFly: src/sys/vfs/isofs/cd9660/cd9660_vnops.c,v 1.29 2006/07/19 06:08:12 dillon Exp $ */ #include @@ -86,8 +86,8 @@ static int cd9660_putpages (struct vop_putpages_args *); /* * Setattr call. Only allowed for block and character special devices. * - * cd9660_setattr(struct vnodeop_desc *a_desc, struct vnode *a_vp, - * struct vattr *a_vap, struct ucred *a_cred, struct proc *a_p) + * cd9660_setattr(struct vnode *a_vp, struct vattr *a_vap, + * struct ucred *a_cred, struct proc *a_p) */ int cd9660_setattr(struct vop_setattr_args *ap) diff --git a/sys/vfs/mfs/mfs_vnops.c b/sys/vfs/mfs/mfs_vnops.c index 94b41acfc4..c74605781c 100644 --- a/sys/vfs/mfs/mfs_vnops.c +++ b/sys/vfs/mfs/mfs_vnops.c @@ -32,7 +32,7 @@ * * @(#)mfs_vnops.c 8.11 (Berkeley) 5/22/95 * $FreeBSD: src/sys/ufs/mfs/mfs_vnops.c,v 1.47.2.1 2001/05/22 02:06:43 bp Exp $ - * $DragonFly: src/sys/vfs/mfs/mfs_vnops.c,v 1.29 2006/07/18 22:22:15 dillon Exp $ + * $DragonFly: src/sys/vfs/mfs/mfs_vnops.c,v 1.30 2006/07/19 06:08:13 dillon Exp $ */ #include @@ -435,9 +435,9 @@ mfs_badop(struct vop_generic_args *ap) { int i; - printf("mfs_badop[%s]\n", ap->a_desc->vdesc_name); + printf("mfs_badop[%s]\n", ap->a_desc->sd_name); i = vop_defaultop(ap); - printf("mfs_badop[%s] = %d\n", ap->a_desc->vdesc_name, i); + printf("mfs_badop[%s] = %d\n", ap->a_desc->sd_name, i); return (i); } diff --git a/sys/vfs/nfs/nfs_vnops.c b/sys/vfs/nfs/nfs_vnops.c index 1369505e8c..b58443844e 100644 --- a/sys/vfs/nfs/nfs_vnops.c +++ b/sys/vfs/nfs/nfs_vnops.c @@ -35,7 +35,7 @@ * * @(#)nfs_vnops.c 8.16 (Berkeley) 5/27/95 * $FreeBSD: src/sys/nfs/nfs_vnops.c,v 1.150.2.5 2001/12/20 19:56:28 dillon Exp $ - * $DragonFly: src/sys/vfs/nfs/nfs_vnops.c,v 1.62 2006/07/18 22:22:15 dillon Exp $ + * $DragonFly: src/sys/vfs/nfs/nfs_vnops.c,v 1.63 2006/07/19 06:08:13 dillon Exp $ */ @@ -549,7 +549,7 @@ nfs_open(struct vop_open_args *ap) * 1 should be dealt with via an fsync() system call for * cases where write errors are important. * - * nfs_close(struct vnodeop_desc *a_desc, struct vnode *a_vp, int a_fflag, + * nfs_close(struct vnode *a_vp, int a_fflag, * struct ucred *a_cred, struct thread *a_td) */ /* ARGSUSED */ @@ -647,8 +647,7 @@ nfsmout: /* * nfs setattr call. * - * nfs_setattr(struct vnodeop_desc *a_desc, struct vnode *a_vp, - * struct vattr *a_vap, struct ucred *a_cred) + * nfs_setattr(struct vnode *a_vp, struct vattr *a_vap, struct ucred *a_cred) */ static int nfs_setattr(struct vop_setattr_args *ap) @@ -938,8 +937,8 @@ nfsmout: * * NOTE: cannot be removed until NFS implements all the new n*() API calls. * - * nfs_lookup(struct vnodeop_desc *a_desc, struct vnode *a_dvp, - * struct vnode **a_vpp, struct componentname *a_cnp) + * nfs_lookup(struct vnode *a_dvp, struct vnode **a_vpp, + * struct componentname *a_cnp) */ static int nfs_lookup(struct vop_old_lookup_args *ap) @@ -1590,8 +1589,8 @@ nfsmout: * else * do the remove rpc * - * nfs_remove(struct vnodeop_desc *a_desc, struct vnode *a_dvp, - * struct vnode *a_vp, struct componentname *a_cnp) + * nfs_remove(struct vnode *a_dvp, struct vnode *a_vp, + * struct componentname *a_cnp) */ static int nfs_remove(struct vop_old_remove_args *ap) @@ -2875,8 +2874,8 @@ nfs_mmap(struct vop_mmap_args *ap) /* * fsync vnode op. Just call nfs_flush() with commit == 1. * - * nfs_fsync(struct vnodeop_desc *a_desc, struct vnode *a_vp, - * struct ucred * a_cred, int a_waitfor, struct thread *a_td) + * nfs_fsync(struct vnode *a_vp, struct ucred * a_cred, int a_waitfor, + * struct thread *a_td) */ /* ARGSUSED */ static int diff --git a/sys/vfs/ntfs/ntfs_vnops.c b/sys/vfs/ntfs/ntfs_vnops.c index ab81cb1e22..fc07fc8905 100644 --- a/sys/vfs/ntfs/ntfs_vnops.c +++ b/sys/vfs/ntfs/ntfs_vnops.c @@ -36,7 +36,7 @@ * SUCH DAMAGE. * * $FreeBSD: src/sys/ntfs/ntfs_vnops.c,v 1.9.2.4 2002/08/06 19:35:18 semenu Exp $ - * $DragonFly: src/sys/vfs/ntfs/ntfs_vnops.c,v 1.34 2006/07/18 22:22:15 dillon Exp $ + * $DragonFly: src/sys/vfs/ntfs/ntfs_vnops.c,v 1.35 2006/07/19 06:08:13 dillon Exp $ * */ @@ -202,13 +202,13 @@ ntfs_read(struct vop_read_args *ap) #if !defined(__DragonFly__) /* - * ntfs_bypass(struct vnodeop_desc *a_desc, ...) + * ntfs_bypass() */ static int ntfs_bypass(struct vop_generic_args *ap) { int error = ENOTTY; - dprintf(("ntfs_bypass: %s\n", ap->a_desc->vdesc_name)); + dprintf(("ntfs_bypass: %s\n", ap->a_desc->sd_name)); return (error); } diff --git a/sys/vfs/nwfs/nwfs_vnops.c b/sys/vfs/nwfs/nwfs_vnops.c index df738f3518..b639857429 100644 --- a/sys/vfs/nwfs/nwfs_vnops.c +++ b/sys/vfs/nwfs/nwfs_vnops.c @@ -30,7 +30,7 @@ * SUCH DAMAGE. * * $FreeBSD: src/sys/nwfs/nwfs_vnops.c,v 1.6.2.3 2001/03/14 11:26:59 bp Exp $ - * $DragonFly: src/sys/vfs/nwfs/nwfs_vnops.c,v 1.30 2006/07/18 22:22:16 dillon Exp $ + * $DragonFly: src/sys/vfs/nwfs/nwfs_vnops.c,v 1.31 2006/07/19 06:08:13 dillon Exp $ */ #include #include @@ -222,7 +222,7 @@ nwfs_open(struct vop_open_args *ap) } /* - * nwfs_close(struct vnodeop_desc *a_desc, struct vnode *a_vp, int a_fflag, + * nwfs_close(struct vnode *a_vp, int a_fflag, * struct ucred *a_cred, struct thread *a_td) */ static int @@ -444,8 +444,8 @@ nwfs_create(struct vop_old_create_args *ap) * nwfs_remove call. It isn't possible to emulate UFS behaivour because * NetWare doesn't allow delete/rename operations on an opened file. * - * nwfs_remove(struct vnodeop_desc *a_desc, struct vnode *a_dvp, - * struct vnode *a_vp, struct componentname *a_cnp) + * nwfs_remove(struct vnode *a_dvp, + * struct vnode *a_vp, struct componentname *a_cnp) */ static int nwfs_remove(struct vop_old_remove_args *ap) @@ -686,8 +686,8 @@ nwfs_readdir(struct vop_readdir_args *ap) } /* - * nwfs_fsync(struct vnodeop_desc *a_desc, struct vnode *a_vp, - * struct ucred *a_cred, int a_waitfor, struct thread *a_td) + * nwfs_fsync(struct vnode *a_vp, struct ucred *a_cred, + * int a_waitfor, struct thread *a_td) */ /* ARGSUSED */ static int @@ -821,8 +821,8 @@ nwfs_nget(struct mount *mp, ncpfid fid, const struct nw_entry_info *fap, * Currently lookup routine can make two lookup for vnode. This can be * avoided by reorg the code. * - * nwfs_lookup(struct vnodeop_desc *a_desc, struct vnode *a_dvp, - * struct vnode **a_vpp, struct componentname *a_cnp) + * nwfs_lookup(struct vnode *a_dvp, struct vnode **a_vpp, + * struct componentname *a_cnp) */ int nwfs_lookup(struct vop_old_lookup_args *ap) diff --git a/sys/vfs/smbfs/smbfs_vnops.c b/sys/vfs/smbfs/smbfs_vnops.c index 9dd56e73cd..93b2fd9942 100644 --- a/sys/vfs/smbfs/smbfs_vnops.c +++ b/sys/vfs/smbfs/smbfs_vnops.c @@ -30,7 +30,7 @@ * SUCH DAMAGE. * * $FreeBSD: src/sys/fs/smbfs/smbfs_vnops.c,v 1.2.2.8 2003/04/04 08:57:23 tjr Exp $ - * $DragonFly: src/sys/vfs/smbfs/smbfs_vnops.c,v 1.32 2006/07/18 22:22:16 dillon Exp $ + * $DragonFly: src/sys/vfs/smbfs/smbfs_vnops.c,v 1.33 2006/07/19 06:08:14 dillon Exp $ */ #include #include @@ -506,8 +506,8 @@ smbfs_create(struct vop_old_create_args *ap) } /* - * smbfs_remove(struct vnodeop_desc *a_desc, struct vnode *a_dvp, - * struct vnode *a_vp, struct componentname *a_cnp) + * smbfs_remove(struct vnode *a_dvp, struct vnode *a_vp, + * struct componentname *a_cnp) */ static int smbfs_remove(struct vop_old_remove_args *ap) @@ -734,8 +734,8 @@ smbfs_readdir(struct vop_readdir_args *ap) } /* - * smbfs_fsync(struct vnodeop_desc *a_desc, struct vnode *a_vp, - * struct ucred *a_cred, int a_waitfor, struct thread *a_td) + * smbfs_fsync(struct vnode *a_vp, struct ucred *a_cred, + * int a_waitfor, struct thread *a_td) */ /* ARGSUSED */ static int @@ -1017,8 +1017,8 @@ smbfs_pathcheck(struct smbmount *smp, const char *name, int nmlen, int nameiop) /* * Things go even weird without fixed inode numbers... * - * smbfs_lookup(struct vnodeop_desc *a_desc, struct vnode *a_dvp, - * struct vnode **a_vpp, struct componentname *a_cnp) + * smbfs_lookup(struct vnode *a_dvp, struct vnode **a_vpp, + * struct componentname *a_cnp) */ int smbfs_lookup(struct vop_old_lookup_args *ap) diff --git a/sys/vfs/specfs/spec_vnops.c b/sys/vfs/specfs/spec_vnops.c index 97c8496da4..7e69acdb97 100644 --- a/sys/vfs/specfs/spec_vnops.c +++ b/sys/vfs/specfs/spec_vnops.c @@ -32,7 +32,7 @@ * * @(#)spec_vnops.c 8.14 (Berkeley) 5/21/95 * $FreeBSD: src/sys/miscfs/specfs/spec_vnops.c,v 1.131.2.4 2001/02/26 04:23:20 jlemon Exp $ - * $DragonFly: src/sys/vfs/specfs/spec_vnops.c,v 1.45 2006/07/18 22:22:16 dillon Exp $ + * $DragonFly: src/sys/vfs/specfs/spec_vnops.c,v 1.46 2006/07/19 06:08:14 dillon Exp $ */ #include @@ -117,7 +117,7 @@ VNODEOP_SET(spec_vnode_vops); extern int dev_ref_debug; /* - * spec_vnoperate(struct vnodeop_desc *a_desc, ...) + * spec_vnoperate() */ int spec_vnoperate(struct vop_generic_args *ap) diff --git a/sys/vfs/ufs/ufs_vnops.c b/sys/vfs/ufs/ufs_vnops.c index 0482c34eb8..b561f7b330 100644 --- a/sys/vfs/ufs/ufs_vnops.c +++ b/sys/vfs/ufs/ufs_vnops.c @@ -37,7 +37,7 @@ * * @(#)ufs_vnops.c 8.27 (Berkeley) 5/27/95 * $FreeBSD: src/sys/ufs/ufs/ufs_vnops.c,v 1.131.2.8 2003/01/02 17:26:19 bde Exp $ - * $DragonFly: src/sys/vfs/ufs/ufs_vnops.c,v 1.52 2006/07/18 22:22:16 dillon Exp $ + * $DragonFly: src/sys/vfs/ufs/ufs_vnops.c,v 1.53 2006/07/19 06:08:14 dillon Exp $ */ #include "opt_quota.h" @@ -2260,7 +2260,7 @@ bad: static int ufs_missingop(struct vop_generic_args *ap) { - panic("no vop function for %s in ufs child", ap->a_desc->vdesc_name); + panic("no vop function for %s in ufs child", ap->a_desc->sd_name); return (EOPNOTSUPP); } @@ -2442,7 +2442,7 @@ VNODEOP_SET(ufs_spec_vops); VNODEOP_SET(ufs_fifo_vops); /* - * ufs_vnoperate(struct vnodeop_desc *a_desc) + * ufs_vnoperate() */ int ufs_vnoperate(struct vop_generic_args *ap) @@ -2451,7 +2451,7 @@ ufs_vnoperate(struct vop_generic_args *ap) } /* - * ufs_vnoperatefifo(struct vnodeop_desc *a_desc) + * ufs_vnoperatefifo() */ int ufs_vnoperatefifo(struct vop_generic_args *ap) @@ -2460,7 +2460,7 @@ ufs_vnoperatefifo(struct vop_generic_args *ap) } /* - * ufs_vnoperatespec(struct vnodeop_desc *a_desc) + * ufs_vnoperatespec() */ int ufs_vnoperatespec(struct vop_generic_args *ap) diff --git a/sys/vfs/union/union_vnops.c b/sys/vfs/union/union_vnops.c index 929fc4766c..f83ca6200b 100644 --- a/sys/vfs/union/union_vnops.c +++ b/sys/vfs/union/union_vnops.c @@ -36,7 +36,7 @@ * * @(#)union_vnops.c 8.32 (Berkeley) 6/23/95 * $FreeBSD: src/sys/miscfs/union/union_vnops.c,v 1.72 1999/12/15 23:02:14 eivind Exp $ - * $DragonFly: src/sys/vfs/union/union_vnops.c,v 1.30 2006/07/18 22:22:16 dillon Exp $ + * $DragonFly: src/sys/vfs/union/union_vnops.c,v 1.31 2006/07/19 06:08:14 dillon Exp $ */ #include @@ -275,8 +275,8 @@ union_lookup1(struct vnode *udvp, struct vnode **pdvp, struct vnode **vpp, } /* - * union_lookup(struct vnodeop_desc *a_desc, struct vnode *a_dvp, - * struct vnode **a_vpp, struct componentname *a_cnp) + * union_lookup(struct vnode *a_dvp, struct vnode **a_vpp, + * struct componentname *a_cnp) */ static int union_lookup(struct vop_old_lookup_args *ap) @@ -700,7 +700,7 @@ union_mknod(struct vop_old_mknod_args *ap) * open semantics change is to call vn_open(). For example, ufs blows * up if you open a file but do not vmio it prior to writing. * - * union_open(struct vnodeop_desc *a_desc, struct vnode *a_vp, int a_mode, + * union_open(struct vnode *a_vp, int a_mode, * struct ucred *a_cred, struct thread *a_td) */ static int @@ -798,7 +798,7 @@ union_close(struct vop_close_args *ap) * file permissions are given away simply because * the user caused an implicit file copy. * - * union_access(struct vnodeop_desc *a_desc, struct vnode *a_vp, int a_mode, + * union_access(struct vnode *a_vp, int a_mode, * struct ucred *a_cred, struct thread *a_td) */ static int -- 2.41.0