Hello, Currently, libext2fs does not implement adding entry into htree directory. It just bluntly clears EXT2_INDEX_FL and then treats the directory as non-indexed. This breaks when metadata checksums are enabled and although ext2fs_link() tries to fixup the directory, it doesn't always fixup all the checksums and I have some doubts about practicality of just discarding htree information for really large directories. This patch series implements full support for adding entry into htree directory and some tests to test the functionality. The first patch in the series is somewhat unrelated, it just clarifies handling of overflown directory i_nlink handling in e2fsck which confused me initially when analyzing the issue. The second patch fixes a bug in e2fsck when rehashing indexed directories which I've found during testing my series. The third patch prepares ext2fs_mkdir() and ext2fs_symlink() to safely work with ext2fs_link() - this demonstrates there's a breakage potential in the following changes to ext2fs_link() for external applications using ext2fs_link() because it can now modify the directory inode and allocate blocks. If people are concerned about this, we could create ext2fs_link2() with the new behavior and just restrict ext2fs_link() to bail with error when called on indexed directory with metadata_csum enabled. Next three patches implement the support for linking into indexed directories and tests. The last patch then fixes tune2fs to properly recompute directory checksums when disabling dir_index feature. Changes since v1: * Fixed growing of h-tree to 3-levels * Added e2fsck fix * Added tune2fs fix * Fixed ext2fs_mkdir() and ext2fs_symlink() to work with new ext2fs_link() * Reworked tests Honza