]> git.saurik.com Git - apple/xnu.git/blobdiff - bsd/vfs/vnode_if.c
xnu-2782.1.97.tar.gz
[apple/xnu.git] / bsd / vfs / vnode_if.c
index ebf0b1f3d321acaf78f86dc0285852cd73c985a2..1fc9bd7df26ef0abf30855733edc8b9ac0c96c9c 100644 (file)
@@ -1,6 +1,6 @@
 
 /*
- * Copyright (c) 2000-2002 Apple Computer, Inc. All rights reserved.
+ * Copyright (c) 2000-2014 Apple Computer, Inc. All rights reserved.
  *
  * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
  * 
@@ -84,7 +84,8 @@ struct vnodeop_desc vnop_default_desc = {
        VDESC_NO_OFFSET,
        VDESC_NO_OFFSET,
        VDESC_NO_OFFSET,
-       NULL,
+       VDESC_NO_OFFSET,
+       NULL
 };
 
 
@@ -102,7 +103,25 @@ struct vnodeop_desc vnop_lookup_desc = {
        VDESC_NO_OFFSET,
        VOPARG_OFFSETOF(struct vnop_lookup_args, a_cnp),
        VOPARG_OFFSETOF(struct vnop_lookup_args, a_context),
-       NULL,
+       NULL
+};
+
+int vnop_compound_open_vp_offsets[] = {
+       VOPARG_OFFSETOF(struct vnop_compound_open_args, a_dvp),
+       VDESC_NO_OFFSET
+};
+
+struct vnodeop_desc vnop_compound_open_desc = {
+       0,
+       "vnop_compound_open",
+       0 | VDESC_VP0_WILLRELE,
+       vnop_compound_open_vp_offsets, 
+       VOPARG_OFFSETOF(struct vnop_compound_open_args, a_vpp),
+       VDESC_NO_OFFSET,
+       VDESC_NO_OFFSET,
+       VOPARG_OFFSETOF(struct vnop_compound_open_args, a_cnp),
+       VOPARG_OFFSETOF(struct vnop_compound_open_args, a_context),
+       NULL
 };
 
 int vnop_create_vp_offsets[] = {
@@ -119,7 +138,7 @@ struct vnodeop_desc vnop_create_desc = {
        VDESC_NO_OFFSET,
        VOPARG_OFFSETOF(struct vnop_create_args, a_cnp),
        VOPARG_OFFSETOF(struct vnop_create_args, a_context),
-       NULL,
+       NULL
 };
 
 int vnop_whiteout_vp_offsets[] = {
@@ -136,7 +155,7 @@ struct vnodeop_desc vnop_whiteout_desc = {
        VDESC_NO_OFFSET,
        VOPARG_OFFSETOF(struct vnop_whiteout_args, a_cnp),
        VOPARG_OFFSETOF(struct vnop_whiteout_args, a_context),
-       NULL,
+       NULL
 };
 
 int vnop_mknod_vp_offsets[] = {
@@ -153,7 +172,7 @@ struct vnodeop_desc vnop_mknod_desc = {
        VDESC_NO_OFFSET,
        VOPARG_OFFSETOF(struct vnop_mknod_args, a_cnp),
        VOPARG_OFFSETOF(struct vnop_mknod_args, a_context),
-       NULL,
+       NULL
 };
 
 int vnop_open_vp_offsets[] = {
@@ -170,7 +189,7 @@ struct vnodeop_desc vnop_open_desc = {
        VDESC_NO_OFFSET,
        VDESC_NO_OFFSET,
        VOPARG_OFFSETOF(struct vnop_open_args, a_context),
-       NULL,
+       NULL
 };
 
 int vnop_close_vp_offsets[] = {
@@ -187,7 +206,7 @@ struct vnodeop_desc vnop_close_desc = {
        VDESC_NO_OFFSET,
        VDESC_NO_OFFSET,
        VOPARG_OFFSETOF(struct vnop_close_args, a_context),
-       NULL,
+       NULL
 };
 
 int vnop_access_vp_offsets[] = {
@@ -204,7 +223,7 @@ struct vnodeop_desc vnop_access_desc = {
        VDESC_NO_OFFSET,
        VDESC_NO_OFFSET,
        VOPARG_OFFSETOF(struct vnop_close_args, a_context),
-       NULL,
+       NULL
 };
 
 int vnop_getattr_vp_offsets[] = {
@@ -221,7 +240,7 @@ struct vnodeop_desc vnop_getattr_desc = {
        VDESC_NO_OFFSET,
        VDESC_NO_OFFSET,
        VOPARG_OFFSETOF(struct vnop_getattr_args, a_context),
-       NULL,
+       NULL
 };
 
 int vnop_setattr_vp_offsets[] = {
@@ -238,41 +257,7 @@ struct vnodeop_desc vnop_setattr_desc = {
        VDESC_NO_OFFSET,
        VDESC_NO_OFFSET,
        VOPARG_OFFSETOF(struct vnop_setattr_args, a_context),
-       NULL,
-};
-
-int vnop_getattrlist_vp_offsets[] = {
-       VOPARG_OFFSETOF(struct vnop_getattrlist_args,a_vp),
-       VDESC_NO_OFFSET
-};
-struct vnodeop_desc vnop_getattrlist_desc = {
-       0,
-       "vnop_getattrlist",
-       0,
-       vnop_getattrlist_vp_offsets,
-       VDESC_NO_OFFSET,
-       VDESC_NO_OFFSET,
-       VDESC_NO_OFFSET,
-       VDESC_NO_OFFSET,
-       VOPARG_OFFSETOF(struct vnop_getattrlist_args, a_context),
-       NULL,
-};
-
-int vnop_setattrlist_vp_offsets[] = {
-       VOPARG_OFFSETOF(struct vnop_setattrlist_args,a_vp),
-       VDESC_NO_OFFSET
-};
-struct vnodeop_desc vnop_setattrlist_desc = {
-       0,
-       "vnop_setattrlist",
-       0,
-       vnop_setattrlist_vp_offsets,
-       VDESC_NO_OFFSET,
-       VDESC_NO_OFFSET,
-       VDESC_NO_OFFSET,
-       VDESC_NO_OFFSET,
-       VOPARG_OFFSETOF(struct vnop_setattrlist_args, a_context),
-       NULL,
+       NULL
 };
 
 int vnop_read_vp_offsets[] = {
@@ -289,7 +274,7 @@ struct vnodeop_desc vnop_read_desc = {
        VDESC_NO_OFFSET,
        VDESC_NO_OFFSET,
        VOPARG_OFFSETOF(struct vnop_read_args, a_context),
-       NULL,
+       NULL
 };
 
 int vnop_write_vp_offsets[] = {
@@ -306,7 +291,7 @@ struct vnodeop_desc vnop_write_desc = {
        VDESC_NO_OFFSET,
        VDESC_NO_OFFSET,
        VOPARG_OFFSETOF(struct vnop_write_args, a_context),
-       NULL,
+       NULL
 };
 
 int vnop_ioctl_vp_offsets[] = {
@@ -323,7 +308,7 @@ struct vnodeop_desc vnop_ioctl_desc = {
        VDESC_NO_OFFSET,
        VDESC_NO_OFFSET,
        VOPARG_OFFSETOF(struct vnop_ioctl_args, a_context),
-       NULL,
+       NULL
 };
 
 int vnop_select_vp_offsets[] = {
@@ -340,8 +325,7 @@ struct vnodeop_desc vnop_select_desc = {
        VDESC_NO_OFFSET,
        VDESC_NO_OFFSET,
        VOPARG_OFFSETOF(struct vnop_select_args, a_context),
-       VDESC_NO_OFFSET,
-       NULL,
+       NULL
 };
 
 int vnop_exchange_vp_offsets[] = {
@@ -359,7 +343,7 @@ struct vnodeop_desc vnop_exchange_desc = {
        VDESC_NO_OFFSET,
        VDESC_NO_OFFSET,
        VOPARG_OFFSETOF(struct vnop_exchange_args, a_context),
-       NULL,
+       NULL
 };
 
 int vnop_kqfilt_add_vp_offsets[] = {
@@ -376,7 +360,7 @@ struct vnodeop_desc vnop_kqfilt_add_desc = {
        VDESC_NO_OFFSET,
        VDESC_NO_OFFSET,
        VOPARG_OFFSETOF(struct vnop_kqfilt_add_args, a_context),
-       NULL,
+       NULL
 };
 
 int vnop_kqfilt_remove_vp_offsets[] = {
@@ -393,6 +377,40 @@ struct vnodeop_desc vnop_kqfilt_remove_desc = {
        VDESC_NO_OFFSET,
        VDESC_NO_OFFSET,
        VOPARG_OFFSETOF(struct vnop_kqfilt_remove_args, a_context),
+       NULL
+};
+
+int vnop_monitor_vp_offsets[] = {
+       VOPARG_OFFSETOF(struct vnop_monitor_args,a_vp),
+       VDESC_NO_OFFSET
+};
+struct vnodeop_desc vnop_monitor_desc = {
+       0,
+       "vnop_monitor",
+       0,
+       vnop_monitor_vp_offsets,
+       VDESC_NO_OFFSET,
+       VDESC_NO_OFFSET,
+       VDESC_NO_OFFSET,
+       VDESC_NO_OFFSET,
+       VOPARG_OFFSETOF(struct vnop_monitor_args, a_context),
+       NULL
+};
+
+int vnop_setlabel_vp_offsets[] = {
+       VOPARG_OFFSETOF(struct vnop_setlabel_args,a_vp),
+       VDESC_NO_OFFSET
+};
+struct vnodeop_desc vnop_setlabel_desc = {
+       0,
+       "vnop_setlabel",
+       0,
+       vnop_setlabel_vp_offsets,
+       VDESC_NO_OFFSET,
+       VDESC_NO_OFFSET,
+       VDESC_NO_OFFSET,
+       VDESC_NO_OFFSET,
+       VOPARG_OFFSETOF(struct vnop_setlabel_args, a_context),
        NULL,
 };
 
@@ -409,7 +427,8 @@ struct vnodeop_desc vnop_revoke_desc = {
        VDESC_NO_OFFSET,
        VDESC_NO_OFFSET,
        VDESC_NO_OFFSET,
-       NULL,
+       VDESC_NO_OFFSET,
+       NULL
 };
 
 
@@ -426,7 +445,8 @@ struct vnodeop_desc vnop_mmap_desc = {
        VDESC_NO_OFFSET,
        VDESC_NO_OFFSET,
        VDESC_NO_OFFSET,
-       NULL,
+       VDESC_NO_OFFSET,
+       NULL
 };
 
 
@@ -443,7 +463,8 @@ struct vnodeop_desc vnop_mnomap_desc = {
        VDESC_NO_OFFSET,
        VDESC_NO_OFFSET,
        VDESC_NO_OFFSET,
-       NULL,
+       VDESC_NO_OFFSET,
+       NULL
 };
 
 
@@ -461,7 +482,7 @@ struct vnodeop_desc vnop_fsync_desc = {
        VDESC_NO_OFFSET,
        VDESC_NO_OFFSET,
        VOPARG_OFFSETOF(struct vnop_fsync_args, a_context),
-       NULL,
+       NULL
 };
 
 int vnop_remove_vp_offsets[] = {
@@ -479,7 +500,24 @@ struct vnodeop_desc vnop_remove_desc = {
        VDESC_NO_OFFSET,
        VOPARG_OFFSETOF(struct vnop_remove_args, a_cnp),
        VOPARG_OFFSETOF(struct vnop_remove_args, a_context),
-       NULL,
+       NULL
+};
+
+int vnop_remove_extended_vp_offsets[] = {
+       VOPARG_OFFSETOF(struct vnop_remove_args,a_dvp),
+       VDESC_NO_OFFSET
+};
+struct vnodeop_desc vnop_compound_remove_desc = {
+       0,
+       "vnop_compound_remove",
+       0,
+       vnop_remove_vp_offsets,
+       VOPARG_OFFSETOF(struct vnop_compound_remove_args, a_vpp),
+       VDESC_NO_OFFSET,
+       VDESC_NO_OFFSET,
+       VOPARG_OFFSETOF(struct vnop_remove_args, a_cnp),
+       VOPARG_OFFSETOF(struct vnop_remove_args, a_context),
+       NULL
 };
 
 int vnop_link_vp_offsets[] = {
@@ -497,7 +535,7 @@ struct vnodeop_desc vnop_link_desc = {
        VDESC_NO_OFFSET,
        VOPARG_OFFSETOF(struct vnop_link_args, a_cnp),
        VOPARG_OFFSETOF(struct vnop_link_args, a_context),
-       NULL,
+       NULL
 };
 
 int vnop_rename_vp_offsets[] = {
@@ -517,7 +555,27 @@ struct vnodeop_desc vnop_rename_desc = {
        VDESC_NO_OFFSET,
        VOPARG_OFFSETOF(struct vnop_rename_args, a_fcnp),
        VOPARG_OFFSETOF(struct vnop_rename_args, a_context),
-       NULL,
+       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),
+       VDESC_NO_OFFSET
+};
+struct vnodeop_desc vnop_compound_rename_desc = {
+       0,
+       "vnop_compound_rename",
+       0 | VDESC_VP0_WILLRELE | VDESC_VP1_WILLRELE | VDESC_VP2_WILLRELE | VDESC_VP3_WILLRELE,
+       vnop_compound_rename_vp_offsets,
+       VDESC_NO_OFFSET,
+       VDESC_NO_OFFSET,
+       VDESC_NO_OFFSET,
+       VOPARG_OFFSETOF(struct vnop_compound_rename_args, a_fcnp),
+       VOPARG_OFFSETOF(struct vnop_compound_rename_args, a_context),
+       NULL
 };
 
 int vnop_mkdir_vp_offsets[] = {
@@ -534,9 +592,27 @@ struct vnodeop_desc vnop_mkdir_desc = {
        VDESC_NO_OFFSET,
        VOPARG_OFFSETOF(struct vnop_mkdir_args, a_cnp),
        VOPARG_OFFSETOF(struct vnop_mkdir_args, a_context),
-       NULL,
+       NULL
+};
+
+int vnop_compound_mkdir_vp_offsets[] = {
+       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
 };
 
+
 int vnop_rmdir_vp_offsets[] = {
        VOPARG_OFFSETOF(struct vnop_rmdir_args,a_dvp),
        VOPARG_OFFSETOF(struct vnop_rmdir_args,a_vp),
@@ -552,7 +628,24 @@ struct vnodeop_desc vnop_rmdir_desc = {
        VDESC_NO_OFFSET,
        VOPARG_OFFSETOF(struct vnop_rmdir_args, a_cnp),
        VOPARG_OFFSETOF(struct vnop_rmdir_args, a_context),
-       NULL,
+       NULL
+};
+
+int vnop_compound_rmdir_vp_offsets[] = {
+       VOPARG_OFFSETOF(struct vnop_compound_rmdir_args,a_dvp),
+       VDESC_NO_OFFSET
+};
+struct vnodeop_desc vnop_compound_rmdir_desc = {
+       0,
+       "vnop_compound_rmdir",
+       0 | VDESC_VP0_WILLRELE | VDESC_VP1_WILLRELE,
+       vnop_rmdir_vp_offsets,
+       VDESC_NO_OFFSET,
+       VDESC_NO_OFFSET,
+       VDESC_NO_OFFSET,
+       VOPARG_OFFSETOF(struct vnop_compound_rmdir_args, a_cnp),
+       VOPARG_OFFSETOF(struct vnop_compound_rmdir_args, a_context),
+       NULL
 };
 
 int vnop_symlink_vp_offsets[] = {
@@ -569,7 +662,7 @@ struct vnodeop_desc vnop_symlink_desc = {
        VDESC_NO_OFFSET,
        VOPARG_OFFSETOF(struct vnop_symlink_args, a_cnp),
        VOPARG_OFFSETOF(struct vnop_symlink_args, a_context),
-       NULL,
+       NULL
 };
 
 int vnop_readdir_vp_offsets[] = {
@@ -586,7 +679,7 @@ struct vnodeop_desc vnop_readdir_desc = {
        VDESC_NO_OFFSET,
        VDESC_NO_OFFSET,
        VOPARG_OFFSETOF(struct vnop_symlink_args, a_context),
-       NULL,
+       NULL
 };
 
 int vnop_readdirattr_vp_offsets[] = {
@@ -603,7 +696,24 @@ struct vnodeop_desc vnop_readdirattr_desc = {
        VDESC_NO_OFFSET,
        VDESC_NO_OFFSET,
        VOPARG_OFFSETOF(struct vnop_readdirattr_args, a_context),
-       NULL,
+       NULL
+};
+
+int vnop_getattrlistbulk_vp_offsets[] = {
+       VOPARG_OFFSETOF(struct vnop_getattrlistbulk_args,a_vp),
+       VDESC_NO_OFFSET
+};
+struct vnodeop_desc vnop_getattrlistbulk_desc = {
+       0,
+       "vnop_getattrlistbulk",
+       0,
+       vnop_getattrlistbulk_vp_offsets,
+       VDESC_NO_OFFSET,
+       VDESC_NO_OFFSET,
+       VDESC_NO_OFFSET,
+       VDESC_NO_OFFSET,
+       VOPARG_OFFSETOF(struct vnop_getattrlistbulk_args, a_context),
+       NULL
 };
 
 int vnop_readlink_vp_offsets[] = {
@@ -620,7 +730,7 @@ struct vnodeop_desc vnop_readlink_desc = {
        VDESC_NO_OFFSET,
        VDESC_NO_OFFSET,
        VOPARG_OFFSETOF(struct vnop_readlink_args, a_context),
-       NULL,
+       NULL
 };
 
 int vnop_inactive_vp_offsets[] = {
@@ -637,7 +747,7 @@ struct vnodeop_desc vnop_inactive_desc = {
        VDESC_NO_OFFSET,
        VDESC_NO_OFFSET,
        VOPARG_OFFSETOF(struct vnop_inactive_args, a_context),
-       NULL,
+       NULL
 };
 
 int vnop_reclaim_vp_offsets[] = {
@@ -654,7 +764,7 @@ struct vnodeop_desc vnop_reclaim_desc = {
        VDESC_NO_OFFSET,
        VDESC_NO_OFFSET,
        VOPARG_OFFSETOF(struct vnop_reclaim_args, a_context),
-       NULL,
+       NULL
 };
 
 int vnop_pathconf_vp_offsets[] = {
@@ -671,7 +781,7 @@ struct vnodeop_desc vnop_pathconf_desc = {
        VDESC_NO_OFFSET,
        VDESC_NO_OFFSET,
        VOPARG_OFFSETOF(struct vnop_pathconf_args, a_context),
-       NULL,
+       NULL
 };
 
 int vnop_advlock_vp_offsets[] = {
@@ -688,7 +798,7 @@ struct vnodeop_desc vnop_advlock_desc = {
        VDESC_NO_OFFSET,
        VDESC_NO_OFFSET,
        VOPARG_OFFSETOF(struct vnop_advlock_args, a_context),
-       NULL,
+       NULL
 };
 
 int vnop_allocate_vp_offsets[] = {
@@ -705,7 +815,7 @@ struct vnodeop_desc vnop_allocate_desc = {
        VDESC_NO_OFFSET,
        VDESC_NO_OFFSET,
        VOPARG_OFFSETOF(struct vnop_allocate_args, a_context),
-       NULL,
+       NULL
 };
 
 int vnop_pagein_vp_offsets[] = {
@@ -722,7 +832,7 @@ struct vnodeop_desc vnop_pagein_desc = {
        VDESC_NO_OFFSET,
        VDESC_NO_OFFSET,
        VOPARG_OFFSETOF(struct vnop_pagein_args, a_context),
-       NULL,
+       NULL
 };
 
 int vnop_pageout_vp_offsets[] = {
@@ -739,23 +849,7 @@ struct vnodeop_desc vnop_pageout_desc = {
        VDESC_NO_OFFSET,
        VDESC_NO_OFFSET,
        VOPARG_OFFSETOF(struct vnop_pageout_args, a_context),
-       NULL,
-};
-
-int vnop_devblocksize_vp_offsets[] = {
-       VOPARG_OFFSETOF(struct vnop_devblocksize_args,a_vp),
-       VDESC_NO_OFFSET
-};
-struct vnodeop_desc vnop_devblocksize_desc = {
-       0,
-       "vnop_devblocksize",
-       0,
-       vnop_devblocksize_vp_offsets,
-       VDESC_NO_OFFSET,
-       VDESC_NO_OFFSET,
-       VDESC_NO_OFFSET,
-       VDESC_NO_OFFSET,
-       NULL,
+       NULL
 };
 
 int vnop_searchfs_vp_offsets[] = {
@@ -771,7 +865,8 @@ struct vnodeop_desc vnop_searchfs_desc = {
        VDESC_NO_OFFSET,
        VDESC_NO_OFFSET,
        VDESC_NO_OFFSET,
-       NULL,
+       VDESC_NO_OFFSET,
+       NULL
 };
 
 int vnop_copyfile_vp_offsets[] = {
@@ -789,7 +884,8 @@ struct vnodeop_desc vnop_copyfile_desc = {
        VDESC_NO_OFFSET,
        VDESC_NO_OFFSET,
        VOPARG_OFFSETOF(struct vnop_copyfile_args, a_tcnp),
-       NULL,
+       VDESC_NO_OFFSET,
+       NULL
 };
 
 int vop_getxattr_vp_offsets[] = {
@@ -806,7 +902,7 @@ struct vnodeop_desc vnop_getxattr_desc = {
        VDESC_NO_OFFSET,
        VDESC_NO_OFFSET,
        VOPARG_OFFSETOF(struct vnop_getxattr_args, a_context),
-       NULL,
+       NULL
 };
 
 int vop_setxattr_vp_offsets[] = {
@@ -823,7 +919,7 @@ struct vnodeop_desc vnop_setxattr_desc = {
        VDESC_NO_OFFSET,
        VDESC_NO_OFFSET,
        VOPARG_OFFSETOF(struct vnop_setxattr_args, a_context),
-       NULL,
+       NULL
 };
 
 int vop_removexattr_vp_offsets[] = {
@@ -840,7 +936,7 @@ struct vnodeop_desc vnop_removexattr_desc = {
        VDESC_NO_OFFSET,
        VDESC_NO_OFFSET,
        VOPARG_OFFSETOF(struct vnop_removexattr_args, a_context),
-       NULL,
+       NULL
 };
 
 int vop_listxattr_vp_offsets[] = {
@@ -857,7 +953,7 @@ struct vnodeop_desc vnop_listxattr_desc = {
        VDESC_NO_OFFSET,
        VDESC_NO_OFFSET,
        VOPARG_OFFSETOF(struct vnop_listxattr_args, a_context),
-       NULL,
+       NULL
 };
 
 int vnop_blktooff_vp_offsets[] = {
@@ -873,7 +969,8 @@ struct vnodeop_desc vnop_blktooff_desc = {
        VDESC_NO_OFFSET,
        VDESC_NO_OFFSET,
        VDESC_NO_OFFSET,
-       NULL,
+       VDESC_NO_OFFSET,
+       NULL
 };
 
 int vnop_offtoblk_vp_offsets[] = {
@@ -889,7 +986,8 @@ struct vnodeop_desc vnop_offtoblk_desc = {
        VDESC_NO_OFFSET,
        VDESC_NO_OFFSET,
        VDESC_NO_OFFSET,
-       NULL,
+       VDESC_NO_OFFSET,
+       NULL
 };
 
 int vnop_blockmap_vp_offsets[] = {
@@ -905,9 +1003,68 @@ struct vnodeop_desc vnop_blockmap_desc = {
        VDESC_NO_OFFSET,
        VDESC_NO_OFFSET,
        VDESC_NO_OFFSET,
-       NULL,
+       VDESC_NO_OFFSET,
+       NULL
 };
 
+#if NAMEDSTREAMS
+int vnop_getnamedstream_vp_offsets[] = {
+       VOPARG_OFFSETOF(struct vnop_getnamedstream_args, a_vp),
+       VDESC_NO_OFFSET
+};
+struct vnodeop_desc vnop_getnamedstream_desc = {
+       0,
+       "vnop_getnamedstream",
+       0,
+       vnop_getnamedstream_vp_offsets,
+       VOPARG_OFFSETOF(struct vnop_getnamedstream_args, a_svpp),
+       VDESC_NO_OFFSET,
+       VDESC_NO_OFFSET,
+       VOPARG_OFFSETOF(struct vnop_getnamedstream_args, a_name),
+       VOPARG_OFFSETOF(struct vnop_getnamedstream_args, a_context),
+       NULL
+};
+
+int vnop_makenamedstream_vp_offsets[] = {
+       VOPARG_OFFSETOF(struct vnop_makenamedstream_args, a_vp),
+       VDESC_NO_OFFSET
+};
+struct vnodeop_desc vnop_makenamedstream_desc = {
+       0,
+       "vnop_makenamedstream",
+       0, /* flags */
+       vnop_makenamedstream_vp_offsets,
+       VOPARG_OFFSETOF(struct vnop_makenamedstream_args, a_svpp),
+       VDESC_NO_OFFSET,
+       VDESC_NO_OFFSET,
+       VOPARG_OFFSETOF(struct vnop_makenamedstream_args, a_name),
+       VOPARG_OFFSETOF(struct vnop_makenamedstream_args, a_context),
+       NULL
+};
+
+int vnop_removenamedstream_vp_offsets[] = {
+       VOPARG_OFFSETOF(struct vnop_removenamedstream_args, a_vp),
+       VDESC_NO_OFFSET
+};
+struct vnodeop_desc vnop_removenamedstream_desc = {
+       0,
+       "vnop_removenamedstream",
+       0,
+       vnop_removenamedstream_vp_offsets,
+       VDESC_NO_OFFSET,
+       VDESC_NO_OFFSET,
+       VDESC_NO_OFFSET,
+       VOPARG_OFFSETOF(struct vnop_removenamedstream_args, a_name),
+       VOPARG_OFFSETOF(struct vnop_removenamedstream_args, a_context),
+       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;
+#endif
+
 /* Special cases: */
 
 int vnop_strategy_vp_offsets[] = {
@@ -922,7 +1079,8 @@ struct vnodeop_desc vnop_strategy_desc = {
        VDESC_NO_OFFSET,
        VDESC_NO_OFFSET,
        VDESC_NO_OFFSET,
-       NULL,
+       VDESC_NO_OFFSET,
+       NULL
 };
 
 int vnop_bwrite_vp_offsets[] = {
@@ -937,7 +1095,8 @@ struct vnodeop_desc vnop_bwrite_desc = {
        VDESC_NO_OFFSET,
        VDESC_NO_OFFSET,
        VDESC_NO_OFFSET,
-       NULL,
+       VDESC_NO_OFFSET,
+       NULL
 };
 
 /* End of special cases. */
@@ -952,12 +1111,11 @@ struct vnodeop_desc *vfs_op_descs[] = {
        &vnop_mknod_desc,
        &vnop_whiteout_desc,
        &vnop_open_desc,
+       &vnop_compound_open_desc,
        &vnop_close_desc,
        &vnop_access_desc,
        &vnop_getattr_desc,
        &vnop_setattr_desc,
-       &vnop_getattrlist_desc,
-       &vnop_setattrlist_desc,
        &vnop_read_desc,
        &vnop_write_desc,
        &vnop_ioctl_desc,
@@ -965,18 +1123,24 @@ struct vnodeop_desc *vfs_op_descs[] = {
        &vnop_exchange_desc,
        &vnop_kqfilt_add_desc,
        &vnop_kqfilt_remove_desc,
+       &vnop_setlabel_desc,
        &vnop_revoke_desc,
        &vnop_mmap_desc,
        &vnop_mnomap_desc,
        &vnop_fsync_desc,
        &vnop_remove_desc,
+       &vnop_compound_remove_desc,
        &vnop_link_desc,
        &vnop_rename_desc,
+       &vnop_compound_rename_desc,
        &vnop_mkdir_desc,
+       &vnop_compound_mkdir_desc,
        &vnop_rmdir_desc,
+       &vnop_compound_rmdir_desc,
        &vnop_symlink_desc,
        &vnop_readdir_desc,
        &vnop_readdirattr_desc,
+       &vnop_getattrlistbulk_desc,
        &vnop_readlink_desc,
        &vnop_inactive_desc,
        &vnop_reclaim_desc,
@@ -985,7 +1149,6 @@ struct vnodeop_desc *vfs_op_descs[] = {
        &vnop_allocate_desc,
        &vnop_pagein_desc,
        &vnop_pageout_desc,
-       &vnop_devblocksize_desc,
        &vnop_searchfs_desc,
        &vnop_copyfile_desc,
        &vnop_getxattr_desc,
@@ -995,6 +1158,12 @@ struct vnodeop_desc *vfs_op_descs[] = {
        &vnop_blktooff_desc,
        &vnop_offtoblk_desc,
        &vnop_blockmap_desc,
+       &vnop_monitor_desc,
+#if NAMEDSTREAMS
+       &vnop_getnamedstream_desc,
+       &vnop_makenamedstream_desc,
+       &vnop_removenamedstream_desc,
+#endif
        NULL
 };