diff options
author | David Gnedt | 2016-05-12 19:51:13 +0200 |
---|---|---|
committer | Jakob Unterwurzacher | 2016-05-12 23:24:39 +0200 |
commit | a93bcabe9c1dea14bf29b94cbddf62c1bec4d315 (patch) | |
tree | ad5830a100e04be6e3493d2769f67a4d7608146f /internal/fusefrontend | |
parent | 4ad9d4e444e4f75fd388078b617c411bfab762c8 (diff) |
Encrypt path in statfs() calls
Paths in statfs() calls were not encrypted resulting in
an Function not implemented error, when the unencrypted
path didn't exist in the underlying (encrypted)
filesystem.
$ df plain/existingdir
df: ‘plain/existingdir’: Function not implemented
Diffstat (limited to 'internal/fusefrontend')
-rw-r--r-- | internal/fusefrontend/fs.go | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/internal/fusefrontend/fs.go b/internal/fusefrontend/fs.go index d2465dd..b7528a1 100644 --- a/internal/fusefrontend/fs.go +++ b/internal/fusefrontend/fs.go @@ -228,6 +228,17 @@ func (fs *FS) Utimens(path string, Atime *time.Time, Mtime *time.Time, context * return fs.FileSystem.Utimens(cPath, Atime, Mtime, context) } +func (fs *FS) StatFs(path string) *fuse.StatfsOut { + if fs.isFiltered(path) { + return nil + } + cPath, err := fs.encryptPath(path) + if err != nil { + return nil + } + return fs.FileSystem.StatFs(cPath) +} + func (fs *FS) Readlink(path string, context *fuse.Context) (out string, status fuse.Status) { cPath, err := fs.encryptPath(path) if err != nil { |