+int
+union_revoke(ap)
+ struct vop_revoke_args /* {
+ struct vnode *a_vp;
+ int a_flags;
+ } */ *ap;
+{
+ struct vnode *vp = ap->a_vp;
+
+ if (UPPERVP(vp))
+ VOP_REVOKE(UPPERVP(vp), ap->a_flags);
+ if (LOWERVP(vp))
+ VOP_REVOKE(UPPERVP(vp), ap->a_flags);
+ vgone(vp);
+}
+
vprint("union: dangling klock", vp);
panic("union: dangling upper lock (%lx)", vp);
vprint("union: dangling klock", vp);
panic("union: dangling upper lock (%lx)", vp);
{ &vop_lease_desc, union_lease }, /* lease */
{ &vop_ioctl_desc, union_ioctl }, /* ioctl */
{ &vop_select_desc, union_select }, /* select */
{ &vop_lease_desc, union_lease }, /* lease */
{ &vop_ioctl_desc, union_ioctl }, /* ioctl */
{ &vop_select_desc, union_select }, /* select */
{ &vop_mmap_desc, union_mmap }, /* mmap */
{ &vop_fsync_desc, union_fsync }, /* fsync */
{ &vop_seek_desc, union_seek }, /* seek */
{ &vop_mmap_desc, union_mmap }, /* mmap */
{ &vop_fsync_desc, union_fsync }, /* fsync */
{ &vop_seek_desc, union_seek }, /* seek */