aboutsummaryrefslogtreecommitdiff
path: root/sys/ufs
diff options
context:
space:
mode:
authorJeff Roberson <jeff@FreeBSD.org>2011-07-04 20:52:23 +0000
committerJeff Roberson <jeff@FreeBSD.org>2011-07-04 20:52:23 +0000
commitc0f4e7afa4eeef18857366efedb08422911177b1 (patch)
tree58da153c5b422c63b24fb226766ff42379a77bf3 /sys/ufs
parentd33dc2fa5ca2c82e6635387e48cffe73dd55ac9f (diff)
downloadsrc-c0f4e7afa4eeef18857366efedb08422911177b1.tar.gz
src-c0f4e7afa4eeef18857366efedb08422911177b1.zip
- Fix an inode quota leak. We need to decrement the quota once and only
once. Tested by: pho Reviewed by: mckusick
Notes
Notes: svn path=/head/; revision=223769
Diffstat (limited to 'sys/ufs')
-rw-r--r--sys/ufs/ufs/ufs_inode.c9
1 files changed, 4 insertions, 5 deletions
diff --git a/sys/ufs/ufs/ufs_inode.c b/sys/ufs/ufs/ufs_inode.c
index 7ddbe9713e82..129c26d53a3b 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