X-Git-Url: https://git.saurik.com/apple/xnu.git/blobdiff_plain/fe8ab488e9161c46dd9885d58fc52996dc0249ff..a991bd8d3e7fe02dbca0644054bab73c5b75324a:/bsd/vfs/vnode_if.c?ds=inline diff --git a/bsd/vfs/vnode_if.c b/bsd/vfs/vnode_if.c index 1fc9bd7df..5331056f3 100644 --- a/bsd/vfs/vnode_if.c +++ b/bsd/vfs/vnode_if.c @@ -1,9 +1,8 @@ - /* - * Copyright (c) 2000-2014 Apple Computer, Inc. All rights reserved. + * Copyright (c) 2000-2019 Apple Inc. All rights reserved. * * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ - * + * * This file contains Original Code and/or Modifications of Original Code * as defined in and that are subject to the Apple Public Source License * Version 2.0 (the 'License'). You may not use this file except in @@ -12,10 +11,10 @@ * unlawful or unlicensed copies of an Apple operating system, or to * circumvent, violate, or enable the circumvention or violation of, any * terms of an Apple operating system software license agreement. - * + * * Please obtain a copy of the License at * http://www.opensource.apple.com/apsl/ and read it before using this file. - * + * * The Original Code and all software distributed under the License are * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, @@ -23,7 +22,7 @@ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. * Please see the License for the specific language governing rights and * limitations under the License. - * + * * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ */ /* @@ -90,7 +89,7 @@ struct vnodeop_desc vnop_default_desc = { int vnop_lookup_vp_offsets[] = { - VOPARG_OFFSETOF(struct vnop_lookup_args,a_dvp), + VOPARG_OFFSETOF(struct vnop_lookup_args, a_dvp), VDESC_NO_OFFSET }; struct vnodeop_desc vnop_lookup_desc = { @@ -115,7 +114,7 @@ struct vnodeop_desc vnop_compound_open_desc = { 0, "vnop_compound_open", 0 | VDESC_VP0_WILLRELE, - vnop_compound_open_vp_offsets, + vnop_compound_open_vp_offsets, VOPARG_OFFSETOF(struct vnop_compound_open_args, a_vpp), VDESC_NO_OFFSET, VDESC_NO_OFFSET, @@ -125,7 +124,7 @@ struct vnodeop_desc vnop_compound_open_desc = { }; int vnop_create_vp_offsets[] = { - VOPARG_OFFSETOF(struct vnop_create_args,a_dvp), + VOPARG_OFFSETOF(struct vnop_create_args, a_dvp), VDESC_NO_OFFSET }; struct vnodeop_desc vnop_create_desc = { @@ -142,7 +141,7 @@ struct vnodeop_desc vnop_create_desc = { }; int vnop_whiteout_vp_offsets[] = { - VOPARG_OFFSETOF(struct vnop_whiteout_args,a_dvp), + VOPARG_OFFSETOF(struct vnop_whiteout_args, a_dvp), VDESC_NO_OFFSET }; struct vnodeop_desc vnop_whiteout_desc = { @@ -159,24 +158,24 @@ struct vnodeop_desc vnop_whiteout_desc = { }; int vnop_mknod_vp_offsets[] = { - VOPARG_OFFSETOF(struct vnop_mknod_args,a_dvp), - VDESC_NO_OFFSET + VOPARG_OFFSETOF(struct vnop_mknod_args, a_dvp), + VDESC_NO_OFFSET }; struct vnodeop_desc vnop_mknod_desc = { - 0, - "vnop_mknod", - 0 | VDESC_VP0_WILLRELE | VDESC_VPP_WILLRELE, - vnop_mknod_vp_offsets, - VOPARG_OFFSETOF(struct vnop_mknod_args, a_vpp), - VDESC_NO_OFFSET, - VDESC_NO_OFFSET, - VOPARG_OFFSETOF(struct vnop_mknod_args, a_cnp), - VOPARG_OFFSETOF(struct vnop_mknod_args, a_context), - NULL + 0, + "vnop_mknod", + 0 | VDESC_VP0_WILLRELE | VDESC_VPP_WILLRELE, + vnop_mknod_vp_offsets, + VOPARG_OFFSETOF(struct vnop_mknod_args, a_vpp), + VDESC_NO_OFFSET, + VDESC_NO_OFFSET, + VOPARG_OFFSETOF(struct vnop_mknod_args, a_cnp), + VOPARG_OFFSETOF(struct vnop_mknod_args, a_context), + NULL }; int vnop_open_vp_offsets[] = { - VOPARG_OFFSETOF(struct vnop_open_args,a_vp), + VOPARG_OFFSETOF(struct vnop_open_args, a_vp), VDESC_NO_OFFSET }; struct vnodeop_desc vnop_open_desc = { @@ -193,7 +192,7 @@ struct vnodeop_desc vnop_open_desc = { }; int vnop_close_vp_offsets[] = { - VOPARG_OFFSETOF(struct vnop_close_args,a_vp), + VOPARG_OFFSETOF(struct vnop_close_args, a_vp), VDESC_NO_OFFSET }; struct vnodeop_desc vnop_close_desc = { @@ -210,7 +209,7 @@ struct vnodeop_desc vnop_close_desc = { }; int vnop_access_vp_offsets[] = { - VOPARG_OFFSETOF(struct vnop_access_args,a_vp), + VOPARG_OFFSETOF(struct vnop_access_args, a_vp), VDESC_NO_OFFSET }; struct vnodeop_desc vnop_access_desc = { @@ -227,7 +226,7 @@ struct vnodeop_desc vnop_access_desc = { }; int vnop_getattr_vp_offsets[] = { - VOPARG_OFFSETOF(struct vnop_getattr_args,a_vp), + VOPARG_OFFSETOF(struct vnop_getattr_args, a_vp), VDESC_NO_OFFSET }; struct vnodeop_desc vnop_getattr_desc = { @@ -244,7 +243,7 @@ struct vnodeop_desc vnop_getattr_desc = { }; int vnop_setattr_vp_offsets[] = { - VOPARG_OFFSETOF(struct vnop_setattr_args,a_vp), + VOPARG_OFFSETOF(struct vnop_setattr_args, a_vp), VDESC_NO_OFFSET }; struct vnodeop_desc vnop_setattr_desc = { @@ -261,7 +260,7 @@ struct vnodeop_desc vnop_setattr_desc = { }; int vnop_read_vp_offsets[] = { - VOPARG_OFFSETOF(struct vnop_read_args,a_vp), + VOPARG_OFFSETOF(struct vnop_read_args, a_vp), VDESC_NO_OFFSET }; struct vnodeop_desc vnop_read_desc = { @@ -278,7 +277,7 @@ struct vnodeop_desc vnop_read_desc = { }; int vnop_write_vp_offsets[] = { - VOPARG_OFFSETOF(struct vnop_write_args,a_vp), + VOPARG_OFFSETOF(struct vnop_write_args, a_vp), VDESC_NO_OFFSET }; struct vnodeop_desc vnop_write_desc = { @@ -295,7 +294,7 @@ struct vnodeop_desc vnop_write_desc = { }; int vnop_ioctl_vp_offsets[] = { - VOPARG_OFFSETOF(struct vnop_ioctl_args,a_vp), + VOPARG_OFFSETOF(struct vnop_ioctl_args, a_vp), VDESC_NO_OFFSET }; struct vnodeop_desc vnop_ioctl_desc = { @@ -312,7 +311,7 @@ struct vnodeop_desc vnop_ioctl_desc = { }; int vnop_select_vp_offsets[] = { - VOPARG_OFFSETOF(struct vnop_select_args,a_vp), + VOPARG_OFFSETOF(struct vnop_select_args, a_vp), VDESC_NO_OFFSET }; struct vnodeop_desc vnop_select_desc = { @@ -329,8 +328,8 @@ struct vnodeop_desc vnop_select_desc = { }; int vnop_exchange_vp_offsets[] = { - VOPARG_OFFSETOF(struct vnop_exchange_args,a_fvp), - VOPARG_OFFSETOF(struct vnop_exchange_args,a_tvp), + VOPARG_OFFSETOF(struct vnop_exchange_args, a_fvp), + VOPARG_OFFSETOF(struct vnop_exchange_args, a_tvp), VDESC_NO_OFFSET }; struct vnodeop_desc vnop_exchange_desc = { @@ -347,7 +346,7 @@ struct vnodeop_desc vnop_exchange_desc = { }; int vnop_kqfilt_add_vp_offsets[] = { - VOPARG_OFFSETOF(struct vnop_kqfilt_add_args,a_vp), + VOPARG_OFFSETOF(struct vnop_kqfilt_add_args, a_vp), VDESC_NO_OFFSET }; struct vnodeop_desc vnop_kqfilt_add_desc = { @@ -364,7 +363,7 @@ struct vnodeop_desc vnop_kqfilt_add_desc = { }; int vnop_kqfilt_remove_vp_offsets[] = { - VOPARG_OFFSETOF(struct vnop_kqfilt_remove_args,a_vp), + VOPARG_OFFSETOF(struct vnop_kqfilt_remove_args, a_vp), VDESC_NO_OFFSET }; struct vnodeop_desc vnop_kqfilt_remove_desc = { @@ -381,7 +380,7 @@ struct vnodeop_desc vnop_kqfilt_remove_desc = { }; int vnop_monitor_vp_offsets[] = { - VOPARG_OFFSETOF(struct vnop_monitor_args,a_vp), + VOPARG_OFFSETOF(struct vnop_monitor_args, a_vp), VDESC_NO_OFFSET }; struct vnodeop_desc vnop_monitor_desc = { @@ -398,7 +397,7 @@ struct vnodeop_desc vnop_monitor_desc = { }; int vnop_setlabel_vp_offsets[] = { - VOPARG_OFFSETOF(struct vnop_setlabel_args,a_vp), + VOPARG_OFFSETOF(struct vnop_setlabel_args, a_vp), VDESC_NO_OFFSET }; struct vnodeop_desc vnop_setlabel_desc = { @@ -415,7 +414,7 @@ struct vnodeop_desc vnop_setlabel_desc = { }; int vnop_revoke_vp_offsets[] = { - VOPARG_OFFSETOF(struct vnop_revoke_args,a_vp), + VOPARG_OFFSETOF(struct vnop_revoke_args, a_vp), VDESC_NO_OFFSET }; struct vnodeop_desc vnop_revoke_desc = { @@ -431,9 +430,25 @@ struct vnodeop_desc vnop_revoke_desc = { NULL }; +int vnop_mmap_check_vp_offsets[] = { + VOPARG_OFFSETOF(struct vnop_mmap_check_args, a_vp), + VDESC_NO_OFFSET +}; +struct vnodeop_desc vnop_mmap_check_desc = { + 0, + "vnop_mmap_check", + 0, + vnop_mmap_check_vp_offsets, + VDESC_NO_OFFSET, + VDESC_NO_OFFSET, + VDESC_NO_OFFSET, + VDESC_NO_OFFSET, + VDESC_NO_OFFSET, + NULL +}; int vnop_mmap_vp_offsets[] = { - VOPARG_OFFSETOF(struct vnop_mmap_args,a_vp), + VOPARG_OFFSETOF(struct vnop_mmap_args, a_vp), VDESC_NO_OFFSET }; struct vnodeop_desc vnop_mmap_desc = { @@ -449,9 +464,8 @@ struct vnodeop_desc vnop_mmap_desc = { NULL }; - int vnop_mnomap_vp_offsets[] = { - VOPARG_OFFSETOF(struct vnop_mnomap_args,a_vp), + VOPARG_OFFSETOF(struct vnop_mnomap_args, a_vp), VDESC_NO_OFFSET }; struct vnodeop_desc vnop_mnomap_desc = { @@ -467,9 +481,8 @@ struct vnodeop_desc vnop_mnomap_desc = { NULL }; - int vnop_fsync_vp_offsets[] = { - VOPARG_OFFSETOF(struct vnop_fsync_args,a_vp), + VOPARG_OFFSETOF(struct vnop_fsync_args, a_vp), VDESC_NO_OFFSET }; struct vnodeop_desc vnop_fsync_desc = { @@ -486,8 +499,8 @@ struct vnodeop_desc vnop_fsync_desc = { }; int vnop_remove_vp_offsets[] = { - VOPARG_OFFSETOF(struct vnop_remove_args,a_dvp), - VOPARG_OFFSETOF(struct vnop_remove_args,a_vp), + VOPARG_OFFSETOF(struct vnop_remove_args, a_dvp), + VOPARG_OFFSETOF(struct vnop_remove_args, a_vp), VDESC_NO_OFFSET }; struct vnodeop_desc vnop_remove_desc = { @@ -504,7 +517,7 @@ struct vnodeop_desc vnop_remove_desc = { }; int vnop_remove_extended_vp_offsets[] = { - VOPARG_OFFSETOF(struct vnop_remove_args,a_dvp), + VOPARG_OFFSETOF(struct vnop_remove_args, a_dvp), VDESC_NO_OFFSET }; struct vnodeop_desc vnop_compound_remove_desc = { @@ -521,8 +534,8 @@ struct vnodeop_desc vnop_compound_remove_desc = { }; int vnop_link_vp_offsets[] = { - VOPARG_OFFSETOF(struct vnop_link_args,a_vp), - VOPARG_OFFSETOF(struct vnop_link_args,a_tdvp), + VOPARG_OFFSETOF(struct vnop_link_args, a_vp), + VOPARG_OFFSETOF(struct vnop_link_args, a_tdvp), VDESC_NO_OFFSET }; struct vnodeop_desc vnop_link_desc = { @@ -539,10 +552,10 @@ struct vnodeop_desc vnop_link_desc = { }; int vnop_rename_vp_offsets[] = { - VOPARG_OFFSETOF(struct vnop_rename_args,a_fdvp), - VOPARG_OFFSETOF(struct vnop_rename_args,a_fvp), - VOPARG_OFFSETOF(struct vnop_rename_args,a_tdvp), - VOPARG_OFFSETOF(struct vnop_rename_args,a_tvp), + VOPARG_OFFSETOF(struct vnop_rename_args, a_fdvp), + VOPARG_OFFSETOF(struct vnop_rename_args, a_fvp), + VOPARG_OFFSETOF(struct vnop_rename_args, a_tdvp), + VOPARG_OFFSETOF(struct vnop_rename_args, a_tvp), VDESC_NO_OFFSET }; struct vnodeop_desc vnop_rename_desc = { @@ -558,11 +571,31 @@ struct vnodeop_desc vnop_rename_desc = { NULL }; +int vnop_renamex_vp_offsets[] = { + VOPARG_OFFSETOF(struct vnop_renamex_args, a_fdvp), + VOPARG_OFFSETOF(struct vnop_renamex_args, a_fvp), + VOPARG_OFFSETOF(struct vnop_renamex_args, a_tdvp), + VOPARG_OFFSETOF(struct vnop_renamex_args, a_tvp), + VDESC_NO_OFFSET +}; +struct vnodeop_desc vnop_renamex_desc = { + 0, + "vnop_renamex", + 0 | VDESC_VP0_WILLRELE | VDESC_VP1_WILLRELE | VDESC_VP2_WILLRELE | VDESC_VP3_WILLRELE, + vnop_renamex_vp_offsets, + VDESC_NO_OFFSET, + VDESC_NO_OFFSET, + VDESC_NO_OFFSET, + VOPARG_OFFSETOF(struct vnop_renamex_args, a_fcnp), + VOPARG_OFFSETOF(struct vnop_renamex_args, a_context), + NULL +}; + int vnop_compound_rename_vp_offsets[] = { - VOPARG_OFFSETOF(struct vnop_compound_rename_args,a_fdvp), - VOPARG_OFFSETOF(struct vnop_compound_rename_args,a_fvpp), - VOPARG_OFFSETOF(struct vnop_compound_rename_args,a_tdvp), - VOPARG_OFFSETOF(struct vnop_compound_rename_args,a_tvpp), + VOPARG_OFFSETOF(struct vnop_compound_rename_args, a_fdvp), + VOPARG_OFFSETOF(struct vnop_compound_rename_args, a_fvpp), + VOPARG_OFFSETOF(struct vnop_compound_rename_args, a_tdvp), + VOPARG_OFFSETOF(struct vnop_compound_rename_args, a_tvpp), VDESC_NO_OFFSET }; struct vnodeop_desc vnop_compound_rename_desc = { @@ -579,43 +612,43 @@ struct vnodeop_desc vnop_compound_rename_desc = { }; int vnop_mkdir_vp_offsets[] = { - VOPARG_OFFSETOF(struct vnop_mkdir_args,a_dvp), - VDESC_NO_OFFSET + VOPARG_OFFSETOF(struct vnop_mkdir_args, a_dvp), + VDESC_NO_OFFSET }; struct vnodeop_desc vnop_mkdir_desc = { - 0, - "vnop_mkdir", - 0 | VDESC_VP0_WILLRELE, - vnop_mkdir_vp_offsets, - VOPARG_OFFSETOF(struct vnop_mkdir_args, a_vpp), - VDESC_NO_OFFSET, - VDESC_NO_OFFSET, - VOPARG_OFFSETOF(struct vnop_mkdir_args, a_cnp), - VOPARG_OFFSETOF(struct vnop_mkdir_args, a_context), - NULL + 0, + "vnop_mkdir", + 0 | VDESC_VP0_WILLRELE, + vnop_mkdir_vp_offsets, + VOPARG_OFFSETOF(struct vnop_mkdir_args, a_vpp), + VDESC_NO_OFFSET, + VDESC_NO_OFFSET, + VOPARG_OFFSETOF(struct vnop_mkdir_args, a_cnp), + VOPARG_OFFSETOF(struct vnop_mkdir_args, a_context), + NULL }; int vnop_compound_mkdir_vp_offsets[] = { - VOPARG_OFFSETOF(struct vnop_compound_mkdir_args,a_dvp), - VDESC_NO_OFFSET + VOPARG_OFFSETOF(struct vnop_compound_mkdir_args, a_dvp), + VDESC_NO_OFFSET }; struct vnodeop_desc vnop_compound_mkdir_desc = { - 0, - "vnop_compound_mkdir", - 0 | VDESC_VP0_WILLRELE, - vnop_compound_mkdir_vp_offsets, - VOPARG_OFFSETOF(struct vnop_compound_mkdir_args, a_vpp), - VDESC_NO_OFFSET, - VDESC_NO_OFFSET, - VOPARG_OFFSETOF(struct vnop_compound_mkdir_args, a_cnp), - VOPARG_OFFSETOF(struct vnop_compound_mkdir_args, a_context), - NULL + 0, + "vnop_compound_mkdir", + 0 | VDESC_VP0_WILLRELE, + vnop_compound_mkdir_vp_offsets, + VOPARG_OFFSETOF(struct vnop_compound_mkdir_args, a_vpp), + VDESC_NO_OFFSET, + VDESC_NO_OFFSET, + VOPARG_OFFSETOF(struct vnop_compound_mkdir_args, a_cnp), + VOPARG_OFFSETOF(struct vnop_compound_mkdir_args, a_context), + NULL }; int vnop_rmdir_vp_offsets[] = { - VOPARG_OFFSETOF(struct vnop_rmdir_args,a_dvp), - VOPARG_OFFSETOF(struct vnop_rmdir_args,a_vp), + VOPARG_OFFSETOF(struct vnop_rmdir_args, a_dvp), + VOPARG_OFFSETOF(struct vnop_rmdir_args, a_vp), VDESC_NO_OFFSET }; struct vnodeop_desc vnop_rmdir_desc = { @@ -632,7 +665,7 @@ struct vnodeop_desc vnop_rmdir_desc = { }; int vnop_compound_rmdir_vp_offsets[] = { - VOPARG_OFFSETOF(struct vnop_compound_rmdir_args,a_dvp), + VOPARG_OFFSETOF(struct vnop_compound_rmdir_args, a_dvp), VDESC_NO_OFFSET }; struct vnodeop_desc vnop_compound_rmdir_desc = { @@ -649,24 +682,24 @@ struct vnodeop_desc vnop_compound_rmdir_desc = { }; int vnop_symlink_vp_offsets[] = { - VOPARG_OFFSETOF(struct vnop_symlink_args,a_dvp), - VDESC_NO_OFFSET + VOPARG_OFFSETOF(struct vnop_symlink_args, a_dvp), + VDESC_NO_OFFSET }; struct vnodeop_desc vnop_symlink_desc = { - 0, - "vnop_symlink", - 0 | VDESC_VP0_WILLRELE | VDESC_VPP_WILLRELE, - vnop_symlink_vp_offsets, - VOPARG_OFFSETOF(struct vnop_symlink_args, a_vpp), - VDESC_NO_OFFSET, - VDESC_NO_OFFSET, - VOPARG_OFFSETOF(struct vnop_symlink_args, a_cnp), - VOPARG_OFFSETOF(struct vnop_symlink_args, a_context), - NULL + 0, + "vnop_symlink", + 0 | VDESC_VP0_WILLRELE | VDESC_VPP_WILLRELE, + vnop_symlink_vp_offsets, + VOPARG_OFFSETOF(struct vnop_symlink_args, a_vpp), + VDESC_NO_OFFSET, + VDESC_NO_OFFSET, + VOPARG_OFFSETOF(struct vnop_symlink_args, a_cnp), + VOPARG_OFFSETOF(struct vnop_symlink_args, a_context), + NULL }; int vnop_readdir_vp_offsets[] = { - VOPARG_OFFSETOF(struct vnop_readdir_args,a_vp), + VOPARG_OFFSETOF(struct vnop_readdir_args, a_vp), VDESC_NO_OFFSET }; struct vnodeop_desc vnop_readdir_desc = { @@ -683,7 +716,7 @@ struct vnodeop_desc vnop_readdir_desc = { }; int vnop_readdirattr_vp_offsets[] = { - VOPARG_OFFSETOF(struct vnop_readdirattr_args,a_vp), + VOPARG_OFFSETOF(struct vnop_readdirattr_args, a_vp), VDESC_NO_OFFSET }; struct vnodeop_desc vnop_readdirattr_desc = { @@ -700,7 +733,7 @@ struct vnodeop_desc vnop_readdirattr_desc = { }; int vnop_getattrlistbulk_vp_offsets[] = { - VOPARG_OFFSETOF(struct vnop_getattrlistbulk_args,a_vp), + VOPARG_OFFSETOF(struct vnop_getattrlistbulk_args, a_vp), VDESC_NO_OFFSET }; struct vnodeop_desc vnop_getattrlistbulk_desc = { @@ -717,7 +750,7 @@ struct vnodeop_desc vnop_getattrlistbulk_desc = { }; int vnop_readlink_vp_offsets[] = { - VOPARG_OFFSETOF(struct vnop_readlink_args,a_vp), + VOPARG_OFFSETOF(struct vnop_readlink_args, a_vp), VDESC_NO_OFFSET }; struct vnodeop_desc vnop_readlink_desc = { @@ -734,7 +767,7 @@ struct vnodeop_desc vnop_readlink_desc = { }; int vnop_inactive_vp_offsets[] = { - VOPARG_OFFSETOF(struct vnop_inactive_args,a_vp), + VOPARG_OFFSETOF(struct vnop_inactive_args, a_vp), VDESC_NO_OFFSET }; struct vnodeop_desc vnop_inactive_desc = { @@ -751,7 +784,7 @@ struct vnodeop_desc vnop_inactive_desc = { }; int vnop_reclaim_vp_offsets[] = { - VOPARG_OFFSETOF(struct vnop_reclaim_args,a_vp), + VOPARG_OFFSETOF(struct vnop_reclaim_args, a_vp), VDESC_NO_OFFSET }; struct vnodeop_desc vnop_reclaim_desc = { @@ -768,7 +801,7 @@ struct vnodeop_desc vnop_reclaim_desc = { }; int vnop_pathconf_vp_offsets[] = { - VOPARG_OFFSETOF(struct vnop_pathconf_args,a_vp), + VOPARG_OFFSETOF(struct vnop_pathconf_args, a_vp), VDESC_NO_OFFSET }; struct vnodeop_desc vnop_pathconf_desc = { @@ -785,7 +818,7 @@ struct vnodeop_desc vnop_pathconf_desc = { }; int vnop_advlock_vp_offsets[] = { - VOPARG_OFFSETOF(struct vnop_advlock_args,a_vp), + VOPARG_OFFSETOF(struct vnop_advlock_args, a_vp), VDESC_NO_OFFSET }; struct vnodeop_desc vnop_advlock_desc = { @@ -802,7 +835,7 @@ struct vnodeop_desc vnop_advlock_desc = { }; int vnop_allocate_vp_offsets[] = { - VOPARG_OFFSETOF(struct vnop_allocate_args,a_vp), + VOPARG_OFFSETOF(struct vnop_allocate_args, a_vp), VDESC_NO_OFFSET }; struct vnodeop_desc vnop_allocate_desc = { @@ -819,7 +852,7 @@ struct vnodeop_desc vnop_allocate_desc = { }; int vnop_pagein_vp_offsets[] = { - VOPARG_OFFSETOF(struct vnop_pagein_args,a_vp), + VOPARG_OFFSETOF(struct vnop_pagein_args, a_vp), VDESC_NO_OFFSET }; struct vnodeop_desc vnop_pagein_desc = { @@ -836,7 +869,7 @@ struct vnodeop_desc vnop_pagein_desc = { }; int vnop_pageout_vp_offsets[] = { - VOPARG_OFFSETOF(struct vnop_pageout_args,a_vp), + VOPARG_OFFSETOF(struct vnop_pageout_args, a_vp), VDESC_NO_OFFSET }; struct vnodeop_desc vnop_pageout_desc = { @@ -853,7 +886,7 @@ struct vnodeop_desc vnop_pageout_desc = { }; int vnop_searchfs_vp_offsets[] = { - VOPARG_OFFSETOF(struct vnop_searchfs_args,a_vp), + VOPARG_OFFSETOF(struct vnop_searchfs_args, a_vp), VDESC_NO_OFFSET }; struct vnodeop_desc vnop_searchfs_desc = { @@ -870,26 +903,44 @@ struct vnodeop_desc vnop_searchfs_desc = { }; int vnop_copyfile_vp_offsets[] = { - VOPARG_OFFSETOF(struct vnop_copyfile_args,a_fvp), - VOPARG_OFFSETOF(struct vnop_copyfile_args,a_tdvp), - VOPARG_OFFSETOF(struct vnop_copyfile_args,a_tvp), + VOPARG_OFFSETOF(struct vnop_copyfile_args, a_fvp), + VOPARG_OFFSETOF(struct vnop_copyfile_args, a_tdvp), + VOPARG_OFFSETOF(struct vnop_copyfile_args, a_tvp), VDESC_NO_OFFSET }; struct vnodeop_desc vnop_copyfile_desc = { - 0, - "vnop_copyfile", - 0 | VDESC_VP0_WILLRELE | VDESC_VP1_WILLRELE | VDESC_VP2_WILLRELE, - vnop_copyfile_vp_offsets, - VDESC_NO_OFFSET, - VDESC_NO_OFFSET, - VDESC_NO_OFFSET, - VOPARG_OFFSETOF(struct vnop_copyfile_args, a_tcnp), - VDESC_NO_OFFSET, - NULL + .vdesc_offset = 0, + .vdesc_name = "vnop_copyfile", + .vdesc_flags = 0 | VDESC_VP0_WILLRELE | VDESC_VP1_WILLRELE | VDESC_VP2_WILLRELE, + .vdesc_vp_offsets = vnop_copyfile_vp_offsets, + .vdesc_vpp_offset = VDESC_NO_OFFSET, + .vdesc_cred_offset = VDESC_NO_OFFSET, + .vdesc_proc_offset = VDESC_NO_OFFSET, + .vdesc_componentname_offset = VOPARG_OFFSETOF(struct vnop_copyfile_args, a_tcnp), + .vdesc_context_offset = VDESC_NO_OFFSET, + .vdesc_transports = NULL +}; + +int vnop_clonefile_vp_offsets[] = { + VOPARG_OFFSETOF(struct vnop_clonefile_args, a_fvp), + VOPARG_OFFSETOF(struct vnop_clonefile_args, a_dvp), + VDESC_NO_OFFSET +}; +struct vnodeop_desc vnop_clonefile_desc = { + .vdesc_offset = 0, + .vdesc_name = "vnop_clonefile", + .vdesc_flags = 0 | VDESC_VP0_WILLRELE | VDESC_VP1_WILLRELE | VDESC_VPP_WILLRELE, + .vdesc_vp_offsets = vnop_clonefile_vp_offsets, + .vdesc_vpp_offset = VOPARG_OFFSETOF(struct vnop_clonefile_args, a_vpp), + .vdesc_cred_offset = VDESC_NO_OFFSET, + .vdesc_proc_offset = VDESC_NO_OFFSET, + .vdesc_componentname_offset = VOPARG_OFFSETOF(struct vnop_clonefile_args, a_cnp), + .vdesc_context_offset = VOPARG_OFFSETOF(struct vnop_clonefile_args, a_context), + .vdesc_transports = NULL }; int vop_getxattr_vp_offsets[] = { - VOPARG_OFFSETOF(struct vnop_getxattr_args,a_vp), + VOPARG_OFFSETOF(struct vnop_getxattr_args, a_vp), VDESC_NO_OFFSET }; struct vnodeop_desc vnop_getxattr_desc = { @@ -906,7 +957,7 @@ struct vnodeop_desc vnop_getxattr_desc = { }; int vop_setxattr_vp_offsets[] = { - VOPARG_OFFSETOF(struct vnop_setxattr_args,a_vp), + VOPARG_OFFSETOF(struct vnop_setxattr_args, a_vp), VDESC_NO_OFFSET }; struct vnodeop_desc vnop_setxattr_desc = { @@ -923,7 +974,7 @@ struct vnodeop_desc vnop_setxattr_desc = { }; int vop_removexattr_vp_offsets[] = { - VOPARG_OFFSETOF(struct vnop_removexattr_args,a_vp), + VOPARG_OFFSETOF(struct vnop_removexattr_args, a_vp), VDESC_NO_OFFSET }; struct vnodeop_desc vnop_removexattr_desc = { @@ -940,7 +991,7 @@ struct vnodeop_desc vnop_removexattr_desc = { }; int vop_listxattr_vp_offsets[] = { - VOPARG_OFFSETOF(struct vnop_listxattr_args,a_vp), + VOPARG_OFFSETOF(struct vnop_listxattr_args, a_vp), VDESC_NO_OFFSET }; struct vnodeop_desc vnop_listxattr_desc = { @@ -957,7 +1008,7 @@ struct vnodeop_desc vnop_listxattr_desc = { }; int vnop_blktooff_vp_offsets[] = { - VOPARG_OFFSETOF(struct vnop_blktooff_args,a_vp), + VOPARG_OFFSETOF(struct vnop_blktooff_args, a_vp), VDESC_NO_OFFSET }; struct vnodeop_desc vnop_blktooff_desc = { @@ -974,7 +1025,7 @@ struct vnodeop_desc vnop_blktooff_desc = { }; int vnop_offtoblk_vp_offsets[] = { - VOPARG_OFFSETOF(struct vnop_offtoblk_args,a_vp), + VOPARG_OFFSETOF(struct vnop_offtoblk_args, a_vp), VDESC_NO_OFFSET }; struct vnodeop_desc vnop_offtoblk_desc = { @@ -991,7 +1042,7 @@ struct vnodeop_desc vnop_offtoblk_desc = { }; int vnop_blockmap_vp_offsets[] = { - VOPARG_OFFSETOF(struct vnop_blockmap_args,a_vp), + VOPARG_OFFSETOF(struct vnop_blockmap_args, a_vp), VDESC_NO_OFFSET }; struct vnodeop_desc vnop_blockmap_desc = { @@ -1059,10 +1110,53 @@ struct vnodeop_desc vnop_removenamedstream_desc = { NULL }; #else -/* These symbols are in the exports list so they need to always be defined. */ -int vnop_getnamedstream_desc; -int vnop_makenamedstream_desc; -int vnop_removenamedstream_desc; +int vnop_getnamedstream_vp_offsets[] = { + VDESC_NO_OFFSET +}; +struct vnodeop_desc vnop_getnamedstream_desc = { + 0, + "vnop_getnamedstream", + VDESC_DISABLED, /* flags */ + vnop_getnamedstream_vp_offsets, + VDESC_NO_OFFSET, + VDESC_NO_OFFSET, + VDESC_NO_OFFSET, + VDESC_NO_OFFSET, + VDESC_NO_OFFSET, + NULL +}; + +int vnop_makenamedstream_vp_offsets[] = { + VDESC_NO_OFFSET +}; +struct vnodeop_desc vnop_makenamedstream_desc = { + 0, + "vnop_makenamedstream", + VDESC_DISABLED, /* flags */ + vnop_makenamedstream_vp_offsets, + VDESC_NO_OFFSET, + VDESC_NO_OFFSET, + VDESC_NO_OFFSET, + VDESC_NO_OFFSET, + VDESC_NO_OFFSET, + NULL +}; + +int vnop_removenamedstream_vp_offsets[] = { + VDESC_NO_OFFSET +}; +struct vnodeop_desc vnop_removenamedstream_desc = { + 0, + "vnop_removenamedstream", + VDESC_DISABLED, /* flags */ + vnop_removenamedstream_vp_offsets, + VDESC_NO_OFFSET, + VDESC_NO_OFFSET, + VDESC_NO_OFFSET, + VDESC_NO_OFFSET, + VDESC_NO_OFFSET, + NULL +}; #endif /* Special cases: */ @@ -1099,12 +1193,29 @@ struct vnodeop_desc vnop_bwrite_desc = { NULL }; +int vnop_verify_vp_offsets[] = { + VOPARG_OFFSETOF(struct vnop_verify_args, a_vp), + VDESC_NO_OFFSET +}; +struct vnodeop_desc vnop_verify_desc = { + .vdesc_offset = 0, + .vdesc_name = "vnop_verify", + .vdesc_flags = 0, + .vdesc_vp_offsets = vnop_verify_vp_offsets, + .vdesc_vpp_offset = VDESC_NO_OFFSET, + .vdesc_cred_offset = VDESC_NO_OFFSET, + .vdesc_proc_offset = VDESC_NO_OFFSET, + .vdesc_componentname_offset = VDESC_NO_OFFSET, + .vdesc_context_offset = VOPARG_OFFSETOF(struct vnop_verify_args, a_context), + .vdesc_transports = NULL +}; + /* End of special cases. */ struct vnodeop_desc *vfs_op_descs[] = { - &vnop_default_desc, /* MUST BE FIRST */ - &vnop_strategy_desc, /* XXX: SPECIAL CASE */ - &vnop_bwrite_desc, /* XXX: SPECIAL CASE */ + &vnop_default_desc, /* MUST BE FIRST */ + &vnop_strategy_desc, /* XXX: SPECIAL CASE */ + &vnop_bwrite_desc, /* XXX: SPECIAL CASE */ &vnop_lookup_desc, &vnop_create_desc, @@ -1125,6 +1236,7 @@ struct vnodeop_desc *vfs_op_descs[] = { &vnop_kqfilt_remove_desc, &vnop_setlabel_desc, &vnop_revoke_desc, + &vnop_mmap_check_desc, &vnop_mmap_desc, &vnop_mnomap_desc, &vnop_fsync_desc, @@ -1132,6 +1244,7 @@ struct vnodeop_desc *vfs_op_descs[] = { &vnop_compound_remove_desc, &vnop_link_desc, &vnop_rename_desc, + &vnop_renamex_desc, &vnop_compound_rename_desc, &vnop_mkdir_desc, &vnop_compound_mkdir_desc, @@ -1151,6 +1264,7 @@ struct vnodeop_desc *vfs_op_descs[] = { &vnop_pageout_desc, &vnop_searchfs_desc, &vnop_copyfile_desc, + &vnop_clonefile_desc, &vnop_getxattr_desc, &vnop_setxattr_desc, &vnop_removexattr_desc, @@ -1159,11 +1273,18 @@ struct vnodeop_desc *vfs_op_descs[] = { &vnop_offtoblk_desc, &vnop_blockmap_desc, &vnop_monitor_desc, -#if NAMEDSTREAMS +#if !defined(NAMEDSTREAMS) + /* + * We define the named streams ops descriptors as we _always_ have to + * have symbols with their names, and as such we really really need + * those symbols to be valid operations descriptors. However if + * named streams support is not enabled, we flag these descriptors + * as ignored. + */ +#endif &vnop_getnamedstream_desc, &vnop_makenamedstream_desc, &vnop_removenamedstream_desc, -#endif + &vnop_verify_desc, NULL }; -