if (dep->de_FileSize != 0) { error = detrunc(dep, (u_long)0, 0, NOCRED, NULL); }
error = detrunc(dep, (u_long)0, 0, NOCRED, NULL);
msdosfs_inactive(v)	void *v;{	struct vop_inactive_args /* {		struct vnode *a_vp;		struct proc *a_p;	} */ *ap = v;	struct vnode *vp = ap->a_vp;	struct denode *dep = VTODE(vp);	struct proc *p = ap->a_p;	int error;	#ifdef MSDOSFS_DEBUG	printf("msdosfs_inactive(): dep %08x, de_Name[0] %x\n", dep, dep->de_Name[0]);#endif	if (prtactive && vp->v_usecount != 0)		vprint("msdosfs_inactive(): pushing active", vp);	error = 0;	/*	 * Get rid of denodes related to stale file handles.	 */	if (dep->de_Name[0] == SLOT_DELETED) 		goto out;	/*	 * If the file has been deleted and it is on a read/write	 * filesystem, then truncate the file, and mark the directory slot	 * as empty.  (This may not be necessary for the dos filesystem.)	 */#ifdef MSDOSFS_DEBUG	printf("msdosfs_inactive(): dep %08x, refcnt %d, mntflag %x, MNT_RDONLY %x\n",	       dep, dep->de_refcnt, vp->v_mount->mnt_flag, MNT_RDONLY);#endif	if (dep->de_refcnt <= 0 && (vp->v_mount->mnt_flag & MNT_RDONLY) == 0) {		if (dep->de_FileSize != 0) {			error = detrunc(dep, (u_long)0, 0, NOCRED, NULL);		}		dep->de_Name[0] = SLOT_DELETED;	}	deupdat(dep, 0);out:	VOP_UNLOCK(vp, 0, p);	/*	 * If we are done with the denode, reclaim it	 * so that it can be reused immediately.	 */#ifdef MSDOSFS_DEBUG	printf("msdosfs_inactive(): v_usecount %d, de_Name[0] %x\n", vp->v_usecount,	       dep->de_Name[0]);#endif	if (dep->de_Name[0] == SLOT_DELETED)		vrecycle(vp, (struct simplelock *)0, p);	return (error);}