aboutsummaryrefslogtreecommitdiff
path: root/pathfs_frontend
diff options
context:
space:
mode:
authorJakob Unterwurzacher2016-01-24 19:43:21 +0100
committerJakob Unterwurzacher2016-01-24 19:43:21 +0100
commit4259c8f7ebc9f5d167556ed142e82e8232706de6 (patch)
tree081f6951b1c251e77a89daeb2652b144699c2952 /pathfs_frontend
parent8fb32aab683959ca8aefac55090dbfa39f827682 (diff)
Only warn once for unsupported fallocate(2) and truncate(2)
Also, print the inode number in Ftruncate warnings.
Diffstat (limited to 'pathfs_frontend')
-rw-r--r--pathfs_frontend/file.go12
-rw-r--r--pathfs_frontend/fs.go8
2 files changed, 16 insertions, 4 deletions
diff --git a/pathfs_frontend/file.go b/pathfs_frontend/file.go
index 522b9c1..ceb9216 100644
--- a/pathfs_frontend/file.go
+++ b/pathfs_frontend/file.go
@@ -336,7 +336,7 @@ func (f *file) Truncate(newSize uint64) fuse.Status {
err := syscall.Ftruncate(int(f.fd.Fd()), 0)
f.fdLock.Unlock()
if err != nil {
- cryptfs.Warn.Printf("Ftruncate(fd, 0) returned error: %v", err)
+ cryptfs.Warn.Printf("ino%d: Ftruncate(fd, 0) returned error: %v", f.ino, err)
return fuse.ToStatus(err)
}
// Truncate to zero kills the file header
@@ -348,7 +348,7 @@ func (f *file) Truncate(newSize uint64) fuse.Status {
// the file
fi, err := f.fd.Stat()
if err != nil {
- cryptfs.Warn.Printf("Truncate: Fstat failed: %v", err)
+ cryptfs.Warn.Printf("ino%d: Truncate: Fstat failed: %v", f.ino, err)
return fuse.ToStatus(err)
}
oldSize := f.cfs.CipherSizeToPlainSize(uint64(fi.Size()))
@@ -455,8 +455,14 @@ func (f *file) GetAttr(a *fuse.Attr) fuse.Status {
}
// Allocate - FUSE call, fallocate(2)
+var allocateWarned bool
+
func (f *file) Allocate(off uint64, sz uint64, mode uint32) fuse.Status {
- cryptfs.Warn.Printf("Fallocate is not supported, returning ENOSYS - see https://github.com/rfjakob/gocryptfs/issues/1")
+ // Only warn once
+ if !allocateWarned {
+ cryptfs.Warn.Printf("fallocate(2) is not supported, returning ENOSYS - see https://github.com/rfjakob/gocryptfs/issues/1")
+ allocateWarned = true
+ }
return fuse.ENOSYS
}
diff --git a/pathfs_frontend/fs.go b/pathfs_frontend/fs.go
index c7dfc82..2b26f6f 100644
--- a/pathfs_frontend/fs.go
+++ b/pathfs_frontend/fs.go
@@ -198,8 +198,14 @@ func (fs *FS) Mknod(path string, mode uint32, dev uint32, context *fuse.Context)
return fs.FileSystem.Mknod(cPath, mode, dev, context)
}
+var truncateWarned bool
+
func (fs *FS) Truncate(path string, offset uint64, context *fuse.Context) (code fuse.Status) {
- cryptfs.Warn.Printf("Truncate of a closed file is not supported, returning ENOSYS")
+ // Only warn once
+ if !truncateWarned {
+ cryptfs.Warn.Printf("truncate(2) is not supported, returning ENOSYS - use ftruncate(2)")
+ truncateWarned = true
+ }
return fuse.ENOSYS
}