I have no objection to this at all, but I think it will lead to a slightly
more complex implementation. We even discussed in the distant past to
make large directories a series of 4kB "chunks", for fs blocksize >= 4kB.
This has negative implications for large filenames because the internal
free space fragmentation is high, but has the advantage that it might
eventually still be usable if we can get blocksize > PAGE_SIZE.
The difficulty is that when freeing dir entires you would have to be
concerned with a merging a dir_entry that is spanning the middle
of a 2^16 block.
That is easy, just don't let an entry span subblocks by not letting
delete merge past the end of a subblock, just a minor tweak. New block
initialization needs an outer loop on subblocks and that's it, I think.
I've been working on a patch implementing this feature. It currently works w/o htree.
With dir_index, the difficulty is that an entry can span subblocks after a leaf
block split.