d_hash(dentry, name)
Creates a hash value; this function is a filesystem-specific hash function for the dentry hash table. The dentry parameter identifies the directory containing the component. The name parameter points to a structure containing both the pathname component to be looked up and the value produced by the hash function.
...
The hash table is implemented by means of a dentry_hashtable array. Each element is a pointer to a list of dentries that hash to the same hash table value. The array's size usually depends on the amount of RAM installed in the system; the default value is 256 entries per megabyte of RAM. The d_hash field of the dentry object contains pointers to the adjacent elements in the list associated with a single hash value. The hash function produces its value from both the dentry object of the directory and the filename.Understanding the Linux Kernel
Vamos supor que temos o seguinte caminho "/ home / test / file". Agora o VFS cria dentries para "/", "home", "test" e "file".
Agora eu não entendo como o valor de hash correspondente para cada dentry é calculado e como o VFS procura um nome de caminho através dessas dentries em cache na tabela de hash.
No meu entendimento, o VFS faz o seguinte:
Mas em alguns sites na Internet parece que o VFS apenas hashes o nome do caminho completo de uma só vez e procura o dentry correspondente com o valor de hash resultante.
Então seria ótimo se alguém trouxesse alguma luz para a escuridão.