libgocryptfs/internal
Jakob Unterwurzacher 84e702126a fusefrontend: implement recursive diriv caching
The new contrib/maxlen.bash showed that we have exponential
runtime with respect to directory depth.

The new recursive diriv caching is a lot smarter as it caches
intermediate lookups. maxlen.bash now completes in a few seconds.

xfstests results same as
2d158e4c82/screenlog.0 :

  Failures: generic/035 generic/062 generic/080 generic/093 generic/099 generic/215 generic/285 generic/319 generic/426 generic/444 generic/467 generic/477 generic/523
  Failed 13 of 580 tests

benchmark.bash results are identical:

  $ ./benchmark.bash
  Testing gocryptfs at /tmp/benchmark.bash.BdQ: gocryptfs v2.0.1-17-g6b09bc0; go-fuse v2.1.1-0.20210611132105-24a1dfe6b4f8; 2021-06-25 go1.16.5 linux/amd64
  /tmp/benchmark.bash.BdQ.mnt is a mountpoint
  WRITE: 262144000 bytes (262 MB, 250 MiB) copied, 0,4821 s, 544 MB/s
  READ:  262144000 bytes (262 MB, 250 MiB) copied, 0,266061 s, 985 MB/s
  UNTAR: 8,280
  MD5:   4,564
  LS:    1,745
  RM:    2,244
2021-06-25 13:56:53 +02:00
..
configfile fido2: hide "FIDO2" in gocryptfs.conf if not used 2021-06-20 18:09:21 +02:00
contentenc Improve startup debug output 2021-06-21 11:32:04 +02:00
cryptocore Improve startup debug output 2021-06-21 11:32:04 +02:00
ctlsocksrv ctlsock: create exported ctlsock client library 2020-05-09 17:36:41 +02:00
ensurefds012 main: Run 'ensure fds' code early during the program startup. 2019-01-05 16:12:16 +01:00
exitcodes Add support for FIDO2 tokens 2020-09-12 18:06:54 +02:00
fido2 fido2: quote argument strings in debug output 2021-06-03 22:03:21 +02:00
fusefrontend fusefrontend: implement recursive diriv caching 2021-06-25 13:56:53 +02:00
fusefrontend_reverse nametransform: delete NameTransformer interface 2021-06-21 11:53:33 +02:00
inomap v2api: -sharestorage: disable hard link tracking & add tests 2021-03-07 17:22:29 +01:00
nametransform nametransform: rename BadNameFlag to BadnameSuffix 2021-06-21 12:12:44 +02:00
openfiletable inomap: split into separate package 2020-04-13 14:54:04 +02:00
pathiv pathiv: fix test failure on Go 1.6 2017-05-31 08:21:36 +02:00
readpassword main: accept multiple -passfile options 2020-05-17 19:31:04 +02:00
serialize_reads serialize_reads: drop superflous "continue" 2019-09-08 21:19:44 +02:00
siv_aead siv_aead: create private key copy and implement wiping 2018-02-18 16:01:46 +01:00
speed -speed: note that XChaCha20 is not selectable 2021-05-18 09:53:23 +02:00
stupidgcm stupidgcm: prefer Go stdlib over OpenSSL on Apple M1 2021-05-26 09:20:22 +02:00
syscallcompat syscallcompat: drop obsolete wrappers 2021-06-05 15:06:30 +02:00
tlog fsck: redirect go-fuse noise to syslog 2021-05-18 18:38:23 +02:00