On Mon, Mar 15, 2010 at 12:01:54PM -0400, Christoph Hellwig wrote:
> Running the series on my KVM testbox trips out this assert in
> xfstests 013, which suggests we might be calling iput one too
> much somewhere (e.g. IOP_UNLOCK)):
> [ 132.174780] Assertion failed: atomic_read(&VFS_I(dp)->i_count) > 0, file:
> fs/xfs/xfs_vnodeops.c, line: 1430
Turns out this was due to the fsync clustering patch, which adds inodes
to a transaction without first grabbing a reference to them.
Unofrtunately grabbing the reference is not a easy as it sounds, as
inodes in the cluster might be on the unused list or even not have
valid VFS state anymore, so we can't simply call IHOLD here. I've
reverted the patch in my local tree for now.