xfs
[Top] [All Lists]

Re: [PATCH] xfs: active inodes stat is broken

To: Mark Tinguely <tinguely@xxxxxxx>
Subject: Re: [PATCH] xfs: active inodes stat is broken
From: Dave Chinner <david@xxxxxxxxxxxxx>
Date: Wed, 3 Dec 2014 08:02:04 +1100
Cc: xfs@xxxxxxxxxxx
Delivered-to: xfs@xxxxxxxxxxx
In-reply-to: <547DC411.3090202@xxxxxxx>
References: <1417473270-17467-1-git-send-email-david@xxxxxxxxxxxxx> <547DC411.3090202@xxxxxxx>
User-agent: Mutt/1.5.21 (2010-09-15)
On Tue, Dec 02, 2014 at 07:52:17AM -0600, Mark Tinguely wrote:
> On 12/01/14 16:34, Dave Chinner wrote:
> >From: Dave Chinner<dchinner@xxxxxxxxxx>
> >
> >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@xxxxxxxxxx>
> >---
> >  fs/xfs/xfs_icache.c | 3 +++
> >  fs/xfs/xfs_super.c  | 1 -
> >  2 files changed, 3 insertions(+), 1 deletion(-)
> >
> >diff --git a/fs/xfs/xfs_icache.c b/fs/xfs/xfs_icache.c
> >index 92ca910..8bc3d78 100644
> >--- a/fs/xfs/xfs_icache.c
> >+++ b/fs/xfs/xfs_icache.c
> >@@ -128,6 +128,7 @@ xfs_inode_free(
> >     /* asserts to verify all state is correct here */
> >     ASSERT(atomic_read(&ip->i_pincount) == 0);
> >     ASSERT(!xfs_isiflocked(ip));
> >+    XFS_STATS_DEC(vn_active);
> >
> >     call_rcu(&VFS_I(ip)->i_rcu, xfs_inode_free_callback);
> >  }
> 
> Would the inode allocated and freed in xfs_recover_inode_owner_change()
> cause this the count to go negative?

Good catch - it will. Recovering swap extent operations is pretty
rare, so I wouldn't have noticed an off-by-one-or-two on a normal
system where there are several thousand allocated and cached inodes
even at idle. I'll fix it.

Cheers,

Dave.
-- 
Dave Chinner
david@xxxxxxxxxxxxx

<Prev in Thread] Current Thread [Next in Thread>