245b84c887
When a user calls into a deep directory hierarchy, we often get a sequence like this from the kernel: LOOKUP a LOOKUP a/b LOOKUP a/b/c LOOKUP a/b/c/d The diriv cache was not effective for this pattern, because it was designed for this: LOOKUP a/a LOOKUP a/b LOOKUP a/c LOOKUP a/d By also using the cached entry of the grandparent we can avoid lots of diriv reads. This benchmark is against a large encrypted directory hosted on NFS: Before: $ time ls -R nfs-backed-mount > /dev/null real 1m35.976s user 0m0.248s sys 0m0.281s After: $ time ls -R nfs-backed-mount > /dev/null real 1m3.670s user 0m0.217s sys 0m0.403s |
||
---|---|---|
.. | ||
configfile | ||
contentenc | ||
cryptocore | ||
ctlsock | ||
exitcodes | ||
fusefrontend | ||
fusefrontend_reverse | ||
nametransform | ||
openfiletable | ||
prefer_openssl | ||
readpassword | ||
serialize_reads | ||
siv_aead | ||
speed | ||
stupidgcm | ||
syscallcompat | ||
tlog |