summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--internal/fusefrontend/file.go3
-rw-r--r--tests/matrix/matrix_test.go5
2 files changed, 5 insertions, 3 deletions
diff --git a/internal/fusefrontend/file.go b/internal/fusefrontend/file.go
index 796aee8..b625f6c 100644
--- a/internal/fusefrontend/file.go
+++ b/internal/fusefrontend/file.go
@@ -391,9 +391,10 @@ func (f *file) GetAttr(a *fuse.Attr) fuse.Status {
const BrokenAtimeOmit = true
func (f *file) Utimens(a *time.Time, m *time.Time) fuse.Status {
- if a == nil && BrokenAtimeOmit {
+ if BrokenAtimeOmit {
// Band-aid for a nil pointer crash, described in
// https://github.com/rfjakob/gocryptfs/issues/48
+ // Also band-aid for "mtime gets set to atime".
//
// TODO drop this once https://github.com/hanwen/go-fuse/pull/131 is
// merged
diff --git a/tests/matrix/matrix_test.go b/tests/matrix/matrix_test.go
index 774a7ae..0dcc76b 100644
--- a/tests/matrix/matrix_test.go
+++ b/tests/matrix/matrix_test.go
@@ -660,7 +660,8 @@ type utimesTestcaseStruct struct {
func compareUtimes(want [2]syscall.Timespec, actual [2]syscall.Timespec) error {
tsNames := []string{"atime", "mtime"}
for i := range want {
- if i == 1 {
+ if fusefrontend.BrokenAtimeOmit && i == 0 {
+ // Don't check atime. It's broken in go-fuse.
// TODO remove this once the pull request is merged:
// https://github.com/hanwen/go-fuse/pull/131
continue
@@ -702,7 +703,7 @@ func doTestUtimesNano(t *testing.T, path string) {
if fusefrontend.BrokenAtimeOmit {
// TODO remove this once the pull request is merged:
// https://github.com/hanwen/go-fuse/pull/131
- utimeTestcases = utimeTestcases[:1]
+ utimeTestcases = utimeTestcases[0:0]
}
for i, tc := range utimeTestcases {
err := syscall.UtimesNano(path, tc.in[:])