diff options
author | Jakob Unterwurzacher | 2018-07-01 15:48:53 +0200 |
---|---|---|
committer | Jakob Unterwurzacher | 2018-07-01 20:56:22 +0200 |
commit | 1a18d8e6098633f27c228f6ebce8881a061df54c (patch) | |
tree | 971092918f01b2754d0e13ebfa6a3c3cc8587378 /internal/fusefrontend/fs.go | |
parent | 283184dd5aed89b19c15cbc9ca9ec23d96784049 (diff) |
fsck: rename "CorruptItems" channel to "MitigatedCorruptions"
Make it clear that this channel is only used to report corruptions
that are transparently mitigated and do not return an error to
the user.
Diffstat (limited to 'internal/fusefrontend/fs.go')
-rw-r--r-- | internal/fusefrontend/fs.go | 24 |
1 files changed, 16 insertions, 8 deletions
diff --git a/internal/fusefrontend/fs.go b/internal/fusefrontend/fs.go index 582e6a1..f66e6d4 100644 --- a/internal/fusefrontend/fs.go +++ b/internal/fusefrontend/fs.go @@ -38,11 +38,15 @@ type FS struct { // This lock is used by openWriteOnlyFile() to block concurrent opens while // it relaxes the permissions on a file. openWriteOnlyLock sync.RWMutex - // CorruptItems is filled with file or xattr names that have been - // skipped (ignored) because they were corrupt. This is used by fsck - // to inform the user. - // Use the reportCorruptItem() function to push an item. - CorruptItems chan string + // MitigatedCorruptions is used to report data corruption that is internally + // mitigated by ignoring the corrupt item. For example, when OpenDir() finds + // a corrupt filename, we still return the other valid filenames. + // The corruption is logged to syslog to inform the user, and in addition, + // the corrupt filename is logged to this channel via + // reportMitigatedCorruption(). + // "gocryptfs -fsck" reads from the channel to also catch these transparently- + // mitigated corruptions. + MitigatedCorruptions chan string } var _ pathfs.FileSystem = &FS{} // Verify that interface is implemented. @@ -607,12 +611,16 @@ func (fs *FS) Access(path string, mode uint32, context *fuse.Context) (code fuse return fuse.ToStatus(syscall.Access(cPath, mode)) } -func (fs *FS) reportCorruptItem(item string) { - if fs.CorruptItems == nil { +// reportMitigatedCorruption is used to report a corruption that was transparently +// mitigated and did not return an error to the user. Pass the name of the corrupt +// item (filename for OpenDir(), xattr name for ListXAttr() etc). +// See the MitigatedCorruptions channel for more info. +func (fs *FS) reportMitigatedCorruption(item string) { + if fs.MitigatedCorruptions == nil { return } select { - case fs.CorruptItems <- item: + case fs.MitigatedCorruptions <- item: case <-time.After(1 * time.Second): tlog.Warn.Printf("BUG: reportCorruptItem: timeout") //debug.PrintStack() |