func (n *pathInode) Utimens(file nodefs.File, atime *time.Time, mtime *time.Time, context *fuse.Context) (code fuse.Status) { // Note that Linux currently (Linux 4.4) DOES NOT pass a file descriptor // to FUSE for futimens. We still check because it may change in the future. if file != nil { code = file.Utimens(atime, mtime) if code != fuse.ENOSYS { return code } } files := n.Inode().Files(fuse.O_ANYWRITE) for _, f := range files { // TODO - pass context code = f.Utimens(atime, mtime) if code.Ok() { return code } } if len(files) == 0 || code == fuse.ENOSYS || code == fuse.EBADF { code = n.fs.Utimens(n.GetPath(), atime, mtime, context) } return code }