unionfs
no FreeBSD realmente é tão ruim assim.
Se houver arquivos com o mesmo nome nas camadas inferior e superior, o kernel retornará ambos , e as duplicatas terão que ser filtradas no espaço do usuário.
Citando a fonte de opendir(3)
no FreeBSD:
/*
* The strategy here is to read all the directory
* entries into a buffer, sort the buffer, and
* remove duplicate entries by setting the inode
* number to zero.
*
* We reopen the directory because _getdirentries()
* on a MNT_UNION mount modifies the open directory,
* making it refer to the lower directory after the
* upper directory's entries are exhausted.
* This would otherwise break software that uses
* the directory descriptor for fchdir or *at
* functions, such as fts.c.
*/
Se isso não é suficiente para virar o estômago, então eu não sei o que vai; -)