A "directory entry" (dentry) egy belső adat szerkezet, amelyet arra használnak, hogy benne a filerendszer-beli file keresések (lookups) eredményeit tárolják. A "dentry cache" tartalmaz egy rakás frissen használt dentry-t, amely egy hasznos dolog. A dentry bejegyzések nem mások, mint azon fileok listája, amelyeket a legutóbb használtunk. Ez hasznos lehet akkor, ha rövid időn belül többször akarunk ugyanahhoz a filehoz hozzáférni. Megkeresni egy filet a dentry cacheben sokkal kevesebb időt (és erőforrást) vesz igénybe, mintha egy teljes filerendszer lookup-ot csinalnánk.A kernel rendelkezik egy negatív dentry lehetőséggel is. Nem nehéz kitalálni, hogy ez mire jó. Igen arra, hogy a nem létező fileok listáját tartalmazza. Andrea Arcangeli nem régen figyelmeztetett arra, hogy a negatív dentry-k nagy mennyiségű memóriát "zabálnak" meg. Az általa végzett kisérletek alatt azt tapasztalta hogy a negatív dentry-k memória lék módjára "megették" a memóriát. Az üzenetében küldött is egy patchet, amely azt hivatott elvégezni, hogy a negatív dentry bejegyzéseket gyorsan tisztítsa ki a memóriából.
A levélből jó kis thread alakult ki a Linux listán. A negatív dentry-k "ez a file nem létezik" bejegyzései fontos információt hordoznak. Pl. egy strace futtatása egy GNOME alkalmazáson egy csomó filerendszer-beli lookupot eredményezhet (a millió kapcsolódó library miatt) , vagy az apache-nak állandóan ellenőriznie kellene a .htaccess filet, a shellnek állandóan kutatnia kellene a végrehajtható állományok után, stb. Sokkal jobban járunk, ha egy bejegyzésből "bányásszuk" az infót arról, hogy melyik file nem létezik, mintsem ezt egy a rendszert jobban igénybe vevő rendszerhívással tennénk meg, és állandóan keresnénk a fileokat.
Arcangeli szerint a negatív dentry szerepe eléggé másodlagos.
Linus ezt cáfolja:
Arcangeli:
Negative dentries should be only temporary entities, for example between the allocation of the dentry and the create of the inode, they shouldn't be left around waiting the vm to collect them.
Torvalds:
Wrong. Negative dentries are very useful for caching negative lookups: look at the average startup sequence of any program linked with glibc, and depending on your setup you will notice how it tries to open a _lot_ of a
files that do not exist (the "depending on your setup" comes from the fact that it depends on things like how quickly it finds your "locale" setup from its locale path - you may have one of the setups that puts it in the
first location glibc searches etc).
Tehát a negatív dentry-k maradnak a továbbra is.