summaryrefslogtreecommitdiff
path: root/usr/src
diff options
context:
space:
mode:
authorvk154806 <none@none>2007-04-20 06:09:57 -0700
committervk154806 <none@none>2007-04-20 06:09:57 -0700
commitd13c09a7f68650a64fdd79529685b4761b73bfbc (patch)
tree752bf9e50a91aa8696a2b52d644c8d5a7e08a798 /usr/src
parent61ee869ef3fff08996d6710c5d4f7a17bc81415c (diff)
downloadillumos-joyent-d13c09a7f68650a64fdd79529685b4761b73bfbc.tar.gz
6453594 Number of unreclaimed files and Number of inodes in ufs delete queue are not always in sync
Diffstat (limited to 'usr/src')
-rw-r--r--usr/src/uts/common/fs/ufs/ufs_thread.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/usr/src/uts/common/fs/ufs/ufs_thread.c b/usr/src/uts/common/fs/ufs/ufs_thread.c
index 06237a090b..2828cc43cd 100644
--- a/usr/src/uts/common/fs/ufs/ufs_thread.c
+++ b/usr/src/uts/common/fs/ufs/ufs_thread.c
@@ -19,7 +19,7 @@
* CDDL HEADER END
*/
/*
- * Copyright 2006 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
@@ -264,11 +264,19 @@ ufs_delete(struct ufsvfs *ufsvfsp, struct inode *ip, int dolockfs)
* Ignore if deletes are not allowed (wlock/hlock)
*/
if (ULOCKFS_IS_NOIDEL(ITOUL(ip))) {
+ mutex_enter(&delq->uq_mutex);
+ delq_info->delq_unreclaimed_blocks -= ip->i_blocks;
+ delq_info->delq_unreclaimed_files--;
+ mutex_exit(&delq->uq_mutex);
VN_RELE(vp);
return;
}
if ((vp->v_count > 1) || (ip->i_mode == 0)) {
+ mutex_enter(&delq->uq_mutex);
+ delq_info->delq_unreclaimed_blocks -= ip->i_blocks;
+ delq_info->delq_unreclaimed_files--;
+ mutex_exit(&delq->uq_mutex);
VN_RELE(vp);
return;
}