// LOCKS_EXCLUDED(fs.mu) func (fs *fileSystem) SetInodeAttributes( op *fuseops.SetInodeAttributesOp) (err error) { // Find the inode. fs.mu.Lock() in := fs.inodes[op.Inode] fs.mu.Unlock() in.Lock() defer in.Unlock() // The only thing we support changing is size, and then only for directories. if op.Mode != nil || op.Atime != nil || op.Mtime != nil { err = fuse.ENOSYS return } file, ok := in.(*inode.FileInode) if !ok { err = fuse.ENOSYS return } // Set the size, if specified. if op.Size != nil { if err = file.Truncate(op.Context(), int64(*op.Size)); err != nil { err = fmt.Errorf("Truncate: %v", err) return } } // Fill in the response. op.Attributes, err = in.Attributes(op.Context()) if err != nil { return } return }