From 5190cc09bbc8afca75986dbb14f09e62eda33b61 Mon Sep 17 00:00:00 2001 From: Jakob Unterwurzacher Date: Sun, 6 Aug 2017 21:59:15 +0200 Subject: nametransform: move diriv cache into it's own package Needs some space to grow. renamed: internal/nametransform/diriv_cache.go -> internal/nametransform/dirivcache/dirivcache.go --- internal/nametransform/diriv_cache.go | 63 ----------------------------------- 1 file changed, 63 deletions(-) delete mode 100644 internal/nametransform/diriv_cache.go (limited to 'internal/nametransform/diriv_cache.go') diff --git a/internal/nametransform/diriv_cache.go b/internal/nametransform/diriv_cache.go deleted file mode 100644 index 82c5bd3..0000000 --- a/internal/nametransform/diriv_cache.go +++ /dev/null @@ -1,63 +0,0 @@ -package nametransform - -import ( - "sync" - "time" -) - -// Single-entry DirIV cache. Stores the directory IV and the encrypted -// path. -type dirIVCache struct { - // Directory the DirIV belongs to - dir string - // Time the entry expires. - // The cached entry my become out-of-date if the ciphertext directory is - // modifed behind the back of gocryptfs. Having an expiry time limits the - // inconstency to one second, like attr_timeout does for the kernel - // getattr cache. - expiry time.Time - - // The DirIV - iv []byte - // Ecrypted version of "dir" - cDir string - - // Invalidated? - cleared bool - sync.RWMutex -} - -// lookup - fetch entry for "dir" from the cache -func (c *dirIVCache) lookup(dir string) ([]byte, string) { - c.RLock() - defer c.RUnlock() - if c.cleared || c.dir != dir { - return nil, "" - } - if time.Since(c.expiry) > 0 { - c.cleared = true - return nil, "" - } - return c.iv, c.cDir -} - -// store - write entry for "dir" into the cache -func (c *dirIVCache) store(dir string, iv []byte, cDir string) { - c.Lock() - defer c.Unlock() - c.cleared = false - c.iv = iv - c.dir = dir - c.cDir = cDir - // Set expiry time one second into the future - c.expiry = time.Now().Add(1 * time.Second) -} - -// Clear ... clear the cache. -// Exported because it is called from fusefrontend when directories are -// renamed or deleted. -func (c *dirIVCache) Clear() { - c.Lock() - defer c.Unlock() - c.cleared = true -} -- cgit v1.2.3