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/uts/common/fs/tmpfs | |
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/uts/common/fs/tmpfs')
-rw-r--r-- | usr/src/uts/common/fs/tmpfs/tmp_vfsops.c | 15 | ||||
-rw-r--r-- | usr/src/uts/common/fs/tmpfs/tmp_vnops.c | 67 |
2 files changed, 42 insertions, 40 deletions
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 }; |