diff options
author | jeff <jeff@FreeBSD.org> | 2011-07-04 20:52:23 +0000 |
---|---|---|
committer | jeff <jeff@FreeBSD.org> | 2011-07-04 20:52:23 +0000 |
commit | 4fa1a63e5a6c86de49fffbcb5289ecba305c6608 (patch) | |
tree | 58da153c5b422c63b24fb226766ff42379a77bf3 /sys/ufs | |
parent | b1bf1da00e2316c1dc2007f81bc9f58f9185877a (diff) | |
download | FreeBSD-src-4fa1a63e5a6c86de49fffbcb5289ecba305c6608.zip FreeBSD-src-4fa1a63e5a6c86de49fffbcb5289ecba305c6608.tar.gz |
- Fix an inode quota leak. We need to decrement the quota once and only
once.
Tested by: pho
Reviewed by: mckusick
Diffstat (limited to 'sys/ufs')
-rw-r--r-- | sys/ufs/ufs/ufs_inode.c | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/sys/ufs/ufs/ufs_inode.c b/sys/ufs/ufs/ufs_inode.c index 7ddbe97..129c26d 100644 --- a/sys/ufs/ufs/ufs_inode.c +++ b/sys/ufs/ufs/ufs_inode.c @@ -120,15 +120,14 @@ ufs_inactive(ap) isize = ip->i_size; if (ip->i_ump->um_fstype == UFS2) isize += ip->i_din2->di_extsize; - if (ip->i_effnlink <= 0 && isize && !UFS_RDONLY(ip)) { + if (ip->i_effnlink <= 0 && isize && !UFS_RDONLY(ip)) + error = UFS_TRUNCATE(vp, (off_t)0, IO_EXT | IO_NORMAL, + NOCRED, td); + if (ip->i_nlink <= 0 && ip->i_mode && !UFS_RDONLY(ip)) { #ifdef QUOTA if (!getinoquota(ip)) (void)chkiq(ip, -1, NOCRED, FORCE); #endif - error = UFS_TRUNCATE(vp, (off_t)0, IO_EXT | IO_NORMAL, - NOCRED, td); - } - if (ip->i_nlink <= 0 && ip->i_mode && !UFS_RDONLY(ip)) { #ifdef UFS_EXTATTR ufs_extattr_vnode_inactive(vp, td); #endif |