Friday, 2 May 2014

kernel: EXT3-fs warning (device hda3): ext3_dx_add_entry: Directory index full!

kernel: EXT3-fs warning (device hda3): ext3_dx_add_entry: Directory index full!

To trace the actual directory limit:

find / -type d | ( while read A; do B=`ls -l "$A" | wc -l`; echo $B $A; done) | sort -n

It was not a bug, but a limit. Ext3's hash directores are limited to depth of 3 blocks, which normally is not a problem if a 4k blocksize is being used, since each internal node is small; only 8 bytes. So there is a fanout of 508 for each internal node, and two internal nodes gets to over 250,000 4k directory blocks. But with a 1k blocksize, the internal node fanout is only 124, so that only gets a bit more than 15,000 1k directory blocks.

The enduser recreated the file system using the default 4k blocksize to avoid this situation.

:-)

No comments:

Post a Comment