xfs
[Top] [All Lists]

Re: [PATCH] Use the incore inode size in xfs_file_readdir()

To: Lachlan McIlroy <lachlan@xxxxxxx>
Subject: Re: [PATCH] Use the incore inode size in xfs_file_readdir()
From: Christoph Hellwig <hch@xxxxxxxxxxxxx>
Date: Wed, 17 Dec 2008 09:20:28 -0500
Cc: Christoph Hellwig <hch@xxxxxxxxxxxxx>, xfs-oss <xfs@xxxxxxxxxxx>
In-reply-to: <49389E8F.5000301@sgi.com>
References: <49377FBC.5020501@sgi.com> <20081204070827.GB29531@infradead.org> <49389E8F.5000301@sgi.com>
User-agent: Mutt/1.5.18 (2008-05-17)
On Fri, Dec 05, 2008 at 02:22:55PM +1100, Lachlan McIlroy wrote:
> Christoph Hellwig wrote:
> > On Thu, Dec 04, 2008 at 05:59:08PM +1100, Lachlan McIlroy wrote:
> >> We should be using the incore inode size here not the linux inode
> >> size.  The incore inode size is always up to date for directories
> >> whereas the linux inode size is not updated for directories.
> >>
> >> We've hit assertions in xfs_bmap() and traced it back to the linux
> >> inode size being zero here but the incore size being correct.
> > 
> > Heh. Looks good, but you can still call ->readdir with a 0 inode size,
> > so you might want to check for that (actualyl I think other pathes
> > are goign to take care of it, but..)
> 
> What if we remove bufsize and pass PAGE_SIZE into xfs_readdir()?
> No need to worry about a 0 inode size.

It is used for sizing a memory allocation in xfs_dir2_leaf_getdents, and
avoiding over-allocations for small directories seems like a good idea.

So please go ahead with your original patch.

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