libgocryptfs/internal
Jakob Unterwurzacher 245b84c887 nametransform: diriv cache: fall back to the grandparent
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
2017-05-22 22:36:54 +02:00
..
configfile exitcodes: specific codes for failure to read or write gocryptfs.conf 2017-05-14 14:30:50 +02:00
contentenc contentenc: downgrade "interrupted write?" warning to debug 2017-05-01 18:44:18 +02:00
cryptocore fix golint complaints 2017-04-29 14:50:58 +02:00
ctlsock Fix typos found by Misspell 2017-05-07 12:22:15 +02:00
exitcodes exitcodes: specific codes for failure to read or write gocryptfs.conf 2017-05-14 14:30:50 +02:00
fusefrontend fusefrontend: implement path decryption via ctlsock 2017-05-07 21:01:39 +02:00
fusefrontend_reverse fix golint complaints 2017-04-29 14:50:58 +02:00
nametransform nametransform: diriv cache: fall back to the grandparent 2017-05-22 22:36:54 +02:00
openfiletable openfiletable: rename WriteLock to ContentLock 2017-05-01 21:57:18 +02:00
prefer_openssl prefer_openssl: default to Go GCM on OSX 2016-12-10 21:04:17 +01:00
readpassword exitcodes: add code 22 for "password is empty" 2017-05-14 14:02:08 +02:00
serialize_reads fix golint complaints 2017-04-29 14:50:58 +02:00
siv_aead fix golint complaints 2017-04-29 14:50:58 +02:00
speed fix golint complaints 2017-04-29 14:50:58 +02:00
stupidgcm exitcodes: pull all exit code definitions into the package 2017-05-07 22:16:22 +02:00
syscallcompat syscallcompat: OSX compat: fix variable warnings 2017-02-16 19:23:17 +01:00
tlog Drop Go 1.4 compatability code everywhere 2017-03-05 17:44:14 +01:00