Merge pull request #39320 from microsoft/jjh/39290alternate

Windows: Don't attempt detach VHD for R/O layers
This commit is contained in:
Sebastiaan van Stijn 2019-06-05 12:25:40 +02:00 committed by GitHub
commit 55ad894d63
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 8 additions and 5 deletions

View File

@ -338,11 +338,14 @@ func (d *Driver) Remove(id string) error {
// If permission denied, it's possible that the scratch is still mounted, an
// artifact after a hard daemon crash for example. Worth a shot to try detaching it
// before retrying the rename.
if detachErr := vhd.DetachVhd(filepath.Join(layerPath, "sandbox.vhdx")); detachErr != nil {
return errors.Wrapf(err, "failed to detach VHD: %s", detachErr)
}
if renameErr := os.Rename(layerPath, tmpLayerPath); renameErr != nil && !os.IsNotExist(renameErr) {
return errors.Wrapf(err, "second rename attempt following detach failed: %s", renameErr)
sandbox := filepath.Join(layerPath, "sandbox.vhdx")
if _, statErr := os.Stat(sandbox); statErr == nil {
if detachErr := vhd.DetachVhd(sandbox); detachErr != nil {
return errors.Wrapf(err, "failed to detach VHD: %s", detachErr)
}
if renameErr := os.Rename(layerPath, tmpLayerPath); renameErr != nil && !os.IsNotExist(renameErr) {
return errors.Wrapf(err, "second rename attempt following detach failed: %s", renameErr)
}
}
}
if err := hcsshim.DestroyLayer(d.info, tmpID); err != nil {