aboutsummaryrefslogtreecommitdiff
path: root/internal/fusefrontend
diff options
context:
space:
mode:
Diffstat (limited to 'internal/fusefrontend')
-rw-r--r--internal/fusefrontend/dircache.go29
-rw-r--r--internal/fusefrontend/root_node.go6
2 files changed, 24 insertions, 11 deletions
diff --git a/internal/fusefrontend/dircache.go b/internal/fusefrontend/dircache.go
index ea0d1c8..6732de1 100644
--- a/internal/fusefrontend/dircache.go
+++ b/internal/fusefrontend/dircache.go
@@ -151,17 +151,24 @@ func (d *dirCache) expireThread() {
for {
time.Sleep(60 * time.Second)
d.Clear()
- if enableStats {
- d.Lock()
- lookups := d.lookups
- hits := d.hits
- d.lookups = 0
- d.hits = 0
- d.Unlock()
- if lookups > 0 {
- fmt.Printf("dirCache: hits=%3d lookups=%3d, rate=%3d%%\n", hits, lookups, (hits*100)/lookups)
- }
- }
+ d.stats()
+ }
+}
+
+// stats prints hit rate statistics and resets the counters. No-op if
+// enableStats == false.
+func (d *dirCache) stats() {
+ if !enableStats {
+ return
+ }
+ d.Lock()
+ lookups := d.lookups
+ hits := d.hits
+ d.lookups = 0
+ d.hits = 0
+ d.Unlock()
+ if lookups > 0 {
+ fmt.Printf("dirCache: hits=%3d lookups=%3d, rate=%3d%%\n", hits, lookups, (hits*100)/lookups)
}
}
diff --git a/internal/fusefrontend/root_node.go b/internal/fusefrontend/root_node.go
index 2b4ad24..3a2ecf3 100644
--- a/internal/fusefrontend/root_node.go
+++ b/internal/fusefrontend/root_node.go
@@ -76,6 +76,12 @@ func NewRootNode(args Args, c *contentenc.ContentEnc, n nametransform.NameTransf
return rn
}
+// main.doMount() calls this after unmount
+func (rn *RootNode) AfterUnmount() {
+ // print stats before we exit
+ rn.dirCache.stats()
+}
+
// mangleOpenFlags is used by Create() and Open() to convert the open flags the user
// wants to the flags we internally use to open the backing file.
// The returned flags always contain O_NOFOLLOW.