Re: Repost (from LKML): EXT3 FS and 64K blocks error

Theodore Tso
2010-07-09T12:03:39Z

On Jul 8, 2010, at 8:10 PM, Daniel Taylor wrote:

> We're getting the following error with an EXT3 file sytem that
> has 64K blocks (2.6.32.12, on a powerpc), although I don't see
> any fixes for later kernels in a diff against 2.6.35-rc3):
>
> ext3_readdir: bad entry in directory #11: rec_len is smaller than minimal -
> offset=0, inode=0, rec_len=0, name_len=0
>
> That message is generated in fs/ext3/dir.c:ext3_check_dir_entry()
> when called from fs/ext3/dir.c:ext3_readdir(), AFAICT.
>
> Did something get missed when EXT3 handling for 64K blocks was
> implemented or when a new feature was added?
>
> FWIW, I do NOT see this on EXT4.

I very much doubt anyone has ever tested 64k blocks on ext3. There were
some extensions made to support 64k blocks with ext4, that had to do
with encoding the directory entry rec_len fields (which is 16 bits and will
overflow when trying to store the value 65536, as you have discovered).

Bottom line, it's not so much that EXT3 handling for 64k blocks was ever
*implemented*, as much as no one really thought about it much when
they set the #define's for maximum block size supported. :-)

64k block sizes hasn't received much testing on ext4 as far as I know, but
there was one developer who noted the dirent encoding problem and
proposed a fix.

Is there a particular reason why you care about this with ext3? Ext4 does
provide a superset of the features in ext3...

-- Ted