Update hcsshim to v0.6.10
Signed-off-by: Darren Stahl <darst@microsoft.com>
This commit is contained in:
		
							
								
								
									
										54
									
								
								vendor/github.com/Microsoft/hcsshim/baselayer.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										54
									
								
								vendor/github.com/Microsoft/hcsshim/baselayer.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -10,7 +10,7 @@ import (
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
type baseLayerWriter struct {
 | 
			
		||||
	root         string
 | 
			
		||||
	root         *os.File
 | 
			
		||||
	f            *os.File
 | 
			
		||||
	bw           *winio.BackupFileWriter
 | 
			
		||||
	err          error
 | 
			
		||||
@@ -26,10 +26,10 @@ type dirInfo struct {
 | 
			
		||||
// reapplyDirectoryTimes reapplies directory modification, creation, etc. times
 | 
			
		||||
// after processing of the directory tree has completed. The times are expected
 | 
			
		||||
// to be ordered such that parent directories come before child directories.
 | 
			
		||||
func reapplyDirectoryTimes(dis []dirInfo) error {
 | 
			
		||||
func reapplyDirectoryTimes(root *os.File, dis []dirInfo) error {
 | 
			
		||||
	for i := range dis {
 | 
			
		||||
		di := &dis[len(dis)-i-1] // reverse order: process child directories first
 | 
			
		||||
		f, err := winio.OpenForBackup(di.path, syscall.GENERIC_READ|syscall.GENERIC_WRITE, syscall.FILE_SHARE_READ, syscall.OPEN_EXISTING)
 | 
			
		||||
		f, err := openRelative(di.path, root, syscall.GENERIC_READ|syscall.GENERIC_WRITE, syscall.FILE_SHARE_READ, _FILE_OPEN, _FILE_DIRECTORY_FILE)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return err
 | 
			
		||||
		}
 | 
			
		||||
@@ -75,12 +75,6 @@ func (w *baseLayerWriter) Add(name string, fileInfo *winio.FileBasicInfo) (err e
 | 
			
		||||
		w.hasUtilityVM = true
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	path := filepath.Join(w.root, name)
 | 
			
		||||
	path, err = makeLongAbsPath(path)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	var f *os.File
 | 
			
		||||
	defer func() {
 | 
			
		||||
		if f != nil {
 | 
			
		||||
@@ -88,27 +82,23 @@ func (w *baseLayerWriter) Add(name string, fileInfo *winio.FileBasicInfo) (err e
 | 
			
		||||
		}
 | 
			
		||||
	}()
 | 
			
		||||
 | 
			
		||||
	createmode := uint32(syscall.CREATE_NEW)
 | 
			
		||||
	extraFlags := uint32(0)
 | 
			
		||||
	if fileInfo.FileAttributes&syscall.FILE_ATTRIBUTE_DIRECTORY != 0 {
 | 
			
		||||
		err := os.Mkdir(path, 0)
 | 
			
		||||
		if err != nil && !os.IsExist(err) {
 | 
			
		||||
			return err
 | 
			
		||||
		}
 | 
			
		||||
		createmode = syscall.OPEN_EXISTING
 | 
			
		||||
		extraFlags |= _FILE_DIRECTORY_FILE
 | 
			
		||||
		if fileInfo.FileAttributes&syscall.FILE_ATTRIBUTE_REPARSE_POINT == 0 {
 | 
			
		||||
			w.dirInfo = append(w.dirInfo, dirInfo{path, *fileInfo})
 | 
			
		||||
			w.dirInfo = append(w.dirInfo, dirInfo{name, *fileInfo})
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	mode := uint32(syscall.GENERIC_READ | syscall.GENERIC_WRITE | winio.WRITE_DAC | winio.WRITE_OWNER | winio.ACCESS_SYSTEM_SECURITY)
 | 
			
		||||
	f, err = winio.OpenForBackup(path, mode, syscall.FILE_SHARE_READ, createmode)
 | 
			
		||||
	f, err = openRelative(name, w.root, mode, syscall.FILE_SHARE_READ, _FILE_CREATE, extraFlags)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return makeError(err, "Failed to OpenForBackup", path)
 | 
			
		||||
		return makeError(err, "Failed to openRelative", name)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	err = winio.SetFileBasicInfo(f, fileInfo)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return makeError(err, "Failed to SetFileBasicInfo", path)
 | 
			
		||||
		return makeError(err, "Failed to SetFileBasicInfo", name)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	w.f = f
 | 
			
		||||
@@ -129,17 +119,7 @@ func (w *baseLayerWriter) AddLink(name string, target string) (err error) {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	linkpath, err := makeLongAbsPath(filepath.Join(w.root, name))
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	linktarget, err := makeLongAbsPath(filepath.Join(w.root, target))
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return os.Link(linktarget, linkpath)
 | 
			
		||||
	return linkRelative(target, w.root, name, w.root)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (w *baseLayerWriter) Remove(name string) error {
 | 
			
		||||
@@ -155,6 +135,10 @@ func (w *baseLayerWriter) Write(b []byte) (int, error) {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (w *baseLayerWriter) Close() error {
 | 
			
		||||
	defer func() {
 | 
			
		||||
		w.root.Close()
 | 
			
		||||
		w.root = nil
 | 
			
		||||
	}()
 | 
			
		||||
	err := w.closeCurrentFile()
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
@@ -162,18 +146,22 @@ func (w *baseLayerWriter) Close() error {
 | 
			
		||||
	if w.err == nil {
 | 
			
		||||
		// Restore the file times of all the directories, since they may have
 | 
			
		||||
		// been modified by creating child directories.
 | 
			
		||||
		err = reapplyDirectoryTimes(w.dirInfo)
 | 
			
		||||
		err = reapplyDirectoryTimes(w.root, w.dirInfo)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return err
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		err = ProcessBaseLayer(w.root)
 | 
			
		||||
		err = ProcessBaseLayer(w.root.Name())
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return err
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if w.hasUtilityVM {
 | 
			
		||||
			err = ProcessUtilityVMImage(filepath.Join(w.root, "UtilityVM"))
 | 
			
		||||
			err := ensureNotReparsePointRelative("UtilityVM", w.root)
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return err
 | 
			
		||||
			}
 | 
			
		||||
			err = ProcessUtilityVMImage(filepath.Join(w.root.Name(), "UtilityVM"))
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return err
 | 
			
		||||
			}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user