aboutsummaryrefslogtreecommitdiff
path: root/internal/fusefrontend_reverse/rpath.go
diff options
context:
space:
mode:
authorJakob Unterwurzacher2017-05-22 22:26:59 +0200
committerJakob Unterwurzacher2017-05-22 22:36:54 +0200
commit245b84c887955d12cd1113e9a6701ee7338c8255 (patch)
treed810d14f63800a81c7fa073e91f71c34bdfb963e /internal/fusefrontend_reverse/rpath.go
parent5672e41f5a1ac0fb6c46e99c6bdeae0946a448c7 (diff)
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
Diffstat (limited to 'internal/fusefrontend_reverse/rpath.go')
0 files changed, 0 insertions, 0 deletions