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

Christoph Hellwig
2008-12-17T14:20:32Z

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.