diff options
| author | rsb <none@none> | 2007-03-26 17:41:06 -0700 | 
|---|---|---|
| committer | rsb <none@none> | 2007-03-26 17:41:06 -0700 | 
| commit | aa59c4cb15a6ac5d4e585dadf7a055b580abf579 (patch) | |
| tree | 67105846ea7ea656699224cf37f3cf859c00cd6a /usr/src | |
| parent | af2c4821c0a23e873f2a63bca4145080aa2183e3 (diff) | |
| download | illumos-joyent-aa59c4cb15a6ac5d4e585dadf7a055b580abf579.tar.gz | |
PSARC/2007/124 Strong Type-Checking for VFS Operation Registration Mechanism
6505923 Need better type checking for vnodeops
6531594 lxpr_readlink() is missing the "cred_t *cr" arg
6532559 vfs_strayops does not use the vnode/vfs operation registration mechanism
Diffstat (limited to 'usr/src')
88 files changed, 1757 insertions, 1574 deletions
| diff --git a/usr/src/pkgdefs/SUNWhea/prototype_com b/usr/src/pkgdefs/SUNWhea/prototype_com index 38db79846f..05447d15f2 100644 --- a/usr/src/pkgdefs/SUNWhea/prototype_com +++ b/usr/src/pkgdefs/SUNWhea/prototype_com @@ -1189,6 +1189,7 @@ f none usr/include/sys/va_list.h 644 root bin  f none usr/include/sys/var.h 644 root bin  f none usr/include/sys/varargs.h 644 root bin  f none usr/include/sys/vfs.h 644 root bin +f none usr/include/sys/vfs_opreg.h 644 root bin  f none usr/include/sys/vfstab.h 644 root bin  f none usr/include/sys/videodev2.h 644 root bin  f none usr/include/sys/vm.h 644 root bin diff --git a/usr/src/uts/common/brand/lx/autofs/lx_autofs.c b/usr/src/uts/common/brand/lx/autofs/lx_autofs.c index ecd4e8e44d..b40b508625 100644 --- a/usr/src/uts/common/brand/lx/autofs/lx_autofs.c +++ b/usr/src/uts/common/brand/lx/autofs/lx_autofs.c @@ -20,7 +20,7 @@   */  /* - * Copyright 2006 Sun Microsystems, Inc.  All rights reserved. + * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.   * Use is subject to license terms.   */ @@ -38,6 +38,7 @@  #include <sys/sysmacros.h>  #include <sys/vfs.h> +#include <sys/vfs_opreg.h>  #include <sys/lx_autofs_impl.h> @@ -1205,10 +1206,10 @@ lx_autofs_statvfs(vfs_t *vfsp, statvfs64_t *sp)  }  static const fs_operation_def_t lx_autofs_vfstops[] = { -	{ VFSNAME_MOUNT, lx_autofs_mount }, -	{ VFSNAME_UNMOUNT, lx_autofs_unmount }, -	{ VFSNAME_ROOT, lx_autofs_root }, -	{ VFSNAME_STATVFS, lx_autofs_statvfs }, +	{ VFSNAME_MOUNT,	{ .vfs_mount = lx_autofs_mount } }, +	{ VFSNAME_UNMOUNT,	{ .vfs_unmount = lx_autofs_unmount } }, +	{ VFSNAME_ROOT,		{ .vfs_root = lx_autofs_root } }, +	{ VFSNAME_STATVFS,	{ .vfs_statvfs = lx_autofs_statvfs } },  	{ NULL, NULL }  }; @@ -1427,18 +1428,18 @@ lx_autofs_ioctl(vnode_t *vp, int cmd, intptr_t arg, int mode, cred_t *cr,   * VOP entry points definitions   */  static const fs_operation_def_t lx_autofs_tops_root[] = { -	{ VOPNAME_OPEN,		lx_autofs_open }, -	{ VOPNAME_CLOSE,	lx_autofs_close }, -	{ VOPNAME_IOCTL,	lx_autofs_ioctl }, -	{ VOPNAME_RWLOCK,	lx_autofs_rwlock }, -	{ VOPNAME_RWUNLOCK,	(fs_generic_func_p)lx_autofs_rwunlock }, -	{ VOPNAME_GETATTR,	lx_autofs_getattr }, -	{ VOPNAME_ACCESS,	lx_autofs_access }, -	{ VOPNAME_READDIR,	lx_autofs_readdir }, -	{ VOPNAME_LOOKUP,	lx_autofs_lookup }, -	{ VOPNAME_INACTIVE,	(fs_generic_func_p)lx_autofs_inactive }, -	{ VOPNAME_MKDIR,	lx_autofs_mkdir }, -	{ VOPNAME_RMDIR,	lx_autofs_rmdir }, +	{ VOPNAME_OPEN,		{ .vop_open = lx_autofs_open } }, +	{ VOPNAME_CLOSE,	{ .vop_close = lx_autofs_close } }, +	{ VOPNAME_IOCTL,	{ .vop_ioctl = lx_autofs_ioctl } }, +	{ VOPNAME_RWLOCK,	{ .vop_rwlock = lx_autofs_rwlock } }, +	{ VOPNAME_RWUNLOCK,	{ .vop_rwunlock = lx_autofs_rwunlock } }, +	{ VOPNAME_GETATTR,	{ .vop_getattr = lx_autofs_getattr } }, +	{ VOPNAME_ACCESS,	{ .vop_access = lx_autofs_access } }, +	{ VOPNAME_READDIR,	{ .vop_readdir = lx_autofs_readdir } }, +	{ VOPNAME_LOOKUP,	{ .vop_lookup = lx_autofs_lookup } }, +	{ VOPNAME_INACTIVE,	{ .vop_inactive = lx_autofs_inactive } }, +	{ VOPNAME_MKDIR,	{ .vop_mkdir = lx_autofs_mkdir } }, +	{ VOPNAME_RMDIR,	{ .vop_rmdir = lx_autofs_rmdir } },  	{ NULL }  }; diff --git a/usr/src/uts/common/brand/lx/procfs/lx_prvfsops.c b/usr/src/uts/common/brand/lx/procfs/lx_prvfsops.c index 44891dc612..036e366254 100644 --- a/usr/src/uts/common/brand/lx/procfs/lx_prvfsops.c +++ b/usr/src/uts/common/brand/lx/procfs/lx_prvfsops.c @@ -19,7 +19,7 @@   * CDDL HEADER END   */  /* - * Copyright 2006 Sun Microsystems, Inc.  All rights reserved. + * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.   * Use is subject to license terms.   */ @@ -42,6 +42,7 @@  #include <sys/systm.h>  #include <sys/var.h>  #include <sys/vfs.h> +#include <sys/vfs_opreg.h>  #include <sys/vnode.h>  #include <sys/mode.h>  #include <sys/signal.h> @@ -134,11 +135,11 @@ static int  lxpr_init(int fstype, char *name)  {  	static const fs_operation_def_t lxpr_vfsops_template[] = { -		VFSNAME_MOUNT, lxpr_mount, -		VFSNAME_UNMOUNT, lxpr_unmount, -		VFSNAME_ROOT, lxpr_root, -		VFSNAME_STATVFS, lxpr_statvfs, -		NULL, NULL +		VFSNAME_MOUNT,		{ .vfs_mount = lxpr_mount }, +		VFSNAME_UNMOUNT,	{ .vfs_unmount = lxpr_unmount }, +		VFSNAME_ROOT,		{ .vfs_root = lxpr_root }, +		VFSNAME_STATVFS,	{ .vfs_statvfs = lxpr_statvfs }, +		NULL,			NULL  	};  	extern const fs_operation_def_t lxpr_vnodeops_template[];  	int error; diff --git a/usr/src/uts/common/brand/lx/procfs/lx_prvnops.c b/usr/src/uts/common/brand/lx/procfs/lx_prvnops.c index 815ef1dd46..bc1de2eefd 100644 --- a/usr/src/uts/common/brand/lx/procfs/lx_prvnops.c +++ b/usr/src/uts/common/brand/lx/procfs/lx_prvnops.c @@ -58,6 +58,7 @@  #include <sys/pset.h>  #include <sys/zone.h>  #include <sys/pghw.h> +#include <sys/vfs_opreg.h>  /* Dependent on the Solaris procfs */  extern kthread_t *prchoose(proc_t *); @@ -82,7 +83,7 @@ static int lxpr_access(vnode_t *, int, int, cred_t *);  static int lxpr_lookup(vnode_t *, char *, vnode_t **,      pathname_t *, int, vnode_t *, cred_t *);  static int lxpr_readdir(vnode_t *, uio_t *, cred_t *, int *); -static int lxpr_readlink(vnode_t *, uio_t *); +static int lxpr_readlink(vnode_t *, uio_t *, cred_t *);  static int lxpr_cmp(vnode_t *, vnode_t *);  static int lxpr_realvp(vnode_t *, vnode_t **);  static int lxpr_sync(void); @@ -149,20 +150,20 @@ static void lxpr_read_net_unix(lxpr_node_t *, lxpr_uiobuf_t *);   * The lx /proc vnode operations vector   */  const fs_operation_def_t lxpr_vnodeops_template[] = { -	VOPNAME_OPEN, lxpr_open, -	VOPNAME_CLOSE, lxpr_close, -	VOPNAME_READ, lxpr_read, -	VOPNAME_GETATTR, lxpr_getattr, -	VOPNAME_ACCESS, lxpr_access, -	VOPNAME_LOOKUP, lxpr_lookup, -	VOPNAME_READDIR, lxpr_readdir, -	VOPNAME_READLINK, lxpr_readlink, -	VOPNAME_FSYNC, lxpr_sync, -	VOPNAME_SEEK, lxpr_sync, -	VOPNAME_INACTIVE, (fs_generic_func_p) lxpr_inactive, -	VOPNAME_CMP, lxpr_cmp, -	VOPNAME_REALVP, lxpr_realvp, -	NULL, NULL +	VOPNAME_OPEN,		{ .vop_open = lxpr_open }, +	VOPNAME_CLOSE,		{ .vop_close = lxpr_close }, +	VOPNAME_READ,		{ .vop_read = lxpr_read }, +	VOPNAME_GETATTR,	{ .vop_getattr = lxpr_getattr }, +	VOPNAME_ACCESS,		{ .vop_access = lxpr_access }, +	VOPNAME_LOOKUP,		{ .vop_lookup = lxpr_lookup }, +	VOPNAME_READDIR,	{ .vop_readdir = lxpr_readdir }, +	VOPNAME_READLINK,	{ .vop_readlink = lxpr_readlink }, +	VOPNAME_FSYNC,		{ .error = lxpr_sync }, +	VOPNAME_SEEK,		{ .error = lxpr_sync }, +	VOPNAME_INACTIVE,	{ .vop_inactive = lxpr_inactive }, +	VOPNAME_CMP,		{ .vop_cmp = lxpr_cmp }, +	VOPNAME_REALVP,		{ .vop_realvp = lxpr_realvp }, +	NULL,			NULL  }; @@ -2829,8 +2830,9 @@ out:  /*   * lxpr_readlink(): Vnode operation for VOP_READLINK()   */ +/* ARGSUSED */  static int -lxpr_readlink(vnode_t *vp, uio_t *uiop) +lxpr_readlink(vnode_t *vp, uio_t *uiop, cred_t *cr)  {  	char bp[MAXPATHLEN + 1];  	size_t buflen = sizeof (bp); diff --git a/usr/src/uts/common/fs/autofs/auto_vfsops.c b/usr/src/uts/common/fs/autofs/auto_vfsops.c index 10b40850d8..4b5040bfc4 100644 --- a/usr/src/uts/common/fs/autofs/auto_vfsops.c +++ b/usr/src/uts/common/fs/autofs/auto_vfsops.c @@ -19,7 +19,7 @@   * CDDL HEADER END   */  /* - * Copyright 2006 Sun Microsystems, Inc.  All rights reserved. + * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.   * Use is subject to license terms.   */ @@ -30,6 +30,7 @@  #include <sys/proc.h>  #include <sys/disp.h>  #include <sys/vfs.h> +#include <sys/vfs_opreg.h>  #include <sys/vnode.h>  #include <sys/uio.h>  #include <sys/kmem.h> @@ -250,11 +251,11 @@ int  autofs_init(int fstype, char *name)  {  	static const fs_operation_def_t auto_vfsops_template[] = { -		VFSNAME_MOUNT, auto_mount, -		VFSNAME_UNMOUNT, auto_unmount, -		VFSNAME_ROOT, auto_root, -		VFSNAME_STATVFS, auto_statvfs, -		NULL, NULL +		VFSNAME_MOUNT,		{ .vfs_mount = auto_mount }, +		VFSNAME_UNMOUNT,	{ .vfs_unmount = auto_unmount }, +		VFSNAME_ROOT,		{ .vfs_root = auto_root }, +		VFSNAME_STATVFS,	{ .vfs_statvfs = auto_statvfs }, +		NULL,			NULL  	};  	int error; diff --git a/usr/src/uts/common/fs/autofs/auto_vnops.c b/usr/src/uts/common/fs/autofs/auto_vnops.c index 16c5a26781..0587ed066e 100644 --- a/usr/src/uts/common/fs/autofs/auto_vnops.c +++ b/usr/src/uts/common/fs/autofs/auto_vnops.c @@ -31,6 +31,7 @@  #include <sys/proc.h>  #include <sys/vnode.h>  #include <sys/vfs.h> +#include <sys/vfs_opreg.h>  #include <sys/uio.h>  #include <sys/cred.h>  #include <sys/pathname.h> @@ -81,30 +82,30 @@ static int auto_trigger_mount(vnode_t *, cred_t *, vnode_t **);  vnodeops_t *auto_vnodeops;  const fs_operation_def_t auto_vnodeops_template[] = { -	VOPNAME_OPEN, auto_open, -	VOPNAME_CLOSE, auto_close, -	VOPNAME_GETATTR, auto_getattr, -	VOPNAME_SETATTR, auto_setattr, -	VOPNAME_ACCESS, auto_access, -	VOPNAME_LOOKUP, auto_lookup, -	VOPNAME_CREATE, auto_create, -	VOPNAME_REMOVE, auto_remove, -	VOPNAME_LINK, auto_link, -	VOPNAME_RENAME, auto_rename, -	VOPNAME_MKDIR, auto_mkdir, -	VOPNAME_RMDIR, auto_rmdir, -	VOPNAME_READDIR, auto_readdir, -	VOPNAME_SYMLINK, auto_symlink, -	VOPNAME_READLINK, auto_readlink, -	VOPNAME_FSYNC, auto_fsync, -	VOPNAME_INACTIVE, (fs_generic_func_p) auto_inactive, -	VOPNAME_RWLOCK, auto_rwlock, -	VOPNAME_RWUNLOCK, (fs_generic_func_p) auto_rwunlock, -	VOPNAME_SEEK, auto_seek, -	VOPNAME_FRLOCK, fs_error, -	VOPNAME_DISPOSE, fs_error, -	VOPNAME_SHRLOCK, fs_error, -	NULL, NULL +	VOPNAME_OPEN,		{ .vop_open = auto_open }, +	VOPNAME_CLOSE,		{ .vop_close = auto_close }, +	VOPNAME_GETATTR,	{ .vop_getattr = auto_getattr }, +	VOPNAME_SETATTR,	{ .vop_setattr = auto_setattr }, +	VOPNAME_ACCESS,		{ .vop_access = auto_access }, +	VOPNAME_LOOKUP,		{ .vop_lookup = auto_lookup }, +	VOPNAME_CREATE,		{ .vop_create = auto_create }, +	VOPNAME_REMOVE,		{ .vop_remove = auto_remove }, +	VOPNAME_LINK,		{ .vop_link = auto_link }, +	VOPNAME_RENAME,		{ .vop_rename = auto_rename }, +	VOPNAME_MKDIR,		{ .vop_mkdir = auto_mkdir }, +	VOPNAME_RMDIR,		{ .vop_rmdir = auto_rmdir }, +	VOPNAME_READDIR,	{ .vop_readdir = auto_readdir }, +	VOPNAME_SYMLINK,	{ .vop_symlink = auto_symlink }, +	VOPNAME_READLINK,	{ .vop_readlink = auto_readlink }, +	VOPNAME_FSYNC,		{ .vop_fsync = auto_fsync }, +	VOPNAME_INACTIVE,	{ .vop_inactive = auto_inactive }, +	VOPNAME_RWLOCK,		{ .vop_rwlock = auto_rwlock }, +	VOPNAME_RWUNLOCK,	{ .vop_rwunlock = auto_rwunlock }, +	VOPNAME_SEEK,		{ .vop_seek = auto_seek }, +	VOPNAME_FRLOCK,		{ .error = fs_error }, +	VOPNAME_DISPOSE,	{ .error = fs_error }, +	VOPNAME_SHRLOCK,	{ .error = fs_error }, +	NULL,			NULL  }; diff --git a/usr/src/uts/common/fs/cachefs/cachefs_vfsops.c b/usr/src/uts/common/fs/cachefs/cachefs_vfsops.c index 81be82c033..fd1ee0b4d8 100644 --- a/usr/src/uts/common/fs/cachefs/cachefs_vfsops.c +++ b/usr/src/uts/common/fs/cachefs/cachefs_vfsops.c @@ -2,9 +2,8 @@   * CDDL HEADER START   *   * The contents of this file are subject to the terms of the - * Common Development and Distribution License, Version 1.0 only - * (the "License").  You may not use this file except in compliance - * with the License. + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License.   *   * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE   * or http://www.opensolaris.org/os/licensing. @@ -20,7 +19,7 @@   * CDDL HEADER END   */  /* - * Copyright 2005 Sun Microsystems, Inc.  All rights reserved. + * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.   * Use is subject to license terms.   */ @@ -33,6 +32,7 @@  #include <sys/proc.h>  #include <sys/user.h>  #include <sys/vfs.h> +#include <sys/vfs_opreg.h>  #include <sys/vnode.h>  #include <sys/pathname.h>  #include <sys/uio.h> @@ -98,12 +98,12 @@ int  cachefs_init_vfsops(int fstype)  {  	static const fs_operation_def_t cachefs_vfsops_template[] = { -		VFSNAME_MOUNT, cachefs_mount, -		VFSNAME_UNMOUNT, cachefs_unmount, -		VFSNAME_ROOT, cachefs_root, -		VFSNAME_STATVFS, cachefs_statvfs, -		VFSNAME_SYNC, (fs_generic_func_p) cachefs_sync, -		NULL, NULL +		VFSNAME_MOUNT,		{ .vfs_mount = cachefs_mount }, +		VFSNAME_UNMOUNT,	{ .vfs_unmount = cachefs_unmount }, +		VFSNAME_ROOT,		{ .vfs_root = cachefs_root }, +		VFSNAME_STATVFS,	{ .vfs_statvfs = cachefs_statvfs }, +		VFSNAME_SYNC,		{ .vfs_sync = cachefs_sync }, +		NULL,			NULL  	};  	int error; diff --git a/usr/src/uts/common/fs/cachefs/cachefs_vnops.c b/usr/src/uts/common/fs/cachefs/cachefs_vnops.c index 796d4a7173..5451c20467 100644 --- a/usr/src/uts/common/fs/cachefs/cachefs_vnops.c +++ b/usr/src/uts/common/fs/cachefs/cachefs_vnops.c @@ -2,9 +2,8 @@   * CDDL HEADER START   *   * The contents of this file are subject to the terms of the - * Common Development and Distribution License, Version 1.0 only - * (the "License").  You may not use this file except in compliance - * with the License. + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License.   *   * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE   * or http://www.opensolaris.org/os/licensing. @@ -20,7 +19,7 @@   * CDDL HEADER END   */  /* - * Copyright 2005 Sun Microsystems, Inc.  All rights reserved. + * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.   * Use is subject to license terms.   */ @@ -35,6 +34,7 @@  #include <sys/time.h>  #include <sys/vnode.h>  #include <sys/vfs.h> +#include <sys/vfs_opreg.h>  #include <sys/file.h>  #include <sys/filio.h>  #include <sys/uio.h> @@ -246,45 +246,45 @@ static int	cachefs_space_backfs_nfsv4(struct vnode *vp, int cmd,  struct vnodeops *cachefs_vnodeops;  static const fs_operation_def_t cachefs_vnodeops_template[] = { -	VOPNAME_OPEN, cachefs_open, -	VOPNAME_CLOSE, cachefs_close, -	VOPNAME_READ, cachefs_read, -	VOPNAME_WRITE, cachefs_write, -	VOPNAME_IOCTL, cachefs_ioctl, -	VOPNAME_GETATTR, cachefs_getattr, -	VOPNAME_SETATTR, cachefs_setattr, -	VOPNAME_ACCESS, cachefs_access, -	VOPNAME_LOOKUP, cachefs_lookup, -	VOPNAME_CREATE, cachefs_create, -	VOPNAME_REMOVE, cachefs_remove, -	VOPNAME_LINK, cachefs_link, -	VOPNAME_RENAME, cachefs_rename, -	VOPNAME_MKDIR, cachefs_mkdir, -	VOPNAME_RMDIR, cachefs_rmdir, -	VOPNAME_READDIR, cachefs_readdir, -	VOPNAME_SYMLINK, cachefs_symlink, -	VOPNAME_READLINK, cachefs_readlink, -	VOPNAME_FSYNC, cachefs_fsync, -	VOPNAME_INACTIVE, (fs_generic_func_p) cachefs_inactive, -	VOPNAME_FID, cachefs_fid, -	VOPNAME_RWLOCK, cachefs_rwlock, -	VOPNAME_RWUNLOCK, (fs_generic_func_p) cachefs_rwunlock, -	VOPNAME_SEEK, cachefs_seek, -	VOPNAME_FRLOCK, cachefs_frlock, -	VOPNAME_SPACE, cachefs_space, -	VOPNAME_REALVP, cachefs_realvp, -	VOPNAME_GETPAGE, cachefs_getpage, -	VOPNAME_PUTPAGE, cachefs_putpage, -	VOPNAME_MAP, (fs_generic_func_p) cachefs_map, -	VOPNAME_ADDMAP, (fs_generic_func_p) cachefs_addmap, -	VOPNAME_DELMAP, cachefs_delmap, -	VOPNAME_DUMP, cachefs_dump, -	VOPNAME_PATHCONF, cachefs_pathconf, -	VOPNAME_PAGEIO, cachefs_pageio, -	VOPNAME_SETSECATTR, cachefs_setsecattr, -	VOPNAME_GETSECATTR, cachefs_getsecattr, -	VOPNAME_SHRLOCK, cachefs_shrlock, -	NULL, NULL +	VOPNAME_OPEN,		{ .vop_open = cachefs_open }, +	VOPNAME_CLOSE,		{ .vop_close = cachefs_close }, +	VOPNAME_READ,		{ .vop_read = cachefs_read }, +	VOPNAME_WRITE,		{ .vop_write = cachefs_write }, +	VOPNAME_IOCTL,		{ .vop_ioctl = cachefs_ioctl }, +	VOPNAME_GETATTR,	{ .vop_getattr = cachefs_getattr }, +	VOPNAME_SETATTR,	{ .vop_setattr = cachefs_setattr }, +	VOPNAME_ACCESS,		{ .vop_access = cachefs_access }, +	VOPNAME_LOOKUP,		{ .vop_lookup = cachefs_lookup }, +	VOPNAME_CREATE,		{ .vop_create = cachefs_create }, +	VOPNAME_REMOVE,		{ .vop_remove = cachefs_remove }, +	VOPNAME_LINK,		{ .vop_link = cachefs_link }, +	VOPNAME_RENAME,		{ .vop_rename = cachefs_rename }, +	VOPNAME_MKDIR,		{ .vop_mkdir = cachefs_mkdir }, +	VOPNAME_RMDIR,		{ .vop_rmdir = cachefs_rmdir }, +	VOPNAME_READDIR,	{ .vop_readdir = cachefs_readdir }, +	VOPNAME_SYMLINK,	{ .vop_symlink = cachefs_symlink }, +	VOPNAME_READLINK,	{ .vop_readlink = cachefs_readlink }, +	VOPNAME_FSYNC,		{ .vop_fsync = cachefs_fsync }, +	VOPNAME_INACTIVE,	{ .vop_inactive = cachefs_inactive }, +	VOPNAME_FID,		{ .vop_fid = cachefs_fid }, +	VOPNAME_RWLOCK,		{ .vop_rwlock = cachefs_rwlock }, +	VOPNAME_RWUNLOCK,	{ .vop_rwunlock = cachefs_rwunlock }, +	VOPNAME_SEEK,		{ .vop_seek = cachefs_seek }, +	VOPNAME_FRLOCK,		{ .vop_frlock = cachefs_frlock }, +	VOPNAME_SPACE,		{ .vop_space = cachefs_space }, +	VOPNAME_REALVP,		{ .vop_realvp = cachefs_realvp }, +	VOPNAME_GETPAGE,	{ .vop_getpage = cachefs_getpage }, +	VOPNAME_PUTPAGE,	{ .vop_putpage = cachefs_putpage }, +	VOPNAME_MAP,		{ .vop_map = cachefs_map }, +	VOPNAME_ADDMAP,		{ .vop_addmap = cachefs_addmap }, +	VOPNAME_DELMAP,		{ .vop_delmap = cachefs_delmap }, +	VOPNAME_DUMP,		{ .vop_dump = cachefs_dump }, +	VOPNAME_PATHCONF,	{ .vop_pathconf = cachefs_pathconf }, +	VOPNAME_PAGEIO,		{ .vop_pageio = cachefs_pageio }, +	VOPNAME_SETSECATTR,	{ .vop_setsecattr = cachefs_setsecattr }, +	VOPNAME_GETSECATTR,	{ .vop_getsecattr = cachefs_getsecattr }, +	VOPNAME_SHRLOCK,	{ .vop_shrlock = cachefs_shrlock }, +	NULL,			NULL  };  /* forward declarations of statics */ diff --git a/usr/src/uts/common/fs/ctfs/ctfs_all.c b/usr/src/uts/common/fs/ctfs/ctfs_all.c index 4933edd960..382f66da8a 100644 --- a/usr/src/uts/common/fs/ctfs/ctfs_all.c +++ b/usr/src/uts/common/fs/ctfs/ctfs_all.c @@ -2,9 +2,8 @@   * CDDL HEADER START   *   * The contents of this file are subject to the terms of the - * Common Development and Distribution License, Version 1.0 only - * (the "License").  You may not use this file except in compliance - * with the License. + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License.   *   * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE   * or http://www.opensolaris.org/os/licensing. @@ -20,7 +19,7 @@   * CDDL HEADER END   */  /* - * Copyright 2005 Sun Microsystems, Inc.  All rights reserved. + * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.   * Use is subject to license terms.   */ @@ -31,6 +30,7 @@  #include <sys/time.h>  #include <sys/cred.h>  #include <sys/vfs.h> +#include <sys/vfs_opreg.h>  #include <sys/gfs.h>  #include <sys/vnode.h>  #include <sys/systm.h> @@ -135,14 +135,14 @@ ctfs_adir_do_readdir(vnode_t *vp, struct dirent64 *dp, int *eofp,  }  const fs_operation_def_t ctfs_tops_adir[] = { -	{ VOPNAME_OPEN,		ctfs_open }, -	{ VOPNAME_CLOSE,	ctfs_close }, -	{ VOPNAME_IOCTL,	fs_inval }, -	{ VOPNAME_GETATTR,	ctfs_adir_getattr }, -	{ VOPNAME_ACCESS,	ctfs_access_dir }, -	{ VOPNAME_READDIR,	gfs_vop_readdir }, -	{ VOPNAME_LOOKUP,	gfs_vop_lookup }, -	{ VOPNAME_SEEK,		fs_seek }, -	{ VOPNAME_INACTIVE,	(fs_generic_func_p) gfs_vop_inactive }, +	{ VOPNAME_OPEN,		{ .vop_open = ctfs_open } }, +	{ VOPNAME_CLOSE,	{ .vop_close = ctfs_close } }, +	{ VOPNAME_IOCTL,	{ .error = fs_inval } }, +	{ VOPNAME_GETATTR,	{ .vop_getattr = ctfs_adir_getattr } }, +	{ VOPNAME_ACCESS,	{ .vop_access = ctfs_access_dir } }, +	{ VOPNAME_READDIR,	{ .vop_readdir = gfs_vop_readdir } }, +	{ VOPNAME_LOOKUP,	{ .vop_lookup = gfs_vop_lookup } }, +	{ VOPNAME_SEEK,		{ .vop_seek = fs_seek } }, +	{ VOPNAME_INACTIVE,	{ .vop_inactive = gfs_vop_inactive } },  	{ NULL, NULL }  }; diff --git a/usr/src/uts/common/fs/ctfs/ctfs_cdir.c b/usr/src/uts/common/fs/ctfs/ctfs_cdir.c index 0f038b8b13..4861f73244 100644 --- a/usr/src/uts/common/fs/ctfs/ctfs_cdir.c +++ b/usr/src/uts/common/fs/ctfs/ctfs_cdir.c @@ -2,9 +2,8 @@   * CDDL HEADER START   *   * The contents of this file are subject to the terms of the - * Common Development and Distribution License, Version 1.0 only - * (the "License").  You may not use this file except in compliance - * with the License. + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License.   *   * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE   * or http://www.opensolaris.org/os/licensing. @@ -20,7 +19,7 @@   * CDDL HEADER END   */  /* - * Copyright 2005 Sun Microsystems, Inc.  All rights reserved. + * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.   * Use is subject to license terms.   */ @@ -31,6 +30,7 @@  #include <sys/time.h>  #include <sys/cred.h>  #include <sys/vfs.h> +#include <sys/vfs_opreg.h>  #include <sys/gfs.h>  #include <sys/vnode.h>  #include <sys/systm.h> @@ -149,14 +149,14 @@ ctfs_cdir_inactive(vnode_t *vp, cred_t *cr)  const fs_operation_def_t ctfs_tops_cdir[] = { -	{ VOPNAME_OPEN,		ctfs_open }, -	{ VOPNAME_CLOSE,	ctfs_close }, -	{ VOPNAME_IOCTL,	fs_inval }, -	{ VOPNAME_GETATTR,	ctfs_cdir_getattr }, -	{ VOPNAME_ACCESS,	ctfs_access_dir }, -	{ VOPNAME_READDIR,	gfs_vop_readdir }, -	{ VOPNAME_LOOKUP,	gfs_vop_lookup }, -	{ VOPNAME_SEEK,		fs_seek }, -	{ VOPNAME_INACTIVE,	(fs_generic_func_p) ctfs_cdir_inactive }, +	{ VOPNAME_OPEN,		{ .vop_open = ctfs_open } }, +	{ VOPNAME_CLOSE,	{ .vop_close = ctfs_close } }, +	{ VOPNAME_IOCTL,	{ .error = fs_inval } }, +	{ VOPNAME_GETATTR,	{ .vop_getattr = ctfs_cdir_getattr } }, +	{ VOPNAME_ACCESS,	{ .vop_access = ctfs_access_dir } }, +	{ VOPNAME_READDIR,	{ .vop_readdir = gfs_vop_readdir } }, +	{ VOPNAME_LOOKUP,	{ .vop_lookup = gfs_vop_lookup } }, +	{ VOPNAME_SEEK,		{ .vop_seek = fs_seek } }, +	{ VOPNAME_INACTIVE,	{ .vop_inactive = ctfs_cdir_inactive } },  	{ NULL, NULL }  }; diff --git a/usr/src/uts/common/fs/ctfs/ctfs_ctl.c b/usr/src/uts/common/fs/ctfs/ctfs_ctl.c index f4980d4a97..43b5813ff1 100644 --- a/usr/src/uts/common/fs/ctfs/ctfs_ctl.c +++ b/usr/src/uts/common/fs/ctfs/ctfs_ctl.c @@ -2,9 +2,8 @@   * CDDL HEADER START   *   * The contents of this file are subject to the terms of the - * Common Development and Distribution License, Version 1.0 only - * (the "License").  You may not use this file except in compliance - * with the License. + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License.   *   * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE   * or http://www.opensolaris.org/os/licensing. @@ -20,7 +19,7 @@   * CDDL HEADER END   */  /* - * Copyright 2005 Sun Microsystems, Inc.  All rights reserved. + * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.   * Use is subject to license terms.   */ @@ -31,6 +30,7 @@  #include <sys/time.h>  #include <sys/cred.h>  #include <sys/vfs.h> +#include <sys/vfs_opreg.h>  #include <sys/gfs.h>  #include <sys/vnode.h>  #include <sys/systm.h> @@ -183,14 +183,14 @@ ctfs_ctl_ioctl(vnode_t *vp, int cmd, intptr_t arg, int flag, cred_t *cr,  }  const fs_operation_def_t ctfs_tops_ctl[] = { -	{ VOPNAME_OPEN,		ctfs_ctl_open }, -	{ VOPNAME_CLOSE,	ctfs_close }, -	{ VOPNAME_IOCTL,	ctfs_ctl_ioctl }, -	{ VOPNAME_GETATTR,	ctfs_ctl_getattr }, -	{ VOPNAME_ACCESS,	ctfs_ctl_access }, -	{ VOPNAME_READDIR,	fs_notdir }, -	{ VOPNAME_LOOKUP,	fs_notdir }, -	{ VOPNAME_INACTIVE,	(fs_generic_func_p) gfs_vop_inactive }, +	{ VOPNAME_OPEN,		{ .vop_open = ctfs_ctl_open } }, +	{ VOPNAME_CLOSE,	{ .vop_close = ctfs_close } }, +	{ VOPNAME_IOCTL,	{ .vop_ioctl = ctfs_ctl_ioctl } }, +	{ VOPNAME_GETATTR,	{ .vop_getattr = ctfs_ctl_getattr } }, +	{ VOPNAME_ACCESS,	{ .vop_access = ctfs_ctl_access } }, +	{ VOPNAME_READDIR,	{ .error = fs_notdir } }, +	{ VOPNAME_LOOKUP,	{ .error = fs_notdir } }, +	{ VOPNAME_INACTIVE,	{ .vop_inactive = gfs_vop_inactive } },  	{ NULL, NULL }  }; @@ -276,13 +276,13 @@ ctfs_stat_ioctl(vnode_t *vp, int cmd, intptr_t arg, int flag, cred_t *cr,  }  const fs_operation_def_t ctfs_tops_stat[] = { -	{ VOPNAME_OPEN,		ctfs_open }, -	{ VOPNAME_CLOSE,	ctfs_close }, -	{ VOPNAME_IOCTL,	ctfs_stat_ioctl }, -	{ VOPNAME_GETATTR,	ctfs_ctl_getattr }, -	{ VOPNAME_ACCESS,	ctfs_access_readonly }, -	{ VOPNAME_READDIR,	fs_notdir }, -	{ VOPNAME_LOOKUP,	fs_notdir }, -	{ VOPNAME_INACTIVE,	(fs_generic_func_p) gfs_vop_inactive }, +	{ VOPNAME_OPEN,		{ .vop_open = ctfs_open } }, +	{ VOPNAME_CLOSE,	{ .vop_close = ctfs_close } }, +	{ VOPNAME_IOCTL,	{ .vop_ioctl = ctfs_stat_ioctl } }, +	{ VOPNAME_GETATTR,	{ .vop_getattr = ctfs_ctl_getattr } }, +	{ VOPNAME_ACCESS,	{ .vop_access = ctfs_access_readonly } }, +	{ VOPNAME_READDIR,	{ .error = fs_notdir } }, +	{ VOPNAME_LOOKUP,	{ .error = fs_notdir } }, +	{ VOPNAME_INACTIVE,	{ .vop_inactive = gfs_vop_inactive } },  	{ NULL, NULL }  }; diff --git a/usr/src/uts/common/fs/ctfs/ctfs_event.c b/usr/src/uts/common/fs/ctfs/ctfs_event.c index 7fa7cfb608..ac4447e493 100644 --- a/usr/src/uts/common/fs/ctfs/ctfs_event.c +++ b/usr/src/uts/common/fs/ctfs/ctfs_event.c @@ -2,9 +2,8 @@   * CDDL HEADER START   *   * The contents of this file are subject to the terms of the - * Common Development and Distribution License, Version 1.0 only - * (the "License").  You may not use this file except in compliance - * with the License. + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License.   *   * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE   * or http://www.opensolaris.org/os/licensing. @@ -20,7 +19,7 @@   * CDDL HEADER END   */  /* - * Copyright 2005 Sun Microsystems, Inc.  All rights reserved. + * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.   * Use is subject to license terms.   */ @@ -31,6 +30,7 @@  #include <sys/time.h>  #include <sys/cred.h>  #include <sys/vfs.h> +#include <sys/vfs_opreg.h>  #include <sys/gfs.h>  #include <sys/vnode.h>  #include <sys/systm.h> @@ -304,15 +304,15 @@ ctfs_ev_poll(vnode_t *vp, short events, int anyyet, short *reventsp,  }  const fs_operation_def_t ctfs_tops_event[] = { -	{ VOPNAME_OPEN,		ctfs_ev_open }, -	{ VOPNAME_CLOSE,	ctfs_close }, -	{ VOPNAME_IOCTL,	ctfs_ev_ioctl }, -	{ VOPNAME_GETATTR,	ctfs_ev_getattr }, -	{ VOPNAME_ACCESS,	ctfs_ev_access }, -	{ VOPNAME_READDIR,	fs_notdir }, -	{ VOPNAME_LOOKUP,	fs_notdir }, -	{ VOPNAME_INACTIVE,	(fs_generic_func_p) ctfs_ev_inactive }, -	{ VOPNAME_POLL,		(fs_generic_func_p) ctfs_ev_poll }, +	{ VOPNAME_OPEN,		{ .vop_open = ctfs_ev_open } }, +	{ VOPNAME_CLOSE,	{ .vop_close = ctfs_close } }, +	{ VOPNAME_IOCTL,	{ .vop_ioctl = ctfs_ev_ioctl } }, +	{ VOPNAME_GETATTR,	{ .vop_getattr = ctfs_ev_getattr } }, +	{ VOPNAME_ACCESS,	{ .vop_access = ctfs_ev_access } }, +	{ VOPNAME_READDIR,	{ .error = fs_notdir } }, +	{ VOPNAME_LOOKUP,	{ .error = fs_notdir } }, +	{ VOPNAME_INACTIVE,	{ .vop_inactive = ctfs_ev_inactive } }, +	{ VOPNAME_POLL,		{ .vop_poll = ctfs_ev_poll } },  	{ NULL, NULL }  }; @@ -447,14 +447,14 @@ ctfs_bu_poll(vnode_t *vp, short events, int anyyet, short *reventsp,  }  const fs_operation_def_t ctfs_tops_bundle[] = { -	{ VOPNAME_OPEN,		ctfs_bu_open }, -	{ VOPNAME_CLOSE,	ctfs_close }, -	{ VOPNAME_IOCTL,	ctfs_bu_ioctl }, -	{ VOPNAME_GETATTR,	ctfs_bu_getattr }, -	{ VOPNAME_ACCESS,	ctfs_access_readonly }, -	{ VOPNAME_READDIR,	fs_notdir }, -	{ VOPNAME_LOOKUP,	fs_notdir }, -	{ VOPNAME_INACTIVE,	(fs_generic_func_p) ctfs_bu_inactive }, -	{ VOPNAME_POLL,		(fs_generic_func_p) ctfs_bu_poll }, +	{ VOPNAME_OPEN,		{ .vop_open = ctfs_bu_open } }, +	{ VOPNAME_CLOSE,	{ .vop_close = ctfs_close } }, +	{ VOPNAME_IOCTL,	{ .vop_ioctl = ctfs_bu_ioctl } }, +	{ VOPNAME_GETATTR,	{ .vop_getattr = ctfs_bu_getattr } }, +	{ VOPNAME_ACCESS,	{ .vop_access = ctfs_access_readonly } }, +	{ VOPNAME_READDIR,	{ .error = fs_notdir } }, +	{ VOPNAME_LOOKUP,	{ .error = fs_notdir } }, +	{ VOPNAME_INACTIVE,	{ .vop_inactive = ctfs_bu_inactive } }, +	{ VOPNAME_POLL,		{ .vop_poll = ctfs_bu_poll } },  	{ NULL, NULL }  }; diff --git a/usr/src/uts/common/fs/ctfs/ctfs_latest.c b/usr/src/uts/common/fs/ctfs/ctfs_latest.c index 27ee75917e..7d15dd494a 100644 --- a/usr/src/uts/common/fs/ctfs/ctfs_latest.c +++ b/usr/src/uts/common/fs/ctfs/ctfs_latest.c @@ -2,9 +2,8 @@   * CDDL HEADER START   *   * The contents of this file are subject to the terms of the - * Common Development and Distribution License, Version 1.0 only - * (the "License").  You may not use this file except in compliance - * with the License. + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License.   *   * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE   * or http://www.opensolaris.org/os/licensing. @@ -20,7 +19,7 @@   * CDDL HEADER END   */  /* - * Copyright 2005 Sun Microsystems, Inc.  All rights reserved. + * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.   * Use is subject to license terms.   */ @@ -31,6 +30,7 @@  #include <sys/time.h>  #include <sys/cred.h>  #include <sys/vfs.h> +#include <sys/vfs_opreg.h>  #include <sys/gfs.h>  #include <sys/vnode.h>  #include <sys/systm.h> @@ -162,13 +162,13 @@ ctfs_latest_getattr(vnode_t *vp, vattr_t *vap, int flags, cred_t *cr)  }  const fs_operation_def_t ctfs_tops_latest[] = { -	{ VOPNAME_OPEN,		ctfs_latest_open }, -	{ VOPNAME_CLOSE,	fs_inval }, -	{ VOPNAME_IOCTL,	fs_inval }, -	{ VOPNAME_GETATTR,	ctfs_latest_getattr }, -	{ VOPNAME_ACCESS,	ctfs_latest_access }, -	{ VOPNAME_READDIR,	fs_notdir }, -	{ VOPNAME_LOOKUP,	fs_notdir }, -	{ VOPNAME_INACTIVE,	(fs_generic_func_p) gfs_vop_inactive }, +	{ VOPNAME_OPEN,		{ .vop_open = ctfs_latest_open } }, +	{ VOPNAME_CLOSE,	{ .error = fs_inval } }, +	{ VOPNAME_IOCTL,	{ .error = fs_inval } }, +	{ VOPNAME_GETATTR,	{ .vop_getattr = ctfs_latest_getattr } }, +	{ VOPNAME_ACCESS,	{ .vop_access = ctfs_latest_access } }, +	{ VOPNAME_READDIR,	{ .error = fs_notdir } }, +	{ VOPNAME_LOOKUP,	{ .error = fs_notdir } }, +	{ VOPNAME_INACTIVE,	{ .vop_inactive = gfs_vop_inactive } },  	{ NULL, NULL }  }; diff --git a/usr/src/uts/common/fs/ctfs/ctfs_root.c b/usr/src/uts/common/fs/ctfs/ctfs_root.c index 92f0e9027d..1616a986cd 100644 --- a/usr/src/uts/common/fs/ctfs/ctfs_root.c +++ b/usr/src/uts/common/fs/ctfs/ctfs_root.c @@ -2,9 +2,8 @@   * CDDL HEADER START   *   * The contents of this file are subject to the terms of the - * Common Development and Distribution License, Version 1.0 only - * (the "License").  You may not use this file except in compliance - * with the License. + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License.   *   * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE   * or http://www.opensolaris.org/os/licensing. @@ -20,7 +19,7 @@   * CDDL HEADER END   */  /* - * Copyright 2005 Sun Microsystems, Inc.  All rights reserved. + * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.   * Use is subject to license terms.   */ @@ -32,6 +31,7 @@  #include <sys/time.h>  #include <sys/cred.h>  #include <sys/vfs.h> +#include <sys/vfs_opreg.h>  #include <sys/gfs.h>  #include <sys/vnode.h>  #include <sys/systm.h> @@ -364,10 +364,10 @@ ctfs_statvfs(vfs_t *vfsp, statvfs64_t *sp)  }  static const fs_operation_def_t ctfs_vfstops[] = { -	{ VFSNAME_MOUNT, ctfs_mount }, -	{ VFSNAME_UNMOUNT, ctfs_unmount }, -	{ VFSNAME_ROOT, ctfs_root }, -	{ VFSNAME_STATVFS, ctfs_statvfs }, +	{ VFSNAME_MOUNT,	{ .vfs_mount = ctfs_mount } }, +	{ VFSNAME_UNMOUNT,	{ .vfs_unmount = ctfs_unmount } }, +	{ VFSNAME_ROOT,		{ .vfs_root = ctfs_root } }, +	{ VFSNAME_STATVFS,	{ .vfs_statvfs = ctfs_statvfs } },  	{ NULL, NULL }  }; @@ -485,14 +485,14 @@ ctfs_root_do_inode(vnode_t *vp, int index)  }  static const fs_operation_def_t ctfs_tops_root[] = { -	{ VOPNAME_OPEN,		ctfs_open }, -	{ VOPNAME_CLOSE,	ctfs_close }, -	{ VOPNAME_IOCTL,	fs_inval }, -	{ VOPNAME_GETATTR,	ctfs_root_getattr }, -	{ VOPNAME_ACCESS,	ctfs_access_dir }, -	{ VOPNAME_READDIR,	gfs_vop_readdir }, -	{ VOPNAME_LOOKUP,	gfs_vop_lookup }, -	{ VOPNAME_SEEK,		fs_seek }, -	{ VOPNAME_INACTIVE,	(fs_generic_func_p) gfs_vop_inactive }, +	{ VOPNAME_OPEN,		{ .vop_open = ctfs_open } }, +	{ VOPNAME_CLOSE,	{ .vop_close = ctfs_close } }, +	{ VOPNAME_IOCTL,	{ .error = fs_inval } }, +	{ VOPNAME_GETATTR,	{ .vop_getattr = ctfs_root_getattr } }, +	{ VOPNAME_ACCESS,	{ .vop_access = ctfs_access_dir } }, +	{ VOPNAME_READDIR,	{ .vop_readdir = gfs_vop_readdir } }, +	{ VOPNAME_LOOKUP,	{ .vop_lookup = gfs_vop_lookup } }, +	{ VOPNAME_SEEK,		{ .vop_seek = fs_seek } }, +	{ VOPNAME_INACTIVE,	{ .vop_inactive = gfs_vop_inactive } },  	{ NULL, NULL }  }; diff --git a/usr/src/uts/common/fs/ctfs/ctfs_sym.c b/usr/src/uts/common/fs/ctfs/ctfs_sym.c index 14bd5f1694..bf825ab366 100644 --- a/usr/src/uts/common/fs/ctfs/ctfs_sym.c +++ b/usr/src/uts/common/fs/ctfs/ctfs_sym.c @@ -2,9 +2,8 @@   * CDDL HEADER START   *   * The contents of this file are subject to the terms of the - * Common Development and Distribution License, Version 1.0 only - * (the "License").  You may not use this file except in compliance - * with the License. + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License.   *   * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE   * or http://www.opensolaris.org/os/licensing. @@ -20,7 +19,7 @@   * CDDL HEADER END   */  /* - * Copyright 2005 Sun Microsystems, Inc.  All rights reserved. + * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.   * Use is subject to license terms.   */ @@ -31,6 +30,7 @@  #include <sys/time.h>  #include <sys/cred.h>  #include <sys/vfs.h> +#include <sys/vfs_opreg.h>  #include <sys/gfs.h>  #include <sys/vnode.h>  #include <sys/systm.h> @@ -129,14 +129,14 @@ ctfs_sym_inactive(vnode_t *vp, cred_t *cr)  }  const fs_operation_def_t ctfs_tops_sym[] = { -	{ VOPNAME_OPEN,		ctfs_open }, -	{ VOPNAME_CLOSE,	ctfs_close }, -	{ VOPNAME_IOCTL,	fs_inval }, -	{ VOPNAME_GETATTR,	ctfs_sym_getattr }, -	{ VOPNAME_READLINK,	ctfs_sym_readlink }, -	{ VOPNAME_ACCESS,	ctfs_access_readonly }, -	{ VOPNAME_READDIR,	fs_notdir }, -	{ VOPNAME_LOOKUP,	fs_notdir }, -	{ VOPNAME_INACTIVE,	(fs_generic_func_p) ctfs_sym_inactive }, +	{ VOPNAME_OPEN,		{ .vop_open = ctfs_open } }, +	{ VOPNAME_CLOSE,	{ .vop_close = ctfs_close } }, +	{ VOPNAME_IOCTL,	{ .error = fs_inval } }, +	{ VOPNAME_GETATTR,	{ .vop_getattr = ctfs_sym_getattr } }, +	{ VOPNAME_READLINK,	{ .vop_readlink = ctfs_sym_readlink } }, +	{ VOPNAME_ACCESS,	{ .vop_access = ctfs_access_readonly } }, +	{ VOPNAME_READDIR,	{ .error = fs_notdir } }, +	{ VOPNAME_LOOKUP,	{ .error = fs_notdir } }, +	{ VOPNAME_INACTIVE,	{ .vop_inactive = ctfs_sym_inactive } },  	{ NULL, NULL }  }; diff --git a/usr/src/uts/common/fs/ctfs/ctfs_tdir.c b/usr/src/uts/common/fs/ctfs/ctfs_tdir.c index 1f5dd42370..2d47c72339 100644 --- a/usr/src/uts/common/fs/ctfs/ctfs_tdir.c +++ b/usr/src/uts/common/fs/ctfs/ctfs_tdir.c @@ -2,9 +2,8 @@   * CDDL HEADER START   *   * The contents of this file are subject to the terms of the - * Common Development and Distribution License, Version 1.0 only - * (the "License").  You may not use this file except in compliance - * with the License. + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License.   *   * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE   * or http://www.opensolaris.org/os/licensing. @@ -20,7 +19,7 @@   * CDDL HEADER END   */  /* - * Copyright 2005 Sun Microsystems, Inc.  All rights reserved. + * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.   * Use is subject to license terms.   */ @@ -31,6 +30,7 @@  #include <sys/time.h>  #include <sys/cred.h>  #include <sys/vfs.h> +#include <sys/vfs_opreg.h>  #include <sys/gfs.h>  #include <sys/vnode.h>  #include <sys/systm.h> @@ -146,14 +146,14 @@ ctfs_tdir_do_lookup(vnode_t *vp, const char *nm, vnode_t **vpp, ino64_t *inop)  }  const fs_operation_def_t ctfs_tops_tdir[] = { -	{ VOPNAME_OPEN,		ctfs_open }, -	{ VOPNAME_CLOSE,	ctfs_close }, -	{ VOPNAME_IOCTL,	fs_inval }, -	{ VOPNAME_GETATTR,	ctfs_tdir_getattr }, -	{ VOPNAME_ACCESS,	ctfs_access_dir }, -	{ VOPNAME_READDIR,	gfs_vop_readdir }, -	{ VOPNAME_LOOKUP,	gfs_vop_lookup }, -	{ VOPNAME_SEEK,		fs_seek }, -	{ VOPNAME_INACTIVE,	(fs_generic_func_p) gfs_vop_inactive }, +	{ VOPNAME_OPEN,		{ .vop_open = ctfs_open } }, +	{ VOPNAME_CLOSE,	{ .vop_close = ctfs_close } }, +	{ VOPNAME_IOCTL,	{ .error = fs_inval } }, +	{ VOPNAME_GETATTR,	{ .vop_getattr = ctfs_tdir_getattr } }, +	{ VOPNAME_ACCESS,	{ .vop_access = ctfs_access_dir } }, +	{ VOPNAME_READDIR,	{ .vop_readdir = gfs_vop_readdir } }, +	{ VOPNAME_LOOKUP,	{ .vop_lookup = gfs_vop_lookup } }, +	{ VOPNAME_SEEK,		{ .vop_seek = fs_seek } }, +	{ VOPNAME_INACTIVE,	{ .vop_inactive = gfs_vop_inactive } },  	{ NULL, NULL }  }; diff --git a/usr/src/uts/common/fs/ctfs/ctfs_tmpl.c b/usr/src/uts/common/fs/ctfs/ctfs_tmpl.c index 329ae49fd9..28d0c93662 100644 --- a/usr/src/uts/common/fs/ctfs/ctfs_tmpl.c +++ b/usr/src/uts/common/fs/ctfs/ctfs_tmpl.c @@ -2,9 +2,8 @@   * CDDL HEADER START   *   * The contents of this file are subject to the terms of the - * Common Development and Distribution License, Version 1.0 only - * (the "License").  You may not use this file except in compliance - * with the License. + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License.   *   * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE   * or http://www.opensolaris.org/os/licensing. @@ -20,7 +19,7 @@   * CDDL HEADER END   */  /* - * Copyright 2005 Sun Microsystems, Inc.  All rights reserved. + * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.   * Use is subject to license terms.   */ @@ -31,6 +30,7 @@  #include <sys/time.h>  #include <sys/cred.h>  #include <sys/vfs.h> +#include <sys/vfs_opreg.h>  #include <sys/gfs.h>  #include <sys/vnode.h>  #include <sys/systm.h> @@ -164,13 +164,13 @@ ctfs_tmpl_inactive(vnode_t *vp, cred_t *cr)  }  const fs_operation_def_t ctfs_tops_tmpl[] = { -	{ VOPNAME_OPEN,		ctfs_tmpl_open }, -	{ VOPNAME_CLOSE,	ctfs_close }, -	{ VOPNAME_IOCTL,	ctfs_tmpl_ioctl }, -	{ VOPNAME_GETATTR,	ctfs_tmpl_getattr }, -	{ VOPNAME_ACCESS,	ctfs_access_readwrite }, -	{ VOPNAME_READDIR,	fs_notdir }, -	{ VOPNAME_LOOKUP,	fs_notdir }, -	{ VOPNAME_INACTIVE,	(fs_generic_func_p) ctfs_tmpl_inactive }, +	{ VOPNAME_OPEN,		{ .vop_open = ctfs_tmpl_open } }, +	{ VOPNAME_CLOSE,	{ .vop_close = ctfs_close } }, +	{ VOPNAME_IOCTL,	{ .vop_ioctl = ctfs_tmpl_ioctl } }, +	{ VOPNAME_GETATTR,	{ .vop_getattr = ctfs_tmpl_getattr } }, +	{ VOPNAME_ACCESS,	{ .vop_access = ctfs_access_readwrite } }, +	{ VOPNAME_READDIR,	{ .error = fs_notdir } }, +	{ VOPNAME_LOOKUP,	{ .error = fs_notdir } }, +	{ VOPNAME_INACTIVE,	{ .vop_inactive = ctfs_tmpl_inactive } },  	{ NULL, NULL }  }; diff --git a/usr/src/uts/common/fs/dev/sdev_ptsops.c b/usr/src/uts/common/fs/dev/sdev_ptsops.c index 8cdbee7985..64493f6402 100644 --- a/usr/src/uts/common/fs/dev/sdev_ptsops.c +++ b/usr/src/uts/common/fs/dev/sdev_ptsops.c @@ -42,6 +42,7 @@  #include <sys/policy.h>  #include <sys/ptms.h>  #include <sys/stat.h> +#include <sys/vfs_opreg.h>  #define	DEVPTS_UID_DEFAULT	0  #define	DEVPTS_GID_DEFAULT	3 @@ -408,14 +409,14 @@ devpts_setattr(struct vnode *vp, struct vattr *vap, int flags,   * avoid persisting permissions.   */  const fs_operation_def_t devpts_vnodeops_tbl[] = { -	VOPNAME_READDIR, devpts_readdir, -	VOPNAME_LOOKUP, devpts_lookup, -	VOPNAME_CREATE, devpts_create, -	VOPNAME_SETATTR, devpts_setattr, -	VOPNAME_REMOVE, fs_nosys, -	VOPNAME_MKDIR, fs_nosys, -	VOPNAME_RMDIR, fs_nosys, -	VOPNAME_SYMLINK, fs_nosys, -	VOPNAME_SETSECATTR, fs_nosys, -	NULL, NULL +	VOPNAME_READDIR,	{ .vop_readdir = devpts_readdir }, +	VOPNAME_LOOKUP,		{ .vop_lookup = devpts_lookup }, +	VOPNAME_CREATE,		{ .vop_create = devpts_create }, +	VOPNAME_SETATTR,	{ .vop_setattr = devpts_setattr }, +	VOPNAME_REMOVE,		{ .error = fs_nosys }, +	VOPNAME_MKDIR,		{ .error = fs_nosys }, +	VOPNAME_RMDIR,		{ .error = fs_nosys }, +	VOPNAME_SYMLINK,	{ .error = fs_nosys }, +	VOPNAME_SETSECATTR,	{ .error = fs_nosys }, +	NULL,			NULL  }; diff --git a/usr/src/uts/common/fs/dev/sdev_vfsops.c b/usr/src/uts/common/fs/dev/sdev_vfsops.c index 5baf66ea1d..ca971fe30c 100644 --- a/usr/src/uts/common/fs/dev/sdev_vfsops.c +++ b/usr/src/uts/common/fs/dev/sdev_vfsops.c @@ -37,6 +37,7 @@  #include <sys/time.h>  #include <sys/pathname.h>  #include <sys/vfs.h> +#include <sys/vfs_opreg.h>  #include <sys/vnode.h>  #include <sys/file.h>  #include <sys/stat.h> @@ -144,11 +145,11 @@ static int  devinit(int fstype, char *name)  {  	static const fs_operation_def_t dev_vfsops_tbl[] = { -		VFSNAME_MOUNT, sdev_mount,	/* mount file system */ -		VFSNAME_UNMOUNT, sdev_unmount,	/* unmount file system */ -		VFSNAME_ROOT, sdev_root,	/* get root vnode */ -		VFSNAME_STATVFS, sdev_statvfs,	/* get file system statistics */ -		NULL, NULL +		VFSNAME_MOUNT,		{ .vfs_mount = sdev_mount }, +		VFSNAME_UNMOUNT,	{ .vfs_unmount = sdev_unmount }, +		VFSNAME_ROOT, 		{ .vfs_root = sdev_root }, +		VFSNAME_STATVFS,	{ .vfs_statvfs = sdev_statvfs }, +		NULL,			NULL  	};  	int	error; diff --git a/usr/src/uts/common/fs/dev/sdev_vnops.c b/usr/src/uts/common/fs/dev/sdev_vnops.c index 4cad8b53e8..9591d100cf 100644 --- a/usr/src/uts/common/fs/dev/sdev_vnops.c +++ b/usr/src/uts/common/fs/dev/sdev_vnops.c @@ -44,6 +44,7 @@  #include <sys/time.h>  #include <sys/vfs.h>  #include <sys/vnode.h> +#include <sys/vfs_opreg.h>  #include <sys/file.h>  #include <sys/fcntl.h>  #include <sys/flock.h> @@ -1347,34 +1348,34 @@ sdev_pathconf(vnode_t *vp, int cmd, ulong_t *valp, cred_t *cr)  vnodeops_t *sdev_vnodeops;  const fs_operation_def_t sdev_vnodeops_tbl[] = { -	VOPNAME_OPEN, sdev_open, -	VOPNAME_CLOSE, sdev_close, -	VOPNAME_READ, sdev_read, -	VOPNAME_WRITE, sdev_write, -	VOPNAME_IOCTL, sdev_ioctl, -	VOPNAME_GETATTR, sdev_getattr, -	VOPNAME_SETATTR, sdev_setattr, -	VOPNAME_ACCESS, sdev_access, -	VOPNAME_LOOKUP, sdev_lookup, -	VOPNAME_CREATE, sdev_create, -	VOPNAME_RENAME, sdev_rename, -	VOPNAME_REMOVE, sdev_remove, -	VOPNAME_MKDIR, sdev_mkdir, -	VOPNAME_RMDIR, sdev_rmdir, -	VOPNAME_READDIR, sdev_readdir, -	VOPNAME_SYMLINK, sdev_symlink, -	VOPNAME_READLINK, sdev_readlink, /* readlink */ -	VOPNAME_INACTIVE, (fs_generic_func_p)sdev_inactive, -	VOPNAME_FID, sdev_fid, -	VOPNAME_RWLOCK, (fs_generic_func_p)sdev_rwlock, -	VOPNAME_RWUNLOCK, (fs_generic_func_p)sdev_rwunlock, -	VOPNAME_SEEK, sdev_seek, -	VOPNAME_FRLOCK, sdev_frlock, -	VOPNAME_PATHCONF, sdev_pathconf, -	VOPNAME_SETFL, sdev_setfl, -	VOPNAME_SETSECATTR, sdev_setsecattr,	/* setsecattr */ -	VOPNAME_GETSECATTR, sdev_getsecattr,	/* getsecattr */ -	NULL, NULL +	VOPNAME_OPEN,		{ .vop_open = sdev_open }, +	VOPNAME_CLOSE,		{ .vop_close = sdev_close }, +	VOPNAME_READ,		{ .vop_read = sdev_read }, +	VOPNAME_WRITE,		{ .vop_write = sdev_write }, +	VOPNAME_IOCTL,		{ .vop_ioctl = sdev_ioctl }, +	VOPNAME_GETATTR,	{ .vop_getattr = sdev_getattr }, +	VOPNAME_SETATTR,	{ .vop_setattr = sdev_setattr }, +	VOPNAME_ACCESS,		{ .vop_access = sdev_access }, +	VOPNAME_LOOKUP,		{ .vop_lookup = sdev_lookup }, +	VOPNAME_CREATE,		{ .vop_create = sdev_create }, +	VOPNAME_RENAME,		{ .vop_rename = sdev_rename }, +	VOPNAME_REMOVE,		{ .vop_remove = sdev_remove }, +	VOPNAME_MKDIR,		{ .vop_mkdir = sdev_mkdir }, +	VOPNAME_RMDIR,		{ .vop_rmdir = sdev_rmdir }, +	VOPNAME_READDIR,	{ .vop_readdir = sdev_readdir }, +	VOPNAME_SYMLINK,	{ .vop_symlink = sdev_symlink }, +	VOPNAME_READLINK,	{ .vop_readlink = sdev_readlink }, +	VOPNAME_INACTIVE,	{ .vop_inactive = sdev_inactive }, +	VOPNAME_FID,		{ .vop_fid = sdev_fid }, +	VOPNAME_RWLOCK,		{ .vop_rwlock = sdev_rwlock }, +	VOPNAME_RWUNLOCK,	{ .vop_rwunlock = sdev_rwunlock }, +	VOPNAME_SEEK,		{ .vop_seek = sdev_seek }, +	VOPNAME_FRLOCK,		{ .vop_frlock = sdev_frlock }, +	VOPNAME_PATHCONF,	{ .vop_pathconf = sdev_pathconf }, +	VOPNAME_SETFL,		{ .vop_setfl = sdev_setfl }, +	VOPNAME_SETSECATTR,	{ .vop_setsecattr = sdev_setsecattr }, +	VOPNAME_GETSECATTR,	{ .vop_getsecattr = sdev_getsecattr }, +	NULL,			NULL  };  int sdev_vnodeops_tbl_size = sizeof (sdev_vnodeops_tbl); diff --git a/usr/src/uts/common/fs/devfs/devfs_vfsops.c b/usr/src/uts/common/fs/devfs/devfs_vfsops.c index a0a69bb77d..2e83ba30cd 100644 --- a/usr/src/uts/common/fs/devfs/devfs_vfsops.c +++ b/usr/src/uts/common/fs/devfs/devfs_vfsops.c @@ -19,7 +19,7 @@   * CDDL HEADER END   */  /* - * Copyright 2006 Sun Microsystems, Inc.  All rights reserved. + * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.   * Use is subject to license terms.   */ @@ -42,6 +42,7 @@  #include <sys/time.h>  #include <sys/pathname.h>  #include <sys/vfs.h> +#include <sys/vfs_opreg.h>  #include <sys/vnode.h>  #include <sys/stat.h>  #include <sys/uio.h> @@ -129,13 +130,13 @@ static int  devfsinit(int fstype, char *name)  {  	static const fs_operation_def_t devfs_vfsops_template[] = { -		VFSNAME_MOUNT, devfs_mount, -		VFSNAME_UNMOUNT, devfs_unmount, -		VFSNAME_ROOT, devfs_root, -		VFSNAME_STATVFS, devfs_statvfs, -		VFSNAME_SYNC, (fs_generic_func_p) fs_sync, -		VFSNAME_MOUNTROOT, devfs_mountroot, -		NULL, NULL +		VFSNAME_MOUNT,		{ .vfs_mount = devfs_mount }, +		VFSNAME_UNMOUNT,	{ .vfs_unmount = devfs_unmount }, +		VFSNAME_ROOT,		{ .vfs_root = devfs_root }, +		VFSNAME_STATVFS,	{ .vfs_statvfs = devfs_statvfs }, +		VFSNAME_SYNC,		{ .vfs_sync = fs_sync }, +		VFSNAME_MOUNTROOT,	{ .vfs_mountroot = devfs_mountroot }, +		NULL,			NULL  	};  	int error;  	int dev; diff --git a/usr/src/uts/common/fs/devfs/devfs_vnops.c b/usr/src/uts/common/fs/devfs/devfs_vnops.c index 3d2d696b38..c55295b0f6 100644 --- a/usr/src/uts/common/fs/devfs/devfs_vnops.c +++ b/usr/src/uts/common/fs/devfs/devfs_vnops.c @@ -19,7 +19,7 @@   * CDDL HEADER END   */  /* - * Copyright 2006 Sun Microsystems, Inc.  All rights reserved. + * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.   * Use is subject to license terms.   */ @@ -44,6 +44,7 @@  #include <sys/time.h>  #include <sys/vfs.h>  #include <sys/vnode.h> +#include <sys/vfs_opreg.h>  #include <sys/file.h>  #include <sys/fcntl.h>  #include <sys/flock.h> @@ -1104,26 +1105,26 @@ devfs_seek(struct vnode *vp, offset_t ooff, offset_t *noffp)  vnodeops_t *dv_vnodeops;  const fs_operation_def_t dv_vnodeops_template[] = { -	VOPNAME_OPEN, devfs_open, -	VOPNAME_CLOSE, devfs_close, -	VOPNAME_READ, devfs_read, -	VOPNAME_WRITE, devfs_write, -	VOPNAME_IOCTL, devfs_ioctl, -	VOPNAME_GETATTR, devfs_getattr, -	VOPNAME_SETATTR, devfs_setattr, -	VOPNAME_ACCESS, devfs_access, -	VOPNAME_LOOKUP, devfs_lookup, -	VOPNAME_CREATE, devfs_create, -	VOPNAME_READDIR, devfs_readdir, -	VOPNAME_FSYNC, devfs_fsync, -	VOPNAME_INACTIVE, (fs_generic_func_p) devfs_inactive, -	VOPNAME_FID, devfs_fid, -	VOPNAME_RWLOCK, devfs_rwlock, -	VOPNAME_RWUNLOCK, (fs_generic_func_p) devfs_rwunlock, -	VOPNAME_SEEK, devfs_seek, -	VOPNAME_PATHCONF, devfs_pathconf, -	VOPNAME_DISPOSE, fs_error, -	VOPNAME_SETSECATTR, devfs_setsecattr, -	VOPNAME_GETSECATTR, devfs_getsecattr, -	NULL, NULL +	VOPNAME_OPEN,		{ .vop_open = devfs_open }, +	VOPNAME_CLOSE,		{ .vop_close = devfs_close }, +	VOPNAME_READ,		{ .vop_read = devfs_read }, +	VOPNAME_WRITE,		{ .vop_write = devfs_write }, +	VOPNAME_IOCTL,		{ .vop_ioctl = devfs_ioctl }, +	VOPNAME_GETATTR,	{ .vop_getattr = devfs_getattr }, +	VOPNAME_SETATTR,	{ .vop_setattr = devfs_setattr }, +	VOPNAME_ACCESS,		{ .vop_access = devfs_access }, +	VOPNAME_LOOKUP,		{ .vop_lookup = devfs_lookup }, +	VOPNAME_CREATE,		{ .vop_create = devfs_create }, +	VOPNAME_READDIR,	{ .vop_readdir = devfs_readdir }, +	VOPNAME_FSYNC,		{ .vop_fsync = devfs_fsync }, +	VOPNAME_INACTIVE,	{ .vop_inactive = devfs_inactive }, +	VOPNAME_FID,		{ .vop_fid = devfs_fid }, +	VOPNAME_RWLOCK,		{ .vop_rwlock = devfs_rwlock }, +	VOPNAME_RWUNLOCK,	{ .vop_rwunlock = devfs_rwunlock }, +	VOPNAME_SEEK,		{ .vop_seek = devfs_seek }, +	VOPNAME_PATHCONF,	{ .vop_pathconf = devfs_pathconf }, +	VOPNAME_DISPOSE,	{ .error = fs_error }, +	VOPNAME_SETSECATTR,	{ .vop_setsecattr = devfs_setsecattr }, +	VOPNAME_GETSECATTR,	{ .vop_getsecattr = devfs_getsecattr }, +	NULL,			NULL  }; diff --git a/usr/src/uts/common/fs/doorfs/door_sys.c b/usr/src/uts/common/fs/doorfs/door_sys.c index 46a251b538..c139032e70 100644 --- a/usr/src/uts/common/fs/doorfs/door_sys.c +++ b/usr/src/uts/common/fs/doorfs/door_sys.c @@ -2,9 +2,8 @@   * CDDL HEADER START   *   * The contents of this file are subject to the terms of the - * Common Development and Distribution License, Version 1.0 only - * (the "License").  You may not use this file except in compliance - * with the License. + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License.   *   * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE   * or http://www.opensolaris.org/os/licensing. @@ -21,7 +20,7 @@   */  /* - * Copyright 2005 Sun Microsystems, Inc.  All rights reserved. + * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.   * Use is subject to license terms.   */ @@ -48,6 +47,7 @@  #include <sys/fcntl.h>  #include <sys/vnode.h>  #include <sys/vfs.h> +#include <sys/vfs_opreg.h>  #include <sys/sobject.h>  #include <sys/schedctl.h>  #include <sys/callb.h> diff --git a/usr/src/uts/common/fs/doorfs/door_vnops.c b/usr/src/uts/common/fs/doorfs/door_vnops.c index 3e7b420533..6d61c34f30 100644 --- a/usr/src/uts/common/fs/doorfs/door_vnops.c +++ b/usr/src/uts/common/fs/doorfs/door_vnops.c @@ -19,7 +19,7 @@   * CDDL HEADER END   */  /* - * Copyright 2006 Sun Microsystems, Inc.  All rights reserved. + * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.   * Use is subject to license terms.   */ @@ -27,6 +27,7 @@  #include <sys/types.h>  #include <sys/vnode.h> +#include <sys/vfs_opreg.h>  #include <sys/door.h>  #include <sys/proc.h>  #include <sys/kmem.h> @@ -52,19 +53,19 @@ struct vfs door_vfs;  struct vnodeops *door_vnodeops;  const fs_operation_def_t door_vnodeops_template[] = { -	VOPNAME_OPEN, door_open, -	VOPNAME_CLOSE, door_close, -	VOPNAME_GETATTR, door_getattr, -	VOPNAME_ACCESS, door_access, -	VOPNAME_INACTIVE, (fs_generic_func_p) door_inactive, -	VOPNAME_FRLOCK, fs_error, -	VOPNAME_REALVP, door_realvp, -	VOPNAME_POLL, fs_error, -	VOPNAME_PATHCONF, fs_error, -	VOPNAME_DISPOSE, fs_error, -	VOPNAME_GETSECATTR, fs_error, -	VOPNAME_SHRLOCK, fs_error, -	NULL, NULL +	VOPNAME_OPEN,		{ .vop_open = door_open }, +	VOPNAME_CLOSE,		{ .vop_close = door_close }, +	VOPNAME_GETATTR,	{ .vop_getattr = door_getattr }, +	VOPNAME_ACCESS,		{ .vop_access = door_access }, +	VOPNAME_INACTIVE,	{ .vop_inactive = door_inactive }, +	VOPNAME_FRLOCK,		{ .error = fs_error }, +	VOPNAME_REALVP,		{ .vop_realvp = door_realvp }, +	VOPNAME_POLL,		{ .error = fs_error }, +	VOPNAME_PATHCONF,	{ .error = fs_error }, +	VOPNAME_DISPOSE,	{ .error = fs_error }, +	VOPNAME_GETSECATTR,	{ .error = fs_error }, +	VOPNAME_SHRLOCK,	{ .error = fs_error }, +	NULL,			NULL  };  /* ARGSUSED */ diff --git a/usr/src/uts/common/fs/fd/fdops.c b/usr/src/uts/common/fs/fd/fdops.c index 5d6f2f0a71..3033d0ae06 100644 --- a/usr/src/uts/common/fs/fd/fdops.c +++ b/usr/src/uts/common/fs/fd/fdops.c @@ -2,9 +2,8 @@   * CDDL HEADER START   *   * The contents of this file are subject to the terms of the - * Common Development and Distribution License, Version 1.0 only - * (the "License").  You may not use this file except in compliance - * with the License. + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License.   *   * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE   * or http://www.opensolaris.org/os/licensing. @@ -20,7 +19,7 @@   * CDDL HEADER END   */  /* - * Copyright 2004 Sun Microsystems, Inc.  All rights reserved. + * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.   * Use is subject to license terms.   */ @@ -47,6 +46,7 @@  #include <sys/systm.h>  #include <sys/uio.h>  #include <sys/vfs.h> +#include <sys/vfs_opreg.h>  #include <sys/vnode.h>  #include <sys/cred.h>  #include <sys/mntent.h> @@ -316,19 +316,19 @@ fdinactive(vnode_t *vp, cred_t *cr)  static struct vnodeops *fd_vnodeops;  static const fs_operation_def_t fd_vnodeops_template[] = { -	VOPNAME_OPEN, fdopen, -	VOPNAME_CLOSE, fdclose, -	VOPNAME_READ, fdread, -	VOPNAME_GETATTR, fdgetattr, -	VOPNAME_ACCESS, fdaccess, -	VOPNAME_LOOKUP, fdlookup, -	VOPNAME_CREATE, fdcreate, -	VOPNAME_READDIR, fdreaddir, -	VOPNAME_INACTIVE, (fs_generic_func_p) fdinactive, -	VOPNAME_FRLOCK, fs_error, -	VOPNAME_POLL, fs_error, -	VOPNAME_DISPOSE, fs_error, /* XXX - used to be default action instead */ -	NULL, NULL +	VOPNAME_OPEN,		{ .vop_open = fdopen }, +	VOPNAME_CLOSE,		{ .vop_close = fdclose }, +	VOPNAME_READ,		{ .vop_read = fdread }, +	VOPNAME_GETATTR,	{ .vop_getattr = fdgetattr }, +	VOPNAME_ACCESS,		{ .vop_access = fdaccess }, +	VOPNAME_LOOKUP,		{ .vop_lookup = fdlookup }, +	VOPNAME_CREATE,		{ .vop_create = fdcreate }, +	VOPNAME_READDIR,	{ .vop_readdir = fdreaddir }, +	VOPNAME_INACTIVE,	{ .vop_inactive = fdinactive }, +	VOPNAME_FRLOCK,		{ .error = fs_error }, +	VOPNAME_POLL,		{ .error = fs_error }, +	VOPNAME_DISPOSE,	{ .error = fs_error }, +	NULL,			NULL  };  static int @@ -477,11 +477,11 @@ int  fdinit(int fstype, char *name)  {  	static const fs_operation_def_t fd_vfsops_template[] = { -		VFSNAME_MOUNT, fdmount, -		VFSNAME_UNMOUNT, fdunmount, -		VFSNAME_ROOT, fdroot, -		VFSNAME_STATVFS, fdstatvfs, -		NULL, NULL +		VFSNAME_MOUNT,		{ .vfs_mount = fdmount }, +		VFSNAME_UNMOUNT,	{ .vfs_unmount = fdunmount }, +		VFSNAME_ROOT, 		{ .vfs_root = fdroot }, +		VFSNAME_STATVFS,	{ .vfs_statvfs = fdstatvfs }, +		NULL,			NULL  	};  	int error; diff --git a/usr/src/uts/common/fs/fem.c b/usr/src/uts/common/fs/fem.c index 25de365723..93cae4d737 100644 --- a/usr/src/uts/common/fs/fem.c +++ b/usr/src/uts/common/fs/fem.c @@ -19,7 +19,7 @@   * CDDL HEADER END   */  /* - * Copyright 2006 Sun Microsystems, Inc.  All rights reserved. + * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.   * Use is subject to license terms.   */  #pragma ident	"%Z%%M%	%I%	%E% SMI" @@ -38,7 +38,7 @@  #include <sys/fem.h>  #include <sys/vfs.h>  #include <sys/vnode.h> - +#include <sys/vfs_opreg.h>  #define	NNODES_DEFAULT	8	/* Default number of nodes in a fem_list */  /* @@ -77,7 +77,7 @@ int fsem_err();  #define	_FEMOPDEF(name, member)  \ -	{ VOPNAME_##name, offsetof(fem_t, vsop_##member), NULL, fem_err } +	{ VOPNAME_##name, offsetof(fem_t, femop_##member), NULL, fem_err }  static fs_operation_trans_def_t	fem_opdef[] = {  	_FEMOPDEF(OPEN,		open), @@ -181,7 +181,7 @@ static struct fs_operation_def fem_guard_ops[] = {  #define	_FSEMOPDEF(name, member)  \ -	{ VFSNAME_##name, offsetof(fsem_t, vfsop_##member), NULL, fsem_err } +	{ VFSNAME_##name, offsetof(fsem_t, fsemop_##member), NULL, fsem_err }  static fs_operation_trans_def_t fsem_opdef[] = {  	_FSEMOPDEF(MOUNT, 	mount), @@ -446,7 +446,7 @@ vhead_open(vnode_t **vpp, int mode, cred_t *cr)  		fem_unlock((*vpp)->v_femhead);  		farg.fa_vnode.vpp = vpp;  		farg.fa_fnode = femsp->feml_nodes + femsp->feml_tos; -		vsop_find(&farg, &func, int, &arg0, vop_open, vsop_open); +		vsop_find(&farg, &func, int, &arg0, vop_open, femop_open);  		errc = (*func)(arg0, mode, cr);  		fem_release(femsp);  	} @@ -472,7 +472,7 @@ vhead_close(vnode_t *vp, int flag, int count, offset_t offset, cred_t *cr)  		fem_unlock(vp->v_femhead);  		farg.fa_vnode.vp = vp;  		farg.fa_fnode = femsp->feml_nodes + femsp->feml_tos; -		vsop_find(&farg, &func, int, &arg0, vop_close, vsop_close); +		vsop_find(&farg, &func, int, &arg0, vop_close, femop_close);  		errc = (*func)(arg0, flag, count, offset, cr);  		fem_release(femsp);  	} @@ -499,7 +499,7 @@ vhead_read(vnode_t *vp, uio_t *uiop, int ioflag, cred_t *cr,  		fem_unlock(vp->v_femhead);  		farg.fa_vnode.vp = vp;  		farg.fa_fnode = femsp->feml_nodes + femsp->feml_tos; -		vsop_find(&farg, &func, int, &arg0, vop_read, vsop_read); +		vsop_find(&farg, &func, int, &arg0, vop_read, femop_read);  		errc = (*func)(arg0, uiop, ioflag, cr, ct);  		fem_release(femsp);  	} @@ -526,7 +526,7 @@ vhead_write(vnode_t *vp, uio_t *uiop, int ioflag, cred_t *cr,  		fem_unlock(vp->v_femhead);  		farg.fa_vnode.vp = vp;  		farg.fa_fnode = femsp->feml_nodes + femsp->feml_tos; -		vsop_find(&farg, &func, int, &arg0, vop_write, vsop_write); +		vsop_find(&farg, &func, int, &arg0, vop_write, femop_write);  		errc = (*func)(arg0, uiop, ioflag, cr, ct);  		fem_release(femsp);  	} @@ -553,7 +553,7 @@ vhead_ioctl(vnode_t *vp, int cmd, intptr_t arg, int flag, cred_t *cr,  		fem_unlock(vp->v_femhead);  		farg.fa_vnode.vp = vp;  		farg.fa_fnode = femsp->feml_nodes + femsp->feml_tos; -		vsop_find(&farg, &func, int, &arg0, vop_ioctl, vsop_ioctl); +		vsop_find(&farg, &func, int, &arg0, vop_ioctl, femop_ioctl);  		errc = (*func)(arg0, cmd, arg, flag, cr, rvalp);  		fem_release(femsp);  	} @@ -579,7 +579,7 @@ vhead_setfl(vnode_t *vp, int oflags, int nflags, cred_t *cr)  		fem_unlock(vp->v_femhead);  		farg.fa_vnode.vp = vp;  		farg.fa_fnode = femsp->feml_nodes + femsp->feml_tos; -		vsop_find(&farg, &func, int, &arg0, vop_setfl, vsop_setfl); +		vsop_find(&farg, &func, int, &arg0, vop_setfl, femop_setfl);  		errc = (*func)(arg0, oflags, nflags, cr);  		fem_release(femsp);  	} @@ -606,7 +606,7 @@ vhead_getattr(vnode_t *vp, vattr_t *vap, int flags, cred_t *cr)  		farg.fa_vnode.vp = vp;  		farg.fa_fnode = femsp->feml_nodes + femsp->feml_tos;  		vsop_find(&farg, &func, int, &arg0, vop_getattr, -			vsop_getattr); +			femop_getattr);  		errc = (*func)(arg0, vap, flags, cr);  		fem_release(femsp);  	} @@ -634,7 +634,7 @@ vhead_setattr(vnode_t *vp, vattr_t *vap, int flags, cred_t *cr,  		farg.fa_vnode.vp = vp;  		farg.fa_fnode = femsp->feml_nodes + femsp->feml_tos;  		vsop_find(&farg, &func, int, &arg0, vop_setattr, -			vsop_setattr); +			femop_setattr);  		errc = (*func)(arg0, vap, flags, cr, ct);  		fem_release(femsp);  	} @@ -661,7 +661,7 @@ vhead_access(vnode_t *vp, int mode, int flags, cred_t *cr)  		farg.fa_vnode.vp = vp;  		farg.fa_fnode = femsp->feml_nodes + femsp->feml_tos;  		vsop_find(&farg, &func, int, &arg0, vop_access, -			vsop_access); +			femop_access);  		errc = (*func)(arg0, mode, flags, cr);  		fem_release(femsp);  	} @@ -689,7 +689,7 @@ vhead_lookup(vnode_t *dvp, char *nm, vnode_t **vpp, pathname_t *pnp,  		farg.fa_vnode.vp = dvp;  		farg.fa_fnode = femsp->feml_nodes + femsp->feml_tos;  		vsop_find(&farg, &func, int, &arg0, vop_lookup, -			vsop_lookup); +			femop_lookup);  		errc = (*func)(arg0, nm, vpp, pnp, flags, rdir, cr);  		fem_release(femsp);  	} @@ -717,7 +717,7 @@ vhead_create(vnode_t *dvp, char *name, vattr_t *vap, vcexcl_t excl,  		farg.fa_vnode.vp = dvp;  		farg.fa_fnode = femsp->feml_nodes + femsp->feml_tos;  		vsop_find(&farg, &func, int, &arg0, vop_create, -			vsop_create); +			femop_create);  		errc = (*func)(arg0, name, vap, excl, mode, vpp, cr, flag);  		fem_release(femsp);  	} @@ -744,7 +744,7 @@ vhead_remove(vnode_t *dvp, char *nm, cred_t *cr)  		farg.fa_vnode.vp = dvp;  		farg.fa_fnode = femsp->feml_nodes + femsp->feml_tos;  		vsop_find(&farg, &func, int, &arg0, vop_remove, -			vsop_remove); +			femop_remove);  		errc = (*func)(arg0, nm, cr);  		fem_release(femsp);  	} @@ -770,7 +770,7 @@ vhead_link(vnode_t *tdvp, vnode_t *svp, char *tnm, cred_t *cr)  		fem_unlock(tdvp->v_femhead);  		farg.fa_vnode.vp = tdvp;  		farg.fa_fnode = femsp->feml_nodes + femsp->feml_tos; -		vsop_find(&farg, &func, int, &arg0, vop_link, vsop_link); +		vsop_find(&farg, &func, int, &arg0, vop_link, femop_link);  		errc = (*func)(arg0, svp, tnm, cr);  		fem_release(femsp);  	} @@ -798,7 +798,7 @@ vhead_rename(vnode_t *sdvp, char *snm, vnode_t *tdvp, char *tnm,  		farg.fa_vnode.vp = sdvp;  		farg.fa_fnode = femsp->feml_nodes + femsp->feml_tos;  		vsop_find(&farg, &func, int, &arg0, vop_rename, -			vsop_rename); +			femop_rename);  		errc = (*func)(arg0, snm, tdvp, tnm, cr);  		fem_release(femsp);  	} @@ -825,7 +825,7 @@ vhead_mkdir(vnode_t *dvp, char *dirname, vattr_t *vap, vnode_t **vpp,  		fem_unlock(dvp->v_femhead);  		farg.fa_vnode.vp = dvp;  		farg.fa_fnode = femsp->feml_nodes + femsp->feml_tos; -		vsop_find(&farg, &func, int, &arg0, vop_mkdir, vsop_mkdir); +		vsop_find(&farg, &func, int, &arg0, vop_mkdir, femop_mkdir);  		errc = (*func)(arg0, dirname, vap, vpp, cr);  		fem_release(femsp);  	} @@ -851,7 +851,7 @@ vhead_rmdir(vnode_t *dvp, char *nm, vnode_t *cdir, cred_t *cr)  		fem_unlock(dvp->v_femhead);  		farg.fa_vnode.vp = dvp;  		farg.fa_fnode = femsp->feml_nodes + femsp->feml_tos; -		vsop_find(&farg, &func, int, &arg0, vop_rmdir, vsop_rmdir); +		vsop_find(&farg, &func, int, &arg0, vop_rmdir, femop_rmdir);  		errc = (*func)(arg0, nm, cdir, cr);  		fem_release(femsp);  	} @@ -878,7 +878,7 @@ vhead_readdir(vnode_t *vp, uio_t *uiop, cred_t *cr, int *eofp)  		farg.fa_vnode.vp = vp;  		farg.fa_fnode = femsp->feml_nodes + femsp->feml_tos;  		vsop_find(&farg, &func, int, &arg0, vop_readdir, -			vsop_readdir); +			femop_readdir);  		errc = (*func)(arg0, uiop, cr, eofp);  		fem_release(femsp);  	} @@ -906,7 +906,7 @@ vhead_symlink(vnode_t *dvp, char *linkname, vattr_t *vap, char *target,  		farg.fa_vnode.vp = dvp;  		farg.fa_fnode = femsp->feml_nodes + femsp->feml_tos;  		vsop_find(&farg, &func, int, &arg0, vop_symlink, -			vsop_symlink); +			femop_symlink);  		errc = (*func)(arg0, linkname, vap, target, cr);  		fem_release(femsp);  	} @@ -933,7 +933,7 @@ vhead_readlink(vnode_t *vp, uio_t *uiop, cred_t *cr)  		farg.fa_vnode.vp = vp;  		farg.fa_fnode = femsp->feml_nodes + femsp->feml_tos;  		vsop_find(&farg, &func, int, &arg0, vop_readlink, -			vsop_readlink); +			femop_readlink);  		errc = (*func)(arg0, uiop, cr);  		fem_release(femsp);  	} @@ -959,7 +959,7 @@ vhead_fsync(vnode_t *vp, int syncflag, cred_t *cr)  		fem_unlock(vp->v_femhead);  		farg.fa_vnode.vp = vp;  		farg.fa_fnode = femsp->feml_nodes + femsp->feml_tos; -		vsop_find(&farg, &func, int, &arg0, vop_fsync, vsop_fsync); +		vsop_find(&farg, &func, int, &arg0, vop_fsync, femop_fsync);  		errc = (*func)(arg0, syncflag, cr);  		fem_release(femsp);  	} @@ -985,7 +985,7 @@ vhead_inactive(vnode_t *vp, cred_t *cr)  		farg.fa_vnode.vp = vp;  		farg.fa_fnode = femsp->feml_nodes + femsp->feml_tos;  		vsop_find(&farg, &func, void, &arg0, vop_inactive, -			vsop_inactive); +			femop_inactive);  		(*func)(arg0, cr);  		fem_release(femsp);  	} @@ -1010,7 +1010,7 @@ vhead_fid(vnode_t *vp, fid_t *fidp)  		fem_unlock(vp->v_femhead);  		farg.fa_vnode.vp = vp;  		farg.fa_fnode = femsp->feml_nodes + femsp->feml_tos; -		vsop_find(&farg, &func, int, &arg0, vop_fid, vsop_fid); +		vsop_find(&farg, &func, int, &arg0, vop_fid, femop_fid);  		errc = (*func)(arg0, fidp);  		fem_release(femsp);  	} @@ -1037,7 +1037,7 @@ vhead_rwlock(vnode_t *vp, int write_lock, caller_context_t *ct)  		farg.fa_vnode.vp = vp;  		farg.fa_fnode = femsp->feml_nodes + femsp->feml_tos;  		vsop_find(&farg, &func, int, &arg0, vop_rwlock, -			vsop_rwlock); +			femop_rwlock);  		errc = (*func)(arg0, write_lock, ct);  		fem_release(femsp);  	} @@ -1063,7 +1063,7 @@ vhead_rwunlock(vnode_t *vp, int write_lock, caller_context_t *ct)  		farg.fa_vnode.vp = vp;  		farg.fa_fnode = femsp->feml_nodes + femsp->feml_tos;  		vsop_find(&farg, &func, void, &arg0, vop_rwunlock, -			vsop_rwunlock); +			femop_rwunlock);  		(*func)(arg0, write_lock, ct);  		fem_release(femsp);  	} @@ -1088,7 +1088,7 @@ vhead_seek(vnode_t *vp, offset_t ooff, offset_t *noffp)  		fem_unlock(vp->v_femhead);  		farg.fa_vnode.vp = vp;  		farg.fa_fnode = femsp->feml_nodes + femsp->feml_tos; -		vsop_find(&farg, &func, int, &arg0, vop_seek, vsop_seek); +		vsop_find(&farg, &func, int, &arg0, vop_seek, femop_seek);  		errc = (*func)(arg0, ooff, noffp);  		fem_release(femsp);  	} @@ -1114,7 +1114,7 @@ vhead_cmp(vnode_t *vp1, vnode_t *vp2)  		fem_unlock(vp1->v_femhead);  		farg.fa_vnode.vp = vp1;  		farg.fa_fnode = femsp->feml_nodes + femsp->feml_tos; -		vsop_find(&farg, &func, int, &arg0, vop_cmp, vsop_cmp); +		vsop_find(&farg, &func, int, &arg0, vop_cmp, femop_cmp);  		errc = (*func)(arg0, vp2);  		fem_release(femsp);  	} @@ -1142,7 +1142,7 @@ vhead_frlock(vnode_t *vp, int cmd, struct flock64 *bfp, int flag,  		farg.fa_vnode.vp = vp;  		farg.fa_fnode = femsp->feml_nodes + femsp->feml_tos;  		vsop_find(&farg, &func, int, &arg0, vop_frlock, -			vsop_frlock); +			femop_frlock);  		errc = (*func)(arg0, cmd, bfp, flag, offset, flk_cbp, cr);  		fem_release(femsp);  	} @@ -1169,7 +1169,7 @@ vhead_space(vnode_t *vp, int cmd, struct flock64 *bfp, int flag,  		fem_unlock(vp->v_femhead);  		farg.fa_vnode.vp = vp;  		farg.fa_fnode = femsp->feml_nodes + femsp->feml_tos; -		vsop_find(&farg, &func, int, &arg0, vop_space, vsop_space); +		vsop_find(&farg, &func, int, &arg0, vop_space, femop_space);  		errc = (*func)(arg0, cmd, bfp, flag, offset, cr, ct);  		fem_release(femsp);  	} @@ -1196,7 +1196,7 @@ vhead_realvp(vnode_t *vp, vnode_t **vpp)  		farg.fa_vnode.vp = vp;  		farg.fa_fnode = femsp->feml_nodes + femsp->feml_tos;  		vsop_find(&farg, &func, int, &arg0, vop_realvp, -			vsop_realvp); +			femop_realvp);  		errc = (*func)(arg0, vpp);  		fem_release(femsp);  	} @@ -1226,7 +1226,7 @@ vhead_getpage(vnode_t *vp, offset_t off, size_t len, uint_t *protp,  		farg.fa_vnode.vp = vp;  		farg.fa_fnode = femsp->feml_nodes + femsp->feml_tos;  		vsop_find(&farg, &func, int, &arg0, vop_getpage, -			vsop_getpage); +			femop_getpage);  		errc = (*func)(arg0, off, len, protp, plarr, plsz, seg,  			addr, rw, cr);  		fem_release(femsp); @@ -1254,7 +1254,7 @@ vhead_putpage(vnode_t *vp, offset_t off, size_t len, int flags, cred_t *cr)  		farg.fa_vnode.vp = vp;  		farg.fa_fnode = femsp->feml_nodes + femsp->feml_tos;  		vsop_find(&farg, &func, int, &arg0, vop_putpage, -			vsop_putpage); +			femop_putpage);  		errc = (*func)(arg0, off, len, flags, cr);  		fem_release(femsp);  	} @@ -1283,7 +1283,7 @@ vhead_map(vnode_t *vp, offset_t off, struct as *as, caddr_t *addrp,  		fem_unlock(vp->v_femhead);  		farg.fa_vnode.vp = vp;  		farg.fa_fnode = femsp->feml_nodes + femsp->feml_tos; -		vsop_find(&farg, &func, int, &arg0, vop_map, vsop_map); +		vsop_find(&farg, &func, int, &arg0, vop_map, femop_map);  		errc = (*func)(arg0, off, as, addrp, len, prot, maxprot,  			flags, cr);  		fem_release(femsp); @@ -1314,7 +1314,7 @@ vhead_addmap(vnode_t *vp, offset_t off, struct as *as, caddr_t addr,  		farg.fa_vnode.vp = vp;  		farg.fa_fnode = femsp->feml_nodes + femsp->feml_tos;  		vsop_find(&farg, &func, int, &arg0, vop_addmap, -			vsop_addmap); +			femop_addmap);  		errc = (*func)(arg0, off, as, addr, len, prot, maxprot,  			flags, cr);  		fem_release(femsp); @@ -1344,7 +1344,7 @@ vhead_delmap(vnode_t *vp, offset_t off, struct as *as, caddr_t addr,  		farg.fa_vnode.vp = vp;  		farg.fa_fnode = femsp->feml_nodes + femsp->feml_tos;  		vsop_find(&farg, &func, int, &arg0, vop_delmap, -			vsop_delmap); +			femop_delmap);  		errc = (*func)(arg0, off, as, addr, len, prot, maxprot,  			flags, cr);  		fem_release(femsp); @@ -1372,7 +1372,7 @@ vhead_poll(vnode_t *vp, short events, int anyyet, short *reventsp,  		fem_unlock(vp->v_femhead);  		farg.fa_vnode.vp = vp;  		farg.fa_fnode = femsp->feml_nodes + femsp->feml_tos; -		vsop_find(&farg, &func, int, &arg0, vop_poll, vsop_poll); +		vsop_find(&farg, &func, int, &arg0, vop_poll, femop_poll);  		errc = (*func)(arg0, events, anyyet, reventsp, phpp);  		fem_release(femsp);  	} @@ -1398,7 +1398,7 @@ vhead_dump(vnode_t *vp, caddr_t addr, int lbdn, int dblks)  		fem_unlock(vp->v_femhead);  		farg.fa_vnode.vp = vp;  		farg.fa_fnode = femsp->feml_nodes + femsp->feml_tos; -		vsop_find(&farg, &func, int, &arg0, vop_dump, vsop_dump); +		vsop_find(&farg, &func, int, &arg0, vop_dump, femop_dump);  		errc = (*func)(arg0, addr, lbdn, dblks);  		fem_release(femsp);  	} @@ -1425,7 +1425,7 @@ vhead_pathconf(vnode_t *vp, int cmd, ulong_t *valp, cred_t *cr)  		farg.fa_vnode.vp = vp;  		farg.fa_fnode = femsp->feml_nodes + femsp->feml_tos;  		vsop_find(&farg, &func, int, &arg0, vop_pathconf, -			vsop_pathconf); +			femop_pathconf);  		errc = (*func)(arg0, cmd, valp, cr);  		fem_release(femsp);  	} @@ -1453,7 +1453,7 @@ vhead_pageio(vnode_t *vp, struct page *pp, u_offset_t io_off,  		farg.fa_vnode.vp = vp;  		farg.fa_fnode = femsp->feml_nodes + femsp->feml_tos;  		vsop_find(&farg, &func, int, &arg0, vop_pageio, -			vsop_pageio); +			femop_pageio);  		errc = (*func)(arg0, pp, io_off, io_len, flags, cr);  		fem_release(femsp);  	} @@ -1480,7 +1480,7 @@ vhead_dumpctl(vnode_t *vp, int action, int *blkp)  		farg.fa_vnode.vp = vp;  		farg.fa_fnode = femsp->feml_nodes + femsp->feml_tos;  		vsop_find(&farg, &func, int, &arg0, vop_dumpctl, -			vsop_dumpctl); +			femop_dumpctl);  		errc = (*func)(arg0, action, blkp);  		fem_release(femsp);  	} @@ -1506,7 +1506,7 @@ vhead_dispose(vnode_t *vp, struct page *pp, int flag, int dn, cred_t *cr)  		farg.fa_vnode.vp = vp;  		farg.fa_fnode = femsp->feml_nodes + femsp->feml_tos;  		vsop_find(&farg, &func, void, &arg0, vop_dispose, -			vsop_dispose); +			femop_dispose);  		(*func)(arg0, pp, flag, dn, cr);  		fem_release(femsp);  	} @@ -1532,7 +1532,7 @@ vhead_setsecattr(vnode_t *vp, vsecattr_t *vsap, int flag, cred_t *cr)  		farg.fa_vnode.vp = vp;  		farg.fa_fnode = femsp->feml_nodes + femsp->feml_tos;  		vsop_find(&farg, &func, int, &arg0, vop_setsecattr, -			vsop_setsecattr); +			femop_setsecattr);  		errc = (*func)(arg0, vsap, flag, cr);  		fem_release(femsp);  	} @@ -1559,7 +1559,7 @@ vhead_getsecattr(vnode_t *vp, vsecattr_t *vsap, int flag, cred_t *cr)  		farg.fa_vnode.vp = vp;  		farg.fa_fnode = femsp->feml_nodes + femsp->feml_tos;  		vsop_find(&farg, &func, int, &arg0, vop_getsecattr, -			vsop_getsecattr); +			femop_getsecattr);  		errc = (*func)(arg0, vsap, flag, cr);  		fem_release(femsp);  	} @@ -1587,7 +1587,7 @@ vhead_shrlock(vnode_t *vp, int cmd, struct shrlock *shr, int flag,  		farg.fa_vnode.vp = vp;  		farg.fa_fnode = femsp->feml_nodes + femsp->feml_tos;  		vsop_find(&farg, &func, int, &arg0, vop_shrlock, -			vsop_shrlock); +			femop_shrlock);  		errc = (*func)(arg0, cmd, shr, flag, cr);  		fem_release(femsp);  	} @@ -1614,7 +1614,7 @@ vhead_vnevent(vnode_t *vp, vnevent_t vnevent)  		farg.fa_vnode.vp = vp;  		farg.fa_fnode = femsp->feml_nodes + femsp->feml_tos;  		vsop_find(&farg, &func, int, &arg0, vop_vnevent, -			vsop_vnevent); +			femop_vnevent);  		errc = (*func)(arg0, vnevent);  		fem_release(femsp);  	} @@ -1642,7 +1642,7 @@ fshead_mount(vfs_t *vfsp, vnode_t *mvp, struct mounta *uap, cred_t *cr)  		farg.fa_vnode.vfsp = vfsp;  		farg.fa_fnode = femsp->feml_nodes + femsp->feml_tos;  		vfsop_find(&farg, &func, int, &arg0, vfs_mount, -			vfsop_mount); +			fsemop_mount);  		errc = (*func)(arg0, mvp, uap, cr);  		fem_release(femsp);  	} @@ -1670,7 +1670,7 @@ fshead_unmount(vfs_t *vfsp, int flag, cred_t *cr)  		farg.fa_vnode.vfsp = vfsp;  		farg.fa_fnode = femsp->feml_nodes + femsp->feml_tos;  		vfsop_find(&farg, &func, int, &arg0, vfs_unmount, -			vfsop_unmount); +			fsemop_unmount);  		errc = (*func)(arg0, flag, cr);  		fem_release(femsp);  	} @@ -1697,7 +1697,7 @@ fshead_root(vfs_t *vfsp, vnode_t **vpp)  		fem_unlock(vfsp->vfs_femhead);  		farg.fa_vnode.vfsp = vfsp;  		farg.fa_fnode = femsp->feml_nodes + femsp->feml_tos; -		vfsop_find(&farg, &func, int, &arg0, vfs_root, vfsop_root); +		vfsop_find(&farg, &func, int, &arg0, vfs_root, fsemop_root);  		errc = (*func)(arg0, vpp);  		fem_release(femsp);  	} @@ -1725,7 +1725,7 @@ fshead_statvfs(vfs_t *vfsp, statvfs64_t *sp)  		farg.fa_vnode.vfsp = vfsp;  		farg.fa_fnode = femsp->feml_nodes + femsp->feml_tos;  		vfsop_find(&farg, &func, int, &arg0, vfs_statvfs, -			vfsop_statvfs); +			fsemop_statvfs);  		errc = (*func)(arg0, sp);  		fem_release(femsp);  	} @@ -1752,7 +1752,7 @@ fshead_sync(vfs_t *vfsp, short flag, cred_t *cr)  		fem_unlock(vfsp->vfs_femhead);  		farg.fa_vnode.vfsp = vfsp;  		farg.fa_fnode = femsp->feml_nodes + femsp->feml_tos; -		vfsop_find(&farg, &func, int, &arg0, vfs_sync, vfsop_sync); +		vfsop_find(&farg, &func, int, &arg0, vfs_sync, fsemop_sync);  		errc = (*func)(arg0, flag, cr);  		fem_release(femsp);  	} @@ -1779,7 +1779,7 @@ fshead_vget(vfs_t *vfsp, vnode_t **vpp, fid_t *fidp)  		fem_unlock(vfsp->vfs_femhead);  		farg.fa_vnode.vfsp = vfsp;  		farg.fa_fnode = femsp->feml_nodes + femsp->feml_tos; -		vfsop_find(&farg, &func, int, &arg0, vfs_vget, vfsop_vget); +		vfsop_find(&farg, &func, int, &arg0, vfs_vget, fsemop_vget);  		errc = (*func)(arg0, vpp, fidp);  		fem_release(femsp);  	} @@ -1807,7 +1807,7 @@ fshead_mountroot(vfs_t *vfsp, enum whymountroot reason)  		farg.fa_vnode.vfsp = vfsp;  		farg.fa_fnode = femsp->feml_nodes + femsp->feml_tos;  		vfsop_find(&farg, &func, int, &arg0, vfs_mountroot, -			vfsop_mountroot); +			fsemop_mountroot);  		errc = (*func)(arg0, reason);  		fem_release(femsp);  	} @@ -1834,7 +1834,7 @@ fshead_freevfs(vfs_t *vfsp)  		farg.fa_vnode.vfsp = vfsp;  		farg.fa_fnode = femsp->feml_nodes + femsp->feml_tos;  		vfsop_find(&farg, &func, void, &arg0, vfs_freevfs, -			vfsop_freevfs); +			fsemop_freevfs);  		(*func)(arg0);  		fem_release(femsp);  	} @@ -1861,7 +1861,7 @@ fshead_vnstate(vfs_t *vfsp, vnode_t *vp, vntrans_t nstate)  		farg.fa_vnode.vfsp = vfsp;  		farg.fa_fnode = femsp->feml_nodes + femsp->feml_tos;  		vfsop_find(&farg, &func, int, &arg0, vfs_vnstate, -			vfsop_vnstate); +			fsemop_vnstate);  		errc = (*func)(arg0, vp, nstate);  		fem_release(femsp);  	} @@ -1965,7 +1965,7 @@ vnext_open(femarg_t *vf, int mode, cred_t *cr)  	ASSERT(vf != NULL);  	vf->fa_fnode--; -	vsop_find(vf, &func, int, &arg0, vop_open, vsop_open); +	vsop_find(vf, &func, int, &arg0, vop_open, femop_open);  	ASSERT(func != NULL);  	ASSERT(arg0 != NULL);  	return ((*func)(arg0, mode, cr)); @@ -1979,7 +1979,7 @@ vnext_close(femarg_t *vf, int flag, int count, offset_t offset, cred_t *cr)  	ASSERT(vf != NULL);  	vf->fa_fnode--; -	vsop_find(vf, &func, int, &arg0, vop_close, vsop_close); +	vsop_find(vf, &func, int, &arg0, vop_close, femop_close);  	ASSERT(func != NULL);  	ASSERT(arg0 != NULL);  	return ((*func)(arg0, flag, count, offset, cr)); @@ -1994,7 +1994,7 @@ vnext_read(femarg_t *vf, uio_t *uiop, int ioflag, cred_t *cr,  	ASSERT(vf != NULL);  	vf->fa_fnode--; -	vsop_find(vf, &func, int, &arg0, vop_read, vsop_read); +	vsop_find(vf, &func, int, &arg0, vop_read, femop_read);  	ASSERT(func != NULL);  	ASSERT(arg0 != NULL);  	return ((*func)(arg0, uiop, ioflag, cr, ct)); @@ -2009,7 +2009,7 @@ vnext_write(femarg_t *vf, uio_t *uiop, int ioflag, cred_t *cr,  	ASSERT(vf != NULL);  	vf->fa_fnode--; -	vsop_find(vf, &func, int, &arg0, vop_write, vsop_write); +	vsop_find(vf, &func, int, &arg0, vop_write, femop_write);  	ASSERT(func != NULL);  	ASSERT(arg0 != NULL);  	return ((*func)(arg0, uiop, ioflag, cr, ct)); @@ -2024,7 +2024,7 @@ vnext_ioctl(femarg_t *vf, int cmd, intptr_t arg, int flag, cred_t *cr,  	ASSERT(vf != NULL);  	vf->fa_fnode--; -	vsop_find(vf, &func, int, &arg0, vop_ioctl, vsop_ioctl); +	vsop_find(vf, &func, int, &arg0, vop_ioctl, femop_ioctl);  	ASSERT(func != NULL);  	ASSERT(arg0 != NULL);  	return ((*func)(arg0, cmd, arg, flag, cr, rvalp)); @@ -2038,7 +2038,7 @@ vnext_setfl(femarg_t *vf, int oflags, int nflags, cred_t *cr)  	ASSERT(vf != NULL);  	vf->fa_fnode--; -	vsop_find(vf, &func, int, &arg0, vop_setfl, vsop_setfl); +	vsop_find(vf, &func, int, &arg0, vop_setfl, femop_setfl);  	ASSERT(func != NULL);  	ASSERT(arg0 != NULL);  	return ((*func)(arg0, oflags, nflags, cr)); @@ -2052,7 +2052,7 @@ vnext_getattr(femarg_t *vf, vattr_t *vap, int flags, cred_t *cr)  	ASSERT(vf != NULL);  	vf->fa_fnode--; -	vsop_find(vf, &func, int, &arg0, vop_getattr, vsop_getattr); +	vsop_find(vf, &func, int, &arg0, vop_getattr, femop_getattr);  	ASSERT(func != NULL);  	ASSERT(arg0 != NULL);  	return ((*func)(arg0, vap, flags, cr)); @@ -2067,7 +2067,7 @@ vnext_setattr(femarg_t *vf, vattr_t *vap, int flags, cred_t *cr,  	ASSERT(vf != NULL);  	vf->fa_fnode--; -	vsop_find(vf, &func, int, &arg0, vop_setattr, vsop_setattr); +	vsop_find(vf, &func, int, &arg0, vop_setattr, femop_setattr);  	ASSERT(func != NULL);  	ASSERT(arg0 != NULL);  	return ((*func)(arg0, vap, flags, cr, ct)); @@ -2081,7 +2081,7 @@ vnext_access(femarg_t *vf, int mode, int flags, cred_t *cr)  	ASSERT(vf != NULL);  	vf->fa_fnode--; -	vsop_find(vf, &func, int, &arg0, vop_access, vsop_access); +	vsop_find(vf, &func, int, &arg0, vop_access, femop_access);  	ASSERT(func != NULL);  	ASSERT(arg0 != NULL);  	return ((*func)(arg0, mode, flags, cr)); @@ -2096,7 +2096,7 @@ vnext_lookup(femarg_t *vf, char *nm, vnode_t **vpp, pathname_t *pnp,  	ASSERT(vf != NULL);  	vf->fa_fnode--; -	vsop_find(vf, &func, int, &arg0, vop_lookup, vsop_lookup); +	vsop_find(vf, &func, int, &arg0, vop_lookup, femop_lookup);  	ASSERT(func != NULL);  	ASSERT(arg0 != NULL);  	return ((*func)(arg0, nm, vpp, pnp, flags, rdir, cr)); @@ -2111,7 +2111,7 @@ vnext_create(femarg_t *vf, char *name, vattr_t *vap, vcexcl_t excl,  	ASSERT(vf != NULL);  	vf->fa_fnode--; -	vsop_find(vf, &func, int, &arg0, vop_create, vsop_create); +	vsop_find(vf, &func, int, &arg0, vop_create, femop_create);  	ASSERT(func != NULL);  	ASSERT(arg0 != NULL);  	return ((*func)(arg0, name, vap, excl, mode, vpp, cr, flag)); @@ -2125,7 +2125,7 @@ vnext_remove(femarg_t *vf, char *nm, cred_t *cr)  	ASSERT(vf != NULL);  	vf->fa_fnode--; -	vsop_find(vf, &func, int, &arg0, vop_remove, vsop_remove); +	vsop_find(vf, &func, int, &arg0, vop_remove, femop_remove);  	ASSERT(func != NULL);  	ASSERT(arg0 != NULL);  	return ((*func)(arg0, nm, cr)); @@ -2139,7 +2139,7 @@ vnext_link(femarg_t *vf, vnode_t *svp, char *tnm, cred_t *cr)  	ASSERT(vf != NULL);  	vf->fa_fnode--; -	vsop_find(vf, &func, int, &arg0, vop_link, vsop_link); +	vsop_find(vf, &func, int, &arg0, vop_link, femop_link);  	ASSERT(func != NULL);  	ASSERT(arg0 != NULL);  	return ((*func)(arg0, svp, tnm, cr)); @@ -2153,7 +2153,7 @@ vnext_rename(femarg_t *vf, char *snm, vnode_t *tdvp, char *tnm, cred_t *cr)  	ASSERT(vf != NULL);  	vf->fa_fnode--; -	vsop_find(vf, &func, int, &arg0, vop_rename, vsop_rename); +	vsop_find(vf, &func, int, &arg0, vop_rename, femop_rename);  	ASSERT(func != NULL);  	ASSERT(arg0 != NULL);  	return ((*func)(arg0, snm, tdvp, tnm, cr)); @@ -2168,7 +2168,7 @@ vnext_mkdir(femarg_t *vf, char *dirname, vattr_t *vap, vnode_t **vpp,  	ASSERT(vf != NULL);  	vf->fa_fnode--; -	vsop_find(vf, &func, int, &arg0, vop_mkdir, vsop_mkdir); +	vsop_find(vf, &func, int, &arg0, vop_mkdir, femop_mkdir);  	ASSERT(func != NULL);  	ASSERT(arg0 != NULL);  	return ((*func)(arg0, dirname, vap, vpp, cr)); @@ -2182,7 +2182,7 @@ vnext_rmdir(femarg_t *vf, char *nm, vnode_t *cdir, cred_t *cr)  	ASSERT(vf != NULL);  	vf->fa_fnode--; -	vsop_find(vf, &func, int, &arg0, vop_rmdir, vsop_rmdir); +	vsop_find(vf, &func, int, &arg0, vop_rmdir, femop_rmdir);  	ASSERT(func != NULL);  	ASSERT(arg0 != NULL);  	return ((*func)(arg0, nm, cdir, cr)); @@ -2196,7 +2196,7 @@ vnext_readdir(femarg_t *vf, uio_t *uiop, cred_t *cr, int *eofp)  	ASSERT(vf != NULL);  	vf->fa_fnode--; -	vsop_find(vf, &func, int, &arg0, vop_readdir, vsop_readdir); +	vsop_find(vf, &func, int, &arg0, vop_readdir, femop_readdir);  	ASSERT(func != NULL);  	ASSERT(arg0 != NULL);  	return ((*func)(arg0, uiop, cr, eofp)); @@ -2211,7 +2211,7 @@ vnext_symlink(femarg_t *vf, char *linkname, vattr_t *vap, char *target,  	ASSERT(vf != NULL);  	vf->fa_fnode--; -	vsop_find(vf, &func, int, &arg0, vop_symlink, vsop_symlink); +	vsop_find(vf, &func, int, &arg0, vop_symlink, femop_symlink);  	ASSERT(func != NULL);  	ASSERT(arg0 != NULL);  	return ((*func)(arg0, linkname, vap, target, cr)); @@ -2225,7 +2225,7 @@ vnext_readlink(femarg_t *vf, uio_t *uiop, cred_t *cr)  	ASSERT(vf != NULL);  	vf->fa_fnode--; -	vsop_find(vf, &func, int, &arg0, vop_readlink, vsop_readlink); +	vsop_find(vf, &func, int, &arg0, vop_readlink, femop_readlink);  	ASSERT(func != NULL);  	ASSERT(arg0 != NULL);  	return ((*func)(arg0, uiop, cr)); @@ -2239,7 +2239,7 @@ vnext_fsync(femarg_t *vf, int syncflag, cred_t *cr)  	ASSERT(vf != NULL);  	vf->fa_fnode--; -	vsop_find(vf, &func, int, &arg0, vop_fsync, vsop_fsync); +	vsop_find(vf, &func, int, &arg0, vop_fsync, femop_fsync);  	ASSERT(func != NULL);  	ASSERT(arg0 != NULL);  	return ((*func)(arg0, syncflag, cr)); @@ -2253,7 +2253,7 @@ vnext_inactive(femarg_t *vf, cred_t *cr)  	ASSERT(vf != NULL);  	vf->fa_fnode--; -	vsop_find(vf, &func, void, &arg0, vop_inactive, vsop_inactive); +	vsop_find(vf, &func, void, &arg0, vop_inactive, femop_inactive);  	ASSERT(func != NULL);  	ASSERT(arg0 != NULL);  	(*func)(arg0, cr); @@ -2267,7 +2267,7 @@ vnext_fid(femarg_t *vf, fid_t *fidp)  	ASSERT(vf != NULL);  	vf->fa_fnode--; -	vsop_find(vf, &func, int, &arg0, vop_fid, vsop_fid); +	vsop_find(vf, &func, int, &arg0, vop_fid, femop_fid);  	ASSERT(func != NULL);  	ASSERT(arg0 != NULL);  	return ((*func)(arg0, fidp)); @@ -2281,7 +2281,7 @@ vnext_rwlock(femarg_t *vf, int write_lock, caller_context_t *ct)  	ASSERT(vf != NULL);  	vf->fa_fnode--; -	vsop_find(vf, &func, int, &arg0, vop_rwlock, vsop_rwlock); +	vsop_find(vf, &func, int, &arg0, vop_rwlock, femop_rwlock);  	ASSERT(func != NULL);  	ASSERT(arg0 != NULL);  	return ((*func)(arg0, write_lock, ct)); @@ -2295,7 +2295,7 @@ vnext_rwunlock(femarg_t *vf, int write_lock, caller_context_t *ct)  	ASSERT(vf != NULL);  	vf->fa_fnode--; -	vsop_find(vf, &func, void, &arg0, vop_rwunlock, vsop_rwunlock); +	vsop_find(vf, &func, void, &arg0, vop_rwunlock, femop_rwunlock);  	ASSERT(func != NULL);  	ASSERT(arg0 != NULL);  	(*func)(arg0, write_lock, ct); @@ -2309,7 +2309,7 @@ vnext_seek(femarg_t *vf, offset_t ooff, offset_t *noffp)  	ASSERT(vf != NULL);  	vf->fa_fnode--; -	vsop_find(vf, &func, int, &arg0, vop_seek, vsop_seek); +	vsop_find(vf, &func, int, &arg0, vop_seek, femop_seek);  	ASSERT(func != NULL);  	ASSERT(arg0 != NULL);  	return ((*func)(arg0, ooff, noffp)); @@ -2323,7 +2323,7 @@ vnext_cmp(femarg_t *vf, vnode_t *vp2)  	ASSERT(vf != NULL);  	vf->fa_fnode--; -	vsop_find(vf, &func, int, &arg0, vop_cmp, vsop_cmp); +	vsop_find(vf, &func, int, &arg0, vop_cmp, femop_cmp);  	ASSERT(func != NULL);  	ASSERT(arg0 != NULL);  	return ((*func)(arg0, vp2)); @@ -2338,7 +2338,7 @@ vnext_frlock(femarg_t *vf, int cmd, struct flock64 *bfp, int flag,  	ASSERT(vf != NULL);  	vf->fa_fnode--; -	vsop_find(vf, &func, int, &arg0, vop_frlock, vsop_frlock); +	vsop_find(vf, &func, int, &arg0, vop_frlock, femop_frlock);  	ASSERT(func != NULL);  	ASSERT(arg0 != NULL);  	return ((*func)(arg0, cmd, bfp, flag, offset, flk_cbp, cr)); @@ -2353,7 +2353,7 @@ vnext_space(femarg_t *vf, int cmd, struct flock64 *bfp, int flag,  	ASSERT(vf != NULL);  	vf->fa_fnode--; -	vsop_find(vf, &func, int, &arg0, vop_space, vsop_space); +	vsop_find(vf, &func, int, &arg0, vop_space, femop_space);  	ASSERT(func != NULL);  	ASSERT(arg0 != NULL);  	return ((*func)(arg0, cmd, bfp, flag, offset, cr, ct)); @@ -2367,7 +2367,7 @@ vnext_realvp(femarg_t *vf, vnode_t **vpp)  	ASSERT(vf != NULL);  	vf->fa_fnode--; -	vsop_find(vf, &func, int, &arg0, vop_realvp, vsop_realvp); +	vsop_find(vf, &func, int, &arg0, vop_realvp, femop_realvp);  	ASSERT(func != NULL);  	ASSERT(arg0 != NULL);  	return ((*func)(arg0, vpp)); @@ -2383,7 +2383,7 @@ vnext_getpage(femarg_t *vf, offset_t off, size_t len, uint_t *protp,  	ASSERT(vf != NULL);  	vf->fa_fnode--; -	vsop_find(vf, &func, int, &arg0, vop_getpage, vsop_getpage); +	vsop_find(vf, &func, int, &arg0, vop_getpage, femop_getpage);  	ASSERT(func != NULL);  	ASSERT(arg0 != NULL);  	return ((*func)(arg0, off, len, protp, plarr, plsz, seg, addr, rw, @@ -2399,7 +2399,7 @@ vnext_putpage(femarg_t *vf, offset_t off, size_t len, int flags,  	ASSERT(vf != NULL);  	vf->fa_fnode--; -	vsop_find(vf, &func, int, &arg0, vop_putpage, vsop_putpage); +	vsop_find(vf, &func, int, &arg0, vop_putpage, femop_putpage);  	ASSERT(func != NULL);  	ASSERT(arg0 != NULL);  	return ((*func)(arg0, off, len, flags, cr)); @@ -2415,7 +2415,7 @@ vnext_map(femarg_t *vf, offset_t off, struct as *as, caddr_t *addrp,  	ASSERT(vf != NULL);  	vf->fa_fnode--; -	vsop_find(vf, &func, int, &arg0, vop_map, vsop_map); +	vsop_find(vf, &func, int, &arg0, vop_map, femop_map);  	ASSERT(func != NULL);  	ASSERT(arg0 != NULL);  	return ((*func)(arg0, off, as, addrp, len, prot, maxprot, flags, @@ -2432,7 +2432,7 @@ vnext_addmap(femarg_t *vf, offset_t off, struct as *as, caddr_t addr,  	ASSERT(vf != NULL);  	vf->fa_fnode--; -	vsop_find(vf, &func, int, &arg0, vop_addmap, vsop_addmap); +	vsop_find(vf, &func, int, &arg0, vop_addmap, femop_addmap);  	ASSERT(func != NULL);  	ASSERT(arg0 != NULL);  	return ((*func)(arg0, off, as, addr, len, prot, maxprot, flags, cr)); @@ -2447,7 +2447,7 @@ vnext_delmap(femarg_t *vf, offset_t off, struct as *as, caddr_t addr,  	ASSERT(vf != NULL);  	vf->fa_fnode--; -	vsop_find(vf, &func, int, &arg0, vop_delmap, vsop_delmap); +	vsop_find(vf, &func, int, &arg0, vop_delmap, femop_delmap);  	ASSERT(func != NULL);  	ASSERT(arg0 != NULL);  	return ((*func)(arg0, off, as, addr, len, prot, maxprot, flags, cr)); @@ -2462,7 +2462,7 @@ vnext_poll(femarg_t *vf, short events, int anyyet, short *reventsp,  	ASSERT(vf != NULL);  	vf->fa_fnode--; -	vsop_find(vf, &func, int, &arg0, vop_poll, vsop_poll); +	vsop_find(vf, &func, int, &arg0, vop_poll, femop_poll);  	ASSERT(func != NULL);  	ASSERT(arg0 != NULL);  	return ((*func)(arg0, events, anyyet, reventsp, phpp)); @@ -2476,7 +2476,7 @@ vnext_dump(femarg_t *vf, caddr_t addr, int lbdn, int dblks)  	ASSERT(vf != NULL);  	vf->fa_fnode--; -	vsop_find(vf, &func, int, &arg0, vop_dump, vsop_dump); +	vsop_find(vf, &func, int, &arg0, vop_dump, femop_dump);  	ASSERT(func != NULL);  	ASSERT(arg0 != NULL);  	return ((*func)(arg0, addr, lbdn, dblks)); @@ -2490,7 +2490,7 @@ vnext_pathconf(femarg_t *vf, int cmd, ulong_t *valp, cred_t *cr)  	ASSERT(vf != NULL);  	vf->fa_fnode--; -	vsop_find(vf, &func, int, &arg0, vop_pathconf, vsop_pathconf); +	vsop_find(vf, &func, int, &arg0, vop_pathconf, femop_pathconf);  	ASSERT(func != NULL);  	ASSERT(arg0 != NULL);  	return ((*func)(arg0, cmd, valp, cr)); @@ -2505,7 +2505,7 @@ vnext_pageio(femarg_t *vf, struct page *pp, u_offset_t io_off,  	ASSERT(vf != NULL);  	vf->fa_fnode--; -	vsop_find(vf, &func, int, &arg0, vop_pageio, vsop_pageio); +	vsop_find(vf, &func, int, &arg0, vop_pageio, femop_pageio);  	ASSERT(func != NULL);  	ASSERT(arg0 != NULL);  	return ((*func)(arg0, pp, io_off, io_len, flags, cr)); @@ -2519,7 +2519,7 @@ vnext_dumpctl(femarg_t *vf, int action, int *blkp)  	ASSERT(vf != NULL);  	vf->fa_fnode--; -	vsop_find(vf, &func, int, &arg0, vop_dumpctl, vsop_dumpctl); +	vsop_find(vf, &func, int, &arg0, vop_dumpctl, femop_dumpctl);  	ASSERT(func != NULL);  	ASSERT(arg0 != NULL);  	return ((*func)(arg0, action, blkp)); @@ -2533,7 +2533,7 @@ vnext_dispose(femarg_t *vf, struct page *pp, int flag, int dn, cred_t *cr)  	ASSERT(vf != NULL);  	vf->fa_fnode--; -	vsop_find(vf, &func, void, &arg0, vop_dispose, vsop_dispose); +	vsop_find(vf, &func, void, &arg0, vop_dispose, femop_dispose);  	ASSERT(func != NULL);  	ASSERT(arg0 != NULL);  	(*func)(arg0, pp, flag, dn, cr); @@ -2547,7 +2547,7 @@ vnext_setsecattr(femarg_t *vf, vsecattr_t *vsap, int flag, cred_t *cr)  	ASSERT(vf != NULL);  	vf->fa_fnode--; -	vsop_find(vf, &func, int, &arg0, vop_setsecattr, vsop_setsecattr); +	vsop_find(vf, &func, int, &arg0, vop_setsecattr, femop_setsecattr);  	ASSERT(func != NULL);  	ASSERT(arg0 != NULL);  	return ((*func)(arg0, vsap, flag, cr)); @@ -2561,7 +2561,7 @@ vnext_getsecattr(femarg_t *vf, vsecattr_t *vsap, int flag, cred_t *cr)  	ASSERT(vf != NULL);  	vf->fa_fnode--; -	vsop_find(vf, &func, int, &arg0, vop_getsecattr, vsop_getsecattr); +	vsop_find(vf, &func, int, &arg0, vop_getsecattr, femop_getsecattr);  	ASSERT(func != NULL);  	ASSERT(arg0 != NULL);  	return ((*func)(arg0, vsap, flag, cr)); @@ -2576,7 +2576,7 @@ vnext_shrlock(femarg_t *vf, int cmd, struct shrlock *shr, int flag,  	ASSERT(vf != NULL);  	vf->fa_fnode--; -	vsop_find(vf, &func, int, &arg0, vop_shrlock, vsop_shrlock); +	vsop_find(vf, &func, int, &arg0, vop_shrlock, femop_shrlock);  	ASSERT(func != NULL);  	ASSERT(arg0 != NULL);  	return ((*func)(arg0, cmd, shr, flag, cr)); @@ -2590,7 +2590,7 @@ vnext_vnevent(femarg_t *vf, vnevent_t vnevent)  	ASSERT(vf != NULL);  	vf->fa_fnode--; -	vsop_find(vf, &func, int, &arg0, vop_vnevent, vsop_vnevent); +	vsop_find(vf, &func, int, &arg0, vop_vnevent, femop_vnevent);  	ASSERT(func != NULL);  	ASSERT(arg0 != NULL);  	return ((*func)(arg0, vnevent)); @@ -2604,7 +2604,7 @@ vfsnext_mount(fsemarg_t *vf, vnode_t *mvp, struct mounta *uap, cred_t *cr)  	ASSERT(vf != NULL);  	vf->fa_fnode--; -	vfsop_find(vf, &func, int, &arg0, vfs_mount, vfsop_mount); +	vfsop_find(vf, &func, int, &arg0, vfs_mount, fsemop_mount);  	ASSERT(func != NULL);  	ASSERT(arg0 != NULL);  	return ((*func)(arg0, mvp, uap, cr)); @@ -2618,7 +2618,7 @@ vfsnext_unmount(fsemarg_t *vf, int flag, cred_t *cr)  	ASSERT(vf != NULL);  	vf->fa_fnode--; -	vfsop_find(vf, &func, int, &arg0, vfs_unmount, vfsop_unmount); +	vfsop_find(vf, &func, int, &arg0, vfs_unmount, fsemop_unmount);  	ASSERT(func != NULL);  	ASSERT(arg0 != NULL);  	return ((*func)(arg0, flag, cr)); @@ -2632,7 +2632,7 @@ vfsnext_root(fsemarg_t *vf, vnode_t **vpp)  	ASSERT(vf != NULL);  	vf->fa_fnode--; -	vfsop_find(vf, &func, int, &arg0, vfs_root, vfsop_root); +	vfsop_find(vf, &func, int, &arg0, vfs_root, fsemop_root);  	ASSERT(func != NULL);  	ASSERT(arg0 != NULL);  	return ((*func)(arg0, vpp)); @@ -2646,7 +2646,7 @@ vfsnext_statvfs(fsemarg_t *vf, statvfs64_t *sp)  	ASSERT(vf != NULL);  	vf->fa_fnode--; -	vfsop_find(vf, &func, int, &arg0, vfs_statvfs, vfsop_statvfs); +	vfsop_find(vf, &func, int, &arg0, vfs_statvfs, fsemop_statvfs);  	ASSERT(func != NULL);  	ASSERT(arg0 != NULL);  	return ((*func)(arg0, sp)); @@ -2660,7 +2660,7 @@ vfsnext_sync(fsemarg_t *vf, short flag, cred_t *cr)  	ASSERT(vf != NULL);  	vf->fa_fnode--; -	vfsop_find(vf, &func, int, &arg0, vfs_sync, vfsop_sync); +	vfsop_find(vf, &func, int, &arg0, vfs_sync, fsemop_sync);  	ASSERT(func != NULL);  	ASSERT(arg0 != NULL);  	return ((*func)(arg0, flag, cr)); @@ -2674,7 +2674,7 @@ vfsnext_vget(fsemarg_t *vf, vnode_t **vpp, fid_t *fidp)  	ASSERT(vf != NULL);  	vf->fa_fnode--; -	vfsop_find(vf, &func, int, &arg0, vfs_vget, vfsop_vget); +	vfsop_find(vf, &func, int, &arg0, vfs_vget, fsemop_vget);  	ASSERT(func != NULL);  	ASSERT(arg0 != NULL);  	return ((*func)(arg0, vpp, fidp)); @@ -2688,7 +2688,7 @@ vfsnext_mountroot(fsemarg_t *vf, enum whymountroot reason)  	ASSERT(vf != NULL);  	vf->fa_fnode--; -	vfsop_find(vf, &func, int, &arg0, vfs_mountroot, vfsop_mountroot); +	vfsop_find(vf, &func, int, &arg0, vfs_mountroot, fsemop_mountroot);  	ASSERT(func != NULL);  	ASSERT(arg0 != NULL);  	return ((*func)(arg0, reason)); @@ -2702,7 +2702,7 @@ vfsnext_freevfs(fsemarg_t *vf)  	ASSERT(vf != NULL);  	vf->fa_fnode--; -	vfsop_find(vf, &func, void, &arg0, vfs_freevfs, vfsop_freevfs); +	vfsop_find(vf, &func, void, &arg0, vfs_freevfs, fsemop_freevfs);  	ASSERT(func != NULL);  	ASSERT(arg0 != NULL);  	(*func)(arg0); @@ -2716,7 +2716,7 @@ vfsnext_vnstate(fsemarg_t *vf, vnode_t *vp, vntrans_t nstate)  	ASSERT(vf != NULL);  	vf->fa_fnode--; -	vfsop_find(vf, &func, int, &arg0, vfs_vnstate, vfsop_vnstate); +	vfsop_find(vf, &func, int, &arg0, vfs_vnstate, fsemop_vnstate);  	ASSERT(func != NULL);  	ASSERT(arg0 != NULL);  	return ((*func)(arg0, vp, nstate)); diff --git a/usr/src/uts/common/fs/fifofs/fifosubr.c b/usr/src/uts/common/fs/fifofs/fifosubr.c index 8767999322..6b2ca9683f 100644 --- a/usr/src/uts/common/fs/fifofs/fifosubr.c +++ b/usr/src/uts/common/fs/fifofs/fifosubr.c @@ -21,7 +21,7 @@  /*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T	*/  /* - * Copyright 2006 Sun Microsystems, Inc.  All rights reserved. + * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.   * Use is subject to license terms.   */ @@ -45,6 +45,7 @@  #include <sys/sysmacros.h>  #include <sys/var.h>  #include <sys/vfs.h> +#include <sys/vfs_opreg.h>  #include <sys/vnode.h>  #include <sys/mode.h>  #include <sys/signal.h> diff --git a/usr/src/uts/common/fs/fifofs/fifovnops.c b/usr/src/uts/common/fs/fifofs/fifovnops.c index 34f731af1e..afa01bb3ab 100644 --- a/usr/src/uts/common/fs/fifofs/fifovnops.c +++ b/usr/src/uts/common/fs/fifofs/fifovnops.c @@ -23,7 +23,7 @@  /* - * Copyright 2006 Sun Microsystems, Inc.  All rights reserved. + * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.   * Use is subject to license terms.   */ @@ -46,6 +46,7 @@  #include <sys/uio.h>  #include <sys/vfs.h>  #include <sys/vnode.h> +#include <sys/vfs_opreg.h>  #include <sys/pathname.h>  #include <sys/signal.h>  #include <sys/user.h> @@ -110,28 +111,28 @@ struct  streamtab fifoinfo = { &fifo_strdata, &fifo_stwdata, NULL, NULL };  struct vnodeops *fifo_vnodeops;  const fs_operation_def_t fifo_vnodeops_template[] = { -	VOPNAME_OPEN, fifo_open, -	VOPNAME_CLOSE, fifo_close, -	VOPNAME_READ, fifo_read, -	VOPNAME_WRITE, fifo_write, -	VOPNAME_IOCTL, fifo_ioctl, -	VOPNAME_GETATTR, fifo_getattr, -	VOPNAME_SETATTR, fifo_setattr, -	VOPNAME_ACCESS, fifo_access, -	VOPNAME_CREATE, fifo_create, -	VOPNAME_FSYNC, fifo_fsync, -	VOPNAME_INACTIVE, (fs_generic_func_p) fifo_inactive, -	VOPNAME_FID, fifo_fid, -	VOPNAME_RWLOCK, fifo_rwlock, -	VOPNAME_RWUNLOCK, (fs_generic_func_p) fifo_rwunlock, -	VOPNAME_SEEK, fifo_seek, -	VOPNAME_REALVP, fifo_realvp, -	VOPNAME_POLL, (fs_generic_func_p) fifo_poll, -	VOPNAME_PATHCONF, fifo_pathconf, -	VOPNAME_DISPOSE, fs_error, -	VOPNAME_SETSECATTR, fifo_setsecattr, -	VOPNAME_GETSECATTR, fifo_getsecattr, -	NULL, NULL +	VOPNAME_OPEN,		{ .vop_open = fifo_open }, +	VOPNAME_CLOSE,		{ .vop_close = fifo_close }, +	VOPNAME_READ,		{ .vop_read = fifo_read }, +	VOPNAME_WRITE,		{ .vop_write = fifo_write }, +	VOPNAME_IOCTL,		{ .vop_ioctl = fifo_ioctl }, +	VOPNAME_GETATTR,	{ .vop_getattr = fifo_getattr }, +	VOPNAME_SETATTR,	{ .vop_setattr = fifo_setattr }, +	VOPNAME_ACCESS,		{ .vop_access = fifo_access }, +	VOPNAME_CREATE,		{ .vop_create = fifo_create }, +	VOPNAME_FSYNC,		{ .vop_fsync = fifo_fsync }, +	VOPNAME_INACTIVE,	{ .vop_inactive = fifo_inactive }, +	VOPNAME_FID,		{ .vop_fid = fifo_fid }, +	VOPNAME_RWLOCK,		{ .vop_rwlock = fifo_rwlock }, +	VOPNAME_RWUNLOCK,	{ .vop_rwunlock = fifo_rwunlock }, +	VOPNAME_SEEK,		{ .vop_seek = fifo_seek }, +	VOPNAME_REALVP,		{ .vop_realvp = fifo_realvp }, +	VOPNAME_POLL,		{ .vop_poll = fifo_poll }, +	VOPNAME_PATHCONF,	{ .vop_pathconf = fifo_pathconf }, +	VOPNAME_DISPOSE,	{ .error = fs_error }, +	VOPNAME_SETSECATTR,	{ .vop_setsecattr = fifo_setsecattr }, +	VOPNAME_GETSECATTR,	{ .vop_getsecattr = fifo_getsecattr }, +	NULL,			NULL  };  /* diff --git a/usr/src/uts/common/fs/hsfs/hsfs_vfsops.c b/usr/src/uts/common/fs/hsfs/hsfs_vfsops.c index bd538c8f5e..327ab63eb5 100644 --- a/usr/src/uts/common/fs/hsfs/hsfs_vfsops.c +++ b/usr/src/uts/common/fs/hsfs/hsfs_vfsops.c @@ -19,7 +19,7 @@   * CDDL HEADER END   */  /* - * Copyright 2006 Sun Microsystems, Inc.  All rights reserved. + * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.   * Use is subject to license terms.   */ @@ -43,6 +43,7 @@  #include <sys/buf.h>  #include <sys/pathname.h>  #include <sys/vfs.h> +#include <sys/vfs_opreg.h>  #include <sys/vnode.h>  #include <sys/file.h>  #include <sys/uio.h> @@ -234,13 +235,13 @@ static int  hsfsinit(int fstype, char *name)  {  	static const fs_operation_def_t hsfs_vfsops_template[] = { -		VFSNAME_MOUNT, hsfs_mount, -		VFSNAME_UNMOUNT, hsfs_unmount, -		VFSNAME_ROOT, hsfs_root, -		VFSNAME_STATVFS, hsfs_statvfs, -		VFSNAME_VGET, hsfs_vget, -		VFSNAME_MOUNTROOT, hsfs_mountroot, -		NULL, NULL +		VFSNAME_MOUNT,		{ .vfs_mount = hsfs_mount }, +		VFSNAME_UNMOUNT,	{ .vfs_unmount = hsfs_unmount }, +		VFSNAME_ROOT,		{ .vfs_root = hsfs_root }, +		VFSNAME_STATVFS,	{ .vfs_statvfs = hsfs_statvfs }, +		VFSNAME_VGET,		{ .vfs_vget = hsfs_vget }, +		VFSNAME_MOUNTROOT,	{ .vfs_mountroot = hsfs_mountroot }, +		NULL,			NULL  	};  	int error; diff --git a/usr/src/uts/common/fs/hsfs/hsfs_vnops.c b/usr/src/uts/common/fs/hsfs/hsfs_vnops.c index 9723f69639..7f48de25b8 100644 --- a/usr/src/uts/common/fs/hsfs/hsfs_vnops.c +++ b/usr/src/uts/common/fs/hsfs/hsfs_vnops.c @@ -19,7 +19,7 @@   * CDDL HEADER END   */  /* - * Copyright 2006 Sun Microsystems, Inc.  All rights reserved. + * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.   * Use is subject to license terms.   */ @@ -41,6 +41,7 @@  #include <sys/user.h>  #include <sys/buf.h>  #include <sys/vfs.h> +#include <sys/vfs_opreg.h>  #include <sys/stat.h>  #include <sys/vnode.h>  #include <sys/mode.h> @@ -1331,26 +1332,26 @@ hsfs_pathconf(struct vnode *vp, int cmd, ulong_t *valp, struct cred *cr)  const fs_operation_def_t hsfs_vnodeops_template[] = { -	VOPNAME_OPEN, hsfs_open, -	VOPNAME_CLOSE, hsfs_close, -	VOPNAME_READ, hsfs_read, -	VOPNAME_GETATTR, hsfs_getattr, -	VOPNAME_ACCESS, hsfs_access, -	VOPNAME_LOOKUP, hsfs_lookup, -	VOPNAME_READDIR, hsfs_readdir, -	VOPNAME_READLINK, hsfs_readlink, -	VOPNAME_FSYNC, hsfs_fsync, -	VOPNAME_INACTIVE, (fs_generic_func_p) hsfs_inactive, -	VOPNAME_FID, hsfs_fid, -	VOPNAME_SEEK, hsfs_seek, -	VOPNAME_FRLOCK, hsfs_frlock, -	VOPNAME_GETPAGE, hsfs_getpage, -	VOPNAME_PUTPAGE, hsfs_putpage, -	VOPNAME_MAP, (fs_generic_func_p) hsfs_map, -	VOPNAME_ADDMAP, (fs_generic_func_p) hsfs_addmap, -	VOPNAME_DELMAP, hsfs_delmap, -	VOPNAME_PATHCONF, hsfs_pathconf, -	NULL, NULL +	VOPNAME_OPEN,		{ .vop_open = hsfs_open }, +	VOPNAME_CLOSE,		{ .vop_close = hsfs_close }, +	VOPNAME_READ,		{ .vop_read = hsfs_read }, +	VOPNAME_GETATTR,	{ .vop_getattr = hsfs_getattr }, +	VOPNAME_ACCESS,		{ .vop_access = hsfs_access }, +	VOPNAME_LOOKUP,		{ .vop_lookup = hsfs_lookup }, +	VOPNAME_READDIR,	{ .vop_readdir = hsfs_readdir }, +	VOPNAME_READLINK,	{ .vop_readlink = hsfs_readlink }, +	VOPNAME_FSYNC,		{ .vop_fsync = hsfs_fsync }, +	VOPNAME_INACTIVE,	{ .vop_inactive = hsfs_inactive }, +	VOPNAME_FID,		{ .vop_fid = hsfs_fid }, +	VOPNAME_SEEK,		{ .vop_seek = hsfs_seek }, +	VOPNAME_FRLOCK,		{ .vop_frlock = hsfs_frlock }, +	VOPNAME_GETPAGE,	{ .vop_getpage = hsfs_getpage }, +	VOPNAME_PUTPAGE,	{ .vop_putpage = hsfs_putpage }, +	VOPNAME_MAP,		{ .vop_map = hsfs_map }, +	VOPNAME_ADDMAP,		{ .vop_addmap = hsfs_addmap }, +	VOPNAME_DELMAP,		{ .vop_delmap = hsfs_delmap }, +	VOPNAME_PATHCONF,	{ .vop_pathconf = hsfs_pathconf }, +	NULL,			NULL  };  struct vnodeops *hsfs_vnodeops; diff --git a/usr/src/uts/common/fs/lofs/lofs_vfsops.c b/usr/src/uts/common/fs/lofs/lofs_vfsops.c index ea19eabe6e..8616e90cd6 100644 --- a/usr/src/uts/common/fs/lofs/lofs_vfsops.c +++ b/usr/src/uts/common/fs/lofs/lofs_vfsops.c @@ -19,7 +19,7 @@   * CDDL HEADER END   */  /* - * Copyright 2006 Sun Microsystems, Inc.  All rights reserved. + * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.   * Use is subject to license terms.   */ @@ -28,6 +28,7 @@  #include <sys/param.h>  #include <sys/errno.h>  #include <sys/vfs.h> +#include <sys/vfs_opreg.h>  #include <sys/vnode.h>  #include <sys/uio.h>  #include <sys/pathname.h> @@ -540,14 +541,14 @@ static int  lofsinit(int fstyp, char *name)  {  	static const fs_operation_def_t lo_vfsops_template[] = { -		VFSNAME_MOUNT, lo_mount, -		VFSNAME_UNMOUNT, lo_unmount, -		VFSNAME_ROOT, lo_root, -		VFSNAME_STATVFS, lo_statvfs, -		VFSNAME_SYNC, (fs_generic_func_p) lo_sync, -		VFSNAME_VGET, lo_vget, -		VFSNAME_FREEVFS, (fs_generic_func_p) lo_freevfs, -		NULL, NULL +		VFSNAME_MOUNT,		{ .vfs_mount = lo_mount }, +		VFSNAME_UNMOUNT,	{ .vfs_unmount = lo_unmount }, +		VFSNAME_ROOT,		{ .vfs_root = lo_root }, +		VFSNAME_STATVFS,	{ .vfs_statvfs = lo_statvfs }, +		VFSNAME_SYNC,		{ .vfs_sync = lo_sync }, +		VFSNAME_VGET,		{ .vfs_vget = lo_vget }, +		VFSNAME_FREEVFS,	{ .vfs_freevfs = lo_freevfs }, +		NULL,			NULL  	};  	int error; diff --git a/usr/src/uts/common/fs/lofs/lofs_vnops.c b/usr/src/uts/common/fs/lofs/lofs_vnops.c index fe68686fbe..85138187c1 100644 --- a/usr/src/uts/common/fs/lofs/lofs_vnops.c +++ b/usr/src/uts/common/fs/lofs/lofs_vnops.c @@ -30,6 +30,7 @@  #include <sys/errno.h>  #include <sys/vnode.h>  #include <sys/vfs.h> +#include <sys/vfs_opreg.h>  #include <sys/uio.h>  #include <sys/cred.h>  #include <sys/pathname.h> @@ -1116,48 +1117,48 @@ lo_shrlock(vnode_t *vp, int cmd, struct shrlock *shr, int flag, cred_t *cr)  struct vnodeops *lo_vnodeops;  const fs_operation_def_t lo_vnodeops_template[] = { -	VOPNAME_OPEN, lo_open, -	VOPNAME_CLOSE, lo_close, -	VOPNAME_READ, lo_read, -	VOPNAME_WRITE, lo_write, -	VOPNAME_IOCTL, lo_ioctl, -	VOPNAME_SETFL, lo_setfl, -	VOPNAME_GETATTR, lo_getattr, -	VOPNAME_SETATTR, lo_setattr, -	VOPNAME_ACCESS, lo_access, -	VOPNAME_LOOKUP, lo_lookup, -	VOPNAME_CREATE, lo_create, -	VOPNAME_REMOVE, lo_remove, -	VOPNAME_LINK, lo_link, -	VOPNAME_RENAME, lo_rename, -	VOPNAME_MKDIR, lo_mkdir, -	VOPNAME_RMDIR, lo_rmdir, -	VOPNAME_READDIR, lo_readdir, -	VOPNAME_SYMLINK, lo_symlink, -	VOPNAME_READLINK, lo_readlink, -	VOPNAME_FSYNC, lo_fsync, -	VOPNAME_INACTIVE, (fs_generic_func_p) lo_inactive, -	VOPNAME_FID, lo_fid, -	VOPNAME_RWLOCK, lo_rwlock, -	VOPNAME_RWUNLOCK, (fs_generic_func_p) lo_rwunlock, -	VOPNAME_SEEK, lo_seek, -	VOPNAME_CMP, lo_cmp, -	VOPNAME_FRLOCK, lo_frlock, -	VOPNAME_SPACE, lo_space, -	VOPNAME_REALVP, lo_realvp, -	VOPNAME_GETPAGE, lo_getpage, -	VOPNAME_PUTPAGE, lo_putpage, -	VOPNAME_MAP, (fs_generic_func_p) lo_map, -	VOPNAME_ADDMAP, (fs_generic_func_p) lo_addmap, -	VOPNAME_DELMAP, lo_delmap, -	VOPNAME_POLL, (fs_generic_func_p) lo_poll, -	VOPNAME_DUMP, lo_dump, -	VOPNAME_DUMPCTL, fs_error,		/* XXX - why? */ -	VOPNAME_PATHCONF, lo_pathconf, -	VOPNAME_PAGEIO, lo_pageio, -	VOPNAME_DISPOSE, (fs_generic_func_p) lo_dispose, -	VOPNAME_SETSECATTR, lo_setsecattr, -	VOPNAME_GETSECATTR, lo_getsecattr, -	VOPNAME_SHRLOCK, lo_shrlock, -	NULL, NULL +	VOPNAME_OPEN,		{ .vop_open = lo_open }, +	VOPNAME_CLOSE,		{ .vop_close = lo_close }, +	VOPNAME_READ,		{ .vop_read = lo_read }, +	VOPNAME_WRITE,		{ .vop_write = lo_write }, +	VOPNAME_IOCTL,		{ .vop_ioctl = lo_ioctl }, +	VOPNAME_SETFL,		{ .vop_setfl = lo_setfl }, +	VOPNAME_GETATTR,	{ .vop_getattr = lo_getattr }, +	VOPNAME_SETATTR,	{ .vop_setattr = lo_setattr }, +	VOPNAME_ACCESS,		{ .vop_access = lo_access }, +	VOPNAME_LOOKUP,		{ .vop_lookup = lo_lookup }, +	VOPNAME_CREATE,		{ .vop_create = lo_create }, +	VOPNAME_REMOVE,		{ .vop_remove = lo_remove }, +	VOPNAME_LINK,		{ .vop_link = lo_link }, +	VOPNAME_RENAME,		{ .vop_rename = lo_rename }, +	VOPNAME_MKDIR,		{ .vop_mkdir = lo_mkdir }, +	VOPNAME_RMDIR,		{ .vop_rmdir = lo_rmdir }, +	VOPNAME_READDIR,	{ .vop_readdir = lo_readdir }, +	VOPNAME_SYMLINK,	{ .vop_symlink = lo_symlink }, +	VOPNAME_READLINK,	{ .vop_readlink = lo_readlink }, +	VOPNAME_FSYNC,		{ .vop_fsync = lo_fsync }, +	VOPNAME_INACTIVE,	{ .vop_inactive = lo_inactive }, +	VOPNAME_FID,		{ .vop_fid = lo_fid }, +	VOPNAME_RWLOCK,		{ .vop_rwlock = lo_rwlock }, +	VOPNAME_RWUNLOCK,	{ .vop_rwunlock = lo_rwunlock }, +	VOPNAME_SEEK,		{ .vop_seek = lo_seek }, +	VOPNAME_CMP,		{ .vop_cmp = lo_cmp }, +	VOPNAME_FRLOCK,		{ .vop_frlock = lo_frlock }, +	VOPNAME_SPACE,		{ .vop_space = lo_space }, +	VOPNAME_REALVP,		{ .vop_realvp = lo_realvp }, +	VOPNAME_GETPAGE,	{ .vop_getpage = lo_getpage }, +	VOPNAME_PUTPAGE,	{ .vop_putpage = lo_putpage }, +	VOPNAME_MAP,		{ .vop_map = lo_map }, +	VOPNAME_ADDMAP,		{ .vop_addmap = lo_addmap }, +	VOPNAME_DELMAP,		{ .vop_delmap = lo_delmap }, +	VOPNAME_POLL,		{ .vop_poll = lo_poll }, +	VOPNAME_DUMP,		{ .vop_dump = lo_dump }, +	VOPNAME_DUMPCTL,	{ .error = fs_error },	/* XXX - why? */ +	VOPNAME_PATHCONF,	{ .vop_pathconf = lo_pathconf }, +	VOPNAME_PAGEIO,		{ .vop_pageio = lo_pageio }, +	VOPNAME_DISPOSE,	{ .vop_dispose = lo_dispose }, +	VOPNAME_SETSECATTR,	{ .vop_setsecattr = lo_setsecattr }, +	VOPNAME_GETSECATTR,	{ .vop_getsecattr = lo_getsecattr }, +	VOPNAME_SHRLOCK,	{ .vop_shrlock = lo_shrlock }, +	NULL,			NULL  }; diff --git a/usr/src/uts/common/fs/mntfs/mntvfsops.c b/usr/src/uts/common/fs/mntfs/mntvfsops.c index f4d679fc9e..f148bb4af4 100644 --- a/usr/src/uts/common/fs/mntfs/mntvfsops.c +++ b/usr/src/uts/common/fs/mntfs/mntvfsops.c @@ -19,7 +19,7 @@   * CDDL HEADER END   */  /* - * Copyright 2006 Sun Microsystems, Inc.  All rights reserved. + * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.   * Use is subject to license terms.   */ @@ -39,6 +39,7 @@  #include <sys/systm.h>  #include <sys/var.h>  #include <sys/vfs.h> +#include <sys/vfs_opreg.h>  #include <sys/vnode.h>  #include <sys/mode.h>  #include <sys/signal.h> @@ -134,11 +135,11 @@ static int  mntinit(int fstype, char *name)  {  	static const fs_operation_def_t mnt_vfsops_template[] = { -		VFSNAME_MOUNT, mntmount, -		VFSNAME_UNMOUNT, mntunmount, -		VFSNAME_ROOT, mntroot, -		VFSNAME_STATVFS, mntstatvfs, -		NULL, NULL +		VFSNAME_MOUNT,		{ .vfs_mount = mntmount }, +		VFSNAME_UNMOUNT,	{ .vfs_unmount = mntunmount }, +		VFSNAME_ROOT,		{ .vfs_root = mntroot }, +		VFSNAME_STATVFS,	{ .vfs_statvfs = mntstatvfs }, +		NULL,			NULL  	};  	extern const fs_operation_def_t mnt_vnodeops_template[];  	int error; diff --git a/usr/src/uts/common/fs/mntfs/mntvnops.c b/usr/src/uts/common/fs/mntfs/mntvnops.c index 450bc1b973..79f3a090b7 100644 --- a/usr/src/uts/common/fs/mntfs/mntvnops.c +++ b/usr/src/uts/common/fs/mntfs/mntvnops.c @@ -2,9 +2,8 @@   * CDDL HEADER START   *   * The contents of this file are subject to the terms of the - * Common Development and Distribution License, Version 1.0 only - * (the "License").  You may not use this file except in compliance - * with the License. + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License.   *   * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE   * or http://www.opensolaris.org/os/licensing. @@ -20,7 +19,7 @@   * CDDL HEADER END   */  /* - * Copyright 2005 Sun Microsystems, Inc.  All rights reserved. + * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.   * Use is subject to license terms.   */ @@ -36,6 +35,7 @@  #include <sys/sysmacros.h>  #include <sys/systm.h>  #include <sys/vfs.h> +#include <sys/vfs_opreg.h>  #include <sys/fs/mntdata.h>  #include <fs/fs_subr.h>  #include <sys/vmsystm.h> @@ -1133,17 +1133,17 @@ mntioctl(struct vnode *vp, int cmd, intptr_t arg, int flag,   * /mntfs vnode operations vector   */  const fs_operation_def_t mnt_vnodeops_template[] = { -	VOPNAME_OPEN, mntopen, -	VOPNAME_CLOSE, mntclose, -	VOPNAME_READ, mntread, -	VOPNAME_IOCTL, mntioctl, -	VOPNAME_GETATTR, mntgetattr, -	VOPNAME_ACCESS, mntaccess, -	VOPNAME_FSYNC, mntfsync, -	VOPNAME_INACTIVE, (fs_generic_func_p) mntinactive, -	VOPNAME_SEEK, mntseek, -	VOPNAME_POLL, (fs_generic_func_p) mntpoll, -	VOPNAME_DISPOSE, fs_error, -	VOPNAME_SHRLOCK, fs_error, -	NULL, NULL +	VOPNAME_OPEN,		{ .vop_open = mntopen }, +	VOPNAME_CLOSE,		{ .vop_close = mntclose }, +	VOPNAME_READ,		{ .vop_read = mntread }, +	VOPNAME_IOCTL,		{ .vop_ioctl = mntioctl }, +	VOPNAME_GETATTR,	{ .vop_getattr = mntgetattr }, +	VOPNAME_ACCESS,		{ .vop_access = mntaccess }, +	VOPNAME_FSYNC,		{ .vop_fsync = mntfsync }, +	VOPNAME_INACTIVE,	{ .vop_inactive = mntinactive }, +	VOPNAME_SEEK,		{ .vop_seek = mntseek }, +	VOPNAME_POLL,		{ .vop_poll = mntpoll }, +	VOPNAME_DISPOSE,	{ .error = fs_error }, +	VOPNAME_SHRLOCK,	{ .error = fs_error }, +	NULL,			NULL  }; diff --git a/usr/src/uts/common/fs/namefs/namevfs.c b/usr/src/uts/common/fs/namefs/namevfs.c index c54254070f..88bafaa135 100644 --- a/usr/src/uts/common/fs/namefs/namevfs.c +++ b/usr/src/uts/common/fs/namefs/namevfs.c @@ -19,7 +19,7 @@   * CDDL HEADER END   */  /* - * Copyright 2006 Sun Microsystems, Inc.  All rights reserved. + * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.   * Use is subject to license terms.   */ @@ -48,6 +48,7 @@  #include <sys/sysmacros.h>  #include <sys/var.h>  #include <sys/vfs.h> +#include <sys/vfs_opreg.h>  #include <sys/vnode.h>  #include <sys/mode.h>  #include <sys/pcb.h> @@ -662,17 +663,17 @@ int  nameinit(int fstype, char *name)  {  	static const fs_operation_def_t nm_vfsops_template[] = { -		VFSNAME_MOUNT, nm_mount, -		VFSNAME_UNMOUNT, nm_unmount, -		VFSNAME_ROOT, nm_root, -		VFSNAME_STATVFS, nm_statvfs, -		VFSNAME_SYNC, (fs_generic_func_p) nm_sync, -		NULL, NULL +		VFSNAME_MOUNT,		{ .vfs_mount = nm_mount }, +		VFSNAME_UNMOUNT,	{ .vfs_unmount = nm_unmount }, +		VFSNAME_ROOT,		{ .vfs_root = nm_root }, +		VFSNAME_STATVFS,	{ .vfs_statvfs = nm_statvfs }, +		VFSNAME_SYNC,		{ .vfs_sync = nm_sync }, +		NULL,			NULL  	};  	static const fs_operation_def_t nm_dummy_vfsops_template[] = { -		VFSNAME_STATVFS, nm_statvfs, -		VFSNAME_SYNC, (fs_generic_func_p) nm_sync, -		NULL, NULL +		VFSNAME_STATVFS,	{ .vfs_statvfs = nm_statvfs }, +		VFSNAME_SYNC,		{ .vfs_sync = nm_sync }, +		NULL,			NULL  	};  	int error;  	int dev; diff --git a/usr/src/uts/common/fs/namefs/namevno.c b/usr/src/uts/common/fs/namefs/namevno.c index bb53b1f7cf..ab4767e578 100644 --- a/usr/src/uts/common/fs/namefs/namevno.c +++ b/usr/src/uts/common/fs/namefs/namevno.c @@ -2,9 +2,8 @@   * CDDL HEADER START   *   * The contents of this file are subject to the terms of the - * Common Development and Distribution License, Version 1.0 only - * (the "License").  You may not use this file except in compliance - * with the License. + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License.   *   * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE   * or http://www.opensolaris.org/os/licensing. @@ -24,7 +23,7 @@  /* - * Copyright 2004 Sun Microsystems, Inc.  All rights reserved. + * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.   * Use is subject to license terms.   */ @@ -50,6 +49,7 @@  #include <sys/kmem.h>  #include <sys/uio.h>  #include <sys/vfs.h> +#include <sys/vfs_opreg.h>  #include <sys/vnode.h>  #include <sys/pcb.h>  #include <sys/signal.h> @@ -461,24 +461,24 @@ nm_poll(vnode_t *vp, short events, int anyyet, short *reventsp,  struct vnodeops *nm_vnodeops;  const fs_operation_def_t nm_vnodeops_template[] = { -	VOPNAME_OPEN, nm_open, -	VOPNAME_CLOSE, nm_close, -	VOPNAME_READ, nm_read, -	VOPNAME_WRITE, nm_write, -	VOPNAME_IOCTL, nm_ioctl, -	VOPNAME_GETATTR, nm_getattr, -	VOPNAME_SETATTR, nm_setattr, -	VOPNAME_ACCESS, nm_access, -	VOPNAME_CREATE, nm_create, -	VOPNAME_LINK, nm_link, -	VOPNAME_FSYNC, nm_fsync, -	VOPNAME_INACTIVE, (fs_generic_func_p) nm_inactive, -	VOPNAME_FID, nm_fid, -	VOPNAME_RWLOCK, nm_rwlock, -	VOPNAME_RWUNLOCK, (fs_generic_func_p) nm_rwunlock, -	VOPNAME_SEEK, nm_seek, -	VOPNAME_REALVP, nm_realvp, -	VOPNAME_POLL, (fs_generic_func_p) nm_poll, -	VOPNAME_DISPOSE, fs_error, -	NULL, NULL +	VOPNAME_OPEN,		{ .vop_open = nm_open }, +	VOPNAME_CLOSE,		{ .vop_close = nm_close }, +	VOPNAME_READ,		{ .vop_read = nm_read }, +	VOPNAME_WRITE,		{ .vop_write = nm_write }, +	VOPNAME_IOCTL,		{ .vop_ioctl = nm_ioctl }, +	VOPNAME_GETATTR,	{ .vop_getattr = nm_getattr }, +	VOPNAME_SETATTR,	{ .vop_setattr = nm_setattr }, +	VOPNAME_ACCESS,		{ .vop_access = nm_access }, +	VOPNAME_CREATE,		{ .vop_create = nm_create }, +	VOPNAME_LINK,		{ .vop_link = nm_link }, +	VOPNAME_FSYNC,		{ .vop_fsync = nm_fsync }, +	VOPNAME_INACTIVE,	{ .vop_inactive = nm_inactive }, +	VOPNAME_FID,		{ .vop_fid = nm_fid }, +	VOPNAME_RWLOCK,		{ .vop_rwlock = nm_rwlock }, +	VOPNAME_RWUNLOCK,	{ .vop_rwunlock = nm_rwunlock }, +	VOPNAME_SEEK,		{ .vop_seek = nm_seek }, +	VOPNAME_REALVP,		{ .vop_realvp = nm_realvp }, +	VOPNAME_POLL,		{ .vop_poll = nm_poll }, +	VOPNAME_DISPOSE,	{ .error = fs_error }, +	NULL,			NULL  }; diff --git a/usr/src/uts/common/fs/nfs/nfs3_vfsops.c b/usr/src/uts/common/fs/nfs/nfs3_vfsops.c index 4a3157ed0d..e02d3ab6bb 100644 --- a/usr/src/uts/common/fs/nfs/nfs3_vfsops.c +++ b/usr/src/uts/common/fs/nfs/nfs3_vfsops.c @@ -35,6 +35,7 @@  #include <sys/systm.h>  #include <sys/cred.h>  #include <sys/vfs.h> +#include <sys/vfs_opreg.h>  #include <sys/vnode.h>  #include <sys/pathname.h>  #include <sys/sysmacros.h> @@ -155,15 +156,15 @@ int  nfs3init(int fstyp, char *name)  {  	static const fs_operation_def_t nfs3_vfsops_template[] = { -		VFSNAME_MOUNT, nfs3_mount, -		VFSNAME_UNMOUNT, nfs3_unmount, -		VFSNAME_ROOT, nfs3_root, -		VFSNAME_STATVFS, nfs3_statvfs, -		VFSNAME_SYNC, (fs_generic_func_p) nfs3_sync, -		VFSNAME_VGET, nfs3_vget, -		VFSNAME_MOUNTROOT, nfs3_mountroot, -		VFSNAME_FREEVFS, (fs_generic_func_p)nfs3_freevfs, -		NULL, NULL +		VFSNAME_MOUNT,		{ .vfs_mount = nfs3_mount }, +		VFSNAME_UNMOUNT,	{ .vfs_unmount = nfs3_unmount }, +		VFSNAME_ROOT,		{ .vfs_root = nfs3_root }, +		VFSNAME_STATVFS,	{ .vfs_statvfs = nfs3_statvfs }, +		VFSNAME_SYNC,		{ .vfs_sync = nfs3_sync }, +		VFSNAME_VGET,		{ .vfs_vget = nfs3_vget }, +		VFSNAME_MOUNTROOT,	{ .vfs_mountroot = nfs3_mountroot }, +		VFSNAME_FREEVFS,	{ .vfs_freevfs = nfs3_freevfs }, +		NULL,			NULL  	};  	int error; diff --git a/usr/src/uts/common/fs/nfs/nfs3_vnops.c b/usr/src/uts/common/fs/nfs/nfs3_vnops.c index 3b54de5ea7..7a9355b4a4 100644 --- a/usr/src/uts/common/fs/nfs/nfs3_vnops.c +++ b/usr/src/uts/common/fs/nfs/nfs3_vnops.c @@ -19,7 +19,7 @@   * CDDL HEADER END   */  /* - * Copyright 2006 Sun Microsystems, Inc.  All rights reserved. + * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.   * Use is subject to license terms.   */ @@ -37,6 +37,7 @@  #include <sys/time.h>  #include <sys/vnode.h>  #include <sys/vfs.h> +#include <sys/vfs_opreg.h>  #include <sys/file.h>  #include <sys/filio.h>  #include <sys/uio.h> @@ -216,46 +217,47 @@ static int	nfs3_shrlock(vnode_t *, int, struct shrlock *, int, cred_t *);  struct vnodeops *nfs3_vnodeops;  const fs_operation_def_t nfs3_vnodeops_template[] = { -	VOPNAME_OPEN, nfs3_open, -	VOPNAME_CLOSE, nfs3_close, -	VOPNAME_READ, nfs3_read, -	VOPNAME_WRITE, nfs3_write, -	VOPNAME_IOCTL, nfs3_ioctl, -	VOPNAME_GETATTR, nfs3_getattr, -	VOPNAME_SETATTR, nfs3_setattr, -	VOPNAME_ACCESS, nfs3_access, -	VOPNAME_LOOKUP, nfs3_lookup, -	VOPNAME_CREATE, nfs3_create, -	VOPNAME_REMOVE, nfs3_remove, -	VOPNAME_LINK, nfs3_link, -	VOPNAME_RENAME, nfs3_rename, -	VOPNAME_MKDIR, nfs3_mkdir, -	VOPNAME_RMDIR, nfs3_rmdir, -	VOPNAME_READDIR, nfs3_readdir, -	VOPNAME_SYMLINK, nfs3_symlink, -	VOPNAME_READLINK, nfs3_readlink, -	VOPNAME_FSYNC, nfs3_fsync, -	VOPNAME_INACTIVE, (fs_generic_func_p) nfs3_inactive, -	VOPNAME_FID, nfs3_fid, -	VOPNAME_RWLOCK, nfs3_rwlock, -	VOPNAME_RWUNLOCK, (fs_generic_func_p) nfs3_rwunlock, -	VOPNAME_SEEK, nfs3_seek, -	VOPNAME_FRLOCK, nfs3_frlock, -	VOPNAME_SPACE, nfs3_space, -	VOPNAME_REALVP, nfs3_realvp, -	VOPNAME_GETPAGE, nfs3_getpage, -	VOPNAME_PUTPAGE, nfs3_putpage, -	VOPNAME_MAP, (fs_generic_func_p) nfs3_map, -	VOPNAME_ADDMAP, (fs_generic_func_p) nfs3_addmap, -	VOPNAME_DELMAP, nfs3_delmap, -	VOPNAME_DUMP, nfs_dump,		/* there is no separate nfs3_dump */ -	VOPNAME_PATHCONF, nfs3_pathconf, -	VOPNAME_PAGEIO, nfs3_pageio, -	VOPNAME_DISPOSE, (fs_generic_func_p) nfs3_dispose, -	VOPNAME_SETSECATTR, nfs3_setsecattr, -	VOPNAME_GETSECATTR, nfs3_getsecattr, -	VOPNAME_SHRLOCK, nfs3_shrlock, -	NULL, NULL +	VOPNAME_OPEN,		{ .vop_open = nfs3_open }, +	VOPNAME_CLOSE,		{ .vop_close = nfs3_close }, +	VOPNAME_READ,		{ .vop_read = nfs3_read }, +	VOPNAME_WRITE,		{ .vop_write = nfs3_write }, +	VOPNAME_IOCTL,		{ .vop_ioctl = nfs3_ioctl }, +	VOPNAME_GETATTR,	{ .vop_getattr = nfs3_getattr }, +	VOPNAME_SETATTR,	{ .vop_setattr = nfs3_setattr }, +	VOPNAME_ACCESS,		{ .vop_access = nfs3_access }, +	VOPNAME_LOOKUP,		{ .vop_lookup = nfs3_lookup }, +	VOPNAME_CREATE,		{ .vop_create = nfs3_create }, +	VOPNAME_REMOVE,		{ .vop_remove = nfs3_remove }, +	VOPNAME_LINK,		{ .vop_link = nfs3_link }, +	VOPNAME_RENAME,		{ .vop_rename = nfs3_rename }, +	VOPNAME_MKDIR,		{ .vop_mkdir = nfs3_mkdir }, +	VOPNAME_RMDIR,		{ .vop_rmdir = nfs3_rmdir }, +	VOPNAME_READDIR,	{ .vop_readdir = nfs3_readdir }, +	VOPNAME_SYMLINK,	{ .vop_symlink = nfs3_symlink }, +	VOPNAME_READLINK,	{ .vop_readlink = nfs3_readlink }, +	VOPNAME_FSYNC,		{ .vop_fsync = nfs3_fsync }, +	VOPNAME_INACTIVE,	{ .vop_inactive = nfs3_inactive }, +	VOPNAME_FID,		{ .vop_fid = nfs3_fid }, +	VOPNAME_RWLOCK,		{ .vop_rwlock = nfs3_rwlock }, +	VOPNAME_RWUNLOCK,	{ .vop_rwunlock = nfs3_rwunlock }, +	VOPNAME_SEEK,		{ .vop_seek = nfs3_seek }, +	VOPNAME_FRLOCK,		{ .vop_frlock = nfs3_frlock }, +	VOPNAME_SPACE,		{ .vop_space = nfs3_space }, +	VOPNAME_REALVP,		{ .vop_realvp = nfs3_realvp }, +	VOPNAME_GETPAGE,	{ .vop_getpage = nfs3_getpage }, +	VOPNAME_PUTPAGE,	{ .vop_putpage = nfs3_putpage }, +	VOPNAME_MAP,		{ .vop_map = nfs3_map }, +	VOPNAME_ADDMAP,		{ .vop_addmap = nfs3_addmap }, +	VOPNAME_DELMAP,		{ .vop_delmap = nfs3_delmap }, +	/* no separate nfs3_dump */ +	VOPNAME_DUMP,		{ .vop_dump = nfs_dump }, +	VOPNAME_PATHCONF,	{ .vop_pathconf = nfs3_pathconf }, +	VOPNAME_PAGEIO,		{ .vop_pageio = nfs3_pageio }, +	VOPNAME_DISPOSE,	{ .vop_dispose = nfs3_dispose }, +	VOPNAME_SETSECATTR,	{ .vop_setsecattr = nfs3_setsecattr }, +	VOPNAME_GETSECATTR,	{ .vop_getsecattr = nfs3_getsecattr }, +	VOPNAME_SHRLOCK,	{ .vop_shrlock = nfs3_shrlock }, +	NULL,			NULL  };  /* diff --git a/usr/src/uts/common/fs/nfs/nfs4_srv.c b/usr/src/uts/common/fs/nfs/nfs4_srv.c index cd741c18c0..fd0ebe6f8e 100644 --- a/usr/src/uts/common/fs/nfs/nfs4_srv.c +++ b/usr/src/uts/common/fs/nfs/nfs4_srv.c @@ -19,7 +19,7 @@   * CDDL HEADER END   */  /* - * Copyright 2006 Sun Microsystems, Inc.  All rights reserved. + * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.   * Use is subject to license terms.   */ @@ -36,6 +36,7 @@  #include <sys/cred.h>  #include <sys/buf.h>  #include <sys/vfs.h> +#include <sys/vfs_opreg.h>  #include <sys/vnode.h>  #include <sys/uio.h>  #include <sys/errno.h> @@ -475,25 +476,25 @@ extern size_t strlcpy(char *dst, const char *src, size_t dstsize);  #define	nextdp(dp)	((struct dirent64 *)((char *)(dp) + (dp)->d_reclen))  static const fs_operation_def_t nfs4_rd_deleg_tmpl[] = { -	VOPNAME_OPEN, deleg_rdopen, -	VOPNAME_WRITE, deleg_write, -	VOPNAME_SETATTR, deleg_setattr, -	VOPNAME_RWLOCK, deleg_rd_rwlock, -	VOPNAME_SPACE, deleg_space, -	VOPNAME_SETSECATTR, deleg_setsecattr, -	VOPNAME_VNEVENT, deleg_vnevent, -	NULL, NULL +	VOPNAME_OPEN,		{ .femop_open = deleg_rdopen }, +	VOPNAME_WRITE,		{ .femop_write = deleg_write }, +	VOPNAME_SETATTR,	{ .femop_setattr = deleg_setattr }, +	VOPNAME_RWLOCK,		{ .femop_rwlock = deleg_rd_rwlock }, +	VOPNAME_SPACE,		{ .femop_space = deleg_space }, +	VOPNAME_SETSECATTR,	{ .femop_setsecattr = deleg_setsecattr }, +	VOPNAME_VNEVENT,	{ .femop_vnevent = deleg_vnevent }, +	NULL,			NULL  };  static const fs_operation_def_t nfs4_wr_deleg_tmpl[] = { -	VOPNAME_OPEN, deleg_wropen, -	VOPNAME_READ, deleg_read, -	VOPNAME_WRITE, deleg_write, -	VOPNAME_SETATTR, deleg_setattr, -	VOPNAME_RWLOCK, deleg_wr_rwlock, -	VOPNAME_SPACE, deleg_space, -	VOPNAME_SETSECATTR, deleg_setsecattr, -	VOPNAME_VNEVENT, deleg_vnevent, -	NULL, NULL +	VOPNAME_OPEN,		{ .femop_open = deleg_wropen }, +	VOPNAME_READ,		{ .femop_read = deleg_read }, +	VOPNAME_WRITE,		{ .femop_write = deleg_write }, +	VOPNAME_SETATTR,	{ .femop_setattr = deleg_setattr }, +	VOPNAME_RWLOCK,		{ .femop_rwlock = deleg_wr_rwlock }, +	VOPNAME_SPACE,		{ .femop_space = deleg_space }, +	VOPNAME_SETSECATTR,	{ .femop_setsecattr = deleg_setsecattr }, +	VOPNAME_VNEVENT,	{ .femop_vnevent = deleg_vnevent }, +	NULL,			NULL  };  int diff --git a/usr/src/uts/common/fs/nfs/nfs4_vfsops.c b/usr/src/uts/common/fs/nfs/nfs4_vfsops.c index 4bc1e88d5f..4f6719117f 100644 --- a/usr/src/uts/common/fs/nfs/nfs4_vfsops.c +++ b/usr/src/uts/common/fs/nfs/nfs4_vfsops.c @@ -19,7 +19,7 @@   * CDDL HEADER END   */  /* - * Copyright 2006 Sun Microsystems, Inc.  All rights reserved. + * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.   * Use is subject to license terms.   */ @@ -35,6 +35,7 @@  #include <sys/systm.h>  #include <sys/cred.h>  #include <sys/vfs.h> +#include <sys/vfs_opreg.h>  #include <sys/vnode.h>  #include <sys/pathname.h>  #include <sys/sysmacros.h> @@ -175,15 +176,15 @@ int  nfs4init(int fstyp, char *name)  {  	static const fs_operation_def_t nfs4_vfsops_template[] = { -		VFSNAME_MOUNT, nfs4_mount, -		VFSNAME_UNMOUNT, nfs4_unmount, -		VFSNAME_ROOT, nfs4_root, -		VFSNAME_STATVFS, nfs4_statvfs, -		VFSNAME_SYNC, (fs_generic_func_p) nfs4_sync, -		VFSNAME_VGET, nfs4_vget, -		VFSNAME_MOUNTROOT, nfs4_mountroot, -		VFSNAME_FREEVFS, (fs_generic_func_p)nfs4_freevfs, -		NULL, NULL +		VFSNAME_MOUNT,		{ .vfs_mount = nfs4_mount }, +		VFSNAME_UNMOUNT,	{ .vfs_unmount = nfs4_unmount }, +		VFSNAME_ROOT,		{ .vfs_root = nfs4_root }, +		VFSNAME_STATVFS,	{ .vfs_statvfs = nfs4_statvfs }, +		VFSNAME_SYNC,		{ .vfs_sync = nfs4_sync }, +		VFSNAME_VGET,		{ .vfs_vget = nfs4_vget }, +		VFSNAME_MOUNTROOT,	{ .vfs_mountroot = nfs4_mountroot }, +		VFSNAME_FREEVFS,	{ .vfs_freevfs = nfs4_freevfs }, +		NULL,			NULL  	};  	int error; diff --git a/usr/src/uts/common/fs/nfs/nfs4_vnops.c b/usr/src/uts/common/fs/nfs/nfs4_vnops.c index ba1155d523..36786c3514 100644 --- a/usr/src/uts/common/fs/nfs/nfs4_vnops.c +++ b/usr/src/uts/common/fs/nfs/nfs4_vnops.c @@ -37,6 +37,7 @@  #include <sys/time.h>  #include <sys/vnode.h>  #include <sys/vfs.h> +#include <sys/vfs_opreg.h>  #include <sys/file.h>  #include <sys/filio.h>  #include <sys/uio.h> @@ -363,46 +364,47 @@ static int nfs4_pathconf_disable_cache = 0;  struct vnodeops *nfs4_vnodeops;  const fs_operation_def_t nfs4_vnodeops_template[] = { -	VOPNAME_OPEN, nfs4_open, -	VOPNAME_CLOSE, nfs4_close, -	VOPNAME_READ, nfs4_read, -	VOPNAME_WRITE, nfs4_write, -	VOPNAME_IOCTL, nfs4_ioctl, -	VOPNAME_GETATTR, nfs4_getattr, -	VOPNAME_SETATTR, nfs4_setattr, -	VOPNAME_ACCESS, nfs4_access, -	VOPNAME_LOOKUP, nfs4_lookup, -	VOPNAME_CREATE, nfs4_create, -	VOPNAME_REMOVE, nfs4_remove, -	VOPNAME_LINK, nfs4_link, -	VOPNAME_RENAME, nfs4_rename, -	VOPNAME_MKDIR, nfs4_mkdir, -	VOPNAME_RMDIR, nfs4_rmdir, -	VOPNAME_READDIR, nfs4_readdir, -	VOPNAME_SYMLINK, nfs4_symlink, -	VOPNAME_READLINK, nfs4_readlink, -	VOPNAME_FSYNC, nfs4_fsync, -	VOPNAME_INACTIVE, (fs_generic_func_p) nfs4_inactive, -	VOPNAME_FID, nfs4_fid, -	VOPNAME_RWLOCK, nfs4_rwlock, -	VOPNAME_RWUNLOCK, (fs_generic_func_p) nfs4_rwunlock, -	VOPNAME_SEEK, nfs4_seek, -	VOPNAME_FRLOCK, nfs4_frlock, -	VOPNAME_SPACE, nfs4_space, -	VOPNAME_REALVP, nfs4_realvp, -	VOPNAME_GETPAGE, nfs4_getpage, -	VOPNAME_PUTPAGE, nfs4_putpage, -	VOPNAME_MAP, (fs_generic_func_p) nfs4_map, -	VOPNAME_ADDMAP, (fs_generic_func_p) nfs4_addmap, -	VOPNAME_DELMAP, nfs4_delmap, -	VOPNAME_DUMP, nfs_dump,		/* there is no separate nfs4_dump */ -	VOPNAME_PATHCONF, nfs4_pathconf, -	VOPNAME_PAGEIO, nfs4_pageio, -	VOPNAME_DISPOSE, (fs_generic_func_p) nfs4_dispose, -	VOPNAME_SETSECATTR, nfs4_setsecattr, -	VOPNAME_GETSECATTR, nfs4_getsecattr, -	VOPNAME_SHRLOCK, nfs4_shrlock, -	NULL, NULL +	VOPNAME_OPEN,		{ .vop_open = nfs4_open }, +	VOPNAME_CLOSE,		{ .vop_close = nfs4_close }, +	VOPNAME_READ,		{ .vop_read = nfs4_read }, +	VOPNAME_WRITE,		{ .vop_write = nfs4_write }, +	VOPNAME_IOCTL,		{ .vop_ioctl = nfs4_ioctl }, +	VOPNAME_GETATTR,	{ .vop_getattr = nfs4_getattr }, +	VOPNAME_SETATTR,	{ .vop_setattr = nfs4_setattr }, +	VOPNAME_ACCESS,		{ .vop_access = nfs4_access }, +	VOPNAME_LOOKUP,		{ .vop_lookup = nfs4_lookup }, +	VOPNAME_CREATE,		{ .vop_create = nfs4_create }, +	VOPNAME_REMOVE,		{ .vop_remove = nfs4_remove }, +	VOPNAME_LINK,		{ .vop_link = nfs4_link }, +	VOPNAME_RENAME,		{ .vop_rename = nfs4_rename }, +	VOPNAME_MKDIR,		{ .vop_mkdir = nfs4_mkdir }, +	VOPNAME_RMDIR,		{ .vop_rmdir = nfs4_rmdir }, +	VOPNAME_READDIR,	{ .vop_readdir = nfs4_readdir }, +	VOPNAME_SYMLINK,	{ .vop_symlink = nfs4_symlink }, +	VOPNAME_READLINK,	{ .vop_readlink = nfs4_readlink }, +	VOPNAME_FSYNC,		{ .vop_fsync = nfs4_fsync }, +	VOPNAME_INACTIVE,	{ .vop_inactive = nfs4_inactive }, +	VOPNAME_FID,		{ .vop_fid = nfs4_fid }, +	VOPNAME_RWLOCK,		{ .vop_rwlock = nfs4_rwlock }, +	VOPNAME_RWUNLOCK,	{ .vop_rwunlock = nfs4_rwunlock }, +	VOPNAME_SEEK,		{ .vop_seek = nfs4_seek }, +	VOPNAME_FRLOCK,		{ .vop_frlock = nfs4_frlock }, +	VOPNAME_SPACE,		{ .vop_space = nfs4_space }, +	VOPNAME_REALVP,		{ .vop_realvp = nfs4_realvp }, +	VOPNAME_GETPAGE,	{ .vop_getpage = nfs4_getpage }, +	VOPNAME_PUTPAGE,	{ .vop_putpage = nfs4_putpage }, +	VOPNAME_MAP,		{ .vop_map = nfs4_map }, +	VOPNAME_ADDMAP,		{ .vop_addmap = nfs4_addmap }, +	VOPNAME_DELMAP,		{ .vop_delmap = nfs4_delmap }, +	/* no separate nfs4_dump */ +	VOPNAME_DUMP,		{ .vop_dump = nfs_dump }, +	VOPNAME_PATHCONF,	{ .vop_pathconf = nfs4_pathconf }, +	VOPNAME_PAGEIO,		{ .vop_pageio = nfs4_pageio }, +	VOPNAME_DISPOSE,	{ .vop_dispose = nfs4_dispose }, +	VOPNAME_SETSECATTR,	{ .vop_setsecattr = nfs4_setsecattr }, +	VOPNAME_GETSECATTR,	{ .vop_getsecattr = nfs4_getsecattr }, +	VOPNAME_SHRLOCK,	{ .vop_shrlock = nfs4_shrlock }, +	NULL,			NULL  };  /* diff --git a/usr/src/uts/common/fs/nfs/nfs_common.c b/usr/src/uts/common/fs/nfs/nfs_common.c index 3d3eecd82a..ded7c5075c 100644 --- a/usr/src/uts/common/fs/nfs/nfs_common.c +++ b/usr/src/uts/common/fs/nfs/nfs_common.c @@ -19,7 +19,7 @@   * CDDL HEADER END   */  /* - * Copyright 2006 Sun Microsystems, Inc.  All rights reserved. + * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.   * Use is subject to license terms.   */ @@ -38,6 +38,7 @@  #include <sys/time.h>  #include <sys/utsname.h>  #include <sys/vfs.h> +#include <sys/vfs_opreg.h>  #include <sys/vnode.h>  #include <sys/pathname.h>  #include <sys/bootconf.h> @@ -336,7 +337,7 @@ static int  nfsdyninit(int fstyp, char *name)  {  	static const fs_operation_def_t nfsdyn_vfsops_template[] = { -		VFSNAME_MOUNTROOT, nfsdyn_mountroot, +		VFSNAME_MOUNTROOT, { .vfs_mountroot = nfsdyn_mountroot },  		NULL, NULL  	};  	int error; diff --git a/usr/src/uts/common/fs/nfs/nfs_vfsops.c b/usr/src/uts/common/fs/nfs/nfs_vfsops.c index 5b16b20228..e6c3a4f7c4 100644 --- a/usr/src/uts/common/fs/nfs/nfs_vfsops.c +++ b/usr/src/uts/common/fs/nfs/nfs_vfsops.c @@ -33,6 +33,7 @@  #include <sys/systm.h>  #include <sys/cred.h>  #include <sys/vfs.h> +#include <sys/vfs_opreg.h>  #include <sys/vnode.h>  #include <sys/pathname.h>  #include <sys/sysmacros.h> @@ -157,15 +158,15 @@ int  nfsinit(int fstyp, char *name)  {  	static const fs_operation_def_t nfs_vfsops_template[] = { -		VFSNAME_MOUNT, nfs_mount, -		VFSNAME_UNMOUNT, nfs_unmount, -		VFSNAME_ROOT, nfs_root, -		VFSNAME_STATVFS, nfs_statvfs, -		VFSNAME_SYNC, (fs_generic_func_p) nfs_sync, -		VFSNAME_VGET, nfs_vget, -		VFSNAME_MOUNTROOT, nfs_mountroot, -		VFSNAME_FREEVFS, (fs_generic_func_p)nfs_freevfs, -		NULL, NULL +		VFSNAME_MOUNT,		{ .vfs_mount = nfs_mount }, +		VFSNAME_UNMOUNT,	{ .vfs_unmount = nfs_unmount }, +		VFSNAME_ROOT,		{ .vfs_root = nfs_root }, +		VFSNAME_STATVFS,	{ .vfs_statvfs = nfs_statvfs }, +		VFSNAME_SYNC,		{ .vfs_sync = nfs_sync }, +		VFSNAME_VGET,		{ .vfs_vget = nfs_vget }, +		VFSNAME_MOUNTROOT,	{ .vfs_mountroot = nfs_mountroot }, +		VFSNAME_FREEVFS,	{ .vfs_freevfs = nfs_freevfs }, +		NULL,			NULL  	};  	int error; diff --git a/usr/src/uts/common/fs/nfs/nfs_vnops.c b/usr/src/uts/common/fs/nfs/nfs_vnops.c index 583ce42473..5e587027d7 100644 --- a/usr/src/uts/common/fs/nfs/nfs_vnops.c +++ b/usr/src/uts/common/fs/nfs/nfs_vnops.c @@ -19,7 +19,7 @@   * CDDL HEADER END   */  /* - * Copyright 2006 Sun Microsystems, Inc.  All rights reserved. + * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.   * Use is subject to license terms.   *   *	Copyright (c) 1983,1984,1985,1986,1987,1988,1989 AT&T. @@ -35,6 +35,7 @@  #include <sys/time.h>  #include <sys/vnode.h>  #include <sys/vfs.h> +#include <sys/vfs_opreg.h>  #include <sys/file.h>  #include <sys/filio.h>  #include <sys/uio.h> @@ -179,45 +180,45 @@ static int	nfs_shrlock(vnode_t *, int, struct shrlock *, int, cred_t *);  struct vnodeops *nfs_vnodeops;  const fs_operation_def_t nfs_vnodeops_template[] = { -	VOPNAME_OPEN, nfs_open, -	VOPNAME_CLOSE, nfs_close, -	VOPNAME_READ, nfs_read, -	VOPNAME_WRITE, nfs_write, -	VOPNAME_IOCTL, nfs_ioctl, -	VOPNAME_GETATTR, nfs_getattr, -	VOPNAME_SETATTR, nfs_setattr, -	VOPNAME_ACCESS, nfs_access, -	VOPNAME_LOOKUP, nfs_lookup, -	VOPNAME_CREATE, nfs_create, -	VOPNAME_REMOVE, nfs_remove, -	VOPNAME_LINK, nfs_link, -	VOPNAME_RENAME, nfs_rename, -	VOPNAME_MKDIR, nfs_mkdir, -	VOPNAME_RMDIR, nfs_rmdir, -	VOPNAME_READDIR, nfs_readdir, -	VOPNAME_SYMLINK, nfs_symlink, -	VOPNAME_READLINK, nfs_readlink, -	VOPNAME_FSYNC, nfs_fsync, -	VOPNAME_INACTIVE, (fs_generic_func_p) nfs_inactive, -	VOPNAME_FID, nfs_fid, -	VOPNAME_RWLOCK, nfs_rwlock, -	VOPNAME_RWUNLOCK, (fs_generic_func_p) nfs_rwunlock, -	VOPNAME_SEEK, nfs_seek, -	VOPNAME_FRLOCK, nfs_frlock, -	VOPNAME_SPACE, nfs_space, -	VOPNAME_REALVP, nfs_realvp, -	VOPNAME_GETPAGE, nfs_getpage, -	VOPNAME_PUTPAGE, nfs_putpage, -	VOPNAME_MAP, (fs_generic_func_p) nfs_map, -	VOPNAME_ADDMAP, (fs_generic_func_p) nfs_addmap, -	VOPNAME_DELMAP, nfs_delmap, -	VOPNAME_DUMP, nfs_dump, -	VOPNAME_PATHCONF, nfs_pathconf, -	VOPNAME_PAGEIO, nfs_pageio, -	VOPNAME_SETSECATTR, nfs_setsecattr, -	VOPNAME_GETSECATTR, nfs_getsecattr, -	VOPNAME_SHRLOCK, nfs_shrlock, -	NULL, NULL +	VOPNAME_OPEN,		{ .vop_open = nfs_open }, +	VOPNAME_CLOSE,		{ .vop_close = nfs_close }, +	VOPNAME_READ,		{ .vop_read = nfs_read }, +	VOPNAME_WRITE,		{ .vop_write = nfs_write }, +	VOPNAME_IOCTL,		{ .vop_ioctl = nfs_ioctl }, +	VOPNAME_GETATTR,	{ .vop_getattr = nfs_getattr }, +	VOPNAME_SETATTR,	{ .vop_setattr = nfs_setattr }, +	VOPNAME_ACCESS,		{ .vop_access = nfs_access }, +	VOPNAME_LOOKUP,		{ .vop_lookup = nfs_lookup }, +	VOPNAME_CREATE,		{ .vop_create = nfs_create }, +	VOPNAME_REMOVE,		{ .vop_remove = nfs_remove }, +	VOPNAME_LINK,		{ .vop_link = nfs_link }, +	VOPNAME_RENAME,		{ .vop_rename = nfs_rename }, +	VOPNAME_MKDIR,		{ .vop_mkdir = nfs_mkdir }, +	VOPNAME_RMDIR,		{ .vop_rmdir = nfs_rmdir }, +	VOPNAME_READDIR,	{ .vop_readdir = nfs_readdir }, +	VOPNAME_SYMLINK,	{ .vop_symlink = nfs_symlink }, +	VOPNAME_READLINK,	{ .vop_readlink = nfs_readlink }, +	VOPNAME_FSYNC,		{ .vop_fsync = nfs_fsync }, +	VOPNAME_INACTIVE,	{ .vop_inactive = nfs_inactive }, +	VOPNAME_FID,		{ .vop_fid = nfs_fid }, +	VOPNAME_RWLOCK,		{ .vop_rwlock = nfs_rwlock }, +	VOPNAME_RWUNLOCK,	{ .vop_rwunlock = nfs_rwunlock }, +	VOPNAME_SEEK,		{ .vop_seek = nfs_seek }, +	VOPNAME_FRLOCK,		{ .vop_frlock = nfs_frlock }, +	VOPNAME_SPACE,		{ .vop_space = nfs_space }, +	VOPNAME_REALVP,		{ .vop_realvp = nfs_realvp }, +	VOPNAME_GETPAGE,	{ .vop_getpage = nfs_getpage }, +	VOPNAME_PUTPAGE,	{ .vop_putpage = nfs_putpage }, +	VOPNAME_MAP,		{ .vop_map = nfs_map }, +	VOPNAME_ADDMAP,		{ .vop_addmap = nfs_addmap }, +	VOPNAME_DELMAP,		{ .vop_delmap = nfs_delmap }, +	VOPNAME_DUMP,		{ .vop_dump = nfs_dump }, +	VOPNAME_PATHCONF,	{ .vop_pathconf = nfs_pathconf }, +	VOPNAME_PAGEIO,		{ .vop_pageio = nfs_pageio }, +	VOPNAME_SETSECATTR,	{ .vop_setsecattr = nfs_setsecattr }, +	VOPNAME_GETSECATTR,	{ .vop_getsecattr = nfs_getsecattr }, +	VOPNAME_SHRLOCK,	{ .vop_shrlock = nfs_shrlock }, +	NULL,			NULL  };  /* diff --git a/usr/src/uts/common/fs/objfs/objfs_data.c b/usr/src/uts/common/fs/objfs/objfs_data.c index 8f26850a47..4e050112fb 100644 --- a/usr/src/uts/common/fs/objfs/objfs_data.c +++ b/usr/src/uts/common/fs/objfs/objfs_data.c @@ -2,9 +2,8 @@   * CDDL HEADER START   *   * The contents of this file are subject to the terms of the - * Common Development and Distribution License, Version 1.0 only - * (the "License").  You may not use this file except in compliance - * with the License. + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License.   *   * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE   * or http://www.opensolaris.org/os/licensing. @@ -20,7 +19,7 @@   * CDDL HEADER END   */  /* - * Copyright 2005 Sun Microsystems, Inc.  All rights reserved. + * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.   * Use is subject to license terms.   */ @@ -38,6 +37,7 @@  #include <sys/stat.h>  #include <sys/systm.h>  #include <sys/sysmacros.h> +#include <sys/vfs_opreg.h>  /*   * /system/object/<obj>/object @@ -751,14 +751,14 @@ objfs_data_seek(vnode_t *vp, offset_t off, offset_t *offp)  }  const fs_operation_def_t objfs_tops_data[] = { -	{ VOPNAME_OPEN,		objfs_data_open }, -	{ VOPNAME_CLOSE,	objfs_common_close }, -	{ VOPNAME_IOCTL,	fs_inval }, -	{ VOPNAME_GETATTR,	objfs_data_getattr }, -	{ VOPNAME_ACCESS,	objfs_data_access }, -	{ VOPNAME_INACTIVE,	(fs_generic_func_p) gfs_vop_inactive }, -	{ VOPNAME_READ,		objfs_data_read }, -	{ VOPNAME_SEEK,		objfs_data_seek }, -	{ VOPNAME_MAP,		(fs_generic_func_p) gfs_vop_map }, +	{ VOPNAME_OPEN,		{ .vop_open = objfs_data_open } }, +	{ VOPNAME_CLOSE,	{ .vop_close = objfs_common_close } }, +	{ VOPNAME_IOCTL,	{ .error = fs_inval } }, +	{ VOPNAME_GETATTR,	{ .vop_getattr = objfs_data_getattr } }, +	{ VOPNAME_ACCESS,	{ .vop_access = objfs_data_access } }, +	{ VOPNAME_INACTIVE,	{ .vop_inactive = gfs_vop_inactive } }, +	{ VOPNAME_READ,		{ .vop_read = objfs_data_read } }, +	{ VOPNAME_SEEK,		{ .vop_seek = objfs_data_seek } }, +	{ VOPNAME_MAP,		{ .vop_map = gfs_vop_map } },  	{ NULL }  }; diff --git a/usr/src/uts/common/fs/objfs/objfs_odir.c b/usr/src/uts/common/fs/objfs/objfs_odir.c index 500957933a..a7ef0ed502 100644 --- a/usr/src/uts/common/fs/objfs/objfs_odir.c +++ b/usr/src/uts/common/fs/objfs/objfs_odir.c @@ -2,9 +2,8 @@   * CDDL HEADER START   *   * The contents of this file are subject to the terms of the - * Common Development and Distribution License, Version 1.0 only - * (the "License").  You may not use this file except in compliance - * with the License. + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License.   *   * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE   * or http://www.opensolaris.org/os/licensing. @@ -20,7 +19,7 @@   * CDDL HEADER END   */  /* - * Copyright 2005 Sun Microsystems, Inc.  All rights reserved. + * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.   * Use is subject to license terms.   */ @@ -32,6 +31,7 @@  #include <sys/modctl.h>  #include <sys/objfs.h>  #include <sys/objfs_impl.h> +#include <sys/vfs_opreg.h>  #include <sys/stat.h>  static gfs_dirent_t objfs_odir_entries[] = { @@ -78,14 +78,14 @@ objfs_odir_getattr(vnode_t *vp, vattr_t *vap, int flags, cred_t *cr)  }  const fs_operation_def_t objfs_tops_odir[] = { -	{ VOPNAME_OPEN,		objfs_dir_open }, -	{ VOPNAME_CLOSE,	objfs_common_close }, -	{ VOPNAME_IOCTL,	fs_inval }, -	{ VOPNAME_GETATTR,	objfs_odir_getattr }, -	{ VOPNAME_ACCESS,	objfs_dir_access }, -	{ VOPNAME_READDIR,	gfs_vop_readdir }, -	{ VOPNAME_LOOKUP,	gfs_vop_lookup }, -	{ VOPNAME_SEEK,		fs_seek }, -	{ VOPNAME_INACTIVE,	(fs_generic_func_p) gfs_vop_inactive }, +	{ VOPNAME_OPEN,		{ .vop_open = objfs_dir_open } }, +	{ VOPNAME_CLOSE,	{ .vop_close = objfs_common_close } }, +	{ VOPNAME_IOCTL,	{ .error = fs_inval } }, +	{ VOPNAME_GETATTR,	{ .vop_getattr = objfs_odir_getattr } }, +	{ VOPNAME_ACCESS,	{ .vop_access = objfs_dir_access } }, +	{ VOPNAME_READDIR,	{ .vop_readdir = gfs_vop_readdir } }, +	{ VOPNAME_LOOKUP,	{ .vop_lookup = gfs_vop_lookup } }, +	{ VOPNAME_SEEK,		{ .vop_seek = fs_seek } }, +	{ VOPNAME_INACTIVE,	{ .vop_inactive = gfs_vop_inactive } },  	{ NULL }  }; diff --git a/usr/src/uts/common/fs/objfs/objfs_root.c b/usr/src/uts/common/fs/objfs/objfs_root.c index 5c83f1e8dc..1e9bb8c1f0 100644 --- a/usr/src/uts/common/fs/objfs/objfs_root.c +++ b/usr/src/uts/common/fs/objfs/objfs_root.c @@ -2,9 +2,8 @@   * CDDL HEADER START   *   * The contents of this file are subject to the terms of the - * Common Development and Distribution License, Version 1.0 only - * (the "License").  You may not use this file except in compliance - * with the License. + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License.   *   * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE   * or http://www.opensolaris.org/os/licensing. @@ -20,7 +19,7 @@   * CDDL HEADER END   */  /* - * Copyright 2005 Sun Microsystems, Inc.  All rights reserved. + * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.   * Use is subject to license terms.   */ @@ -34,6 +33,7 @@  #include <sys/modctl.h>  #include <sys/objfs.h>  #include <sys/objfs_impl.h> +#include <sys/vfs_opreg.h>  #include <sys/systm.h>  extern int last_module_id; @@ -156,14 +156,14 @@ objfs_root_readdir(vnode_t *vp, uio_t *uiop, cred_t *cr, int *eofp)  }  const fs_operation_def_t objfs_tops_root[] = { -	{ VOPNAME_OPEN,		objfs_dir_open }, -	{ VOPNAME_CLOSE,	objfs_common_close }, -	{ VOPNAME_IOCTL,	fs_inval }, -	{ VOPNAME_GETATTR,	objfs_root_getattr }, -	{ VOPNAME_ACCESS,	objfs_dir_access }, -	{ VOPNAME_READDIR,	objfs_root_readdir }, -	{ VOPNAME_LOOKUP,	gfs_vop_lookup }, -	{ VOPNAME_SEEK,		fs_seek }, -	{ VOPNAME_INACTIVE,	(fs_generic_func_p)gfs_vop_inactive }, +	{ VOPNAME_OPEN,		{ .vop_open = objfs_dir_open } }, +	{ VOPNAME_CLOSE,	{ .vop_close = objfs_common_close } }, +	{ VOPNAME_IOCTL,	{ .error = fs_inval } }, +	{ VOPNAME_GETATTR,	{ .vop_getattr = objfs_root_getattr } }, +	{ VOPNAME_ACCESS,	{ .vop_access = objfs_dir_access } }, +	{ VOPNAME_READDIR,	{ .vop_readdir = objfs_root_readdir } }, +	{ VOPNAME_LOOKUP,	{ .vop_lookup = gfs_vop_lookup } }, +	{ VOPNAME_SEEK,		{ .vop_seek = fs_seek } }, +	{ VOPNAME_INACTIVE,	{ .vop_inactive = gfs_vop_inactive } },  	{ NULL }  }; diff --git a/usr/src/uts/common/fs/objfs/objfs_vfs.c b/usr/src/uts/common/fs/objfs/objfs_vfs.c index 77f5b6a5ef..0ee0b0a577 100644 --- a/usr/src/uts/common/fs/objfs/objfs_vfs.c +++ b/usr/src/uts/common/fs/objfs/objfs_vfs.c @@ -2,9 +2,8 @@   * CDDL HEADER START   *   * The contents of this file are subject to the terms of the - * Common Development and Distribution License, Version 1.0 only - * (the "License").  You may not use this file except in compliance - * with the License. + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License.   *   * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE   * or http://www.opensolaris.org/os/licensing. @@ -20,7 +19,7 @@   * CDDL HEADER END   */  /* - * Copyright 2004 Sun Microsystems, Inc.  All rights reserved. + * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.   * Use is subject to license terms.   */ @@ -32,6 +31,7 @@  #include <sys/mount.h>  #include <sys/objfs.h>  #include <sys/objfs_impl.h> +#include <sys/vfs_opreg.h>  #include <sys/policy.h>  #include <sys/sunddi.h>  #include <sys/sysmacros.h> @@ -267,9 +267,9 @@ objfs_statvfs(vfs_t *vfsp, statvfs64_t *sp)  }  static const fs_operation_def_t objfs_vfstops[] = { -	{ VFSNAME_MOUNT,	objfs_mount }, -	{ VFSNAME_UNMOUNT,	objfs_unmount }, -	{ VFSNAME_ROOT,		objfs_root }, -	{ VFSNAME_STATVFS,	objfs_statvfs }, +	{ VFSNAME_MOUNT,	{ .vfs_mount = objfs_mount } }, +	{ VFSNAME_UNMOUNT,	{ .vfs_unmount = objfs_unmount } }, +	{ VFSNAME_ROOT,		{ .vfs_root = objfs_root } }, +	{ VFSNAME_STATVFS,	{ .vfs_statvfs = objfs_statvfs } },  	{ NULL }  }; diff --git a/usr/src/uts/common/fs/pcfs/pc_vfsops.c b/usr/src/uts/common/fs/pcfs/pc_vfsops.c index 56a266b60b..98d98e04d9 100644 --- a/usr/src/uts/common/fs/pcfs/pc_vfsops.c +++ b/usr/src/uts/common/fs/pcfs/pc_vfsops.c @@ -19,7 +19,7 @@   * CDDL HEADER END   */  /* - * Copyright 2006 Sun Microsystems, Inc.  All rights reserved. + * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.   * Use is subject to license terms.   */ @@ -34,6 +34,7 @@  #include <sys/disp.h>  #include <sys/buf.h>  #include <sys/vfs.h> +#include <sys/vfs_opreg.h>  #include <sys/vnode.h>  #include <sys/fdio.h>  #include <sys/file.h> @@ -225,14 +226,14 @@ static int  pcfsinit(int fstype, char *name)  {  	static const fs_operation_def_t pcfs_vfsops_template[] = { -		VFSNAME_MOUNT, pcfs_mount, -		VFSNAME_UNMOUNT, pcfs_unmount, -		VFSNAME_ROOT, pcfs_root, -		VFSNAME_STATVFS, pcfs_statvfs, -		VFSNAME_SYNC, (fs_generic_func_p) pcfs_sync, -		VFSNAME_VGET, pcfs_vget, -		VFSNAME_FREEVFS, (fs_generic_func_p) pcfs_freevfs, -		NULL, NULL +		VFSNAME_MOUNT,		{ .vfs_mount = pcfs_mount }, +		VFSNAME_UNMOUNT,	{ .vfs_unmount = pcfs_unmount }, +		VFSNAME_ROOT,		{ .vfs_root = pcfs_root }, +		VFSNAME_STATVFS,	{ .vfs_statvfs = pcfs_statvfs }, +		VFSNAME_SYNC,		{ .vfs_sync = pcfs_sync }, +		VFSNAME_VGET,		{ .vfs_vget = pcfs_vget }, +		VFSNAME_FREEVFS,	{ .vfs_freevfs = pcfs_freevfs }, +		NULL,			NULL  	};  	int error; diff --git a/usr/src/uts/common/fs/pcfs/pc_vnops.c b/usr/src/uts/common/fs/pcfs/pc_vnops.c index 46d583d910..a2b3d730dd 100644 --- a/usr/src/uts/common/fs/pcfs/pc_vnops.c +++ b/usr/src/uts/common/fs/pcfs/pc_vnops.c @@ -19,7 +19,7 @@   * CDDL HEADER END   */  /* - * Copyright 2006 Sun Microsystems, Inc.  All rights reserved. + * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.   * Use is subject to license terms.   */ @@ -33,6 +33,7 @@  #include <sys/buf.h>  #include <sys/stat.h>  #include <sys/vfs.h> +#include <sys/vfs_opreg.h>  #include <sys/dirent.h>  #include <sys/vnode.h>  #include <sys/proc.h> @@ -123,48 +124,48 @@ struct vnodeops *pcfs_fvnodeops;  struct vnodeops *pcfs_dvnodeops;  const fs_operation_def_t pcfs_fvnodeops_template[] = { -	VOPNAME_OPEN, pcfs_open, -	VOPNAME_CLOSE, pcfs_close, -	VOPNAME_READ, pcfs_read, -	VOPNAME_WRITE, pcfs_write, -	VOPNAME_GETATTR, pcfs_getattr, -	VOPNAME_SETATTR, pcfs_setattr, -	VOPNAME_ACCESS, pcfs_access, -	VOPNAME_FSYNC, pcfs_fsync, -	VOPNAME_INACTIVE, (fs_generic_func_p) pcfs_inactive, -	VOPNAME_FID, pcfs_fid, -	VOPNAME_SEEK, pcfs_seek, -	VOPNAME_SPACE, pcfs_space, -	VOPNAME_GETPAGE, pcfs_getpage, -	VOPNAME_PUTPAGE, pcfs_putpage, -	VOPNAME_MAP, (fs_generic_func_p) pcfs_map, -	VOPNAME_ADDMAP, (fs_generic_func_p) pcfs_addmap, -	VOPNAME_DELMAP, pcfs_delmap, -	VOPNAME_PATHCONF, pcfs_pathconf, -	VOPNAME_VNEVENT, fs_vnevent_support, -	NULL, NULL +	VOPNAME_OPEN,		{ .vop_open = pcfs_open }, +	VOPNAME_CLOSE,		{ .vop_close = pcfs_close }, +	VOPNAME_READ,		{ .vop_read = pcfs_read }, +	VOPNAME_WRITE,		{ .vop_write = pcfs_write }, +	VOPNAME_GETATTR,	{ .vop_getattr = pcfs_getattr }, +	VOPNAME_SETATTR,	{ .vop_setattr = pcfs_setattr }, +	VOPNAME_ACCESS,		{ .vop_access = pcfs_access }, +	VOPNAME_FSYNC,		{ .vop_fsync = pcfs_fsync }, +	VOPNAME_INACTIVE,	{ .vop_inactive = pcfs_inactive }, +	VOPNAME_FID,		{ .vop_fid = pcfs_fid }, +	VOPNAME_SEEK,		{ .vop_seek = pcfs_seek }, +	VOPNAME_SPACE,		{ .vop_space = pcfs_space }, +	VOPNAME_GETPAGE,	{ .vop_getpage = pcfs_getpage }, +	VOPNAME_PUTPAGE,	{ .vop_putpage = pcfs_putpage }, +	VOPNAME_MAP,		{ .vop_map = pcfs_map }, +	VOPNAME_ADDMAP,		{ .vop_addmap = pcfs_addmap }, +	VOPNAME_DELMAP,		{ .vop_delmap = pcfs_delmap }, +	VOPNAME_PATHCONF,	{ .vop_pathconf = pcfs_pathconf }, +	VOPNAME_VNEVENT,	{ .vop_vnevent = fs_vnevent_support }, +	NULL,			NULL  };  const fs_operation_def_t pcfs_dvnodeops_template[] = { -	VOPNAME_OPEN, pcfs_open, -	VOPNAME_CLOSE, pcfs_close, -	VOPNAME_GETATTR, pcfs_getattr, -	VOPNAME_SETATTR, pcfs_setattr, -	VOPNAME_ACCESS, pcfs_access, -	VOPNAME_LOOKUP, pcfs_lookup, -	VOPNAME_CREATE, pcfs_create, -	VOPNAME_REMOVE, pcfs_remove, -	VOPNAME_RENAME, pcfs_rename, -	VOPNAME_MKDIR, pcfs_mkdir, -	VOPNAME_RMDIR, pcfs_rmdir, -	VOPNAME_READDIR, pcfs_readdir, -	VOPNAME_FSYNC, pcfs_fsync, -	VOPNAME_INACTIVE, (fs_generic_func_p) pcfs_inactive, -	VOPNAME_FID, pcfs_fid, -	VOPNAME_SEEK, pcfs_seek, -	VOPNAME_PATHCONF, pcfs_pathconf, -	VOPNAME_VNEVENT, fs_vnevent_support, -	NULL, NULL +	VOPNAME_OPEN,		{ .vop_open = pcfs_open }, +	VOPNAME_CLOSE,		{ .vop_close = pcfs_close }, +	VOPNAME_GETATTR,	{ .vop_getattr = pcfs_getattr }, +	VOPNAME_SETATTR,	{ .vop_setattr = pcfs_setattr }, +	VOPNAME_ACCESS,		{ .vop_access = pcfs_access }, +	VOPNAME_LOOKUP,		{ .vop_lookup = pcfs_lookup }, +	VOPNAME_CREATE,		{ .vop_create = pcfs_create }, +	VOPNAME_REMOVE,		{ .vop_remove = pcfs_remove }, +	VOPNAME_RENAME,		{ .vop_rename = pcfs_rename }, +	VOPNAME_MKDIR,		{ .vop_mkdir = pcfs_mkdir }, +	VOPNAME_RMDIR,		{ .vop_rmdir = pcfs_rmdir }, +	VOPNAME_READDIR,	{ .vop_readdir = pcfs_readdir }, +	VOPNAME_FSYNC,		{ .vop_fsync = pcfs_fsync }, +	VOPNAME_INACTIVE,	{ .vop_inactive = pcfs_inactive }, +	VOPNAME_FID,		{ .vop_fid = pcfs_fid }, +	VOPNAME_SEEK,		{ .vop_seek = pcfs_seek }, +	VOPNAME_PATHCONF,	{ .vop_pathconf = pcfs_pathconf }, +	VOPNAME_VNEVENT,	{ .vop_vnevent = fs_vnevent_support }, +	NULL,			NULL  }; diff --git a/usr/src/uts/common/fs/portfs/port.c b/usr/src/uts/common/fs/portfs/port.c index 0c657b220a..a331eaea5b 100644 --- a/usr/src/uts/common/fs/portfs/port.c +++ b/usr/src/uts/common/fs/portfs/port.c @@ -31,6 +31,7 @@  #include <sys/cred.h>  #include <sys/modctl.h>  #include <sys/vfs.h> +#include <sys/vfs_opreg.h>  #include <sys/sysmacros.h>  #include <sys/cmn_err.h>  #include <sys/stat.h> diff --git a/usr/src/uts/common/fs/portfs/port_vnops.c b/usr/src/uts/common/fs/portfs/port_vnops.c index 14f3a60aa6..aa8bc952d2 100644 --- a/usr/src/uts/common/fs/portfs/port_vnops.c +++ b/usr/src/uts/common/fs/portfs/port_vnops.c @@ -20,7 +20,7 @@   */  /* - * Copyright 2006 Sun Microsystems, Inc.  All rights reserved. + * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.   * Use is subject to license terms.   */ @@ -28,6 +28,7 @@  #include <sys/types.h>  #include <sys/vnode.h> +#include <sys/vfs_opreg.h>  #include <sys/kmem.h>  #include <fs/fs_subr.h>  #include <sys/proc.h> @@ -44,19 +45,19 @@ static int port_poll(vnode_t *, short, int, short *, struct pollhead **);  static void port_inactive(struct vnode *, cred_t *);  const fs_operation_def_t port_vnodeops_template[] = { -	VOPNAME_OPEN, port_open, -	VOPNAME_CLOSE, port_close, -	VOPNAME_GETATTR, port_getattr, -	VOPNAME_ACCESS, port_access, -	VOPNAME_INACTIVE, (fs_generic_func_p) port_inactive, -	VOPNAME_FRLOCK, fs_error, -	VOPNAME_REALVP, port_realvp, -	VOPNAME_POLL, (fs_generic_func_p) port_poll, -	VOPNAME_PATHCONF, fs_error, -	VOPNAME_DISPOSE, fs_error, -	VOPNAME_GETSECATTR, fs_error, -	VOPNAME_SHRLOCK, fs_error, -	NULL, NULL +	VOPNAME_OPEN,		{ .vop_open = port_open }, +	VOPNAME_CLOSE,		{ .vop_close = port_close }, +	VOPNAME_GETATTR,	{ .vop_getattr = port_getattr }, +	VOPNAME_ACCESS,		{ .vop_access = port_access }, +	VOPNAME_INACTIVE,	{ .vop_inactive = port_inactive }, +	VOPNAME_FRLOCK,		{ .error = fs_error }, +	VOPNAME_REALVP,		{ .vop_realvp = port_realvp }, +	VOPNAME_POLL,		{ .vop_poll = port_poll }, +	VOPNAME_PATHCONF,	{ .error = fs_error }, +	VOPNAME_DISPOSE,	{ .error = fs_error }, +	VOPNAME_GETSECATTR,	{ .error = fs_error }, +	VOPNAME_SHRLOCK,	{ .error = fs_error }, +	NULL,			NULL  };  /* ARGSUSED */ diff --git a/usr/src/uts/common/fs/proc/prvfsops.c b/usr/src/uts/common/fs/proc/prvfsops.c index 8f2d079feb..35d829facd 100644 --- a/usr/src/uts/common/fs/proc/prvfsops.c +++ b/usr/src/uts/common/fs/proc/prvfsops.c @@ -19,7 +19,7 @@   * CDDL HEADER END   */  /* - * Copyright 2006 Sun Microsystems, Inc.  All rights reserved. + * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.   * Use is subject to license terms.   */ @@ -44,6 +44,7 @@  #include <sys/zone.h>  #include <sys/var.h>  #include <sys/vfs.h> +#include <sys/vfs_opreg.h>  #include <sys/vnode.h>  #include <sys/mode.h>  #include <sys/signal.h> @@ -143,11 +144,11 @@ static int  prinit(int fstype, char *name)  {  	static const fs_operation_def_t pr_vfsops_template[] = { -		VFSNAME_MOUNT, prmount, -		VFSNAME_UNMOUNT, prunmount, -		VFSNAME_ROOT, prroot, -		VFSNAME_STATVFS, prstatvfs, -		NULL, NULL +		VFSNAME_MOUNT,		{ .vfs_mount = prmount }, +		VFSNAME_UNMOUNT,	{ .vfs_unmount = prunmount }, +		VFSNAME_ROOT,		{ .vfs_root = prroot }, +		VFSNAME_STATVFS,	{ .vfs_statvfs = prstatvfs }, +		NULL,			NULL  	};  	extern const fs_operation_def_t pr_vnodeops_template[];  	int error; diff --git a/usr/src/uts/common/fs/proc/prvnops.c b/usr/src/uts/common/fs/proc/prvnops.c index 3f15bb084f..a8be6c151d 100644 --- a/usr/src/uts/common/fs/proc/prvnops.c +++ b/usr/src/uts/common/fs/proc/prvnops.c @@ -19,7 +19,7 @@   * CDDL HEADER END   */  /* - * Copyright 2006 Sun Microsystems, Inc.  All rights reserved. + * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.   * Use is subject to license terms.   */ @@ -53,6 +53,7 @@  #include <sys/poll.h>  #include <sys/user.h>  #include <sys/vfs.h> +#include <sys/vfs_opreg.h>  #include <sys/gfs.h>  #include <sys/vnode.h>  #include <sys/fault.h> @@ -5927,25 +5928,25 @@ extern int prioctl(vnode_t *, int, intptr_t, int, cred_t *, int *);   * /proc vnode operations vector   */  const fs_operation_def_t pr_vnodeops_template[] = { -	VOPNAME_OPEN, propen, -	VOPNAME_CLOSE, prclose, -	VOPNAME_READ, prread, -	VOPNAME_WRITE, prwrite, -	VOPNAME_IOCTL, prioctl, -	VOPNAME_GETATTR, prgetattr, -	VOPNAME_ACCESS, praccess, -	VOPNAME_LOOKUP, prlookup, -	VOPNAME_CREATE, prcreate, -	VOPNAME_READDIR, prreaddir, -	VOPNAME_READLINK, prreadlink, -	VOPNAME_FSYNC, prfsync, -	VOPNAME_INACTIVE, (fs_generic_func_p) prinactive, -	VOPNAME_SEEK, prseek, -	VOPNAME_CMP, prcmp, -	VOPNAME_FRLOCK, fs_error, -	VOPNAME_REALVP, prrealvp, -	VOPNAME_POLL, (fs_generic_func_p) prpoll, -	VOPNAME_DISPOSE, fs_error, -	VOPNAME_SHRLOCK, fs_error, -	NULL, NULL +	VOPNAME_OPEN,		{ .vop_open = propen }, +	VOPNAME_CLOSE,		{ .vop_close = prclose }, +	VOPNAME_READ,		{ .vop_read = prread }, +	VOPNAME_WRITE,		{ .vop_write = prwrite }, +	VOPNAME_IOCTL,		{ .vop_ioctl = prioctl }, +	VOPNAME_GETATTR,	{ .vop_getattr = prgetattr }, +	VOPNAME_ACCESS,		{ .vop_access = praccess }, +	VOPNAME_LOOKUP,		{ .vop_lookup = prlookup }, +	VOPNAME_CREATE,		{ .vop_create = prcreate }, +	VOPNAME_READDIR,	{ .vop_readdir = prreaddir }, +	VOPNAME_READLINK,	{ .vop_readlink = prreadlink }, +	VOPNAME_FSYNC,		{ .vop_fsync = prfsync }, +	VOPNAME_INACTIVE,	{ .vop_inactive = prinactive }, +	VOPNAME_SEEK,		{ .vop_seek = prseek }, +	VOPNAME_CMP,		{ .vop_cmp = prcmp }, +	VOPNAME_FRLOCK,		{ .error = fs_error }, +	VOPNAME_REALVP,		{ .vop_realvp = prrealvp }, +	VOPNAME_POLL,		{ .vop_poll = prpoll }, +	VOPNAME_DISPOSE,	{ .error = fs_error }, +	VOPNAME_SHRLOCK,	{ .error = fs_error }, +	NULL,			NULL  }; diff --git a/usr/src/uts/common/fs/sockfs/socksctp.c b/usr/src/uts/common/fs/sockfs/socksctp.c index 4a8b57b2da..d50f143523 100644 --- a/usr/src/uts/common/fs/sockfs/socksctp.c +++ b/usr/src/uts/common/fs/sockfs/socksctp.c @@ -32,6 +32,7 @@  #include <sys/systm.h>  #include <sys/buf.h>  #include <sys/vfs.h> +#include <sys/vfs_opreg.h>  #include <sys/vnode.h>  #include <sys/debug.h>  #include <sys/errno.h> diff --git a/usr/src/uts/common/fs/sockfs/socksctpsubr.c b/usr/src/uts/common/fs/sockfs/socksctpsubr.c index c0f492fb61..11da6b7b1d 100644 --- a/usr/src/uts/common/fs/sockfs/socksctpsubr.c +++ b/usr/src/uts/common/fs/sockfs/socksctpsubr.c @@ -20,7 +20,7 @@   */  /* - * Copyright 2006 Sun Microsystems, Inc.  All rights reserved. + * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.   * Use is subject to license terms.   */ @@ -37,6 +37,7 @@  #include <sys/sysmacros.h>  #include <sys/vfs.h> +#include <sys/vfs_opreg.h>  #include <sys/socket.h>  #include <sys/socketvar.h> diff --git a/usr/src/uts/common/fs/sockfs/socksctpvnops.c b/usr/src/uts/common/fs/sockfs/socksctpvnops.c index 0adb375b15..ea3c49ce6e 100644 --- a/usr/src/uts/common/fs/sockfs/socksctpvnops.c +++ b/usr/src/uts/common/fs/sockfs/socksctpvnops.c @@ -35,6 +35,7 @@  #include <sys/errno.h>  #include <sys/uio.h>  #include <sys/vfs.h> +#include <sys/vfs_opreg.h>  #include <sys/vnode.h>  #include <sys/stropts.h>  #include <sys/cmn_err.h> @@ -78,22 +79,22 @@ static int socksctpv_poll(struct vnode *, short, int, short *,      struct pollhead **);  const fs_operation_def_t socksctp_vnodeops_template[] = { -	VOPNAME_OPEN, socksctpv_open, -	VOPNAME_CLOSE, socksctpv_close, -	VOPNAME_READ, socksctpv_read, -	VOPNAME_WRITE, socksctpv_write, -	VOPNAME_IOCTL, socksctpv_ioctl, -	VOPNAME_SETFL, socksctp_setfl, -	VOPNAME_GETATTR, socktpi_getattr, -	VOPNAME_SETATTR, socktpi_setattr, -	VOPNAME_ACCESS, socktpi_access, -	VOPNAME_FSYNC, socktpi_fsync, -	VOPNAME_INACTIVE, (fs_generic_func_p) socksctpv_inactive, -	VOPNAME_FID, socktpi_fid, -	VOPNAME_SEEK, socktpi_seek, -	VOPNAME_POLL, (fs_generic_func_p) socksctpv_poll, -	VOPNAME_DISPOSE, fs_error, -	NULL, NULL +	VOPNAME_OPEN,		{ .vop_open = socksctpv_open }, +	VOPNAME_CLOSE,		{ .vop_close = socksctpv_close }, +	VOPNAME_READ,		{ .vop_read = socksctpv_read }, +	VOPNAME_WRITE,		{ .vop_write = socksctpv_write }, +	VOPNAME_IOCTL,		{ .vop_ioctl = socksctpv_ioctl }, +	VOPNAME_SETFL,		{ .vop_setfl = socksctp_setfl }, +	VOPNAME_GETATTR,	{ .vop_getattr = socktpi_getattr }, +	VOPNAME_SETATTR,	{ .vop_setattr = socktpi_setattr }, +	VOPNAME_ACCESS,		{ .vop_access = socktpi_access }, +	VOPNAME_FSYNC,		{ .vop_fsync = socktpi_fsync }, +	VOPNAME_INACTIVE,	{ .vop_inactive = socksctpv_inactive }, +	VOPNAME_FID,		{ .vop_fid = socktpi_fid }, +	VOPNAME_SEEK,		{ .vop_seek = socktpi_seek }, +	VOPNAME_POLL,		{ .vop_poll = socksctpv_poll }, +	VOPNAME_DISPOSE,	{ .error = fs_error }, +	NULL,			NULL  };  struct vnodeops *socksctp_vnodeops; diff --git a/usr/src/uts/common/fs/sockfs/socksdp.c b/usr/src/uts/common/fs/sockfs/socksdp.c index 197ff6997e..45f8713169 100755 --- a/usr/src/uts/common/fs/sockfs/socksdp.c +++ b/usr/src/uts/common/fs/sockfs/socksdp.c @@ -32,6 +32,7 @@  #include <sys/systm.h>  #include <sys/buf.h>  #include <sys/vfs.h> +#include <sys/vfs_opreg.h>  #include <sys/vnode.h>  #include <sys/debug.h>  #include <sys/errno.h> diff --git a/usr/src/uts/common/fs/sockfs/socksdpsubr.c b/usr/src/uts/common/fs/sockfs/socksdpsubr.c index 6ae3c4d03d..42884fa4be 100755 --- a/usr/src/uts/common/fs/sockfs/socksdpsubr.c +++ b/usr/src/uts/common/fs/sockfs/socksdpsubr.c @@ -37,6 +37,7 @@  #include <sys/sysmacros.h>  #include <sys/vfs.h> +#include <sys/vfs_opreg.h>  #include <sys/socket.h>  #include <sys/socketvar.h> diff --git a/usr/src/uts/common/fs/sockfs/socksdpvnops.c b/usr/src/uts/common/fs/sockfs/socksdpvnops.c index 6bdc83b20c..02cb7a07c1 100755 --- a/usr/src/uts/common/fs/sockfs/socksdpvnops.c +++ b/usr/src/uts/common/fs/sockfs/socksdpvnops.c @@ -35,6 +35,7 @@  #include <sys/errno.h>  #include <sys/uio.h>  #include <sys/vfs.h> +#include <sys/vfs_opreg.h>  #include <sys/vnode.h>  #include <sys/stropts.h>  #include <sys/cmn_err.h> @@ -77,22 +78,22 @@ static int socksdpv_poll(struct vnode *, short, int, short *,      struct pollhead **);  const fs_operation_def_t socksdp_vnodeops_template[] = { -	VOPNAME_OPEN, socksdpv_open, -	VOPNAME_CLOSE, socksdpv_close, -	VOPNAME_READ, socksdpv_read, -	VOPNAME_WRITE, socksdpv_write, -	VOPNAME_IOCTL, socksdpv_ioctl, -	VOPNAME_SETFL, socksdp_setfl, -	VOPNAME_GETATTR, socktpi_getattr, -	VOPNAME_SETATTR, socktpi_setattr, -	VOPNAME_ACCESS, socktpi_access, -	VOPNAME_FSYNC, socktpi_fsync, -	VOPNAME_INACTIVE, (fs_generic_func_p) socksdpv_inactive, -	VOPNAME_FID, socktpi_fid, -	VOPNAME_SEEK, socktpi_seek, -	VOPNAME_POLL, (fs_generic_func_p) socksdpv_poll, -	VOPNAME_DISPOSE, fs_error, -	NULL, NULL +	VOPNAME_OPEN,		{ .vop_open = socksdpv_open }, +	VOPNAME_CLOSE,		{ .vop_close = socksdpv_close }, +	VOPNAME_READ,		{ .vop_read = socksdpv_read }, +	VOPNAME_WRITE,		{ .vop_write = socksdpv_write }, +	VOPNAME_IOCTL,		{ .vop_ioctl = socksdpv_ioctl }, +	VOPNAME_SETFL,		{ .vop_setfl = socksdp_setfl }, +	VOPNAME_GETATTR,	{ .vop_getattr = socktpi_getattr }, +	VOPNAME_SETATTR,	{ .vop_setattr = socktpi_setattr }, +	VOPNAME_ACCESS,		{ .vop_access = socktpi_access }, +	VOPNAME_FSYNC,		{ .vop_fsync = socktpi_fsync }, +	VOPNAME_INACTIVE,	{ .vop_inactive = socksdpv_inactive }, +	VOPNAME_FID,		{ .vop_fid = socktpi_fid }, +	VOPNAME_SEEK,		{ .vop_seek = socktpi_seek }, +	VOPNAME_POLL,		{ .vop_poll = socksdpv_poll }, +	VOPNAME_DISPOSE,	{ .error = fs_error }, +	NULL,			NULL  };  struct vnodeops *socksdp_vnodeops; diff --git a/usr/src/uts/common/fs/sockfs/socksubr.c b/usr/src/uts/common/fs/sockfs/socksubr.c index f9f5eed188..ad90f21a36 100644 --- a/usr/src/uts/common/fs/sockfs/socksubr.c +++ b/usr/src/uts/common/fs/sockfs/socksubr.c @@ -36,6 +36,7 @@  #include <sys/kmem.h>  #include <sys/sysmacros.h>  #include <sys/vfs.h> +#include <sys/vfs_opreg.h>  #include <sys/vnode.h>  #include <sys/debug.h>  #include <sys/errno.h> diff --git a/usr/src/uts/common/fs/sockfs/sockvnops.c b/usr/src/uts/common/fs/sockfs/sockvnops.c index 66224f437a..32b7f2d361 100644 --- a/usr/src/uts/common/fs/sockfs/sockvnops.c +++ b/usr/src/uts/common/fs/sockfs/sockvnops.c @@ -20,7 +20,7 @@   */  /* - * Copyright 2006 Sun Microsystems, Inc.  All rights reserved. + * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.   * Use is subject to license terms.   */ @@ -48,6 +48,7 @@  #include <sys/sysmacros.h>  #include <sys/uio.h>  #include <sys/vfs.h> +#include <sys/vfs_opreg.h>  #include <sys/vnode.h>  #include <sys/poll.h>  #include <sys/stropts.h> @@ -108,22 +109,22 @@ static int socktpi_poll(struct vnode *, short, int, short *,  struct vnodeops *socktpi_vnodeops;  const fs_operation_def_t socktpi_vnodeops_template[] = { -	VOPNAME_OPEN, socktpi_open, -	VOPNAME_CLOSE, socktpi_close, -	VOPNAME_READ, socktpi_read, -	VOPNAME_WRITE, socktpi_write, -	VOPNAME_IOCTL, socktpi_ioctl, -	VOPNAME_SETFL, socktpi_setfl, -	VOPNAME_GETATTR, socktpi_getattr, -	VOPNAME_SETATTR, socktpi_setattr, -	VOPNAME_ACCESS, socktpi_access, -	VOPNAME_FSYNC, socktpi_fsync, -	VOPNAME_INACTIVE, (fs_generic_func_p) socktpi_inactive, -	VOPNAME_FID, socktpi_fid, -	VOPNAME_SEEK, socktpi_seek, -	VOPNAME_POLL, (fs_generic_func_p) socktpi_poll, -	VOPNAME_DISPOSE, fs_error, -	NULL, NULL +	VOPNAME_OPEN,		{ .vop_open = socktpi_open }, +	VOPNAME_CLOSE,		{ .vop_close = socktpi_close }, +	VOPNAME_READ,		{ .vop_read = socktpi_read }, +	VOPNAME_WRITE,		{ .vop_write = socktpi_write }, +	VOPNAME_IOCTL,		{ .vop_ioctl = socktpi_ioctl }, +	VOPNAME_SETFL,		{ .vop_setfl = socktpi_setfl }, +	VOPNAME_GETATTR,	{ .vop_getattr = socktpi_getattr }, +	VOPNAME_SETATTR,	{ .vop_setattr = socktpi_setattr }, +	VOPNAME_ACCESS,		{ .vop_access = socktpi_access }, +	VOPNAME_FSYNC,		{ .vop_fsync = socktpi_fsync }, +	VOPNAME_INACTIVE,	{ .vop_inactive = socktpi_inactive }, +	VOPNAME_FID,		{ .vop_fid = socktpi_fid }, +	VOPNAME_SEEK,		{ .vop_seek = socktpi_seek }, +	VOPNAME_POLL,		{ .vop_poll = socktpi_poll }, +	VOPNAME_DISPOSE,	{ .error = fs_error }, +	NULL,			NULL  };  /* diff --git a/usr/src/uts/common/fs/specfs/specsubr.c b/usr/src/uts/common/fs/specfs/specsubr.c index eb1ef88eab..ea87c688d6 100644 --- a/usr/src/uts/common/fs/specfs/specsubr.c +++ b/usr/src/uts/common/fs/specfs/specsubr.c @@ -49,6 +49,7 @@  #include <sys/kmem.h>  #include <sys/sysmacros.h>  #include <sys/vfs.h> +#include <sys/vfs_opreg.h>  #include <sys/vnode.h>  #include <sys/fs/snode.h>  #include <sys/fs/fifonode.h> @@ -736,7 +737,7 @@ int  specinit(int fstype, char *name)  {  	static const fs_operation_def_t spec_vfsops_template[] = { -		VFSNAME_SYNC, (fs_generic_func_p) spec_sync, +		VFSNAME_SYNC, { .vfs_sync = spec_sync },  		NULL, NULL  	};  	extern struct vnodeops *spec_vnodeops; diff --git a/usr/src/uts/common/fs/specfs/specvnops.c b/usr/src/uts/common/fs/specfs/specvnops.c index 610ae5a5ec..7f613ba824 100644 --- a/usr/src/uts/common/fs/specfs/specvnops.c +++ b/usr/src/uts/common/fs/specfs/specvnops.c @@ -63,6 +63,7 @@  #include <sys/sysmacros.h>  #include <sys/uio.h>  #include <sys/vfs.h> +#include <sys/vfs_opreg.h>  #include <sys/vnode.h>  #include <sys/stat.h>  #include <sys/poll.h> @@ -155,33 +156,33 @@ static int spec_pathconf(struct	vnode *, int, ulong_t *, struct cred *);  struct vnodeops *spec_vnodeops;  const fs_operation_def_t spec_vnodeops_template[] = { -	VOPNAME_OPEN, spec_open, -	VOPNAME_CLOSE, spec_close, -	VOPNAME_READ, spec_read, -	VOPNAME_WRITE, spec_write, -	VOPNAME_IOCTL, spec_ioctl, -	VOPNAME_GETATTR, spec_getattr, -	VOPNAME_SETATTR, spec_setattr, -	VOPNAME_ACCESS, spec_access, -	VOPNAME_CREATE, spec_create, -	VOPNAME_FSYNC, spec_fsync, -	VOPNAME_INACTIVE, (fs_generic_func_p) spec_inactive, -	VOPNAME_FID, spec_fid, -	VOPNAME_SEEK, spec_seek, -	VOPNAME_PATHCONF, spec_pathconf, -	VOPNAME_FRLOCK, spec_frlock, -	VOPNAME_REALVP, spec_realvp, -	VOPNAME_GETPAGE, spec_getpage, -	VOPNAME_PUTPAGE, spec_putpage, -	VOPNAME_MAP, (fs_generic_func_p) spec_map, -	VOPNAME_ADDMAP, (fs_generic_func_p) spec_addmap, -	VOPNAME_DELMAP, spec_delmap, -	VOPNAME_POLL, (fs_generic_func_p) spec_poll, -	VOPNAME_DUMP, spec_dump, -	VOPNAME_PAGEIO, spec_pageio, -	VOPNAME_SETSECATTR, spec_setsecattr, -	VOPNAME_GETSECATTR, spec_getsecattr, -	NULL, NULL +	VOPNAME_OPEN,		{ .vop_open = spec_open }, +	VOPNAME_CLOSE,		{ .vop_close = spec_close }, +	VOPNAME_READ,		{ .vop_read = spec_read }, +	VOPNAME_WRITE,		{ .vop_write = spec_write }, +	VOPNAME_IOCTL,		{ .vop_ioctl = spec_ioctl }, +	VOPNAME_GETATTR,	{ .vop_getattr = spec_getattr }, +	VOPNAME_SETATTR,	{ .vop_setattr = spec_setattr }, +	VOPNAME_ACCESS,		{ .vop_access = spec_access }, +	VOPNAME_CREATE,		{ .vop_create = spec_create }, +	VOPNAME_FSYNC,		{ .vop_fsync = spec_fsync }, +	VOPNAME_INACTIVE,	{ .vop_inactive = spec_inactive }, +	VOPNAME_FID,		{ .vop_fid = spec_fid }, +	VOPNAME_SEEK,		{ .vop_seek = spec_seek }, +	VOPNAME_PATHCONF,	{ .vop_pathconf = spec_pathconf }, +	VOPNAME_FRLOCK,		{ .vop_frlock = spec_frlock }, +	VOPNAME_REALVP,		{ .vop_realvp = spec_realvp }, +	VOPNAME_GETPAGE,	{ .vop_getpage = spec_getpage }, +	VOPNAME_PUTPAGE,	{ .vop_putpage = spec_putpage }, +	VOPNAME_MAP,		{ .vop_map = spec_map }, +	VOPNAME_ADDMAP,		{ .vop_addmap = spec_addmap }, +	VOPNAME_DELMAP,		{ .vop_delmap = spec_delmap }, +	VOPNAME_POLL,		{ .vop_poll = spec_poll }, +	VOPNAME_DUMP,		{ .vop_dump = spec_dump }, +	VOPNAME_PAGEIO,		{ .vop_pageio = spec_pageio }, +	VOPNAME_SETSECATTR,	{ .vop_setsecattr = spec_setsecattr }, +	VOPNAME_GETSECATTR,	{ .vop_getsecattr = spec_getsecattr }, +	NULL,			NULL  };  /* diff --git a/usr/src/uts/common/fs/swapfs/swap_subr.c b/usr/src/uts/common/fs/swapfs/swap_subr.c index df175211c6..e589c38073 100644 --- a/usr/src/uts/common/fs/swapfs/swap_subr.c +++ b/usr/src/uts/common/fs/swapfs/swap_subr.c @@ -2,9 +2,8 @@   * CDDL HEADER START   *   * The contents of this file are subject to the terms of the - * Common Development and Distribution License, Version 1.0 only - * (the "License").  You may not use this file except in compliance - * with the License. + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License.   *   * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE   * or http://www.opensolaris.org/os/licensing. @@ -20,7 +19,7 @@   * CDDL HEADER END   */  /* - * Copyright 2005 Sun Microsystems, Inc.  All rights reserved. + * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.   * Use is subject to license terms.   */ @@ -32,6 +31,7 @@  #include <sys/errno.h>  #include <sys/kmem.h>  #include <sys/vnode.h> +#include <sys/vfs_opreg.h>  #include <sys/swap.h>  #include <sys/sysmacros.h>  #include <sys/buf.h> @@ -167,7 +167,7 @@ swapinit(int fstype, char *name)  	int i, error;  	static const fs_operation_def_t swap_vfsops[] = { -		VFSNAME_SYNC, (fs_generic_func_p) swap_sync, +		VFSNAME_SYNC, { .vfs_sync = swap_sync },  		NULL, NULL  	}; diff --git a/usr/src/uts/common/fs/swapfs/swap_vnops.c b/usr/src/uts/common/fs/swapfs/swap_vnops.c index bdcf5b8ca2..53bdae350c 100644 --- a/usr/src/uts/common/fs/swapfs/swap_vnops.c +++ b/usr/src/uts/common/fs/swapfs/swap_vnops.c @@ -19,7 +19,7 @@   * CDDL HEADER END   */  /* - * Copyright 2006 Sun Microsystems, Inc.  All rights reserved. + * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.   * Use is subject to license terms.   */ @@ -32,6 +32,7 @@  #include <sys/cred.h>  #include <sys/errno.h>  #include <sys/vnode.h> +#include <sys/vfs_opreg.h>  #include <sys/cmn_err.h>  #include <sys/swap.h>  #include <sys/mman.h> @@ -75,16 +76,16 @@ static int 	swap_putapage(struct vnode *vp, page_t *pp, u_offset_t *off,      size_t *lenp, int flags, struct cred *cr);  const fs_operation_def_t swap_vnodeops_template[] = { -	VOPNAME_INACTIVE, (fs_generic_func_p) swap_inactive, -	VOPNAME_GETPAGE, swap_getpage, -	VOPNAME_PUTPAGE, swap_putpage, -	VOPNAME_DISPOSE, (fs_generic_func_p) swap_dispose, -	VOPNAME_SETFL, fs_error, -	VOPNAME_POLL, fs_error, -	VOPNAME_PATHCONF, fs_error, -	VOPNAME_GETSECATTR, fs_error, -	VOPNAME_SHRLOCK, fs_error, -	NULL, NULL +	VOPNAME_INACTIVE,	{ .vop_inactive = swap_inactive }, +	VOPNAME_GETPAGE,	{ .vop_getpage = swap_getpage }, +	VOPNAME_PUTPAGE,	{ .vop_putpage = swap_putpage }, +	VOPNAME_DISPOSE,	{ .vop_dispose = swap_dispose }, +	VOPNAME_SETFL,		{ .error = fs_error }, +	VOPNAME_POLL,		{ .error = fs_error }, +	VOPNAME_PATHCONF,	{ .error = fs_error }, +	VOPNAME_GETSECATTR,	{ .error = fs_error }, +	VOPNAME_SHRLOCK,	{ .error = fs_error }, +	NULL,			NULL  };  vnodeops_t *swap_vnodeops; diff --git a/usr/src/uts/common/fs/tmpfs/tmp_vfsops.c b/usr/src/uts/common/fs/tmpfs/tmp_vfsops.c index fb5e0d74e4..f798cb8ed4 100644 --- a/usr/src/uts/common/fs/tmpfs/tmp_vfsops.c +++ b/usr/src/uts/common/fs/tmpfs/tmp_vfsops.c @@ -19,7 +19,7 @@   * CDDL HEADER END   */  /* - * Copyright 2006 Sun Microsystems, Inc.  All rights reserved. + * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.   * Use is subject to license terms.   */ @@ -32,6 +32,7 @@  #include <sys/time.h>  #include <sys/pathname.h>  #include <sys/vfs.h> +#include <sys/vfs_opreg.h>  #include <sys/vnode.h>  #include <sys/stat.h>  #include <sys/uio.h> @@ -173,12 +174,12 @@ static int  tmpfsinit(int fstype, char *name)  {  	static const fs_operation_def_t tmp_vfsops_template[] = { -		VFSNAME_MOUNT, tmp_mount, -		VFSNAME_UNMOUNT, tmp_unmount, -		VFSNAME_ROOT, tmp_root, -		VFSNAME_STATVFS, tmp_statvfs, -		VFSNAME_VGET, tmp_vget, -		NULL, NULL +		VFSNAME_MOUNT,		{ .vfs_mount = tmp_mount }, +		VFSNAME_UNMOUNT,	{ .vfs_unmount = tmp_unmount }, +		VFSNAME_ROOT,		{ .vfs_root = tmp_root }, +		VFSNAME_STATVFS,	{ .vfs_statvfs = tmp_statvfs }, +		VFSNAME_VGET,		{ .vfs_vget = tmp_vget }, +		NULL,			NULL  	};  	int error;  	extern  void    tmpfs_hash_init(); diff --git a/usr/src/uts/common/fs/tmpfs/tmp_vnops.c b/usr/src/uts/common/fs/tmpfs/tmp_vnops.c index 2f1e94a7c7..236d2bfd4b 100644 --- a/usr/src/uts/common/fs/tmpfs/tmp_vnops.c +++ b/usr/src/uts/common/fs/tmpfs/tmp_vnops.c @@ -33,6 +33,7 @@  #include <sys/user.h>  #include <sys/time.h>  #include <sys/vfs.h> +#include <sys/vfs_opreg.h>  #include <sys/vnode.h>  #include <sys/file.h>  #include <sys/fcntl.h> @@ -2304,37 +2305,37 @@ tmp_pathconf(struct vnode *vp, int cmd, ulong_t *valp, cred_t *cr)  struct vnodeops *tmp_vnodeops;  const fs_operation_def_t tmp_vnodeops_template[] = { -	VOPNAME_OPEN, tmp_open, -	VOPNAME_CLOSE, tmp_close, -	VOPNAME_READ, tmp_read, -	VOPNAME_WRITE, tmp_write, -	VOPNAME_IOCTL, tmp_ioctl, -	VOPNAME_GETATTR, tmp_getattr, -	VOPNAME_SETATTR, tmp_setattr, -	VOPNAME_ACCESS, tmp_access, -	VOPNAME_LOOKUP, tmp_lookup, -	VOPNAME_CREATE, tmp_create, -	VOPNAME_REMOVE, tmp_remove, -	VOPNAME_LINK, tmp_link, -	VOPNAME_RENAME, tmp_rename, -	VOPNAME_MKDIR, tmp_mkdir, -	VOPNAME_RMDIR, tmp_rmdir, -	VOPNAME_READDIR, tmp_readdir, -	VOPNAME_SYMLINK, tmp_symlink, -	VOPNAME_READLINK, tmp_readlink, -	VOPNAME_FSYNC, tmp_fsync, -	VOPNAME_INACTIVE, (fs_generic_func_p) tmp_inactive, -	VOPNAME_FID, tmp_fid, -	VOPNAME_RWLOCK, tmp_rwlock, -	VOPNAME_RWUNLOCK, (fs_generic_func_p) tmp_rwunlock, -	VOPNAME_SEEK, tmp_seek, -	VOPNAME_SPACE, tmp_space, -	VOPNAME_GETPAGE, tmp_getpage, -	VOPNAME_PUTPAGE, tmp_putpage, -	VOPNAME_MAP, (fs_generic_func_p) tmp_map, -	VOPNAME_ADDMAP, (fs_generic_func_p) tmp_addmap, -	VOPNAME_DELMAP, tmp_delmap, -	VOPNAME_PATHCONF, tmp_pathconf, -	VOPNAME_VNEVENT, fs_vnevent_support, -	NULL, NULL +	VOPNAME_OPEN,		{ .vop_open = tmp_open }, +	VOPNAME_CLOSE,		{ .vop_close = tmp_close }, +	VOPNAME_READ,		{ .vop_read = tmp_read }, +	VOPNAME_WRITE,		{ .vop_write = tmp_write }, +	VOPNAME_IOCTL,		{ .vop_ioctl = tmp_ioctl }, +	VOPNAME_GETATTR,	{ .vop_getattr = tmp_getattr }, +	VOPNAME_SETATTR,	{ .vop_setattr = tmp_setattr }, +	VOPNAME_ACCESS,		{ .vop_access = tmp_access }, +	VOPNAME_LOOKUP,		{ .vop_lookup = tmp_lookup }, +	VOPNAME_CREATE,		{ .vop_create = tmp_create }, +	VOPNAME_REMOVE,		{ .vop_remove = tmp_remove }, +	VOPNAME_LINK,		{ .vop_link = tmp_link }, +	VOPNAME_RENAME,		{ .vop_rename = tmp_rename }, +	VOPNAME_MKDIR,		{ .vop_mkdir = tmp_mkdir }, +	VOPNAME_RMDIR,		{ .vop_rmdir = tmp_rmdir }, +	VOPNAME_READDIR,	{ .vop_readdir = tmp_readdir }, +	VOPNAME_SYMLINK,	{ .vop_symlink = tmp_symlink }, +	VOPNAME_READLINK,	{ .vop_readlink = tmp_readlink }, +	VOPNAME_FSYNC,		{ .vop_fsync = tmp_fsync }, +	VOPNAME_INACTIVE,	{ .vop_inactive = tmp_inactive }, +	VOPNAME_FID,		{ .vop_fid = tmp_fid }, +	VOPNAME_RWLOCK,		{ .vop_rwlock = tmp_rwlock }, +	VOPNAME_RWUNLOCK,	{ .vop_rwunlock = tmp_rwunlock }, +	VOPNAME_SEEK,		{ .vop_seek = tmp_seek }, +	VOPNAME_SPACE,		{ .vop_space = tmp_space }, +	VOPNAME_GETPAGE,	{ .vop_getpage = tmp_getpage }, +	VOPNAME_PUTPAGE,	{ .vop_putpage = tmp_putpage }, +	VOPNAME_MAP,		{ .vop_map = tmp_map }, +	VOPNAME_ADDMAP,		{ .vop_addmap = tmp_addmap }, +	VOPNAME_DELMAP,		{ .vop_delmap = tmp_delmap }, +	VOPNAME_PATHCONF,	{ .vop_pathconf = tmp_pathconf }, +	VOPNAME_VNEVENT,	{ .vop_vnevent = fs_vnevent_support }, +	NULL,			NULL  }; diff --git a/usr/src/uts/common/fs/udfs/udf_vfsops.c b/usr/src/uts/common/fs/udfs/udf_vfsops.c index 0ff009d6f3..79e76d2715 100644 --- a/usr/src/uts/common/fs/udfs/udf_vfsops.c +++ b/usr/src/uts/common/fs/udfs/udf_vfsops.c @@ -19,7 +19,7 @@   * CDDL HEADER END   */  /* - * Copyright 2006 Sun Microsystems, Inc.  All rights reserved. + * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.   * Use is subject to license terms.   */ @@ -37,6 +37,7 @@  #include <sys/user.h>  #include <sys/buf.h>  #include <sys/vfs.h> +#include <sys/vfs_opreg.h>  #include <sys/stat.h>  #include <sys/vnode.h>  #include <sys/mode.h> @@ -1897,14 +1898,14 @@ static int  udfinit(int fstype, char *name)  {  	static const fs_operation_def_t udf_vfsops_template[] = { -		VFSNAME_MOUNT, udf_mount, -		VFSNAME_UNMOUNT, udf_unmount, -		VFSNAME_ROOT, udf_root, -		VFSNAME_STATVFS, udf_statvfs, -		VFSNAME_SYNC, (fs_generic_func_p) udf_sync, -		VFSNAME_VGET, udf_vget, -		VFSNAME_MOUNTROOT, udf_mountroot, -		NULL, NULL +		VFSNAME_MOUNT,		{ .vfs_mount = udf_mount }, +		VFSNAME_UNMOUNT,	{ .vfs_unmount = udf_unmount }, +		VFSNAME_ROOT,		{ .vfs_root = udf_root }, +		VFSNAME_STATVFS,	{ .vfs_statvfs = udf_statvfs }, +		VFSNAME_SYNC,		{ .vfs_sync = udf_sync }, +		VFSNAME_VGET,		{ .vfs_vget = udf_vget }, +		VFSNAME_MOUNTROOT,	{ .vfs_mountroot = udf_mountroot }, +		NULL,			NULL  	};  	extern struct vnodeops *udf_vnodeops;  	extern const fs_operation_def_t udf_vnodeops_template[]; diff --git a/usr/src/uts/common/fs/udfs/udf_vnops.c b/usr/src/uts/common/fs/udfs/udf_vnops.c index 1a0378dcb9..b67d80c394 100644 --- a/usr/src/uts/common/fs/udfs/udf_vnops.c +++ b/usr/src/uts/common/fs/udfs/udf_vnops.c @@ -2,9 +2,8 @@   * CDDL HEADER START   *   * The contents of this file are subject to the terms of the - * Common Development and Distribution License, Version 1.0 only - * (the "License").  You may not use this file except in compliance - * with the License. + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License.   *   * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE   * or http://www.opensolaris.org/os/licensing. @@ -20,7 +19,7 @@   * CDDL HEADER END   */  /* - * Copyright 2005 Sun Microsystems, Inc.  All rights reserved. + * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.   * Use is subject to license terms.   */ @@ -38,6 +37,7 @@  #include <sys/user.h>  #include <sys/buf.h>  #include <sys/vfs.h> +#include <sys/vfs_opreg.h>  #include <sys/stat.h>  #include <sys/vnode.h>  #include <sys/mode.h> @@ -188,41 +188,41 @@ typedef struct mio_slave {  struct vnodeops *udf_vnodeops;  const fs_operation_def_t udf_vnodeops_template[] = { -	VOPNAME_OPEN, udf_open, -	VOPNAME_CLOSE, udf_close, -	VOPNAME_READ, udf_read, -	VOPNAME_WRITE, udf_write, -	VOPNAME_IOCTL, udf_ioctl, -	VOPNAME_GETATTR, udf_getattr, -	VOPNAME_SETATTR, udf_setattr, -	VOPNAME_ACCESS, udf_access, -	VOPNAME_LOOKUP, udf_lookup, -	VOPNAME_CREATE, udf_create, -	VOPNAME_REMOVE, udf_remove, -	VOPNAME_LINK, udf_link, -	VOPNAME_RENAME, udf_rename, -	VOPNAME_MKDIR, udf_mkdir, -	VOPNAME_RMDIR, udf_rmdir, -	VOPNAME_READDIR, udf_readdir, -	VOPNAME_SYMLINK, udf_symlink, -	VOPNAME_READLINK, udf_readlink, -	VOPNAME_FSYNC, udf_fsync, -	VOPNAME_INACTIVE, (fs_generic_func_p) udf_inactive, -	VOPNAME_FID, udf_fid, -	VOPNAME_RWLOCK, udf_rwlock, -	VOPNAME_RWUNLOCK, (fs_generic_func_p) udf_rwunlock, -	VOPNAME_SEEK, udf_seek, -	VOPNAME_FRLOCK, udf_frlock, -	VOPNAME_SPACE, udf_space, -	VOPNAME_GETPAGE, udf_getpage, -	VOPNAME_PUTPAGE, udf_putpage, -	VOPNAME_MAP, (fs_generic_func_p) udf_map, -	VOPNAME_ADDMAP, (fs_generic_func_p) udf_addmap, -	VOPNAME_DELMAP, udf_delmap, -	VOPNAME_PATHCONF, udf_l_pathconf, -	VOPNAME_PAGEIO, udf_pageio, -	VOPNAME_VNEVENT, fs_vnevent_support, -	NULL, NULL +	VOPNAME_OPEN,		{ .vop_open = udf_open }, +	VOPNAME_CLOSE,		{ .vop_close = udf_close }, +	VOPNAME_READ,		{ .vop_read = udf_read }, +	VOPNAME_WRITE,		{ .vop_write = udf_write }, +	VOPNAME_IOCTL,		{ .vop_ioctl = udf_ioctl }, +	VOPNAME_GETATTR,	{ .vop_getattr = udf_getattr }, +	VOPNAME_SETATTR,	{ .vop_setattr = udf_setattr }, +	VOPNAME_ACCESS,		{ .vop_access = udf_access }, +	VOPNAME_LOOKUP,		{ .vop_lookup = udf_lookup }, +	VOPNAME_CREATE,		{ .vop_create = udf_create }, +	VOPNAME_REMOVE,		{ .vop_remove = udf_remove }, +	VOPNAME_LINK,		{ .vop_link = udf_link }, +	VOPNAME_RENAME,		{ .vop_rename = udf_rename }, +	VOPNAME_MKDIR,		{ .vop_mkdir = udf_mkdir }, +	VOPNAME_RMDIR,		{ .vop_rmdir = udf_rmdir }, +	VOPNAME_READDIR,	{ .vop_readdir = udf_readdir }, +	VOPNAME_SYMLINK,	{ .vop_symlink = udf_symlink }, +	VOPNAME_READLINK,	{ .vop_readlink = udf_readlink }, +	VOPNAME_FSYNC,		{ .vop_fsync = udf_fsync }, +	VOPNAME_INACTIVE,	{ .vop_inactive = udf_inactive }, +	VOPNAME_FID,		{ .vop_fid = udf_fid }, +	VOPNAME_RWLOCK,		{ .vop_rwlock = udf_rwlock }, +	VOPNAME_RWUNLOCK,	{ .vop_rwunlock = udf_rwunlock }, +	VOPNAME_SEEK,		{ .vop_seek = udf_seek }, +	VOPNAME_FRLOCK,		{ .vop_frlock = udf_frlock }, +	VOPNAME_SPACE,		{ .vop_space = udf_space }, +	VOPNAME_GETPAGE,	{ .vop_getpage = udf_getpage }, +	VOPNAME_PUTPAGE,	{ .vop_putpage = udf_putpage }, +	VOPNAME_MAP,		{ .vop_map = udf_map }, +	VOPNAME_ADDMAP,		{ .vop_addmap = udf_addmap }, +	VOPNAME_DELMAP,		{ .vop_delmap = udf_delmap }, +	VOPNAME_PATHCONF,	{ .vop_pathconf = udf_l_pathconf }, +	VOPNAME_PAGEIO,		{ .vop_pageio = udf_pageio }, +	VOPNAME_VNEVENT,	{ .vop_vnevent = fs_vnevent_support }, +	NULL,			NULL  };  /* ARGSUSED */ diff --git a/usr/src/uts/common/fs/ufs/ufs_vfsops.c b/usr/src/uts/common/fs/ufs/ufs_vfsops.c index 880019da4d..35c4e309f0 100644 --- a/usr/src/uts/common/fs/ufs/ufs_vfsops.c +++ b/usr/src/uts/common/fs/ufs/ufs_vfsops.c @@ -19,7 +19,7 @@   * CDDL HEADER END   */  /* - * Copyright 2006 Sun Microsystems, Inc.  All rights reserved. + * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.   * Use is subject to license terms.   */ @@ -53,6 +53,7 @@  #include <sys/buf.h>  #include <sys/pathname.h>  #include <sys/vfs.h> +#include <sys/vfs_opreg.h>  #include <sys/vnode.h>  #include <sys/file.h>  #include <sys/atomic.h> @@ -2033,14 +2034,14 @@ static int  ufsinit(int fstype, char *name)  {  	static const fs_operation_def_t ufs_vfsops_template[] = { -		VFSNAME_MOUNT, ufs_mount, -		VFSNAME_UNMOUNT, ufs_unmount, -		VFSNAME_ROOT, ufs_root, -		VFSNAME_STATVFS, ufs_statvfs, -		VFSNAME_SYNC, (fs_generic_func_p) ufs_sync, -		VFSNAME_VGET, ufs_vget, -		VFSNAME_MOUNTROOT, ufs_mountroot, -		NULL, NULL +		VFSNAME_MOUNT,		{ .vfs_mount = ufs_mount }, +		VFSNAME_UNMOUNT,	{ .vfs_unmount = ufs_unmount }, +		VFSNAME_ROOT,		{ .vfs_root = ufs_root }, +		VFSNAME_STATVFS,	{ .vfs_statvfs = ufs_statvfs }, +		VFSNAME_SYNC,		{ .vfs_sync = ufs_sync }, +		VFSNAME_VGET,		{ .vfs_vget = ufs_vget }, +		VFSNAME_MOUNTROOT,	{ .vfs_mountroot = ufs_mountroot }, +		NULL,			NULL  	};  	int error; diff --git a/usr/src/uts/common/fs/ufs/ufs_vnops.c b/usr/src/uts/common/fs/ufs/ufs_vnops.c index 694de37323..d8f3f9aa1a 100644 --- a/usr/src/uts/common/fs/ufs/ufs_vnops.c +++ b/usr/src/uts/common/fs/ufs/ufs_vnops.c @@ -19,7 +19,7 @@   * CDDL HEADER END   */  /* - * Copyright 2006 Sun Microsystems, Inc.  All rights reserved. + * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.   * Use is subject to license terms.   */ @@ -46,6 +46,7 @@  #include <sys/user.h>  #include <sys/buf.h>  #include <sys/vfs.h> +#include <sys/vfs_opreg.h>  #include <sys/vnode.h>  #include <sys/proc.h>  #include <sys/disp.h> @@ -171,47 +172,48 @@ extern int as_map_locked(struct as *, caddr_t, size_t, int ((*)()), void *);   */  struct vnodeops *ufs_vnodeops; +/* NOTE: "not blkd" below  means that the operation isn't blocked by lockfs */  const fs_operation_def_t ufs_vnodeops_template[] = { -	VOPNAME_OPEN, ufs_open,	/* will not be blocked by lockfs */ -	VOPNAME_CLOSE, ufs_close,	/* will not be blocked by lockfs */ -	VOPNAME_READ, ufs_read, -	VOPNAME_WRITE, ufs_write, -	VOPNAME_IOCTL, ufs_ioctl, -	VOPNAME_GETATTR, ufs_getattr, -	VOPNAME_SETATTR, ufs_setattr, -	VOPNAME_ACCESS, ufs_access, -	VOPNAME_LOOKUP, ufs_lookup, -	VOPNAME_CREATE, ufs_create, -	VOPNAME_REMOVE, ufs_remove, -	VOPNAME_LINK, ufs_link, -	VOPNAME_RENAME, ufs_rename, -	VOPNAME_MKDIR, ufs_mkdir, -	VOPNAME_RMDIR, ufs_rmdir, -	VOPNAME_READDIR, ufs_readdir, -	VOPNAME_SYMLINK, ufs_symlink, -	VOPNAME_READLINK, ufs_readlink, -	VOPNAME_FSYNC, ufs_fsync, -	VOPNAME_INACTIVE, (fs_generic_func_p) ufs_inactive,  /* not blocked */ -	VOPNAME_FID, ufs_fid, -	VOPNAME_RWLOCK, ufs_rwlock, /* not blocked */ -	VOPNAME_RWUNLOCK, (fs_generic_func_p) ufs_rwunlock,  /* not blocked */ -	VOPNAME_SEEK, ufs_seek, -	VOPNAME_FRLOCK, ufs_frlock, -	VOPNAME_SPACE, ufs_space, -	VOPNAME_GETPAGE, ufs_getpage, -	VOPNAME_PUTPAGE, ufs_putpage, -	VOPNAME_MAP, (fs_generic_func_p) ufs_map, -	VOPNAME_ADDMAP, (fs_generic_func_p) ufs_addmap,	/* not blocked */ -	VOPNAME_DELMAP, ufs_delmap,	/* will not be blocked by lockfs */ -	VOPNAME_POLL, (fs_generic_func_p) ufs_poll,	/* not blocked */ -	VOPNAME_DUMP, ufs_dump, -	VOPNAME_PATHCONF, ufs_l_pathconf, -	VOPNAME_PAGEIO, ufs_pageio, -	VOPNAME_DUMPCTL, ufs_dumpctl, -	VOPNAME_GETSECATTR, ufs_getsecattr, -	VOPNAME_SETSECATTR, ufs_setsecattr, -	VOPNAME_VNEVENT, fs_vnevent_support, -	NULL, NULL +	VOPNAME_OPEN,		{ .vop_open = ufs_open },	/* not blkd */ +	VOPNAME_CLOSE,		{ .vop_close = ufs_close },	/* not blkd */ +	VOPNAME_READ,		{ .vop_read = ufs_read }, +	VOPNAME_WRITE,		{ .vop_write = ufs_write }, +	VOPNAME_IOCTL,		{ .vop_ioctl = ufs_ioctl }, +	VOPNAME_GETATTR,	{ .vop_getattr = ufs_getattr }, +	VOPNAME_SETATTR,	{ .vop_setattr = ufs_setattr }, +	VOPNAME_ACCESS,		{ .vop_access = ufs_access }, +	VOPNAME_LOOKUP,		{ .vop_lookup = ufs_lookup }, +	VOPNAME_CREATE,		{ .vop_create = ufs_create }, +	VOPNAME_REMOVE,		{ .vop_remove = ufs_remove }, +	VOPNAME_LINK,		{ .vop_link = ufs_link }, +	VOPNAME_RENAME,		{ .vop_rename = ufs_rename }, +	VOPNAME_MKDIR,		{ .vop_mkdir = ufs_mkdir }, +	VOPNAME_RMDIR,		{ .vop_rmdir = ufs_rmdir }, +	VOPNAME_READDIR,	{ .vop_readdir = ufs_readdir }, +	VOPNAME_SYMLINK,	{ .vop_symlink = ufs_symlink }, +	VOPNAME_READLINK,	{ .vop_readlink = ufs_readlink }, +	VOPNAME_FSYNC,		{ .vop_fsync = ufs_fsync }, +	VOPNAME_INACTIVE,	{ .vop_inactive = ufs_inactive }, /* not blkd */ +	VOPNAME_FID,		{ .vop_fid = ufs_fid }, +	VOPNAME_RWLOCK,		{ .vop_rwlock = ufs_rwlock },	/* not blkd */ +	VOPNAME_RWUNLOCK,	{ .vop_rwunlock = ufs_rwunlock }, /* not blkd */ +	VOPNAME_SEEK,		{ .vop_seek = ufs_seek }, +	VOPNAME_FRLOCK,		{ .vop_frlock = ufs_frlock }, +	VOPNAME_SPACE,		{ .vop_space = ufs_space }, +	VOPNAME_GETPAGE,	{ .vop_getpage = ufs_getpage }, +	VOPNAME_PUTPAGE,	{ .vop_putpage = ufs_putpage }, +	VOPNAME_MAP,		{ .vop_map = ufs_map }, +	VOPNAME_ADDMAP,		{ .vop_addmap = ufs_addmap },	/* not blkd */ +	VOPNAME_DELMAP,		{ .vop_delmap = ufs_delmap },	/* not blkd */ +	VOPNAME_POLL,		{ .vop_poll = ufs_poll },	/* not blkd */ +	VOPNAME_DUMP,		{ .vop_dump = ufs_dump }, +	VOPNAME_PATHCONF,	{ .vop_pathconf = ufs_l_pathconf }, +	VOPNAME_PAGEIO,		{ .vop_pageio = ufs_pageio }, +	VOPNAME_DUMPCTL,	{ .vop_dumpctl = ufs_dumpctl }, +	VOPNAME_GETSECATTR,	{ .vop_getsecattr = ufs_getsecattr }, +	VOPNAME_SETSECATTR,	{ .vop_setsecattr = ufs_setsecattr }, +	VOPNAME_VNEVENT,	{ .vop_vnevent = fs_vnevent_support }, +	NULL,			NULL  };  #define	MAX_BACKFILE_COUNT	9999 diff --git a/usr/src/uts/common/fs/vfs.c b/usr/src/uts/common/fs/vfs.c index b473706b8b..09020d4f57 100644 --- a/usr/src/uts/common/fs/vfs.c +++ b/usr/src/uts/common/fs/vfs.c @@ -50,6 +50,7 @@  #include <sys/proc.h>  #include <sys/mount.h>  #include <sys/vfs.h> +#include <sys/vfs_opreg.h>  #include <sys/fem.h>  #include <sys/mntent.h>  #include <sys/stat.h> @@ -3768,12 +3769,6 @@ vf_to_stf(uint_t vf)  }  /* - * Use old-style function prototype for vfsstray() so - * that we can use it anywhere in the vfsops structure. - */ -int vfsstray(); - -/*   * Entries for (illegal) fstype 0.   */  /* ARGSUSED */ @@ -3784,17 +3779,6 @@ vfsstray_sync(struct vfs *vfsp, short arg, struct cred *cr)  	return (0);  } -vfsops_t vfs_strayops = { -	vfsstray, -	vfsstray, -	vfsstray, -	vfsstray, -	vfsstray_sync, -	vfsstray, -	vfsstray, -	vfsstray -}; -  /*   * Entries for (illegal) fstype 0.   */ @@ -3838,23 +3822,36 @@ void  vfsinit(void)  {  	struct vfssw *vswp; +	vfsops_t *stray_vfsops;  	int error;  	extern int vopstats_enabled;  	extern void vopstats_startup();  	static const fs_operation_def_t EIO_vfsops_template[] = { -		VFSNAME_MOUNT,		vfs_EIO, -		VFSNAME_UNMOUNT,	vfs_EIO, -		VFSNAME_ROOT,		vfs_EIO, -		VFSNAME_STATVFS,	vfs_EIO, -		VFSNAME_SYNC, (fs_generic_func_p) vfs_EIO_sync, -		VFSNAME_VGET,		vfs_EIO, -		VFSNAME_MOUNTROOT,	vfs_EIO, -		VFSNAME_FREEVFS,	vfs_EIO, -		VFSNAME_VNSTATE,	vfs_EIO, +		VFSNAME_MOUNT,		{ .error = vfs_EIO }, +		VFSNAME_UNMOUNT,	{ .error = vfs_EIO }, +		VFSNAME_ROOT,		{ .error = vfs_EIO }, +		VFSNAME_STATVFS,	{ .error = vfs_EIO }, +		VFSNAME_SYNC, 		{ .vfs_sync = vfs_EIO_sync }, +		VFSNAME_VGET,		{ .error = vfs_EIO }, +		VFSNAME_MOUNTROOT,	{ .error = vfs_EIO }, +		VFSNAME_FREEVFS,	{ .error = vfs_EIO }, +		VFSNAME_VNSTATE,	{ .error = vfs_EIO },  		NULL, NULL  	}; +	static const fs_operation_def_t stray_vfsops_template[] = { +		VFSNAME_MOUNT,		{ .error = vfsstray }, +		VFSNAME_UNMOUNT,	{ .error = vfsstray }, +		VFSNAME_ROOT,		{ .error = vfsstray }, +		VFSNAME_STATVFS,	{ .error = vfsstray }, +		VFSNAME_SYNC, 		{ .vfs_sync = vfsstray_sync }, +		VFSNAME_VGET,		{ .error = vfsstray }, +		VFSNAME_MOUNTROOT,	{ .error = vfsstray }, +		VFSNAME_FREEVFS,	{ .error = vfsstray }, +		VFSNAME_VNSTATE,	{ .error = vfsstray }, +		NULL, NULL +	};  	/* Initialize the vnode cache (file systems may use it during init). */ @@ -3865,8 +3862,8 @@ vfsinit(void)  	fem_init();  	/* Initialize the dummy stray file system type. */ - -	vfssw[0].vsw_vfsops = vfs_strayops; +	error = vfs_makefsops(stray_vfsops_template, &stray_vfsops); +	vfssw[0].vsw_vfsops = *stray_vfsops; /* structure copy */  	/* Initialize the dummy EIO file system. */  	error = vfs_makefsops(EIO_vfsops_template, &EIO_vfsops); @@ -3970,8 +3967,10 @@ fs_build_vector(void *vector, int *unused_ops,  {  	int i, num_trans, num_ops, used; -	/* Count the number of translations and the number of supplied */ -	/* operations. */ +	/* +	 * Count the number of translations and the number of supplied +	 * operations. +	 */  	{  		const fs_operation_trans_def_t *p; @@ -4017,13 +4016,15 @@ fs_build_vector(void *vector, int *unused_ops,  			}  		} -		/* If the file system is using a "placeholder" for default */ -		/* or error functions, grab the appropriate function out of */ -		/* the translation table.  If the file system didn't supply */ -		/* this operation at all, use the default function. */ +		/* +		 * If the file system is using a "placeholder" for default +		 * or error functions, grab the appropriate function out of +		 * the translation table.  If the file system didn't supply +		 * this operation at all, use the default function. +		 */  		if (found) { -			result = operations[j].func; +			result = operations[j].func.fs_generic;  			if (result == fs_default) {  				result = translation[i].defaultFunc;  			} else if (result == fs_error) { diff --git a/usr/src/uts/common/fs/vnode.c b/usr/src/uts/common/fs/vnode.c index b18074e49d..5b796d6f8a 100644 --- a/usr/src/uts/common/fs/vnode.c +++ b/usr/src/uts/common/fs/vnode.c @@ -49,6 +49,7 @@  #include <sys/file.h>  #include <sys/pathname.h>  #include <sys/vfs.h> +#include <sys/vfs_opreg.h>  #include <sys/vnode.h>  #include <sys/rwstlock.h>  #include <sys/fem.h> diff --git a/usr/src/uts/common/fs/zfs/zfs_ctldir.c b/usr/src/uts/common/fs/zfs/zfs_ctldir.c index cb0807aa56..aaae4f7849 100644 --- a/usr/src/uts/common/fs/zfs/zfs_ctldir.c +++ b/usr/src/uts/common/fs/zfs/zfs_ctldir.c @@ -19,7 +19,7 @@   * CDDL HEADER END   */  /* - * Copyright 2006 Sun Microsystems, Inc.  All rights reserved. + * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.   * Use is subject to license terms.   */ @@ -59,6 +59,7 @@  #include <sys/zfs_ctldir.h>  #include <sys/zfs_ioctl.h>  #include <sys/zfs_vfsops.h> +#include <sys/vfs_opreg.h>  #include <sys/gfs.h>  #include <sys/stat.h>  #include <sys/dmu.h> @@ -384,16 +385,16 @@ zfsctl_root_lookup(vnode_t *dvp, char *nm, vnode_t **vpp, pathname_t *pnp,  }  static const fs_operation_def_t zfsctl_tops_root[] = { -	{ VOPNAME_OPEN,		zfsctl_common_open			}, -	{ VOPNAME_CLOSE,	zfsctl_common_close			}, -	{ VOPNAME_IOCTL,	fs_inval				}, -	{ VOPNAME_GETATTR,	zfsctl_root_getattr			}, -	{ VOPNAME_ACCESS,	zfsctl_common_access			}, -	{ VOPNAME_READDIR,	gfs_vop_readdir				}, -	{ VOPNAME_LOOKUP,	zfsctl_root_lookup			}, -	{ VOPNAME_SEEK,		fs_seek					}, -	{ VOPNAME_INACTIVE,	(fs_generic_func_p) gfs_vop_inactive	}, -	{ VOPNAME_FID,		zfsctl_common_fid			}, +	{ VOPNAME_OPEN,		{ .vop_open = zfsctl_common_open }	}, +	{ VOPNAME_CLOSE,	{ .vop_close = zfsctl_common_close }	}, +	{ VOPNAME_IOCTL,	{ .error = fs_inval }			}, +	{ VOPNAME_GETATTR,	{ .vop_getattr = zfsctl_root_getattr }	}, +	{ VOPNAME_ACCESS,	{ .vop_access = zfsctl_common_access }	}, +	{ VOPNAME_READDIR,	{ .vop_readdir = gfs_vop_readdir } 	}, +	{ VOPNAME_LOOKUP,	{ .vop_lookup = zfsctl_root_lookup }	}, +	{ VOPNAME_SEEK,		{ .vop_seek = fs_seek }			}, +	{ VOPNAME_INACTIVE,	{ .vop_inactive = gfs_vop_inactive }	}, +	{ VOPNAME_FID,		{ .vop_fid = zfsctl_common_fid	}	},  	{ NULL }  }; @@ -788,18 +789,18 @@ zfsctl_snapdir_inactive(vnode_t *vp, cred_t *cr)  }  static const fs_operation_def_t zfsctl_tops_snapdir[] = { -	{ VOPNAME_OPEN,		zfsctl_common_open			}, -	{ VOPNAME_CLOSE,	zfsctl_common_close			}, -	{ VOPNAME_IOCTL,	fs_inval				}, -	{ VOPNAME_GETATTR,	zfsctl_snapdir_getattr			}, -	{ VOPNAME_ACCESS,	zfsctl_common_access			}, -	{ VOPNAME_RENAME,	zfsctl_snapdir_rename			}, -	{ VOPNAME_RMDIR,	zfsctl_snapdir_remove			}, -	{ VOPNAME_READDIR,	gfs_vop_readdir				}, -	{ VOPNAME_LOOKUP,	zfsctl_snapdir_lookup			}, -	{ VOPNAME_SEEK,		fs_seek					}, -	{ VOPNAME_INACTIVE,	(fs_generic_func_p) zfsctl_snapdir_inactive }, -	{ VOPNAME_FID,		zfsctl_common_fid			}, +	{ VOPNAME_OPEN,		{ .vop_open = zfsctl_common_open }	}, +	{ VOPNAME_CLOSE,	{ .vop_close = zfsctl_common_close }	}, +	{ VOPNAME_IOCTL,	{ .error = fs_inval }			}, +	{ VOPNAME_GETATTR,	{ .vop_getattr = zfsctl_snapdir_getattr } }, +	{ VOPNAME_ACCESS,	{ .vop_access = zfsctl_common_access }	}, +	{ VOPNAME_RENAME,	{ .vop_rename = zfsctl_snapdir_rename }	}, +	{ VOPNAME_RMDIR,	{ .vop_rmdir = zfsctl_snapdir_remove }	}, +	{ VOPNAME_READDIR,	{ .vop_readdir = gfs_vop_readdir }	}, +	{ VOPNAME_LOOKUP,	{ .vop_lookup = zfsctl_snapdir_lookup }	}, +	{ VOPNAME_SEEK,		{ .vop_seek = fs_seek }			}, +	{ VOPNAME_INACTIVE,	{ .vop_inactive = zfsctl_snapdir_inactive } }, +	{ VOPNAME_FID,		{ .vop_fid = zfsctl_common_fid }	},  	{ NULL }  }; @@ -868,7 +869,7 @@ zfsctl_snapshot_inactive(vnode_t *vp, cred_t *cr)   * be covered.   */  static const fs_operation_def_t zfsctl_tops_snapshot[] = { -	VOPNAME_INACTIVE, (fs_generic_func_p) zfsctl_snapshot_inactive, +	VOPNAME_INACTIVE, { .vop_inactive =  zfsctl_snapshot_inactive },  	NULL, NULL  }; diff --git a/usr/src/uts/common/fs/zfs/zfs_vfsops.c b/usr/src/uts/common/fs/zfs/zfs_vfsops.c index bdfcca28f0..e5bd45c720 100644 --- a/usr/src/uts/common/fs/zfs/zfs_vfsops.c +++ b/usr/src/uts/common/fs/zfs/zfs_vfsops.c @@ -34,6 +34,7 @@  #include <sys/acl.h>  #include <sys/vnode.h>  #include <sys/vfs.h> +#include <sys/vfs_opreg.h>  #include <sys/mntent.h>  #include <sys/mount.h>  #include <sys/cmn_err.h> @@ -75,20 +76,20 @@ static void zfs_freevfs(vfs_t *vfsp);  static void zfs_objset_close(zfsvfs_t *zfsvfs);  static const fs_operation_def_t zfs_vfsops_template[] = { -	VFSNAME_MOUNT, zfs_mount, -	VFSNAME_MOUNTROOT, zfs_mountroot, -	VFSNAME_UNMOUNT, zfs_umount, -	VFSNAME_ROOT, zfs_root, -	VFSNAME_STATVFS, zfs_statvfs, -	VFSNAME_SYNC, (fs_generic_func_p) zfs_sync, -	VFSNAME_VGET, zfs_vget, -	VFSNAME_FREEVFS, (fs_generic_func_p) zfs_freevfs, -	NULL, NULL +	VFSNAME_MOUNT,		{ .vfs_mount = zfs_mount }, +	VFSNAME_MOUNTROOT,	{ .vfs_mountroot = zfs_mountroot }, +	VFSNAME_UNMOUNT,	{ .vfs_unmount = zfs_umount }, +	VFSNAME_ROOT,		{ .vfs_root = zfs_root }, +	VFSNAME_STATVFS,	{ .vfs_statvfs = zfs_statvfs }, +	VFSNAME_SYNC,		{ .vfs_sync = zfs_sync }, +	VFSNAME_VGET,		{ .vfs_vget = zfs_vget }, +	VFSNAME_FREEVFS,	{ .vfs_freevfs = zfs_freevfs }, +	NULL,			NULL  };  static const fs_operation_def_t zfs_vfsops_eio_template[] = { -	VFSNAME_FREEVFS, (fs_generic_func_p) zfs_freevfs, -	NULL, NULL +	VFSNAME_FREEVFS,	{ .vfs_freevfs =  zfs_freevfs }, +	NULL,			NULL  };  /* diff --git a/usr/src/uts/common/fs/zfs/zfs_vnops.c b/usr/src/uts/common/fs/zfs/zfs_vnops.c index 4299bb60f2..fd1aae2e38 100644 --- a/usr/src/uts/common/fs/zfs/zfs_vnops.c +++ b/usr/src/uts/common/fs/zfs/zfs_vnops.c @@ -32,6 +32,7 @@  #include <sys/sysmacros.h>  #include <sys/resource.h>  #include <sys/vfs.h> +#include <sys/vfs_opreg.h>  #include <sys/vnode.h>  #include <sys/file.h>  #include <sys/stat.h> @@ -3662,31 +3663,31 @@ zfs_isdir()   */  vnodeops_t *zfs_dvnodeops;  const fs_operation_def_t zfs_dvnodeops_template[] = { -	VOPNAME_OPEN, zfs_open, -	VOPNAME_CLOSE, zfs_close, -	VOPNAME_READ, zfs_isdir, -	VOPNAME_WRITE, zfs_isdir, -	VOPNAME_IOCTL, zfs_ioctl, -	VOPNAME_GETATTR, zfs_getattr, -	VOPNAME_SETATTR, zfs_setattr, -	VOPNAME_ACCESS, zfs_access, -	VOPNAME_LOOKUP, zfs_lookup, -	VOPNAME_CREATE, zfs_create, -	VOPNAME_REMOVE, zfs_remove, -	VOPNAME_LINK, zfs_link, -	VOPNAME_RENAME, zfs_rename, -	VOPNAME_MKDIR, zfs_mkdir, -	VOPNAME_RMDIR, zfs_rmdir, -	VOPNAME_READDIR, zfs_readdir, -	VOPNAME_SYMLINK, zfs_symlink, -	VOPNAME_FSYNC, zfs_fsync, -	VOPNAME_INACTIVE, (fs_generic_func_p) zfs_inactive, -	VOPNAME_FID, zfs_fid, -	VOPNAME_SEEK, zfs_seek, -	VOPNAME_PATHCONF, zfs_pathconf, -	VOPNAME_GETSECATTR, zfs_getsecattr, -	VOPNAME_SETSECATTR, zfs_setsecattr, -	NULL, NULL +	VOPNAME_OPEN,		{ .vop_open = zfs_open }, +	VOPNAME_CLOSE,		{ .vop_close = zfs_close }, +	VOPNAME_READ,		{ .error = zfs_isdir }, +	VOPNAME_WRITE,		{ .error = zfs_isdir }, +	VOPNAME_IOCTL,		{ .vop_ioctl = zfs_ioctl }, +	VOPNAME_GETATTR,	{ .vop_getattr = zfs_getattr }, +	VOPNAME_SETATTR,	{ .vop_setattr = zfs_setattr }, +	VOPNAME_ACCESS,		{ .vop_access = zfs_access }, +	VOPNAME_LOOKUP,		{ .vop_lookup = zfs_lookup }, +	VOPNAME_CREATE,		{ .vop_create = zfs_create }, +	VOPNAME_REMOVE,		{ .vop_remove = zfs_remove }, +	VOPNAME_LINK,		{ .vop_link = zfs_link }, +	VOPNAME_RENAME,		{ .vop_rename = zfs_rename }, +	VOPNAME_MKDIR,		{ .vop_mkdir = zfs_mkdir }, +	VOPNAME_RMDIR,		{ .vop_rmdir = zfs_rmdir }, +	VOPNAME_READDIR,	{ .vop_readdir = zfs_readdir }, +	VOPNAME_SYMLINK,	{ .vop_symlink = zfs_symlink }, +	VOPNAME_FSYNC,		{ .vop_fsync = zfs_fsync }, +	VOPNAME_INACTIVE,	{ .vop_inactive = zfs_inactive }, +	VOPNAME_FID,		{ .vop_fid = zfs_fid }, +	VOPNAME_SEEK,		{ .vop_seek = zfs_seek }, +	VOPNAME_PATHCONF,	{ .vop_pathconf = zfs_pathconf }, +	VOPNAME_GETSECATTR,	{ .vop_getsecattr = zfs_getsecattr }, +	VOPNAME_SETSECATTR,	{ .vop_setsecattr = zfs_setsecattr }, +	NULL,			NULL  };  /* @@ -3694,32 +3695,32 @@ const fs_operation_def_t zfs_dvnodeops_template[] = {   */  vnodeops_t *zfs_fvnodeops;  const fs_operation_def_t zfs_fvnodeops_template[] = { -	VOPNAME_OPEN, zfs_open, -	VOPNAME_CLOSE, zfs_close, -	VOPNAME_READ, zfs_read, -	VOPNAME_WRITE, zfs_write, -	VOPNAME_IOCTL, zfs_ioctl, -	VOPNAME_GETATTR, zfs_getattr, -	VOPNAME_SETATTR, zfs_setattr, -	VOPNAME_ACCESS, zfs_access, -	VOPNAME_LOOKUP, zfs_lookup, -	VOPNAME_RENAME, zfs_rename, -	VOPNAME_FSYNC, zfs_fsync, -	VOPNAME_INACTIVE, (fs_generic_func_p)zfs_inactive, -	VOPNAME_FID, zfs_fid, -	VOPNAME_SEEK, zfs_seek, -	VOPNAME_FRLOCK, zfs_frlock, -	VOPNAME_SPACE, zfs_space, -	VOPNAME_GETPAGE, zfs_getpage, -	VOPNAME_PUTPAGE, zfs_putpage, -	VOPNAME_MAP, (fs_generic_func_p) zfs_map, -	VOPNAME_ADDMAP, (fs_generic_func_p) zfs_addmap, -	VOPNAME_DELMAP, zfs_delmap, -	VOPNAME_PATHCONF, zfs_pathconf, -	VOPNAME_GETSECATTR, zfs_getsecattr, -	VOPNAME_SETSECATTR, zfs_setsecattr, -	VOPNAME_VNEVENT, fs_vnevent_support, -	NULL, NULL +	VOPNAME_OPEN,		{ .vop_open = zfs_open }, +	VOPNAME_CLOSE,		{ .vop_close = zfs_close }, +	VOPNAME_READ,		{ .vop_read = zfs_read }, +	VOPNAME_WRITE,		{ .vop_write = zfs_write }, +	VOPNAME_IOCTL,		{ .vop_ioctl = zfs_ioctl }, +	VOPNAME_GETATTR,	{ .vop_getattr = zfs_getattr }, +	VOPNAME_SETATTR,	{ .vop_setattr = zfs_setattr }, +	VOPNAME_ACCESS,		{ .vop_access = zfs_access }, +	VOPNAME_LOOKUP,		{ .vop_lookup = zfs_lookup }, +	VOPNAME_RENAME,		{ .vop_rename = zfs_rename }, +	VOPNAME_FSYNC,		{ .vop_fsync = zfs_fsync }, +	VOPNAME_INACTIVE,	{ .vop_inactive = zfs_inactive }, +	VOPNAME_FID,		{ .vop_fid = zfs_fid }, +	VOPNAME_SEEK,		{ .vop_seek = zfs_seek }, +	VOPNAME_FRLOCK,		{ .vop_frlock = zfs_frlock }, +	VOPNAME_SPACE,		{ .vop_space = zfs_space }, +	VOPNAME_GETPAGE,	{ .vop_getpage = zfs_getpage }, +	VOPNAME_PUTPAGE,	{ .vop_putpage = zfs_putpage }, +	VOPNAME_MAP,		{ .vop_map = zfs_map }, +	VOPNAME_ADDMAP,		{ .vop_addmap = zfs_addmap }, +	VOPNAME_DELMAP,		{ .vop_delmap = zfs_delmap }, +	VOPNAME_PATHCONF,	{ .vop_pathconf = zfs_pathconf }, +	VOPNAME_GETSECATTR,	{ .vop_getsecattr = zfs_getsecattr }, +	VOPNAME_SETSECATTR,	{ .vop_setsecattr = zfs_setsecattr }, +	VOPNAME_VNEVENT,	{ .vop_vnevent = fs_vnevent_support }, +	NULL,			NULL  };  /* @@ -3727,16 +3728,16 @@ const fs_operation_def_t zfs_fvnodeops_template[] = {   */  vnodeops_t *zfs_symvnodeops;  const fs_operation_def_t zfs_symvnodeops_template[] = { -	VOPNAME_GETATTR, zfs_getattr, -	VOPNAME_SETATTR, zfs_setattr, -	VOPNAME_ACCESS, zfs_access, -	VOPNAME_RENAME, zfs_rename, -	VOPNAME_READLINK, zfs_readlink, -	VOPNAME_INACTIVE, (fs_generic_func_p) zfs_inactive, -	VOPNAME_FID, zfs_fid, -	VOPNAME_PATHCONF, zfs_pathconf, -	VOPNAME_VNEVENT, fs_vnevent_support, -	NULL, NULL +	VOPNAME_GETATTR,	{ .vop_getattr = zfs_getattr }, +	VOPNAME_SETATTR,	{ .vop_setattr = zfs_setattr }, +	VOPNAME_ACCESS,		{ .vop_access = zfs_access }, +	VOPNAME_RENAME,		{ .vop_rename = zfs_rename }, +	VOPNAME_READLINK,	{ .vop_readlink = zfs_readlink }, +	VOPNAME_INACTIVE,	{ .vop_inactive = zfs_inactive }, +	VOPNAME_FID,		{ .vop_fid = zfs_fid }, +	VOPNAME_PATHCONF,	{ .vop_pathconf = zfs_pathconf }, +	VOPNAME_VNEVENT,	{ .vop_vnevent = fs_vnevent_support }, +	NULL,			NULL  };  /* @@ -3752,30 +3753,30 @@ const fs_operation_def_t zfs_symvnodeops_template[] = {   */  vnodeops_t *zfs_xdvnodeops;  const fs_operation_def_t zfs_xdvnodeops_template[] = { -	VOPNAME_OPEN, zfs_open, -	VOPNAME_CLOSE, zfs_close, -	VOPNAME_IOCTL, zfs_ioctl, -	VOPNAME_GETATTR, zfs_getattr, -	VOPNAME_SETATTR, zfs_setattr, -	VOPNAME_ACCESS, zfs_access, -	VOPNAME_LOOKUP, zfs_lookup, -	VOPNAME_CREATE, zfs_create, -	VOPNAME_REMOVE, zfs_remove, -	VOPNAME_LINK, zfs_link, -	VOPNAME_RENAME, zfs_rename, -	VOPNAME_MKDIR, zfs_inval, -	VOPNAME_RMDIR, zfs_rmdir, -	VOPNAME_READDIR, zfs_readdir, -	VOPNAME_SYMLINK, zfs_inval, -	VOPNAME_FSYNC, zfs_fsync, -	VOPNAME_INACTIVE, (fs_generic_func_p) zfs_inactive, -	VOPNAME_FID, zfs_fid, -	VOPNAME_SEEK, zfs_seek, -	VOPNAME_PATHCONF, zfs_pathconf, -	VOPNAME_GETSECATTR, zfs_getsecattr, -	VOPNAME_SETSECATTR, zfs_setsecattr, -	VOPNAME_VNEVENT, fs_vnevent_support, -	NULL, NULL +	VOPNAME_OPEN,		{ .vop_open = zfs_open }, +	VOPNAME_CLOSE,		{ .vop_close = zfs_close }, +	VOPNAME_IOCTL,		{ .vop_ioctl = zfs_ioctl }, +	VOPNAME_GETATTR,	{ .vop_getattr = zfs_getattr }, +	VOPNAME_SETATTR,	{ .vop_setattr = zfs_setattr }, +	VOPNAME_ACCESS,		{ .vop_access = zfs_access }, +	VOPNAME_LOOKUP,		{ .vop_lookup = zfs_lookup }, +	VOPNAME_CREATE,		{ .vop_create = zfs_create }, +	VOPNAME_REMOVE,		{ .vop_remove = zfs_remove }, +	VOPNAME_LINK,		{ .vop_link = zfs_link }, +	VOPNAME_RENAME,		{ .vop_rename = zfs_rename }, +	VOPNAME_MKDIR,		{ .error = zfs_inval }, +	VOPNAME_RMDIR,		{ .vop_rmdir = zfs_rmdir }, +	VOPNAME_READDIR,	{ .vop_readdir = zfs_readdir }, +	VOPNAME_SYMLINK,	{ .error = zfs_inval }, +	VOPNAME_FSYNC,		{ .vop_fsync = zfs_fsync }, +	VOPNAME_INACTIVE,	{ .vop_inactive = zfs_inactive }, +	VOPNAME_FID,		{ .vop_fid = zfs_fid }, +	VOPNAME_SEEK,		{ .vop_seek = zfs_seek }, +	VOPNAME_PATHCONF,	{ .vop_pathconf = zfs_pathconf }, +	VOPNAME_GETSECATTR,	{ .vop_getsecattr = zfs_getsecattr }, +	VOPNAME_SETSECATTR,	{ .vop_setsecattr = zfs_setsecattr }, +	VOPNAME_VNEVENT,	{ .vop_vnevent = fs_vnevent_support }, +	NULL,			NULL  };  /* @@ -3783,7 +3784,7 @@ const fs_operation_def_t zfs_xdvnodeops_template[] = {   */  vnodeops_t *zfs_evnodeops;  const fs_operation_def_t zfs_evnodeops_template[] = { -	VOPNAME_INACTIVE, (fs_generic_func_p) zfs_inactive, -	VOPNAME_PATHCONF, zfs_pathconf, -	NULL, NULL +	VOPNAME_INACTIVE,	{ .vop_inactive = zfs_inactive }, +	VOPNAME_PATHCONF,	{ .vop_pathconf = zfs_pathconf }, +	NULL,			NULL  }; diff --git a/usr/src/uts/common/fs/zfs/zfs_znode.c b/usr/src/uts/common/fs/zfs/zfs_znode.c index b004c1350a..a2c8bef86f 100644 --- a/usr/src/uts/common/fs/zfs/zfs_znode.c +++ b/usr/src/uts/common/fs/zfs/zfs_znode.c @@ -35,6 +35,7 @@  #include <sys/mntent.h>  #include <sys/mkdev.h>  #include <sys/vfs.h> +#include <sys/vfs_opreg.h>  #include <sys/vnode.h>  #include <sys/file.h>  #include <sys/kmem.h> diff --git a/usr/src/uts/common/io/physmem.c b/usr/src/uts/common/io/physmem.c index fbe4b7ca07..8a4cab75d1 100644 --- a/usr/src/uts/common/io/physmem.c +++ b/usr/src/uts/common/io/physmem.c @@ -44,6 +44,7 @@  #include <sys/fcntl.h>  #include <sys/vmsystm.h>  #include <sys/physmem.h> +#include <sys/vfs_opreg.h>  static dev_info_t		*physmem_dip = NULL; @@ -108,11 +109,11 @@ static int physmem_delmap(struct vnode *vp, offset_t off, struct as *as,  static void physmem_inactive(vnode_t *vp, cred_t *crp);  const fs_operation_def_t physmem_vnodeops_template[] = { -	VOPNAME_GETPAGE, physmem_getpage, -	VOPNAME_ADDMAP, (fs_generic_func_p) physmem_addmap, -	VOPNAME_DELMAP, physmem_delmap, -	VOPNAME_INACTIVE, (fs_generic_func_p) physmem_inactive, -	NULL, NULL +	VOPNAME_GETPAGE,	{ .vop_getpage = physmem_getpage }, +	VOPNAME_ADDMAP,		{ .vop_addmap = physmem_addmap }, +	VOPNAME_DELMAP,		{ .vop_delmap = physmem_delmap }, +	VOPNAME_INACTIVE,	{ .vop_inactive = physmem_inactive }, +	NULL,			NULL  };  vnodeops_t *physmem_vnodeops = NULL; diff --git a/usr/src/uts/common/os/vfs_conf.c b/usr/src/uts/common/os/vfs_conf.c index ae953b5030..9747c75541 100644 --- a/usr/src/uts/common/os/vfs_conf.c +++ b/usr/src/uts/common/os/vfs_conf.c @@ -19,7 +19,7 @@   * CDDL HEADER END   */  /* - * Copyright 2006 Sun Microsystems, Inc.  All rights reserved. + * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.   * Use is subject to license terms.   */ @@ -31,8 +31,6 @@  #include <sys/vfs.h>  #include <sys/t_lock.h> -extern struct vfsops vfs_strayops;	/* XXX move here from vfs.c ? */ -  extern int swapinit(int fstype, char *name);  /* diff --git a/usr/src/uts/common/sys/Makefile b/usr/src/uts/common/sys/Makefile index 2cab0fbac7..a8e545a6cc 100644 --- a/usr/src/uts/common/sys/Makefile +++ b/usr/src/uts/common/sys/Makefile @@ -479,7 +479,7 @@ CHKHDRS=			\  	syscall.h		\  	sysconf.h		\  	sysconfig.h		\ -	sysevent.h	\ +	sysevent.h		\  	sysevent_impl.h         \  	sysinfo.h		\  	syslog.h		\ @@ -546,6 +546,7 @@ CHKHDRS=			\  	var.h			\  	varargs.h		\  	vfs.h			\ +	vfs_opreg.h		\  	vfstab.h		\  	vgareg.h		\  	videodev2.h		\ diff --git a/usr/src/uts/common/sys/fem.h b/usr/src/uts/common/sys/fem.h index 7e2a133948..04afc1466d 100644 --- a/usr/src/uts/common/sys/fem.h +++ b/usr/src/uts/common/sys/fem.h @@ -2,9 +2,8 @@   * CDDL HEADER START   *   * The contents of this file are subject to the terms of the - * Common Development and Distribution License, Version 1.0 only - * (the "License").  You may not use this file except in compliance - * with the License. + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License.   *   * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE   * or http://www.opensolaris.org/os/licensing. @@ -20,7 +19,7 @@   * CDDL HEADER END   */  /* - * Copyright 2004 Sun Microsystems, Inc.  All rights reserved. + * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.   * Use is subject to license terms.   */ @@ -43,6 +42,8 @@  extern "C" {  #endif +#ifdef	_KERNEL +  struct fs_operation_def;	/* from vfs.h */  /* @@ -90,7 +91,6 @@ typedef struct fem fem_t;  typedef struct fsem    fsem_t;  typedef int femop_t(); -typedef int vop_t();  /*   * The following enumerations specify the conditions @@ -141,107 +141,128 @@ struct fem_head {  	struct fem_list *femh_list;  }; +/* + * FEM_OPS defines all the FEM operations.  It is used to define + * the fem structure (below) and the fs_func_p union (vfs_opreg.h). + */ +#define	FEM_OPS								\ +	int (*femop_open)(femarg_t *vf, int mode, cred_t *cr);		\ +	int (*femop_close)(femarg_t *vf, int flag, int count,		\ +			offset_t offset, cred_t *cr);			\ +	int (*femop_read)(femarg_t *vf, uio_t *uiop, int ioflag,	\ +			cred_t *cr, struct caller_context *ct);		\ +	int (*femop_write)(femarg_t *vf, uio_t *uiop, int ioflag,	\ +			cred_t *cr, struct caller_context *ct);		\ +	int (*femop_ioctl)(femarg_t *vf, int cmd, intptr_t arg,		\ +			int flag, cred_t *cr, int *rvalp);		\ +	int (*femop_setfl)(femarg_t *vf, int oflags, int nflags,	\ +			cred_t *cr);					\ +	int (*femop_getattr)(femarg_t *vf, vattr_t *vap, int flags,	\ +			cred_t *cr);					\ +	int (*femop_setattr)(femarg_t *vf, vattr_t *vap, int flags,	\ +			cred_t *cr, caller_context_t *ct);		\ +	int (*femop_access)(femarg_t *vf, int mode, int flags,		\ +			cred_t *cr);					\ +	int (*femop_lookup)(femarg_t *vf, char *nm, vnode_t **vpp,	\ +			pathname_t *pnp, int flags, vnode_t *rdir,	\ +			cred_t *cr);					\ +	int (*femop_create)(femarg_t *vf, char *name, vattr_t *vap,	\ +			vcexcl_t excl, int mode, vnode_t **vpp,		\ +			cred_t *cr, int flag);				\ +	int (*femop_remove)(femarg_t *vf, char *nm, cred_t *cr);	\ +	int (*femop_link)(femarg_t *vf, vnode_t *svp, char *tnm,	\ +			cred_t *cr);					\ +	int (*femop_rename)(femarg_t *vf, char *snm, vnode_t *tdvp,	\ +			char *tnm, cred_t *cr);				\ +	int (*femop_mkdir)(femarg_t *vf, char *dirname, vattr_t *vap,	\ +			vnode_t **vpp, cred_t *cr);			\ +	int (*femop_rmdir)(femarg_t *vf, char *nm, vnode_t *cdir,	\ +			cred_t *cr);					\ +	int (*femop_readdir)(femarg_t *vf, uio_t *uiop, cred_t *cr,	\ +			int *eofp);					\ +	int (*femop_symlink)(femarg_t *vf, char *linkname,		\ +			vattr_t *vap, char *target, cred_t *cr);	\ +	int (*femop_readlink)(femarg_t *vf, uio_t *uiop, cred_t *cr);	\ +	int (*femop_fsync)(femarg_t *vf, int syncflag, cred_t *cr);	\ +	void (*femop_inactive)(femarg_t *vf, cred_t *cr);		\ +	int (*femop_fid)(femarg_t *vf, fid_t *fidp);			\ +	int (*femop_rwlock)(femarg_t *vf, int write_lock,		\ +			caller_context_t *ct);				\ +	void (*femop_rwunlock)(femarg_t *vf, int write_lock,		\ +			caller_context_t *ct);				\ +	int (*femop_seek)(femarg_t *vf, offset_t ooff,			\ +			offset_t *noffp);				\ +	int (*femop_cmp)(femarg_t *vf, vnode_t *vp2);			\ +	int (*femop_frlock)(femarg_t *vf, int cmd, struct flock64 *bfp,	\ +			int flag, offset_t offset,			\ +			struct flk_callback *flk_cbp, cred_t *cr);	\ +	int (*femop_space)(femarg_t *vf, int cmd, struct flock64 *bfp,	\ +			int flag, offset_t offset, cred_t *cr,		\ +			caller_context_t *ct);				\ +	int (*femop_realvp)(femarg_t *vf, vnode_t **vpp);		\ +	int (*femop_getpage)(femarg_t *vf, offset_t off, size_t len,	\ +			uint_t *protp, struct page **plarr,		\ +			size_t plsz, struct seg *seg, caddr_t addr,	\ +			enum seg_rw rw,	cred_t *cr);			\ +	int (*femop_putpage)(femarg_t *vf, offset_t off, size_t len,	\ +			int flags, cred_t *cr);				\ +	int (*femop_map)(femarg_t *vf, offset_t off, struct as *as,	\ +			caddr_t *addrp, size_t len, uchar_t prot,	\ +			uchar_t maxprot, uint_t flags, cred_t *cr);	\ +	int (*femop_addmap)(femarg_t *vf, offset_t off, struct as *as,	\ +			caddr_t addr, size_t len, uchar_t prot,		\ +			uchar_t maxprot, uint_t flags, cred_t *cr);	\ +	int (*femop_delmap)(femarg_t *vf, offset_t off, struct as *as,	\ +			caddr_t addr, size_t len, uint_t prot,		\ +			uint_t maxprot, uint_t flags, cred_t *cr);	\ +	int (*femop_poll)(femarg_t *vf, short events, int anyyet,	\ +			short *reventsp, struct pollhead **phpp);	\ +	int (*femop_dump)(femarg_t *vf, caddr_t addr, int lbdn,		\ +			int dblks); 					\ +	int (*femop_pathconf)(femarg_t *vf, int cmd, ulong_t *valp,	\ +			cred_t *cr);					\ +	int (*femop_pageio)(femarg_t *vf, struct page *pp,		\ +			u_offset_t io_off, size_t io_len, int flags,	\ +			cred_t *cr);					\ +	int (*femop_dumpctl)(femarg_t *vf, int action, int *blkp);	\ +	void (*femop_dispose)(femarg_t *vf, struct page *pp, int flag,	\ +			int dn, cred_t *cr);				\ +	int (*femop_setsecattr)(femarg_t *vf, vsecattr_t *vsap,		\ +			int flag, cred_t *cr);				\ +	int (*femop_getsecattr)(femarg_t *vf, vsecattr_t *vsap,		\ +			int flag, cred_t *cr);				\ +	int (*femop_shrlock)(femarg_t *vf, int cmd,			\ +			struct shrlock *shr, int flag, cred_t *cr);	\ +	int (*femop_vnevent)(femarg_t *vf, vnevent_t vnevent)	/* NB: No ";" */ +  struct fem {  	const char *name;  	const struct fs_operation_def *templ; -	int (*vsop_open)(femarg_t *vf, int mode, cred_t *cr); -	int (*vsop_close)(femarg_t *vf, int flag, int count, -			offset_t offset, cred_t *cr); -	int (*vsop_read)(femarg_t *vf, uio_t *uiop, int ioflag, cred_t *cr, -			struct caller_context *ct); -	int (*vsop_write)(femarg_t *vf, uio_t *uiop, int ioflag, -			cred_t *cr, struct caller_context *ct); -	int (*vsop_ioctl)(femarg_t *vf, int cmd, intptr_t arg, int flag, -			cred_t *cr, int *rvalp); -	int (*vsop_setfl)(femarg_t *vf, int oflags, int nflags, cred_t *cr); -	int (*vsop_getattr)(femarg_t *vf, vattr_t *vap, int flags, -			cred_t *cr); -	int (*vsop_setattr)(femarg_t *vf, vattr_t *vap, int flags, -			cred_t *cr, caller_context_t *ct); -	int (*vsop_access)(femarg_t *vf, int mode, int flags, cred_t *cr); -	int (*vsop_lookup)(femarg_t *vf, char *nm, vnode_t **vpp, -			pathname_t *pnp, int flags, vnode_t *rdir, -			cred_t *cr); -	int (*vsop_create)(femarg_t *vf, char *name, vattr_t *vap, -			vcexcl_t excl, int mode, vnode_t **vpp, cred_t *cr, -			int flag); -	int (*vsop_remove)(femarg_t *vf, char *nm, cred_t *cr); -	int (*vsop_link)(femarg_t *vf, vnode_t *svp, char *tnm, cred_t *cr); -	int (*vsop_rename)(femarg_t *vf, char *snm, vnode_t *tdvp, -			char *tnm, cred_t *cr); -	int (*vsop_mkdir)(femarg_t *vf, char *dirname, vattr_t *vap, -			vnode_t **vpp, cred_t *cr); -	int (*vsop_rmdir)(femarg_t *vf, char *nm, vnode_t *cdir, -			cred_t *cr); -	int (*vsop_readdir)(femarg_t *vf, uio_t *uiop, cred_t *cr, -			int *eofp); -	int (*vsop_symlink)(femarg_t *vf, char *linkname, vattr_t *vap, -			char *target, cred_t *cr); -	int (*vsop_readlink)(femarg_t *vf, uio_t *uiop, cred_t *cr); -	int (*vsop_fsync)(femarg_t *vf, int syncflag, cred_t *cr); -	void (*vsop_inactive)(femarg_t *vf, cred_t *cr); -	int (*vsop_fid)(femarg_t *vf, fid_t *fidp); -	int (*vsop_rwlock)(femarg_t *vf, int write_lock, -			caller_context_t *ct); -	void (*vsop_rwunlock)(femarg_t *vf, int write_lock, -			caller_context_t *ct); -	int (*vsop_seek)(femarg_t *vf, offset_t ooff, offset_t *noffp); -	int (*vsop_cmp)(femarg_t *vf, vnode_t *vp2); -	int (*vsop_frlock)(femarg_t *vf, int cmd, struct flock64 *bfp, -			int flag, offset_t offset, -			struct flk_callback *flk_cbp, cred_t *cr); -	int (*vsop_space)(femarg_t *vf, int cmd, struct flock64 *bfp, -			int flag, offset_t offset, cred_t *cr, -			caller_context_t *ct); -	int (*vsop_realvp)(femarg_t *vf, vnode_t **vpp); -	int (*vsop_getpage)(femarg_t *vf, offset_t off, size_t len, -			uint_t *protp, struct page **plarr, size_t plsz, -			struct seg *seg, caddr_t addr, enum seg_rw rw, -			cred_t *cr); -	int (*vsop_putpage)(femarg_t *vf, offset_t off, size_t len, -			int flags, cred_t *cr); -	int (*vsop_map)(femarg_t *vf, offset_t off, struct as *as, -			caddr_t *addrp, size_t len, uchar_t prot, -			uchar_t maxprot, uint_t flags, cred_t *cr); -	int (*vsop_addmap)(femarg_t *vf, offset_t off, struct as *as, -			caddr_t addr, size_t len, uchar_t prot, -			uchar_t maxprot, uint_t flags, cred_t *cr); -	int (*vsop_delmap)(femarg_t *vf, offset_t off, struct as *as, -			caddr_t addr, size_t len, uint_t prot, -			uint_t maxprot, uint_t flags, cred_t *cr); -	int (*vsop_poll)(femarg_t *vf, short events, int anyyet, -			short *reventsp, struct pollhead **phpp); -	int (*vsop_dump)(femarg_t *vf, caddr_t addr, int lbdn, int dblks); -	int (*vsop_pathconf)(femarg_t *vf, int cmd, ulong_t *valp, -			cred_t *cr); -	int (*vsop_pageio)(femarg_t *vf, struct page *pp, -			u_offset_t io_off, size_t io_len, int flags, -			cred_t *cr); -	int (*vsop_dumpctl)(femarg_t *vf, int action, int *blkp); -	void (*vsop_dispose)(femarg_t *vf, struct page *pp, int flag, -			int dn, cred_t *cr); -	int (*vsop_setsecattr)(femarg_t *vf, vsecattr_t *vsap, int flag, -			cred_t *cr); -	int (*vsop_getsecattr)(femarg_t *vf, vsecattr_t *vsap, int flag, -			cred_t *cr); -	int (*vsop_shrlock)(femarg_t *vf, int cmd, struct shrlock *shr, -			int flag, cred_t *cr); -	int (*vsop_vnevent)(femarg_t *vf, vnevent_t vnevent); +	FEM_OPS;	/* Signatures of all FEM operations (femops) */  }; +/* + * FSEM_OPS defines all the FSEM operations.  It is used to define + * the fsem structure (below) and the fs_func_p union (vfs_opreg.h). + */ +#define	FSEM_OPS							\ +	int (*fsemop_mount)(fsemarg_t *vf, vnode_t *mvp,		\ +			struct mounta *uap, cred_t *cr);		\ +	int (*fsemop_unmount)(fsemarg_t *vf, int flag, cred_t *cr);	\ +	int (*fsemop_root)(fsemarg_t *vf, vnode_t **vpp);		\ +	int (*fsemop_statvfs)(fsemarg_t *vf, statvfs64_t *sp);		\ +	int (*fsemop_sync)(fsemarg_t *vf, short flag, cred_t *cr);	\ +	int (*fsemop_vget)(fsemarg_t *vf, vnode_t **vpp, fid_t *fidp);	\ +	int (*fsemop_mountroot)(fsemarg_t *vf,				\ +			enum whymountroot reason);			\ +	void (*fsemop_freevfs)(fsemarg_t *vf);				\ +	int (*fsemop_vnstate)(fsemarg_t *vf, vnode_t *vp,		\ +			vntrans_t nstate)		/* NB: No ";" */ +  struct fsem {  	const char *name;  	const struct fs_operation_def *templ; -	int (*vfsop_mount)(fsemarg_t *vf, vnode_t *mvp, struct mounta *uap, -			cred_t *cr); -	int (*vfsop_unmount)(fsemarg_t *vf, int flag, cred_t *cr); -	int (*vfsop_root)(fsemarg_t *vf, vnode_t **vpp); -	int (*vfsop_statvfs)(fsemarg_t *vf, statvfs64_t *sp); -	int (*vfsop_sync)(fsemarg_t *vf, short flag, cred_t *cr); -	int (*vfsop_vget)(fsemarg_t *vf, vnode_t **vpp, fid_t *fidp); -	int (*vfsop_mountroot)(fsemarg_t *vf, enum whymountroot reason); -	void (*vfsop_freevfs)(fsemarg_t *vf); -	int (*vfsop_vnstate)(fsemarg_t *vf, vnode_t *vp, vntrans_t nstate); +	FSEM_OPS;	/* Signatures of all FSEM operations (fsemops) */  };  extern int vnext_open(femarg_t *vf, int mode, cred_t *cr); @@ -357,6 +378,7 @@ extern int fsem_uninstall(struct vfs *v, fsem_t *mon, void *arg);  extern vfsops_t *fsem_getvfsops(struct vfs *v);  extern void fsem_setvfsops(struct vfs *v, struct vfsops *nops); +#endif /* _KERNEL */  #ifdef	__cplusplus  } diff --git a/usr/src/uts/common/sys/fs/sdev_impl.h b/usr/src/uts/common/sys/fs/sdev_impl.h index 4083fd382d..281bc2faf7 100644 --- a/usr/src/uts/common/sys/fs/sdev_impl.h +++ b/usr/src/uts/common/sys/fs/sdev_impl.h @@ -35,6 +35,7 @@ extern "C" {  #include <rpc/rpc.h>  #include <sys/dirent.h>  #include <sys/vfs.h> +#include <sys/vfs_opreg.h>  #include <sys/list.h>  #include <sys/nvpair.h> diff --git a/usr/src/uts/common/sys/gfs.h b/usr/src/uts/common/sys/gfs.h index 65a379eeb9..fd2abc1326 100644 --- a/usr/src/uts/common/sys/gfs.h +++ b/usr/src/uts/common/sys/gfs.h @@ -2,9 +2,8 @@   * CDDL HEADER START   *   * The contents of this file are subject to the terms of the - * Common Development and Distribution License, Version 1.0 only - * (the "License").  You may not use this file except in compliance - * with the License. + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License.   *   * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE   * or http://www.opensolaris.org/os/licensing. @@ -20,7 +19,7 @@   * CDDL HEADER END   */  /* - * Copyright 2005 Sun Microsystems, Inc.  All rights reserved. + * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.   * Use is subject to license terms.   */ @@ -31,6 +30,7 @@  #include <sys/types.h>  #include <sys/vnode.h> +#include <sys/vfs_opreg.h>  #include <sys/mutex.h>  #include <sys/dirent.h>  #include <sys/uio.h> diff --git a/usr/src/uts/common/sys/vfs.h b/usr/src/uts/common/sys/vfs.h index 66fc2f2c2a..0834cf1f84 100644 --- a/usr/src/uts/common/sys/vfs.h +++ b/usr/src/uts/common/sys/vfs.h @@ -19,7 +19,7 @@   * CDDL HEADER END   */  /* - * Copyright 2006 Sun Microsystems, Inc.  All rights reserved. + * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.   * Use is subject to license terms.   */ @@ -310,20 +310,26 @@ enum vntrans {  };  typedef enum vntrans vntrans_t; +/* + * VFS_OPS defines all the vfs operations.  It is used to define + * the vfsops structure (below) and the fs_func_p union (vfs_opreg.h). + */ +#define	VFS_OPS								\ +	int	(*vfs_mount)(vfs_t *, vnode_t *, struct mounta *, cred_t *); \ +	int	(*vfs_unmount)(vfs_t *, int, cred_t *);			\ +	int	(*vfs_root)(vfs_t *, vnode_t **);			\ +	int	(*vfs_statvfs)(vfs_t *, statvfs64_t *);			\ +	int	(*vfs_sync)(vfs_t *, short, cred_t *);			\ +	int	(*vfs_vget)(vfs_t *, vnode_t **, fid_t *);		\ +	int	(*vfs_mountroot)(vfs_t *, enum whymountroot);		\ +	void	(*vfs_freevfs)(vfs_t *);				\ +	int	(*vfs_vnstate)(vfs_t *, vnode_t *, vntrans_t)	/* NB: No ";" */  /*   * Operations supported on virtual file system.   */  struct vfsops { -	int	(*vfs_mount)(vfs_t *, vnode_t *, struct mounta *, cred_t *); -	int	(*vfs_unmount)(vfs_t *, int, cred_t *); -	int	(*vfs_root)(vfs_t *, vnode_t **); -	int	(*vfs_statvfs)(vfs_t *, statvfs64_t *); -	int	(*vfs_sync)(vfs_t *, short, cred_t *); -	int	(*vfs_vget)(vfs_t *, vnode_t **, fid_t *); -	int	(*vfs_mountroot)(vfs_t *, enum whymountroot); -	int	(*vfs_freevfs)(vfs_t *); -	int	(*vfs_vnstate)(vfs_t *, vnode_t *, vntrans_t); +	VFS_OPS;	/* Signature of all vfs operations (vfsops) */  };  extern int	fsop_mount(vfs_t *, vnode_t *, struct mounta *, cred_t *); @@ -391,17 +397,6 @@ enum {  };  /* - * Generic operations vector types (used for vfs/vnode ops registration). - */ - -extern int fs_default();		/* "default" function placeholder */ -extern int fs_error();			/* "error" function placeholder */ - -int fs_build_vector(void *vector, int *unused_ops, -    const fs_operation_trans_def_t *translation, -    const fs_operation_def_t *operations); - -/*   * flags for vfssw and vfsdef   */  #define	VSW_HASPROTO	0x01	/* struct has a mount options prototype */ @@ -421,8 +416,6 @@ struct umounta;  struct statvfsa;  struct fstatvfsa; -int	vfs_setfsops(int, const fs_operation_def_t *, vfsops_t **); -int	vfs_makefsops(const fs_operation_def_t *, vfsops_t **);  void	vfs_freevfsops(vfsops_t *);  int	vfs_freevfsops_by_type(int);  void	vfs_setops(vfs_t *, vfsops_t *); diff --git a/usr/src/uts/common/sys/vfs_opreg.h b/usr/src/uts/common/sys/vfs_opreg.h new file mode 100644 index 0000000000..c9d4d9f699 --- /dev/null +++ b/usr/src/uts/common/sys/vfs_opreg.h @@ -0,0 +1,116 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright 2007 Sun Microsystems, Inc.  All rights reserved. + * Use is subject to license terms. + */ + +#ifndef _SYS_VFS_OPREG_H +#define	_SYS_VFS_OPREG_H + +#pragma ident	"%Z%%M%	%I%	%E% SMI" + +#include <sys/vfs.h> +#include <sys/fem.h> + +#ifdef	__cplusplus +extern "C" { +#endif + +#ifdef _KERNEL + +/* + * The following union allows us to use C99's "designated initializer" + * feature so that we can have strong typechecking for the operations + * used in the the fs_operation_def structures. + */ + +typedef union fs_func { +	fs_generic_func_p fs_generic;	/* Generic function signature */ +	int (*error)();			/* Signature of error function */ +	VFS_OPS;		/* Signatures of all vfs operations (vfsops) */ +	VNODE_OPS;		/* Signatures of all vnode operations (vops) */ +	FEM_OPS;		/* Signatures of all FEM operations (femops) */ +	FSEM_OPS;		/* Signatures of all FSEM ops (fsemops) */ +} fs_func_p; + +/* + * File systems use arrays of fs_operation_def structures to form + * name/value pairs of operations.  These arrays get passed to: + * + * 	- vn_make_ops() to create vnodeops + * 	- vfs_makefsops()/vfs_setfsops() to create vfsops. + */ +typedef struct fs_operation_def { +	char *name;			/* name of operation (NULL at end) */ +	fs_func_p func;			/* function implementing operation */ +} fs_operation_def_t; + +/* + * The operation registration mechanism uses two master tables of operations: + * one for vnode operations (vn_ops_table[]) and one for vfs operations + * (vfs_ops_table[]).  These tables are arrays of fs_operation_trans_def + * structures.  They contain all of the information necessary for the system + * to populate an operations structure (e.g., vnodeops, vfsops). + * + * File systems call registration routines (vfs_setfsops(), vfs_makefsops(), + * and vn_make_ops()) and pass in their operations specification tables + * (arrays of fs_operation_def structures).  These routines use the master + * table(s) of operations to build a vnodeops or vfsops structure. + */ +typedef struct fs_operation_trans_def { +	char *name;			/* name of operation (NULL at end) */ +	int offset;			/* byte offset within ops vector */ +	fs_generic_func_p defaultFunc;	/* default function */ +	fs_generic_func_p errorFunc; 	/* error function */ +} fs_operation_trans_def_t; + +/* + * Generic operations vector types (used for vfs/vnode ops registration). + */ + +extern int fs_default();		/* "default" function placeholder */ +extern int fs_error();			/* "error" function placeholder */ + +int fs_build_vector(void *vector, int *unused_ops, +    const fs_operation_trans_def_t *translation, +    const fs_operation_def_t *operations); + +/* + * Public operations. + */ + +int	vn_make_ops(const char *, const struct fs_operation_def *, +		vnodeops_t **); +void	vn_freevnodeops(vnodeops_t *); + +int	vfs_setfsops(int, const fs_operation_def_t *, vfsops_t **); +int	vfs_makefsops(const fs_operation_def_t *, vfsops_t **); +void	vfs_freevfsops(vfsops_t *); +int	vfs_freevfsops_by_type(int); + +#endif /* _KERNEL */ + +#ifdef	__cplusplus +} +#endif + +#endif	/* _SYS_VFS_OPREG_H */ diff --git a/usr/src/uts/common/sys/vnode.h b/usr/src/uts/common/sys/vnode.h index 0e69840c1a..d2494e013e 100644 --- a/usr/src/uts/common/sys/vnode.h +++ b/usr/src/uts/common/sys/vnode.h @@ -19,7 +19,7 @@   * CDDL HEADER END   */  /* - * Copyright 2006 Sun Microsystems, Inc.  All rights reserved. + * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.   * Use is subject to license terms.   */ @@ -59,41 +59,6 @@  extern "C" {  #endif - -typedef int (*fs_generic_func_p) (); - -/* - * File systems use arrays of fs_operation_def structures to form - * name/value pairs of operations.  These arrays get passed to: - * - * 	- vn_make_ops() to create vnodeops - * 	- vfs_makefsops()/vfs_setfsops() to create vfsops. - */ -typedef struct fs_operation_def { -	char *name;			/* name of operation (NULL at end) */ -	fs_generic_func_p func;		/* function implementing operation */ -} fs_operation_def_t; - -/* - * The operation registration mechanism uses two master tables of operations: - * one for vnode operations (vn_ops_table[]) and one for vfs operations - * (vfs_ops_table[]).  These tables are arrays of fs_operation_trans_def - * structures.  They contain all of the information necessary for the system - * to populate an operations structure (e.g., vnodeops, vfsops). - * - * File systems call registration routines (vfs_setfsops(), vfs_makefsops(), - * and vn_make_ops()) and pass in their operations specification tables - * (arrays of fs_operation_def structures).  These routines use the master - * table(s) of operations to build a vnodeops or vfsops structure. - */ -typedef struct fs_operation_trans_def { -	char *name;			/* name of operation (NULL at end) */ -	int offset;			/* byte offset within ops vector */ -	fs_generic_func_p defaultFunc;	/* default function */ -	fs_generic_func_p errorFunc; 	/* error function */ -} fs_operation_trans_def_t; - -  /*   * Statistics for all vnode operations.   * All operations record number of ops (since boot/mount/zero'ed). @@ -562,74 +527,98 @@ struct seg;  struct as;  struct pollhead; +#ifdef	_KERNEL +  /* - * Operations on vnodes.  Note: File systems should never operate directly + * VNODE_OPS defines all the vnode operations.  It is used to define + * the vnodeops structure (below) and the fs_func_p union (vfs_opreg.h). + */ +#define	VNODE_OPS							\ +	int	(*vop_open)(vnode_t **, int, cred_t *);			\ +	int	(*vop_close)(vnode_t *, int, int, offset_t, cred_t *);	\ +	int	(*vop_read)(vnode_t *, uio_t *, int, cred_t *,		\ +				caller_context_t *);			\ +	int	(*vop_write)(vnode_t *, uio_t *, int, cred_t *,		\ +				caller_context_t *);			\ +	int	(*vop_ioctl)(vnode_t *, int, intptr_t, int, cred_t *,	\ +				int *);					\ +	int	(*vop_setfl)(vnode_t *, int, int, cred_t *);		\ +	int	(*vop_getattr)(vnode_t *, vattr_t *, int, cred_t *);	\ +	int	(*vop_setattr)(vnode_t *, vattr_t *, int, cred_t *,	\ +				caller_context_t *);			\ +	int	(*vop_access)(vnode_t *, int, int, cred_t *);		\ +	int	(*vop_lookup)(vnode_t *, char *, vnode_t **,		\ +				struct pathname *,			\ +				int, vnode_t *, cred_t *);		\ +	int	(*vop_create)(vnode_t *, char *, vattr_t *, vcexcl_t,	\ +				int, vnode_t **, cred_t *, int);	\ +	int	(*vop_remove)(vnode_t *, char *, cred_t *);		\ +	int	(*vop_link)(vnode_t *, vnode_t *, char *, cred_t *);	\ +	int	(*vop_rename)(vnode_t *, char *, vnode_t *, char *,	\ +				cred_t *);				\ +	int	(*vop_mkdir)(vnode_t *, char *, vattr_t *, vnode_t **,	\ +				cred_t *);				\ +	int	(*vop_rmdir)(vnode_t *, char *, vnode_t *, cred_t *);	\ +	int	(*vop_readdir)(vnode_t *, uio_t *, cred_t *, int *);	\ +	int	(*vop_symlink)(vnode_t *, char *, vattr_t *, char *,	\ +				cred_t *);				\ +	int	(*vop_readlink)(vnode_t *, uio_t *, cred_t *);		\ +	int	(*vop_fsync)(vnode_t *, int, cred_t *);			\ +	void	(*vop_inactive)(vnode_t *, cred_t *);			\ +	int	(*vop_fid)(vnode_t *, struct fid *);			\ +	int	(*vop_rwlock)(vnode_t *, int, caller_context_t *);	\ +	void	(*vop_rwunlock)(vnode_t *, int, caller_context_t *);	\ +	int	(*vop_seek)(vnode_t *, offset_t, offset_t *);		\ +	int	(*vop_cmp)(vnode_t *, vnode_t *);			\ +	int	(*vop_frlock)(vnode_t *, int, struct flock64 *,		\ +				int, offset_t,				\ +				struct flk_callback *, cred_t *);	\ +	int	(*vop_space)(vnode_t *, int, struct flock64 *,		\ +				int, offset_t,				\ +				cred_t *, caller_context_t *);		\ +	int	(*vop_realvp)(vnode_t *, vnode_t **);			\ +	int	(*vop_getpage)(vnode_t *, offset_t, size_t, uint_t *,	\ +				struct page **, size_t, struct seg *,	\ +				caddr_t, enum seg_rw, cred_t *);	\ +	int	(*vop_putpage)(vnode_t *, offset_t, size_t,		\ +				int, cred_t *);				\ +	int	(*vop_map)(vnode_t *, offset_t, struct as *,		\ +				caddr_t *, size_t,			\ +				uchar_t, uchar_t, uint_t, cred_t *);	\ +	int	(*vop_addmap)(vnode_t *, offset_t, struct as *,		\ +				caddr_t, size_t,			\ +				uchar_t, uchar_t, uint_t, cred_t *);	\ +	int	(*vop_delmap)(vnode_t *, offset_t, struct as *,		\ +				caddr_t, size_t,			\ +				uint_t, uint_t, uint_t, cred_t *);	\ +	int	(*vop_poll)(vnode_t *, short, int, short *,		\ +				struct pollhead **);			\ +	int	(*vop_dump)(vnode_t *, caddr_t, int, int);		\ +	int	(*vop_pathconf)(vnode_t *, int, ulong_t *, cred_t *);	\ +	int	(*vop_pageio)(vnode_t *, struct page *,			\ +				u_offset_t, size_t, int, cred_t *);	\ +	int	(*vop_dumpctl)(vnode_t *, int, int *);			\ +	void	(*vop_dispose)(vnode_t *, struct page *,		\ +				int, int, cred_t *);			\ +	int	(*vop_setsecattr)(vnode_t *, vsecattr_t *,		\ +				int, cred_t *);				\ +	int	(*vop_getsecattr)(vnode_t *, vsecattr_t *,		\ +				int, cred_t *);				\ +	int	(*vop_shrlock)(vnode_t *, int, struct shrlock *,	\ +				int, cred_t *);				\ +	int	(*vop_vnevent)(vnode_t *, vnevent_t)	/* NB: No ";" */ + +/* + * Operations on vnodes.  Note: File systems must never operate directly   * on a 'vnodeops' structure -- it WILL change in future releases!  They - * should use vn_make_ops() to create the structure. + * must use vn_make_ops() to create the structure.   */  typedef struct vnodeops {  	const char *vnop_name; -	int	(*vop_open)(vnode_t **, int, cred_t *); -	int	(*vop_close)(vnode_t *, int, int, offset_t, cred_t *); -	int	(*vop_read)(vnode_t *, uio_t *, int, cred_t *, -				caller_context_t *); -	int	(*vop_write)(vnode_t *, uio_t *, int, cred_t *, -				caller_context_t *); -	int	(*vop_ioctl)(vnode_t *, int, intptr_t, int, cred_t *, int *); -	int	(*vop_setfl)(vnode_t *, int, int, cred_t *); -	int	(*vop_getattr)(vnode_t *, vattr_t *, int, cred_t *); -	int	(*vop_setattr)(vnode_t *, vattr_t *, int, cred_t *, -				caller_context_t *); -	int	(*vop_access)(vnode_t *, int, int, cred_t *); -	int	(*vop_lookup)(vnode_t *, char *, vnode_t **, struct pathname *, -				int, vnode_t *, cred_t *); -	int	(*vop_create)(vnode_t *, char *, vattr_t *, vcexcl_t, int, -				vnode_t **, cred_t *, int); -	int	(*vop_remove)(vnode_t *, char *, cred_t *); -	int	(*vop_link)(vnode_t *, vnode_t *, char *, cred_t *); -	int	(*vop_rename)(vnode_t *, char *, vnode_t *, char *, cred_t *); -	int	(*vop_mkdir)(vnode_t *, char *, vattr_t *, vnode_t **, -				cred_t *); -	int	(*vop_rmdir)(vnode_t *, char *, vnode_t *, cred_t *); -	int	(*vop_readdir)(vnode_t *, uio_t *, cred_t *, int *); -	int	(*vop_symlink)(vnode_t *, char *, vattr_t *, char *, cred_t *); -	int	(*vop_readlink)(vnode_t *, uio_t *, cred_t *); -	int	(*vop_fsync)(vnode_t *, int, cred_t *); -	void	(*vop_inactive)(vnode_t *, cred_t *); -	int	(*vop_fid)(vnode_t *, struct fid *); -	int	(*vop_rwlock)(vnode_t *, int, caller_context_t *); -	void	(*vop_rwunlock)(vnode_t *, int, caller_context_t *); -	int	(*vop_seek)(vnode_t *, offset_t, offset_t *); -	int	(*vop_cmp)(vnode_t *, vnode_t *); -	int	(*vop_frlock)(vnode_t *, int, struct flock64 *, int, offset_t, -				struct flk_callback *, cred_t *); -	int	(*vop_space)(vnode_t *, int, struct flock64 *, int, offset_t, -				cred_t *, caller_context_t *); -	int	(*vop_realvp)(vnode_t *, vnode_t **); -	int	(*vop_getpage)(vnode_t *, offset_t, size_t, uint_t *, -				struct page **, size_t, struct seg *, -				caddr_t, enum seg_rw, cred_t *); -	int	(*vop_putpage)(vnode_t *, offset_t, size_t, int, cred_t *); -	int	(*vop_map)(vnode_t *, offset_t, struct as *, caddr_t *, size_t, -				uchar_t, uchar_t, uint_t, cred_t *); -	int	(*vop_addmap)(vnode_t *, offset_t, struct as *, caddr_t, size_t, -				uchar_t, uchar_t, uint_t, cred_t *); -	int	(*vop_delmap)(vnode_t *, offset_t, struct as *, caddr_t, size_t, -				uint_t, uint_t, uint_t, cred_t *); -	int	(*vop_poll)(vnode_t *, short, int, short *, struct pollhead **); -	int	(*vop_dump)(vnode_t *, caddr_t, int, int); -	int	(*vop_pathconf)(vnode_t *, int, ulong_t *, cred_t *); -	int	(*vop_pageio)(vnode_t *, struct page *, u_offset_t, size_t, -				int, cred_t *); -	int	(*vop_dumpctl)(vnode_t *, int, int *); -	void	(*vop_dispose)(vnode_t *, struct page *, int, int, cred_t *); -	int	(*vop_setsecattr)(vnode_t *, vsecattr_t *, int, cred_t *); -	int	(*vop_getsecattr)(vnode_t *, vsecattr_t *, int, cred_t *); -	int	(*vop_shrlock)(vnode_t *, int, struct shrlock *, int, cred_t *); -	int	(*vop_vnevent)(vnode_t *, vnevent_t); +	VNODE_OPS;	/* Signatures of all vnode operations (vops) */  } vnodeops_t; -#ifdef	_KERNEL +typedef int (*fs_generic_func_p) ();	/* Generic vop/vfsop/femop/fsemop ptr */  extern int	fop_open(vnode_t **, int, cred_t *);  extern int	fop_close(vnode_t *, int, int, offset_t, cred_t *); @@ -876,7 +865,6 @@ struct vfs *vn_mountedvfs(vnode_t *);  void	vn_create_cache(void);  void	vn_destroy_cache(void); -int	vn_make_ops(const char *, const fs_operation_def_t *, vnodeops_t **);  void	vn_freevnodeops(vnodeops_t *);  int	vn_open(char *pnamep, enum uio_seg seg, int filemode, int createmode, diff --git a/usr/src/uts/common/vm/page_retire.c b/usr/src/uts/common/vm/page_retire.c index 3259963fe0..93f0874585 100644 --- a/usr/src/uts/common/vm/page_retire.c +++ b/usr/src/uts/common/vm/page_retire.c @@ -130,6 +130,7 @@  #include <sys/systm.h>  #include <sys/mman.h>  #include <sys/vnode.h> +#include <sys/vfs_opreg.h>  #include <sys/cmn_err.h>  #include <sys/ksynch.h>  #include <sys/thread.h> @@ -851,7 +852,9 @@ page_retire_decr_pend_count(void)  void  page_retire_init(void)  { -	const fs_operation_def_t retired_vnodeops_template[] = {NULL, NULL}; +	const fs_operation_def_t retired_vnodeops_template[] = { +		{ NULL, NULL } +	};  	struct vnodeops *vops;  	kstat_t *ksp; | 
