Index: sys/ufs/ufs/ufs_vnops.c =================================================================== --- sys/ufs/ufs/ufs_vnops.c +++ sys/ufs/ufs/ufs_vnops.c @@ -190,6 +190,11 @@ void ufs_itimes(struct vnode *vp) { + struct inode *ip; + + ip = VTOI(vp); + if ((ip->i_flag & (IN_ACCESS | IN_CHANGE | IN_UPDATE)) == 0) + return; VI_LOCK(vp); ufs_itimes_locked(vp); @@ -354,13 +359,8 @@ } */ *ap) { struct vnode *vp = ap->a_vp; - int usecount; - VI_LOCK(vp); - usecount = vp->v_usecount; - if (usecount > 1) - ufs_itimes_locked(vp); - VI_UNLOCK(vp); + ufs_itimes(vp); return (0); } @@ -2640,14 +2640,8 @@ struct thread *a_td; } */ *ap) { - struct vnode *vp = ap->a_vp; - int usecount; - VI_LOCK(vp); - usecount = vp->v_usecount; - if (usecount > 1) - ufs_itimes_locked(vp); - VI_UNLOCK(vp); + ufs_close(ap); return (fifo_specops.vop_close(ap)); }