Browse Source

xfs: active inodes stat is broken

vn_active only ever gets decremented, so it has a very large
negative number.  Make it track the inode count we currently have
allocated properly so we can easily track the size of the inode
cache via tools like PCP.

Signed-off-by: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Mark Tinguely <tinguely@sgi.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
Dave Chinner 10 years ago
parent
commit
cdc9cec7c0
2 changed files with 2 additions and 1 deletions
  1. 2 0
      fs/xfs/xfs_icache.c
  2. 0 1
      fs/xfs/xfs_super.c

+ 2 - 0
fs/xfs/xfs_icache.c

@@ -65,6 +65,7 @@ xfs_inode_alloc(
 		return NULL;
 		return NULL;
 	}
 	}
 
 
+	XFS_STATS_INC(vn_active);
 	ASSERT(atomic_read(&ip->i_pincount) == 0);
 	ASSERT(atomic_read(&ip->i_pincount) == 0);
 	ASSERT(!spin_is_locked(&ip->i_flags_lock));
 	ASSERT(!spin_is_locked(&ip->i_flags_lock));
 	ASSERT(!xfs_isiflocked(ip));
 	ASSERT(!xfs_isiflocked(ip));
@@ -130,6 +131,7 @@ xfs_inode_free(
 	/* asserts to verify all state is correct here */
 	/* asserts to verify all state is correct here */
 	ASSERT(atomic_read(&ip->i_pincount) == 0);
 	ASSERT(atomic_read(&ip->i_pincount) == 0);
 	ASSERT(!xfs_isiflocked(ip));
 	ASSERT(!xfs_isiflocked(ip));
+	XFS_STATS_DEC(vn_active);
 
 
 	call_rcu(&VFS_I(ip)->i_rcu, xfs_inode_free_callback);
 	call_rcu(&VFS_I(ip)->i_rcu, xfs_inode_free_callback);
 }
 }

+ 0 - 1
fs/xfs/xfs_super.c

@@ -1008,7 +1008,6 @@ xfs_fs_evict_inode(
 	clear_inode(inode);
 	clear_inode(inode);
 	XFS_STATS_INC(vn_rele);
 	XFS_STATS_INC(vn_rele);
 	XFS_STATS_INC(vn_remove);
 	XFS_STATS_INC(vn_remove);
-	XFS_STATS_DEC(vn_active);
 
 
 	xfs_inactive(ip);
 	xfs_inactive(ip);
 }
 }