On Sun, Feb 15, 2009 at 02:25:08PM -0500, Christoph Hellwig wrote:
> On Fri, Feb 13, 2009 at 09:32:53AM +1100, Dave Chinner wrote:
> > > Yes, I agree. I just don't have the time to hunt it down. I see
> > > there's a call to xfs_idestroy_fork() in xfs_ireclaim() for directories
> > > but xfs_ireclaim() gets called after xfs_iflush() in xfs_reclaim_inode().
> >
> > I suspect it should be in xfs_inactive() if we are in local format.
> > This is what happens with the attribute fork. I think that is where
> > we need something like:
> >
> > if ((ip->i_d.di_mode & S_IFMT) == S_IFDIR &&
> > ip->i_d.di_nextents == 0)
> > xfs_idestroy_fork(ip, XFS_DATA_FORK);
>
> Why would we special case directories?
I guess we don't need to - I was thinking purely of local format
inodes....
> Btw, I can't reproduce this issue with the extent.c program and the
> invocation from the next patch. Does it need other parameters to
> reproduce?
No idea, I haven't been able to reproduce it either.
Cheers,
Dave.
--
Dave Chinner
david@xxxxxxxxxxxxx
|