Hello, I have always been surprised by the slowness of a mere rm -fr. Looking a bit inside, I see that diskfs_dirremove_hard() calls diskfs_file_update (dp, 1) (as does diskfs_truncate, diskfs_direnter_hard, and diskfs_dirrewrite_hard). diskfs_file_update then calls pager_sync on the pager, which thus writes back the whole ext2fs pager!
This sounds a bit excessive to me, an unlink could just record it in memory and actually sync later. Also, the wait flag is set, so we really waits for all I/Os, which basically means strictly serializing file removals: remove one file, wait for the disk to have done it (~10ms), remove the next one, etc. I guess this is for safety reasons against crashes, but isn't the sync option there for such kind of concern? Samuel