MCPcopy
hub / github.com/google/gvisor / writeAndCheck

Method writeAndCheck

tools/gpu/drivers/install_driver.go:157–190  ·  view source on GitHub ↗
(f *os.File, reader io.ReadCloser)

Source from the content-addressed store, hash-verified

155}
156
157func (i *Installer) writeAndCheck(f *os.File, reader io.ReadCloser) error {
158 checksum := sha256.New()
159 buf := make([]byte, 1024*1024)
160 for {
161 n, err := reader.Read(buf[0:])
162 if err != nil && err != io.EOF {
163 return fmt.Errorf("failed to read: %w", err)
164 }
165 if n == 0 || err == io.EOF {
166 break
167 }
168 if _, err := checksum.Write(buf[:n]); err != nil {
169 return fmt.Errorf("failed to write: %w", err)
170 }
171 if _, err := f.Write(buf[:n]); err != nil {
172 return fmt.Errorf("failed to write: %w", err)
173 }
174 }
175 gotChecksum := fmt.Sprintf("%x", checksum.Sum(nil))
176 c, ok := i.expectedChecksumFunc(i.requestedVersion)
177 if !ok {
178 return fmt.Errorf("requested driver %q is not supported", i.requestedVersion)
179 }
180
181 wantChecksum, err := c.Checksum()
182 if err != nil {
183 return fmt.Errorf("failed to get checksum for driver %q: %v", i.requestedVersion, err)
184 }
185
186 if gotChecksum != wantChecksum {
187 return fmt.Errorf("driver %q checksum mismatch: got %q, want %q", i.requestedVersion, gotChecksum, wantChecksum)
188 }
189 return nil
190}
191
192func getCurrentDriver() (nvconf.DriverVersion, error) {
193 _, err := os.Stat(nvidiaSMIPath)

Callers 1

MaybeInstallMethod · 0.95

Calls 6

SumMethod · 0.80
NewMethod · 0.65
ReadMethod · 0.65
ErrorfMethod · 0.65
WriteMethod · 0.65
ChecksumMethod · 0.65

Tested by

no test coverage detected