tech-kern archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: DIRBLKSIZ differs between userland & kernel
On Mon, Feb 27, 2012 at 01:54:49PM +1030, Brett Lymn wrote:
> > I don't think any of those is the right answer. Coda is not limited to
> > running on top of ffs, so it shouldn't be doing only filesystem-
> > independent things when talking to the filesystem it uses for storage.
> > (Right?)
>
> Right.
> What the vfs layer for coda does for coda_readdir is wrap some goop
> around doing a VOP_READDIR on the underlying filesystem. In my case
> since the containers lived on ufs that is what was used.
Sure. But then, as long as syntactically valid dirents come back it
shouldn't matter what DIRBLKSIZ is.
> > Therefore it should be using the value from <dirent.h> in both the
> > kernel and in venus. If it's running on top of ffs, ffs will provide
> > dirents with padding at 512-byte intervals that it would think
> > unnecessary, but I would think it shouldn't notice or care.
>
> Well venus pads them to 1024 - there is a chance that venus won't fill
> the entire block, if venus less than half fills the block then
> ufs_readdir() gets garbage.
This I still don't understand. ufs_readdir doesn't read anything from
venus.
> What I was
> talking about in relation to this is that ufs_readdir() pulls the
> directory block size from a "ufs-ified" version of the mount structure
> attached as private data to the mount struct. I had thought changing
> that would fix the problem but as you rightly point out we are not just
> dealing with ufs here so I could easily fix the problem for me but still
> leave a lurking bug :(
Yeah, that's almost certainly not a good idea.
--
David A. Holland
dholland%netbsd.org@localhost
Home |
Main Index |
Thread Index |
Old Index