Index: sys/ufs/ufs/ufs_inode.c =================================================================== --- sys/ufs/ufs/ufs_inode.c +++ sys/ufs/ufs/ufs_inode.c @@ -82,9 +82,7 @@ if (ip->i_mode == 0 || ip->i_nlink <= 0 || (ip->i_effnlink == 0 && DOINGSOFTDEP(vp)) || (ip->i_flag & (IN_ACCESS | IN_CHANGE | IN_MODIFIED | - IN_UPDATE)) != 0 || - (ip->i_effnlink <= 0 && (ip->i_size != 0 || (I_IS_UFS2(ip) && - ip->i_din2->di_extsize != 0)))) + IN_UPDATE)) != 0) return (1); #ifdef QUOTA for (i = 0; i < MAXQUOTAS; i++) { @@ -164,7 +162,7 @@ isize = ip->i_size; if (I_IS_UFS2(ip)) isize += ip->i_din2->di_extsize; - if (ip->i_effnlink <= 0 && isize && !UFS_RDONLY(ip)) + if (ip->i_nlink <= 0 && isize && !UFS_RDONLY(ip)) error = UFS_TRUNCATE(vp, (off_t)0, IO_EXT | IO_NORMAL, NOCRED); if (ip->i_nlink <= 0 && ip->i_mode && !UFS_RDONLY(ip)) { #ifdef QUOTA