-void fifo_printinfo(struct vnode *vp);
-int vn_lock(struct vnode *vp, int flags, struct proc *p);
-int vn_open(struct nameidata *ndp, int fmode, int cmode);
-int vn_open_modflags(struct nameidata *ndp, int *fmode, int cmode);
-int vn_open_auth(struct nameidata *ndp, int *fmode, struct vnode_attr *);
-int vn_close(vnode_t, int flags, vfs_context_t ctx);
-
-#define VN_CREATE_NOAUTH (1<<0)
-#define VN_CREATE_NOINHERIT (1<<1)
-#define VN_CREATE_UNION (1<<2)
-#define VN_CREATE_NOLABEL (1<<3)
-errno_t vn_create(vnode_t, vnode_t *, struct componentname *, struct vnode_attr *, int flags, vfs_context_t);
-
-
-int vn_getxattr(vnode_t, const char *, uio_t, size_t *, int, vfs_context_t);
-int vn_setxattr(vnode_t, const char *, uio_t, int, vfs_context_t);
-int vn_removexattr(vnode_t, const char *, int, vfs_context_t);
-int vn_listxattr(vnode_t, uio_t, size_t *, int, vfs_context_t);
-
-int default_getxattr(vnode_t, const char *, uio_t, size_t *, int, vfs_context_t);
-int default_setxattr(vnode_t, const char *, uio_t, int, vfs_context_t);
-int default_removexattr(vnode_t, const char *, int, vfs_context_t);
+void fifo_printinfo(struct vnode *vp);
+int vn_open(struct nameidata *ndp, int fmode, int cmode);
+int vn_open_modflags(struct nameidata *ndp, int *fmode, int cmode);
+int vn_open_auth(struct nameidata *ndp, int *fmode, struct vnode_attr *);
+int vn_close(vnode_t, int flags, vfs_context_t ctx);
+errno_t vn_remove(vnode_t dvp, vnode_t *vpp, struct nameidata *ndp, int32_t flags, struct vnode_attr *vap, vfs_context_t ctx);
+errno_t vn_rename(struct vnode *fdvp, struct vnode **fvpp, struct componentname *fcnp, struct vnode_attr *fvap,
+ struct vnode *tdvp, struct vnode **tvpp, struct componentname *tcnp, struct vnode_attr *tvap,
+ uint32_t flags, vfs_context_t ctx);
+
+void lock_vnode_and_post(vnode_t, int);
+
+#define post_event_if_success(_vp, _error, _event) \
+ do { \
+ if (0 == (_error)) { \
+ lock_vnode_and_post((_vp), (_event)); \
+ } \
+ } while (0)
+
+/* Authorization subroutines */
+int vn_authorize_open_existing(vnode_t vp, struct componentname *cnp, int fmode, vfs_context_t ctx, void *reserved);
+int vn_authorize_create(vnode_t, struct componentname *, struct vnode_attr *, vfs_context_t, void*);
+int vn_attribute_prepare(vnode_t dvp, struct vnode_attr *vap, uint32_t *defaulted_fieldsp, vfs_context_t ctx);
+void vn_attribute_cleanup(struct vnode_attr *vap, uint32_t defaulted_fields);
+int vn_authorize_rename(struct vnode *fdvp, struct vnode *fvp, struct componentname *fcnp,
+ struct vnode *tdvp, struct vnode *tvp, struct componentname *tcnp,
+ vfs_context_t ctx, void *reserved);
+int vn_authorize_renamex(struct vnode *fdvp, struct vnode *fvp, struct componentname *fcnp,
+ struct vnode *tdvp, struct vnode *tvp, struct componentname *tcnp,
+ vfs_context_t ctx, vfs_rename_flags_t flags, void *reserved);
+int vn_authorize_renamex_with_paths(struct vnode *fdvp, struct vnode *fvp, struct componentname *fcnp, const char *from_path,
+ struct vnode *tdvp, struct vnode *tvp, struct componentname *tcnp, const char *to_path,
+ vfs_context_t ctx, vfs_rename_flags_t flags, void *reserved);
+int vn_authorize_rmdir(vnode_t dvp, vnode_t vp, struct componentname *cnp, vfs_context_t ctx, void *reserved);
+
+typedef int (*vn_create_authorizer_t)(vnode_t, struct componentname *, struct vnode_attr *, vfs_context_t, void*);
+int vn_authorize_mkdir(vnode_t, struct componentname *, struct vnode_attr *, vfs_context_t, void*);
+int vn_authorize_null(vnode_t, struct componentname *, struct vnode_attr *, vfs_context_t, void*);
+int vnode_attr_authorize_dir_clone(struct vnode_attr *vap, kauth_action_t action,
+ struct vnode_attr *dvap, vnode_t sdvp, mount_t mp, dir_clone_authorizer_op_t vattr_op,
+ uint32_t flags, vfs_context_t ctx, void *reserved);
+/* End of authorization subroutines */
+
+#define VN_CREATE_NOAUTH (1<<0)
+#define VN_CREATE_NOINHERIT (1<<1)
+#define VN_CREATE_UNION (1<<2)
+#define VN_CREATE_NOLABEL (1<<3)
+#define VN_CREATE_DOOPEN (1<<4) /* Open file if a batched operation is available */
+errno_t vn_create(vnode_t, vnode_t *, struct nameidata *, struct vnode_attr *, uint32_t, int, uint32_t*, vfs_context_t);
+int vn_mkdir(vnode_t dvp, vnode_t *vpp, struct nameidata *ndp, struct vnode_attr *vap, vfs_context_t ctx);
+int vn_rmdir(vnode_t dvp, vnode_t *vpp, struct nameidata *ndp, struct vnode_attr *vap, vfs_context_t ctx);
+
+int vn_getxattr(vnode_t, const char *, uio_t, size_t *, int, vfs_context_t);
+int vn_setxattr(vnode_t, const char *, uio_t, int, vfs_context_t);
+int vn_removexattr(vnode_t, const char *, int, vfs_context_t);
+int vn_listxattr(vnode_t, uio_t, size_t *, int, vfs_context_t);