Update hcsshim and go-winio vendoring
* Update hcsshim to v0.8.14 * Update go-winio to v0.4.16 This brings in some vhd package changes from winio, and the compute storage api bindings for the shim. This is to facilitate some coming functionality for the windows snapshotter as well as possibly for future work down the line for the windows differ. Signed-off-by: Daniel Canter <dcanter@microsoft.com>
This commit is contained in:
		
							
								
								
									
										6
									
								
								go.mod
									
									
									
									
									
								
							
							
						
						
									
										6
									
								
								go.mod
									
									
									
									
									
								
							| @@ -4,9 +4,9 @@ go 1.15 | ||||
|  | ||||
| require ( | ||||
| 	github.com/BurntSushi/toml v0.3.1 | ||||
| 	github.com/Microsoft/go-winio v0.4.15 | ||||
| 	github.com/Microsoft/hcsshim v0.8.10 | ||||
| 	github.com/Microsoft/hcsshim/test v0.0.0-20201119174602-966bebae11b4 | ||||
| 	github.com/Microsoft/go-winio v0.4.16 | ||||
| 	github.com/Microsoft/hcsshim v0.8.14 | ||||
| 	github.com/Microsoft/hcsshim/test v0.0.0-20201218223536-d3e5debf77da | ||||
| 	github.com/containerd/aufs v0.0.0-20200908144142-dab0cbea06f4 | ||||
| 	github.com/containerd/btrfs v0.0.0-20201111183144-404b9149801e | ||||
| 	github.com/containerd/cgroups v0.0.0-20200824123100-0b889c03f102 | ||||
|   | ||||
							
								
								
									
										14
									
								
								go.sum
									
									
									
									
									
								
							
							
						
						
									
										14
									
								
								go.sum
									
									
									
									
									
								
							| @@ -31,17 +31,17 @@ github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym | ||||
| github.com/Microsoft/go-winio v0.4.11/go.mod h1:VhR8bwka0BXejwEJY73c50VrPtXAaKcyvVC4A4RozmA= | ||||
| github.com/Microsoft/go-winio v0.4.14/go.mod h1:qXqCSQ3Xa7+6tgxaGTIe4Kpcdsi+P8jBhyzoq1bpyYA= | ||||
| github.com/Microsoft/go-winio v0.4.15-0.20190919025122-fc70bd9a86b5/go.mod h1:tTuCMEN+UleMWgg9dVx4Hu52b1bJo+59jBh3ajtinzw= | ||||
| github.com/Microsoft/go-winio v0.4.15-0.20200908182639-5b44b70ab3ab/go.mod h1:tTuCMEN+UleMWgg9dVx4Hu52b1bJo+59jBh3ajtinzw= | ||||
| github.com/Microsoft/go-winio v0.4.15 h1:qkLXKzb1QoVatRyd/YlXZ/Kg0m5K3SPuoD82jjSOaBc= | ||||
| github.com/Microsoft/go-winio v0.4.15/go.mod h1:tTuCMEN+UleMWgg9dVx4Hu52b1bJo+59jBh3ajtinzw= | ||||
| github.com/Microsoft/go-winio v0.4.16-0.20201130162521-d1ffc52c7331/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugXOPRXwdLnMv0= | ||||
| github.com/Microsoft/go-winio v0.4.16 h1:FtSW/jqD+l4ba5iPBj9CODVtgfYAD8w2wS923g/cFDk= | ||||
| github.com/Microsoft/go-winio v0.4.16/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugXOPRXwdLnMv0= | ||||
| github.com/Microsoft/hcsshim v0.8.6/go.mod h1:Op3hHsoHPAvb6lceZHDtd9OkTew38wNoXnJs8iY7rUg= | ||||
| github.com/Microsoft/hcsshim v0.8.7-0.20190325164909-8abdbb8205e4/go.mod h1:Op3hHsoHPAvb6lceZHDtd9OkTew38wNoXnJs8iY7rUg= | ||||
| github.com/Microsoft/hcsshim v0.8.7/go.mod h1:OHd7sQqRFrYd3RmSgbgji+ctCwkbq2wbEYNSzOYtcBQ= | ||||
| github.com/Microsoft/hcsshim v0.8.9/go.mod h1:5692vkUqntj1idxauYlpoINNKeqCiG6Sg38RRsjT5y8= | ||||
| github.com/Microsoft/hcsshim v0.8.10 h1:k5wTrpnVU2/xv8ZuzGkbXVd3js5zJ8RnumPo5RxiIxU= | ||||
| github.com/Microsoft/hcsshim v0.8.10/go.mod h1:g5uw8EV2mAlzqe94tfNBNdr89fnbD/n3HV0OhsddkmM= | ||||
| github.com/Microsoft/hcsshim/test v0.0.0-20201119174602-966bebae11b4 h1:1Q14MTWJKwTKSXQqAumktvGuUZ5dZflHNm/sMgGa7/4= | ||||
| github.com/Microsoft/hcsshim/test v0.0.0-20201119174602-966bebae11b4/go.mod h1:IrOsC3sbIiki4idDR4z1Plxm8vAUM5dKN/HEVkRU0GI= | ||||
| github.com/Microsoft/hcsshim v0.8.14 h1:lbPVK25c1cu5xTLITwpUcxoA9vKrKErASPYygvouJns= | ||||
| github.com/Microsoft/hcsshim v0.8.14/go.mod h1:NtVKoYxQuTLx6gEq0L96c9Ju4JbRJ4nY2ow3VK6a9Lg= | ||||
| github.com/Microsoft/hcsshim/test v0.0.0-20201218223536-d3e5debf77da h1:sqPBuX6WumurdHaSRbS8xyyyP8Rf7kUpLUlJaN7rztw= | ||||
| github.com/Microsoft/hcsshim/test v0.0.0-20201218223536-d3e5debf77da/go.mod h1:5hlzMzRKMLyo42nCZ9oml8AdTlq/0cvIaBv6tK1RehU= | ||||
| github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= | ||||
| github.com/PuerkitoBio/purell v1.0.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= | ||||
| github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= | ||||
|   | ||||
							
								
								
									
										2
									
								
								vendor/github.com/Microsoft/go-winio/go.mod
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/github.com/Microsoft/go-winio/go.mod
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -3,7 +3,7 @@ module github.com/Microsoft/go-winio | ||||
| go 1.12 | ||||
|  | ||||
| require ( | ||||
| 	github.com/pkg/errors v0.8.1 | ||||
| 	github.com/pkg/errors v0.9.1 | ||||
| 	github.com/sirupsen/logrus v1.4.1 | ||||
| 	golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3 | ||||
| ) | ||||
|   | ||||
							
								
								
									
										6
									
								
								vendor/github.com/Microsoft/go-winio/go.sum
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								vendor/github.com/Microsoft/go-winio/go.sum
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -2,8 +2,8 @@ github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c | ||||
| github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= | ||||
| github.com/konsorten/go-windows-terminal-sequences v1.0.1 h1:mweAR1A6xJ3oS2pRaGiHgQ4OO8tzTaLawm8vnODuwDk= | ||||
| github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= | ||||
| github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I= | ||||
| github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= | ||||
| github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= | ||||
| github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= | ||||
| github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= | ||||
| github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= | ||||
| github.com/sirupsen/logrus v1.4.1 h1:GL2rEmy6nsikmW0r8opw9JIRScdMF5hA8cOYLH7In1k= | ||||
| @@ -12,7 +12,5 @@ github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+ | ||||
| github.com/stretchr/testify v1.2.2 h1:bSDNvY7ZPG5RlJ8otE/7V6gMiyenm9RtJ7IUVIAoJ1w= | ||||
| github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= | ||||
| golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= | ||||
| golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b h1:ag/x1USPSsqHud38I9BAC88qdNLDHHtQ4mlgQIZPPNA= | ||||
| golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||
| golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3 h1:7TYNF4UdlohbFwpNH04CoPMp1cHUZgO1Ebq5r2hIjfo= | ||||
| golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||
|   | ||||
							
								
								
									
										4
									
								
								vendor/github.com/Microsoft/go-winio/pipe.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								vendor/github.com/Microsoft/go-winio/pipe.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -429,10 +429,10 @@ type PipeConfig struct { | ||||
| 	// when the pipe is in message mode. | ||||
| 	MessageMode bool | ||||
|  | ||||
| 	// InputBufferSize specifies the size the input buffer, in bytes. | ||||
| 	// InputBufferSize specifies the size of the input buffer, in bytes. | ||||
| 	InputBufferSize int32 | ||||
|  | ||||
| 	// OutputBufferSize specifies the size the input buffer, in bytes. | ||||
| 	// OutputBufferSize specifies the size of the output buffer, in bytes. | ||||
| 	OutputBufferSize int32 | ||||
| } | ||||
|  | ||||
|   | ||||
							
								
								
									
										353
									
								
								vendor/github.com/Microsoft/go-winio/vhd/vhd.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										353
									
								
								vendor/github.com/Microsoft/go-winio/vhd/vhd.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -2,150 +2,323 @@ | ||||
|  | ||||
| package vhd | ||||
|  | ||||
| import "syscall" | ||||
| import ( | ||||
| 	"fmt" | ||||
| 	"syscall" | ||||
|  | ||||
| 	"github.com/Microsoft/go-winio/pkg/guid" | ||||
| 	"github.com/pkg/errors" | ||||
| 	"golang.org/x/sys/windows" | ||||
| ) | ||||
|  | ||||
| //go:generate go run mksyscall_windows.go -output zvhd.go vhd.go | ||||
|  | ||||
| //sys createVirtualDisk(virtualStorageType *virtualStorageType, path string, virtualDiskAccessMask uint32, securityDescriptor *uintptr, flags uint32, providerSpecificFlags uint32, parameters *createVirtualDiskParameters, o *syscall.Overlapped, handle *syscall.Handle) (err error) [failretval != 0] = VirtDisk.CreateVirtualDisk | ||||
| //sys openVirtualDisk(virtualStorageType *virtualStorageType, path string, virtualDiskAccessMask uint32, flags uint32, parameters *openVirtualDiskParameters, handle *syscall.Handle) (err error) [failretval != 0] = VirtDisk.OpenVirtualDisk | ||||
| //sys detachVirtualDisk(handle syscall.Handle, flags uint32, providerSpecificFlags uint32) (err error) [failretval != 0] = VirtDisk.DetachVirtualDisk | ||||
|  | ||||
| type virtualStorageType struct { | ||||
| 	DeviceID uint32 | ||||
| 	VendorID [16]byte | ||||
| } | ||||
| //sys createVirtualDisk(virtualStorageType *VirtualStorageType, path string, virtualDiskAccessMask uint32, securityDescriptor *uintptr, createVirtualDiskFlags uint32, providerSpecificFlags uint32, parameters *CreateVirtualDiskParameters, overlapped *syscall.Overlapped, handle *syscall.Handle) (err error) [failretval != 0] = virtdisk.CreateVirtualDisk | ||||
| //sys openVirtualDisk(virtualStorageType *VirtualStorageType, path string, virtualDiskAccessMask uint32, openVirtualDiskFlags uint32, parameters *OpenVirtualDiskParameters, handle *syscall.Handle) (err error) [failretval != 0] = virtdisk.OpenVirtualDisk | ||||
| //sys attachVirtualDisk(handle syscall.Handle, securityDescriptor *uintptr, attachVirtualDiskFlag uint32, providerSpecificFlags uint32, parameters *AttachVirtualDiskParameters, overlapped *syscall.Overlapped) (err error) [failretval != 0] = virtdisk.AttachVirtualDisk | ||||
| //sys detachVirtualDisk(handle syscall.Handle, detachVirtualDiskFlags uint32, providerSpecificFlags uint32) (err error) [failretval != 0] = virtdisk.DetachVirtualDisk | ||||
| //sys getVirtualDiskPhysicalPath(handle syscall.Handle, diskPathSizeInBytes *uint32, buffer *uint16) (err error) [failretval != 0] = virtdisk.GetVirtualDiskPhysicalPath | ||||
|  | ||||
| type ( | ||||
| 	createVirtualDiskFlag uint32 | ||||
| 	VirtualDiskAccessMask uint32 | ||||
| 	CreateVirtualDiskFlag uint32 | ||||
| 	VirtualDiskFlag       uint32 | ||||
| 	AttachVirtualDiskFlag uint32 | ||||
| 	DetachVirtualDiskFlag uint32 | ||||
| 	VirtualDiskAccessMask uint32 | ||||
| ) | ||||
|  | ||||
| const ( | ||||
| 	// Flags for creating a VHD (not exported) | ||||
| 	createVirtualDiskFlagNone                        createVirtualDiskFlag = 0 | ||||
| 	createVirtualDiskFlagFullPhysicalAllocation      createVirtualDiskFlag = 1 | ||||
| 	createVirtualDiskFlagPreventWritesToSourceDisk   createVirtualDiskFlag = 2 | ||||
| 	createVirtualDiskFlagDoNotCopyMetadataFromParent createVirtualDiskFlag = 4 | ||||
| type VirtualStorageType struct { | ||||
| 	DeviceID uint32 | ||||
| 	VendorID guid.GUID | ||||
| } | ||||
|  | ||||
| 	// Access Mask for opening a VHD | ||||
| 	VirtualDiskAccessNone     VirtualDiskAccessMask = 0 | ||||
| 	VirtualDiskAccessAttachRO VirtualDiskAccessMask = 65536 | ||||
| 	VirtualDiskAccessAttachRW VirtualDiskAccessMask = 131072 | ||||
| 	VirtualDiskAccessDetach   VirtualDiskAccessMask = 262144 | ||||
| 	VirtualDiskAccessGetInfo  VirtualDiskAccessMask = 524288 | ||||
| 	VirtualDiskAccessCreate   VirtualDiskAccessMask = 1048576 | ||||
| 	VirtualDiskAccessMetaOps  VirtualDiskAccessMask = 2097152 | ||||
| 	VirtualDiskAccessRead     VirtualDiskAccessMask = 851968 | ||||
| 	VirtualDiskAccessAll      VirtualDiskAccessMask = 4128768 | ||||
| 	VirtualDiskAccessWritable VirtualDiskAccessMask = 3276800 | ||||
|  | ||||
| 	// Flags for opening a VHD | ||||
| 	OpenVirtualDiskFlagNone                        VirtualDiskFlag = 0 | ||||
| 	OpenVirtualDiskFlagNoParents                   VirtualDiskFlag = 0x1 | ||||
| 	OpenVirtualDiskFlagBlankFile                   VirtualDiskFlag = 0x2 | ||||
| 	OpenVirtualDiskFlagBootDrive                   VirtualDiskFlag = 0x4 | ||||
| 	OpenVirtualDiskFlagCachedIO                    VirtualDiskFlag = 0x8 | ||||
| 	OpenVirtualDiskFlagCustomDiffChain             VirtualDiskFlag = 0x10 | ||||
| 	OpenVirtualDiskFlagParentCachedIO              VirtualDiskFlag = 0x20 | ||||
| 	OpenVirtualDiskFlagVhdSetFileOnly              VirtualDiskFlag = 0x40 | ||||
| 	OpenVirtualDiskFlagIgnoreRelativeParentLocator VirtualDiskFlag = 0x80 | ||||
| 	OpenVirtualDiskFlagNoWriteHardening            VirtualDiskFlag = 0x100 | ||||
| ) | ||||
|  | ||||
| type createVersion2 struct { | ||||
| 	UniqueID                 [16]byte // GUID | ||||
| type CreateVersion2 struct { | ||||
| 	UniqueID                 guid.GUID | ||||
| 	MaximumSize              uint64 | ||||
| 	BlockSizeInBytes         uint32 | ||||
| 	SectorSizeInBytes        uint32 | ||||
| 	PhysicalSectorSizeInByte uint32 | ||||
| 	ParentPath               *uint16 // string | ||||
| 	SourcePath               *uint16 // string | ||||
| 	OpenFlags                uint32 | ||||
| 	ParentVirtualStorageType virtualStorageType | ||||
| 	SourceVirtualStorageType virtualStorageType | ||||
| 	ResiliencyGUID           [16]byte // GUID | ||||
| 	ParentVirtualStorageType VirtualStorageType | ||||
| 	SourceVirtualStorageType VirtualStorageType | ||||
| 	ResiliencyGUID           guid.GUID | ||||
| } | ||||
|  | ||||
| type createVirtualDiskParameters struct { | ||||
| type CreateVirtualDiskParameters struct { | ||||
| 	Version  uint32 // Must always be set to 2 | ||||
| 	Version2 createVersion2 | ||||
| 	Version2 CreateVersion2 | ||||
| } | ||||
|  | ||||
| type openVersion2 struct { | ||||
| 	GetInfoOnly    int32    // bool but 4-byte aligned | ||||
| 	ReadOnly       int32    // bool but 4-byte aligned | ||||
| 	ResiliencyGUID [16]byte // GUID | ||||
| type OpenVersion2 struct { | ||||
| 	GetInfoOnly    bool | ||||
| 	ReadOnly       bool | ||||
| 	ResiliencyGUID guid.GUID | ||||
| } | ||||
|  | ||||
| type openVirtualDiskParameters struct { | ||||
| type OpenVirtualDiskParameters struct { | ||||
| 	Version  uint32 // Must always be set to 2 | ||||
| 	Version2 openVersion2 | ||||
| 	Version2 OpenVersion2 | ||||
| } | ||||
|  | ||||
| // CreateVhdx will create a simple vhdx file at the given path using default values. | ||||
| type AttachVersion2 struct { | ||||
| 	RestrictedOffset uint64 | ||||
| 	RestrictedLength uint64 | ||||
| } | ||||
|  | ||||
| type AttachVirtualDiskParameters struct { | ||||
| 	Version  uint32 // Must always be set to 2 | ||||
| 	Version2 AttachVersion2 | ||||
| } | ||||
|  | ||||
| const ( | ||||
| 	VIRTUAL_STORAGE_TYPE_DEVICE_VHDX = 0x3 | ||||
|  | ||||
| 	// Access Mask for opening a VHD | ||||
| 	VirtualDiskAccessNone     VirtualDiskAccessMask = 0x00000000 | ||||
| 	VirtualDiskAccessAttachRO VirtualDiskAccessMask = 0x00010000 | ||||
| 	VirtualDiskAccessAttachRW VirtualDiskAccessMask = 0x00020000 | ||||
| 	VirtualDiskAccessDetach   VirtualDiskAccessMask = 0x00040000 | ||||
| 	VirtualDiskAccessGetInfo  VirtualDiskAccessMask = 0x00080000 | ||||
| 	VirtualDiskAccessCreate   VirtualDiskAccessMask = 0x00100000 | ||||
| 	VirtualDiskAccessMetaOps  VirtualDiskAccessMask = 0x00200000 | ||||
| 	VirtualDiskAccessRead     VirtualDiskAccessMask = 0x000d0000 | ||||
| 	VirtualDiskAccessAll      VirtualDiskAccessMask = 0x003f0000 | ||||
| 	VirtualDiskAccessWritable VirtualDiskAccessMask = 0x00320000 | ||||
|  | ||||
| 	// Flags for creating a VHD | ||||
| 	CreateVirtualDiskFlagNone                              CreateVirtualDiskFlag = 0x0 | ||||
| 	CreateVirtualDiskFlagFullPhysicalAllocation            CreateVirtualDiskFlag = 0x1 | ||||
| 	CreateVirtualDiskFlagPreventWritesToSourceDisk         CreateVirtualDiskFlag = 0x2 | ||||
| 	CreateVirtualDiskFlagDoNotCopyMetadataFromParent       CreateVirtualDiskFlag = 0x4 | ||||
| 	CreateVirtualDiskFlagCreateBackingStorage              CreateVirtualDiskFlag = 0x8 | ||||
| 	CreateVirtualDiskFlagUseChangeTrackingSourceLimit      CreateVirtualDiskFlag = 0x10 | ||||
| 	CreateVirtualDiskFlagPreserveParentChangeTrackingState CreateVirtualDiskFlag = 0x20 | ||||
| 	CreateVirtualDiskFlagVhdSetUseOriginalBackingStorage   CreateVirtualDiskFlag = 0x40 | ||||
| 	CreateVirtualDiskFlagSparseFile                        CreateVirtualDiskFlag = 0x80 | ||||
| 	CreateVirtualDiskFlagPmemCompatible                    CreateVirtualDiskFlag = 0x100 | ||||
| 	CreateVirtualDiskFlagSupportCompressedVolumes          CreateVirtualDiskFlag = 0x200 | ||||
|  | ||||
| 	// Flags for opening a VHD | ||||
| 	OpenVirtualDiskFlagNone                        VirtualDiskFlag = 0x00000000 | ||||
| 	OpenVirtualDiskFlagNoParents                   VirtualDiskFlag = 0x00000001 | ||||
| 	OpenVirtualDiskFlagBlankFile                   VirtualDiskFlag = 0x00000002 | ||||
| 	OpenVirtualDiskFlagBootDrive                   VirtualDiskFlag = 0x00000004 | ||||
| 	OpenVirtualDiskFlagCachedIO                    VirtualDiskFlag = 0x00000008 | ||||
| 	OpenVirtualDiskFlagCustomDiffChain             VirtualDiskFlag = 0x00000010 | ||||
| 	OpenVirtualDiskFlagParentCachedIO              VirtualDiskFlag = 0x00000020 | ||||
| 	OpenVirtualDiskFlagVhdsetFileOnly              VirtualDiskFlag = 0x00000040 | ||||
| 	OpenVirtualDiskFlagIgnoreRelativeParentLocator VirtualDiskFlag = 0x00000080 | ||||
| 	OpenVirtualDiskFlagNoWriteHardening            VirtualDiskFlag = 0x00000100 | ||||
| 	OpenVirtualDiskFlagSupportCompressedVolumes    VirtualDiskFlag = 0x00000200 | ||||
|  | ||||
| 	// Flags for attaching a VHD | ||||
| 	AttachVirtualDiskFlagNone                          AttachVirtualDiskFlag = 0x00000000 | ||||
| 	AttachVirtualDiskFlagReadOnly                      AttachVirtualDiskFlag = 0x00000001 | ||||
| 	AttachVirtualDiskFlagNoDriveLetter                 AttachVirtualDiskFlag = 0x00000002 | ||||
| 	AttachVirtualDiskFlagPermanentLifetime             AttachVirtualDiskFlag = 0x00000004 | ||||
| 	AttachVirtualDiskFlagNoLocalHost                   AttachVirtualDiskFlag = 0x00000008 | ||||
| 	AttachVirtualDiskFlagNoSecurityDescriptor          AttachVirtualDiskFlag = 0x00000010 | ||||
| 	AttachVirtualDiskFlagBypassDefaultEncryptionPolicy AttachVirtualDiskFlag = 0x00000020 | ||||
| 	AttachVirtualDiskFlagNonPnp                        AttachVirtualDiskFlag = 0x00000040 | ||||
| 	AttachVirtualDiskFlagRestrictedRange               AttachVirtualDiskFlag = 0x00000080 | ||||
| 	AttachVirtualDiskFlagSinglePartition               AttachVirtualDiskFlag = 0x00000100 | ||||
| 	AttachVirtualDiskFlagRegisterVolume                AttachVirtualDiskFlag = 0x00000200 | ||||
|  | ||||
| 	// Flags for detaching a VHD | ||||
| 	DetachVirtualDiskFlagNone DetachVirtualDiskFlag = 0x0 | ||||
| ) | ||||
|  | ||||
| // CreateVhdx is a helper function to create a simple vhdx file at the given path using | ||||
| // default values. | ||||
| func CreateVhdx(path string, maxSizeInGb, blockSizeInMb uint32) error { | ||||
| 	var ( | ||||
| 		defaultType virtualStorageType | ||||
| 		handle      syscall.Handle | ||||
| 	) | ||||
|  | ||||
| 	parameters := createVirtualDiskParameters{ | ||||
| 	params := CreateVirtualDiskParameters{ | ||||
| 		Version: 2, | ||||
| 		Version2: createVersion2{ | ||||
| 		Version2: CreateVersion2{ | ||||
| 			MaximumSize:      uint64(maxSizeInGb) * 1024 * 1024 * 1024, | ||||
| 			BlockSizeInBytes: blockSizeInMb * 1024 * 1024, | ||||
| 		}, | ||||
| 	} | ||||
|  | ||||
| 	if err := createVirtualDisk( | ||||
| 		&defaultType, | ||||
| 		path, | ||||
| 		uint32(VirtualDiskAccessNone), | ||||
| 		nil, | ||||
| 		uint32(createVirtualDiskFlagNone), | ||||
| 		0, | ||||
| 		¶meters, | ||||
| 		nil, | ||||
| 		&handle); err != nil { | ||||
| 	handle, err := CreateVirtualDisk(path, VirtualDiskAccessNone, CreateVirtualDiskFlagNone, ¶ms) | ||||
| 	if err != nil { | ||||
| 		return err | ||||
| 	} | ||||
|  | ||||
| 	if err := syscall.CloseHandle(handle); err != nil { | ||||
| 		return err | ||||
| 	} | ||||
|  | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| // DetachVhd detaches a mounted container layer vhd found at `path`. | ||||
| // DetachVirtualDisk detaches a virtual hard disk by handle. | ||||
| func DetachVirtualDisk(handle syscall.Handle) (err error) { | ||||
| 	if err := detachVirtualDisk(handle, 0, 0); err != nil { | ||||
| 		return errors.Wrap(err, "failed to detach virtual disk") | ||||
| 	} | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| // DetachVhd detaches a vhd found at `path`. | ||||
| func DetachVhd(path string) error { | ||||
| 	handle, err := OpenVirtualDisk( | ||||
| 		path, | ||||
| 		VirtualDiskAccessNone, | ||||
| 		OpenVirtualDiskFlagCachedIO|OpenVirtualDiskFlagIgnoreRelativeParentLocator) | ||||
|  | ||||
| 		OpenVirtualDiskFlagCachedIO|OpenVirtualDiskFlagIgnoreRelativeParentLocator, | ||||
| 	) | ||||
| 	if err != nil { | ||||
| 		return err | ||||
| 	} | ||||
| 	defer syscall.CloseHandle(handle) | ||||
| 	return detachVirtualDisk(handle, 0, 0) | ||||
| 	return DetachVirtualDisk(handle) | ||||
| } | ||||
|  | ||||
| // AttachVirtualDisk attaches a virtual hard disk for use. | ||||
| func AttachVirtualDisk(handle syscall.Handle, attachVirtualDiskFlag AttachVirtualDiskFlag, parameters *AttachVirtualDiskParameters) (err error) { | ||||
| 	if parameters.Version != 2 { | ||||
| 		return fmt.Errorf("only version 2 VHDs are supported, found version: %d", parameters.Version) | ||||
| 	} | ||||
| 	if err := attachVirtualDisk( | ||||
| 		handle, | ||||
| 		nil, | ||||
| 		uint32(attachVirtualDiskFlag), | ||||
| 		0, | ||||
| 		parameters, | ||||
| 		nil, | ||||
| 	); err != nil { | ||||
| 		return errors.Wrap(err, "failed to attach virtual disk") | ||||
| 	} | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| // AttachVhd attaches a virtual hard disk at `path` for use. | ||||
| func AttachVhd(path string) (err error) { | ||||
| 	handle, err := OpenVirtualDisk( | ||||
| 		path, | ||||
| 		VirtualDiskAccessNone, | ||||
| 		OpenVirtualDiskFlagCachedIO|OpenVirtualDiskFlagIgnoreRelativeParentLocator, | ||||
| 	) | ||||
| 	if err != nil { | ||||
| 		return err | ||||
| 	} | ||||
|  | ||||
| 	defer syscall.CloseHandle(handle) | ||||
| 	params := AttachVirtualDiskParameters{Version: 2} | ||||
| 	if err := AttachVirtualDisk( | ||||
| 		handle, | ||||
| 		AttachVirtualDiskFlagNone, | ||||
| 		¶ms, | ||||
| 	); err != nil { | ||||
| 		return errors.Wrap(err, "failed to attach virtual disk") | ||||
| 	} | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| // OpenVirtualDisk obtains a handle to a VHD opened with supplied access mask and flags. | ||||
| func OpenVirtualDisk(path string, accessMask VirtualDiskAccessMask, flag VirtualDiskFlag) (syscall.Handle, error) { | ||||
| 	var ( | ||||
| 		defaultType virtualStorageType | ||||
| 		handle      syscall.Handle | ||||
| 	) | ||||
| 	parameters := openVirtualDiskParameters{Version: 2} | ||||
| 	if err := openVirtualDisk( | ||||
| 		&defaultType, | ||||
| 		path, | ||||
| 		uint32(accessMask), | ||||
| 		uint32(flag), | ||||
| func OpenVirtualDisk(vhdPath string, virtualDiskAccessMask VirtualDiskAccessMask, openVirtualDiskFlags VirtualDiskFlag) (syscall.Handle, error) { | ||||
| 	parameters := OpenVirtualDiskParameters{Version: 2} | ||||
| 	handle, err := OpenVirtualDiskWithParameters( | ||||
| 		vhdPath, | ||||
| 		virtualDiskAccessMask, | ||||
| 		openVirtualDiskFlags, | ||||
| 		¶meters, | ||||
| 		&handle); err != nil { | ||||
| 	) | ||||
| 	if err != nil { | ||||
| 		return 0, err | ||||
| 	} | ||||
| 	return handle, nil | ||||
| } | ||||
|  | ||||
| // OpenVirtualDiskWithParameters obtains a handle to a VHD opened with supplied access mask, flags and parameters. | ||||
| func OpenVirtualDiskWithParameters(vhdPath string, virtualDiskAccessMask VirtualDiskAccessMask, openVirtualDiskFlags VirtualDiskFlag, parameters *OpenVirtualDiskParameters) (syscall.Handle, error) { | ||||
| 	var ( | ||||
| 		handle      syscall.Handle | ||||
| 		defaultType VirtualStorageType | ||||
| 	) | ||||
| 	if parameters.Version != 2 { | ||||
| 		return handle, fmt.Errorf("only version 2 VHDs are supported, found version: %d", parameters.Version) | ||||
| 	} | ||||
| 	if err := openVirtualDisk( | ||||
| 		&defaultType, | ||||
| 		vhdPath, | ||||
| 		uint32(virtualDiskAccessMask), | ||||
| 		uint32(openVirtualDiskFlags), | ||||
| 		parameters, | ||||
| 		&handle, | ||||
| 	); err != nil { | ||||
| 		return 0, errors.Wrap(err, "failed to open virtual disk") | ||||
| 	} | ||||
| 	return handle, nil | ||||
| } | ||||
|  | ||||
| // CreateVirtualDisk creates a virtual harddisk and returns a handle to the disk. | ||||
| func CreateVirtualDisk(path string, virtualDiskAccessMask VirtualDiskAccessMask, createVirtualDiskFlags CreateVirtualDiskFlag, parameters *CreateVirtualDiskParameters) (syscall.Handle, error) { | ||||
| 	var ( | ||||
| 		handle      syscall.Handle | ||||
| 		defaultType VirtualStorageType | ||||
| 	) | ||||
| 	if parameters.Version != 2 { | ||||
| 		return handle, fmt.Errorf("only version 2 VHDs are supported, found version: %d", parameters.Version) | ||||
| 	} | ||||
|  | ||||
| 	if err := createVirtualDisk( | ||||
| 		&defaultType, | ||||
| 		path, | ||||
| 		uint32(virtualDiskAccessMask), | ||||
| 		nil, | ||||
| 		uint32(createVirtualDiskFlags), | ||||
| 		0, | ||||
| 		parameters, | ||||
| 		nil, | ||||
| 		&handle, | ||||
| 	); err != nil { | ||||
| 		return handle, errors.Wrap(err, "failed to create virtual disk") | ||||
| 	} | ||||
| 	return handle, nil | ||||
| } | ||||
|  | ||||
| // GetVirtualDiskPhysicalPath takes a handle to a virtual hard disk and returns the physical | ||||
| // path of the disk on the machine. This path is in the form \\.\PhysicalDriveX where X is an integer | ||||
| // that represents the particular enumeration of the physical disk on the caller's system. | ||||
| func GetVirtualDiskPhysicalPath(handle syscall.Handle) (_ string, err error) { | ||||
| 	var ( | ||||
| 		diskPathSizeInBytes uint32 = 256 * 2 // max path length 256 wide chars | ||||
| 		diskPhysicalPathBuf [256]uint16 | ||||
| 	) | ||||
| 	if err := getVirtualDiskPhysicalPath( | ||||
| 		handle, | ||||
| 		&diskPathSizeInBytes, | ||||
| 		&diskPhysicalPathBuf[0], | ||||
| 	); err != nil { | ||||
| 		return "", errors.Wrap(err, "failed to get disk physical path") | ||||
| 	} | ||||
| 	return windows.UTF16ToString(diskPhysicalPathBuf[:]), nil | ||||
| } | ||||
|  | ||||
| // CreateDiffVhd is a helper function to create a differencing virtual disk. | ||||
| func CreateDiffVhd(diffVhdPath, baseVhdPath string, blockSizeInMB uint32) error { | ||||
| 	// Setting `ParentPath` is how to signal to create a differencing disk. | ||||
| 	createParams := &CreateVirtualDiskParameters{ | ||||
| 		Version: 2, | ||||
| 		Version2: CreateVersion2{ | ||||
| 			ParentPath:       windows.StringToUTF16Ptr(baseVhdPath), | ||||
| 			BlockSizeInBytes: blockSizeInMB * 1024 * 1024, | ||||
| 			OpenFlags:        uint32(OpenVirtualDiskFlagCachedIO), | ||||
| 		}, | ||||
| 	} | ||||
|  | ||||
| 	vhdHandle, err := CreateVirtualDisk( | ||||
| 		diffVhdPath, | ||||
| 		VirtualDiskAccessNone, | ||||
| 		CreateVirtualDiskFlagNone, | ||||
| 		createParams, | ||||
| 	) | ||||
| 	if err != nil { | ||||
| 		return fmt.Errorf("failed to create differencing vhd: %s", err) | ||||
| 	} | ||||
| 	if err := syscall.CloseHandle(vhdHandle); err != nil { | ||||
| 		return fmt.Errorf("failed to close differencing vhd handle: %s", err) | ||||
| 	} | ||||
| 	return nil | ||||
| } | ||||
|   | ||||
							
								
								
									
										54
									
								
								vendor/github.com/Microsoft/go-winio/vhd/zvhd.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										54
									
								
								vendor/github.com/Microsoft/go-winio/vhd/zvhd.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -37,24 +37,26 @@ func errnoErr(e syscall.Errno) error { | ||||
| } | ||||
|  | ||||
| var ( | ||||
| 	modVirtDisk = windows.NewLazySystemDLL("VirtDisk.dll") | ||||
| 	modvirtdisk = windows.NewLazySystemDLL("virtdisk.dll") | ||||
|  | ||||
| 	procCreateVirtualDisk = modVirtDisk.NewProc("CreateVirtualDisk") | ||||
| 	procOpenVirtualDisk   = modVirtDisk.NewProc("OpenVirtualDisk") | ||||
| 	procDetachVirtualDisk = modVirtDisk.NewProc("DetachVirtualDisk") | ||||
| 	procCreateVirtualDisk          = modvirtdisk.NewProc("CreateVirtualDisk") | ||||
| 	procOpenVirtualDisk            = modvirtdisk.NewProc("OpenVirtualDisk") | ||||
| 	procAttachVirtualDisk          = modvirtdisk.NewProc("AttachVirtualDisk") | ||||
| 	procDetachVirtualDisk          = modvirtdisk.NewProc("DetachVirtualDisk") | ||||
| 	procGetVirtualDiskPhysicalPath = modvirtdisk.NewProc("GetVirtualDiskPhysicalPath") | ||||
| ) | ||||
|  | ||||
| func createVirtualDisk(virtualStorageType *virtualStorageType, path string, virtualDiskAccessMask uint32, securityDescriptor *uintptr, flags uint32, providerSpecificFlags uint32, parameters *createVirtualDiskParameters, o *syscall.Overlapped, handle *syscall.Handle) (err error) { | ||||
| func createVirtualDisk(virtualStorageType *VirtualStorageType, path string, virtualDiskAccessMask uint32, securityDescriptor *uintptr, createVirtualDiskFlags uint32, providerSpecificFlags uint32, parameters *CreateVirtualDiskParameters, overlapped *syscall.Overlapped, handle *syscall.Handle) (err error) { | ||||
| 	var _p0 *uint16 | ||||
| 	_p0, err = syscall.UTF16PtrFromString(path) | ||||
| 	if err != nil { | ||||
| 		return | ||||
| 	} | ||||
| 	return _createVirtualDisk(virtualStorageType, _p0, virtualDiskAccessMask, securityDescriptor, flags, providerSpecificFlags, parameters, o, handle) | ||||
| 	return _createVirtualDisk(virtualStorageType, _p0, virtualDiskAccessMask, securityDescriptor, createVirtualDiskFlags, providerSpecificFlags, parameters, overlapped, handle) | ||||
| } | ||||
|  | ||||
| func _createVirtualDisk(virtualStorageType *virtualStorageType, path *uint16, virtualDiskAccessMask uint32, securityDescriptor *uintptr, flags uint32, providerSpecificFlags uint32, parameters *createVirtualDiskParameters, o *syscall.Overlapped, handle *syscall.Handle) (err error) { | ||||
| 	r1, _, e1 := syscall.Syscall9(procCreateVirtualDisk.Addr(), 9, uintptr(unsafe.Pointer(virtualStorageType)), uintptr(unsafe.Pointer(path)), uintptr(virtualDiskAccessMask), uintptr(unsafe.Pointer(securityDescriptor)), uintptr(flags), uintptr(providerSpecificFlags), uintptr(unsafe.Pointer(parameters)), uintptr(unsafe.Pointer(o)), uintptr(unsafe.Pointer(handle))) | ||||
| func _createVirtualDisk(virtualStorageType *VirtualStorageType, path *uint16, virtualDiskAccessMask uint32, securityDescriptor *uintptr, createVirtualDiskFlags uint32, providerSpecificFlags uint32, parameters *CreateVirtualDiskParameters, overlapped *syscall.Overlapped, handle *syscall.Handle) (err error) { | ||||
| 	r1, _, e1 := syscall.Syscall9(procCreateVirtualDisk.Addr(), 9, uintptr(unsafe.Pointer(virtualStorageType)), uintptr(unsafe.Pointer(path)), uintptr(virtualDiskAccessMask), uintptr(unsafe.Pointer(securityDescriptor)), uintptr(createVirtualDiskFlags), uintptr(providerSpecificFlags), uintptr(unsafe.Pointer(parameters)), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(handle))) | ||||
| 	if r1 != 0 { | ||||
| 		if e1 != 0 { | ||||
| 			err = errnoErr(e1) | ||||
| @@ -65,17 +67,17 @@ func _createVirtualDisk(virtualStorageType *virtualStorageType, path *uint16, vi | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func openVirtualDisk(virtualStorageType *virtualStorageType, path string, virtualDiskAccessMask uint32, flags uint32, parameters *openVirtualDiskParameters, handle *syscall.Handle) (err error) { | ||||
| func openVirtualDisk(virtualStorageType *VirtualStorageType, path string, virtualDiskAccessMask uint32, openVirtualDiskFlags uint32, parameters *OpenVirtualDiskParameters, handle *syscall.Handle) (err error) { | ||||
| 	var _p0 *uint16 | ||||
| 	_p0, err = syscall.UTF16PtrFromString(path) | ||||
| 	if err != nil { | ||||
| 		return | ||||
| 	} | ||||
| 	return _openVirtualDisk(virtualStorageType, _p0, virtualDiskAccessMask, flags, parameters, handle) | ||||
| 	return _openVirtualDisk(virtualStorageType, _p0, virtualDiskAccessMask, openVirtualDiskFlags, parameters, handle) | ||||
| } | ||||
|  | ||||
| func _openVirtualDisk(virtualStorageType *virtualStorageType, path *uint16, virtualDiskAccessMask uint32, flags uint32, parameters *openVirtualDiskParameters, handle *syscall.Handle) (err error) { | ||||
| 	r1, _, e1 := syscall.Syscall6(procOpenVirtualDisk.Addr(), 6, uintptr(unsafe.Pointer(virtualStorageType)), uintptr(unsafe.Pointer(path)), uintptr(virtualDiskAccessMask), uintptr(flags), uintptr(unsafe.Pointer(parameters)), uintptr(unsafe.Pointer(handle))) | ||||
| func _openVirtualDisk(virtualStorageType *VirtualStorageType, path *uint16, virtualDiskAccessMask uint32, openVirtualDiskFlags uint32, parameters *OpenVirtualDiskParameters, handle *syscall.Handle) (err error) { | ||||
| 	r1, _, e1 := syscall.Syscall6(procOpenVirtualDisk.Addr(), 6, uintptr(unsafe.Pointer(virtualStorageType)), uintptr(unsafe.Pointer(path)), uintptr(virtualDiskAccessMask), uintptr(openVirtualDiskFlags), uintptr(unsafe.Pointer(parameters)), uintptr(unsafe.Pointer(handle))) | ||||
| 	if r1 != 0 { | ||||
| 		if e1 != 0 { | ||||
| 			err = errnoErr(e1) | ||||
| @@ -86,8 +88,32 @@ func _openVirtualDisk(virtualStorageType *virtualStorageType, path *uint16, virt | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func detachVirtualDisk(handle syscall.Handle, flags uint32, providerSpecificFlags uint32) (err error) { | ||||
| 	r1, _, e1 := syscall.Syscall(procDetachVirtualDisk.Addr(), 3, uintptr(handle), uintptr(flags), uintptr(providerSpecificFlags)) | ||||
| func attachVirtualDisk(handle syscall.Handle, securityDescriptor *uintptr, attachVirtualDiskFlag uint32, providerSpecificFlags uint32, parameters *AttachVirtualDiskParameters, overlapped *syscall.Overlapped) (err error) { | ||||
| 	r1, _, e1 := syscall.Syscall6(procAttachVirtualDisk.Addr(), 6, uintptr(handle), uintptr(unsafe.Pointer(securityDescriptor)), uintptr(attachVirtualDiskFlag), uintptr(providerSpecificFlags), uintptr(unsafe.Pointer(parameters)), uintptr(unsafe.Pointer(overlapped))) | ||||
| 	if r1 != 0 { | ||||
| 		if e1 != 0 { | ||||
| 			err = errnoErr(e1) | ||||
| 		} else { | ||||
| 			err = syscall.EINVAL | ||||
| 		} | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func detachVirtualDisk(handle syscall.Handle, detachVirtualDiskFlags uint32, providerSpecificFlags uint32) (err error) { | ||||
| 	r1, _, e1 := syscall.Syscall(procDetachVirtualDisk.Addr(), 3, uintptr(handle), uintptr(detachVirtualDiskFlags), uintptr(providerSpecificFlags)) | ||||
| 	if r1 != 0 { | ||||
| 		if e1 != 0 { | ||||
| 			err = errnoErr(e1) | ||||
| 		} else { | ||||
| 			err = syscall.EINVAL | ||||
| 		} | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func getVirtualDiskPhysicalPath(handle syscall.Handle, diskPathSizeInBytes *uint32, buffer *uint16) (err error) { | ||||
| 	r1, _, e1 := syscall.Syscall(procGetVirtualDiskPhysicalPath.Addr(), 3, uintptr(handle), uintptr(unsafe.Pointer(diskPathSizeInBytes)), uintptr(unsafe.Pointer(buffer))) | ||||
| 	if r1 != 0 { | ||||
| 		if e1 != 0 { | ||||
| 			err = errnoErr(e1) | ||||
|   | ||||
							
								
								
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/.gitattributes
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/.gitattributes
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | ||||
| * text=auto eol=lf | ||||
| @@ -108,6 +108,13 @@ file { | ||||
|       type: TYPE_STRING | ||||
|       json_name: "GPUVHDPath" | ||||
|     } | ||||
|     field { | ||||
|       name: "scale_cpu_limits_to_sandbox" | ||||
|       number: 11 | ||||
|       label: LABEL_OPTIONAL | ||||
|       type: TYPE_BOOL | ||||
|       json_name: "scaleCpuLimitsToSandbox" | ||||
|     } | ||||
|     enum_type { | ||||
|       name: "DebugType" | ||||
|       value { | ||||
|   | ||||
							
								
								
									
										256
									
								
								vendor/github.com/Microsoft/hcsshim/cmd/containerd-shim-runhcs-v1/options/runhcs.pb.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										256
									
								
								vendor/github.com/Microsoft/hcsshim/cmd/containerd-shim-runhcs-v1/options/runhcs.pb.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -5,14 +5,15 @@ package options | ||||
|  | ||||
| import ( | ||||
| 	fmt "fmt" | ||||
| 	proto "github.com/gogo/protobuf/proto" | ||||
| 	_ "github.com/gogo/protobuf/types" | ||||
| 	github_com_gogo_protobuf_types "github.com/gogo/protobuf/types" | ||||
| 	io "io" | ||||
| 	math "math" | ||||
| 	reflect "reflect" | ||||
| 	strings "strings" | ||||
| 	time "time" | ||||
|  | ||||
| 	proto "github.com/gogo/protobuf/proto" | ||||
| 	_ "github.com/gogo/protobuf/types" | ||||
| 	github_com_gogo_protobuf_types "github.com/gogo/protobuf/types" | ||||
| ) | ||||
|  | ||||
| // Reference imports to suppress errors if they are not otherwise used. | ||||
| @@ -115,7 +116,23 @@ type Options struct { | ||||
| 	VmMemorySizeInMb int32 `protobuf:"varint,9,opt,name=vm_memory_size_in_mb,json=vmMemorySizeInMb,proto3" json:"vm_memory_size_in_mb,omitempty"` | ||||
| 	// GPUVHDPath is the path to the gpu vhd to add to the uvm | ||||
| 	// when a container requests a gpu | ||||
| 	GPUVHDPath           string   `protobuf:"bytes,10,opt,name=GPUVHDPath,proto3" json:"GPUVHDPath,omitempty"` | ||||
| 	GPUVHDPath string `protobuf:"bytes,10,opt,name=GPUVHDPath,proto3" json:"GPUVHDPath,omitempty"` | ||||
| 	// scale_cpu_limits_to_sandbox indicates that container CPU limits should | ||||
| 	// be adjusted to account for the difference in number of cores between the | ||||
| 	// host and UVM. | ||||
| 	ScaleCpuLimitsToSandbox bool `protobuf:"varint,11,opt,name=scale_cpu_limits_to_sandbox,json=scaleCpuLimitsToSandbox,proto3" json:"scale_cpu_limits_to_sandbox,omitempty"` | ||||
| 	// default_container_scratch_size_in_gb is the default scratch size (sandbox.vhdx) | ||||
| 	// to be used for containers. Every container will get a sandbox of `size_in_gb` assigned | ||||
| 	// instead of the familiar 20GB as usual. | ||||
| 	DefaultContainerScratchSizeInGb int32 `protobuf:"varint,12,opt,name=default_container_scratch_size_in_gb,json=defaultContainerScratchSizeInGb,proto3" json:"default_container_scratch_size_in_gb,omitempty"` | ||||
| 	// default_container_scratch_size_in_gb is the default scratch size (sandbox.vhdx) | ||||
| 	// to be used for the UVM. This only applies to WCOW as LCOW doesn't mount a scratch | ||||
| 	// specifically for the UVM. | ||||
| 	DefaultVmScratchSizeInGb int32 `protobuf:"varint,13,opt,name=default_vm_scratch_size_in_gb,json=defaultVmScratchSizeInGb,proto3" json:"default_vm_scratch_size_in_gb,omitempty"` | ||||
| 	// share_scratch specifies if we'd like to reuse scratch space between multiple containers. | ||||
| 	// This currently only affects LCOW. The sandbox containers scratch space is re-used for all | ||||
| 	// subsequent containers launched in the pod. | ||||
| 	ShareScratch         bool     `protobuf:"varint,14,opt,name=share_scratch,json=shareScratch,proto3" json:"share_scratch,omitempty"` | ||||
| 	XXX_NoUnkeyedLiteral struct{} `json:"-"` | ||||
| 	XXX_unrecognized     []byte   `json:"-"` | ||||
| 	XXX_sizecache        int32    `json:"-"` | ||||
| @@ -214,56 +231,63 @@ func init() { | ||||
| } | ||||
|  | ||||
| var fileDescriptor_b643df6839c75082 = []byte{ | ||||
| 	// 775 bytes of a gzipped FileDescriptorProto | ||||
| 	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x54, 0xcd, 0x6f, 0xdb, 0x36, | ||||
| 	0x1c, 0xb5, 0x1a, 0x7f, 0xe9, 0xd7, 0x25, 0x75, 0x38, 0x1f, 0x84, 0x6c, 0xb3, 0x8d, 0xf4, 0xd0, | ||||
| 	0x14, 0x6b, 0xa4, 0xa4, 0x3b, 0xee, 0x34, 0xc7, 0xce, 0xaa, 0x61, 0x49, 0x04, 0x39, 0x6b, 0xf7, | ||||
| 	0x71, 0x20, 0xf4, 0xc1, 0xc8, 0x44, 0x4d, 0x51, 0x20, 0x69, 0x2f, 0xee, 0x69, 0x7f, 0xc2, 0xfe, | ||||
| 	0xa8, 0x1d, 0x72, 0xdc, 0x71, 0xc0, 0x80, 0x6c, 0xf5, 0x5f, 0x32, 0x90, 0x92, 0xd2, 0xad, 0x08, | ||||
| 	0x76, 0xe9, 0xc9, 0xd4, 0x7b, 0x8f, 0xef, 0xf7, 0xc1, 0x07, 0xc3, 0x45, 0x46, 0xd5, 0x7c, 0x19, | ||||
| 	0xbb, 0x09, 0x67, 0xde, 0x19, 0x4d, 0x04, 0x97, 0xfc, 0x4a, 0x79, 0xf3, 0x44, 0xca, 0x39, 0x65, | ||||
| 	0x5e, 0xc2, 0x52, 0x2f, 0xe1, 0xb9, 0x8a, 0x68, 0x4e, 0x44, 0x7a, 0xa8, 0xb1, 0x43, 0xb1, 0xcc, | ||||
| 	0xe7, 0x89, 0x3c, 0x5c, 0x1d, 0x7b, 0xbc, 0x50, 0x94, 0xe7, 0xd2, 0x2b, 0x11, 0xb7, 0x10, 0x5c, | ||||
| 	0x71, 0xd4, 0x7f, 0xa7, 0x77, 0x2b, 0x62, 0x75, 0xbc, 0xd7, 0xcf, 0x78, 0xc6, 0x8d, 0xc0, 0xd3, | ||||
| 	0xa7, 0x52, 0xbb, 0x37, 0xcc, 0x38, 0xcf, 0x16, 0xc4, 0x33, 0x5f, 0xf1, 0xf2, 0xca, 0x53, 0x94, | ||||
| 	0x11, 0xa9, 0x22, 0x56, 0x94, 0x82, 0xfd, 0xdf, 0x9a, 0xd0, 0xb9, 0x28, 0xab, 0xa0, 0x3e, 0xb4, | ||||
| 	0x52, 0x12, 0x2f, 0x33, 0xc7, 0x1a, 0x59, 0x07, 0xdd, 0xb0, 0xfc, 0x40, 0xa7, 0x00, 0xe6, 0x80, | ||||
| 	0xd5, 0xba, 0x20, 0xce, 0x83, 0x91, 0x75, 0xb0, 0xf3, 0xfc, 0x89, 0x7b, 0x5f, 0x0f, 0x6e, 0x65, | ||||
| 	0xe4, 0x4e, 0xb4, 0xfe, 0x72, 0x5d, 0x90, 0xd0, 0x4e, 0xeb, 0x23, 0x7a, 0x0c, 0xdb, 0x82, 0x64, | ||||
| 	0x54, 0x2a, 0xb1, 0xc6, 0x82, 0x73, 0xe5, 0x6c, 0x8d, 0xac, 0x03, 0x3b, 0xfc, 0xa8, 0x06, 0x43, | ||||
| 	0xce, 0x95, 0x16, 0xc9, 0x28, 0x4f, 0x63, 0x7e, 0x8d, 0x29, 0x8b, 0x32, 0xe2, 0x34, 0x4b, 0x51, | ||||
| 	0x05, 0xfa, 0x1a, 0x43, 0x4f, 0xa1, 0x57, 0x8b, 0x8a, 0x45, 0xa4, 0xae, 0xb8, 0x60, 0x4e, 0xcb, | ||||
| 	0xe8, 0x1e, 0x55, 0x78, 0x50, 0xc1, 0xe8, 0x27, 0xd8, 0xbd, 0xf3, 0x93, 0x7c, 0x11, 0xe9, 0xfe, | ||||
| 	0x9c, 0xb6, 0x99, 0xc1, 0xfd, 0xff, 0x19, 0x66, 0x55, 0xc5, 0xfa, 0x56, 0x58, 0xd7, 0xbc, 0x43, | ||||
| 	0x90, 0x07, 0xfd, 0x98, 0x73, 0x85, 0xaf, 0xe8, 0x82, 0x48, 0x33, 0x13, 0x2e, 0x22, 0x35, 0x77, | ||||
| 	0x3a, 0xa6, 0x97, 0x5d, 0xcd, 0x9d, 0x6a, 0x4a, 0x4f, 0x16, 0x44, 0x6a, 0x8e, 0x9e, 0x01, 0x5a, | ||||
| 	0x31, 0x5c, 0x08, 0x9e, 0x10, 0x29, 0xb9, 0xc0, 0x09, 0x5f, 0xe6, 0xca, 0xe9, 0x8e, 0xac, 0x83, | ||||
| 	0x56, 0xd8, 0x5b, 0xb1, 0xa0, 0x26, 0x4e, 0x34, 0x8e, 0x5c, 0xe8, 0xaf, 0x18, 0x66, 0x84, 0x71, | ||||
| 	0xb1, 0xc6, 0x92, 0xbe, 0x21, 0x98, 0xe6, 0x98, 0xc5, 0x8e, 0x5d, 0xeb, 0xcf, 0x0c, 0x35, 0xa3, | ||||
| 	0x6f, 0x88, 0x9f, 0x9f, 0xc5, 0x68, 0x00, 0xf0, 0x75, 0xf0, 0xdd, 0xcb, 0x17, 0x13, 0x5d, 0xcb, | ||||
| 	0x01, 0xd3, 0xc4, 0xbf, 0x90, 0xfd, 0xa7, 0x60, 0xdf, 0x3d, 0x0c, 0xb2, 0xa1, 0x75, 0x1e, 0xf8, | ||||
| 	0xc1, 0xb4, 0xd7, 0x40, 0x5d, 0x68, 0x9e, 0xfa, 0xdf, 0x4e, 0x7b, 0x16, 0xea, 0xc0, 0xd6, 0xf4, | ||||
| 	0xf2, 0x55, 0xef, 0xc1, 0xbe, 0x07, 0xbd, 0xf7, 0xe7, 0x47, 0x0f, 0xa1, 0x13, 0x84, 0x17, 0x27, | ||||
| 	0xd3, 0xd9, 0xac, 0xd7, 0x40, 0x3b, 0x00, 0x2f, 0x7e, 0x08, 0xa6, 0xe1, 0x4b, 0x7f, 0x76, 0x11, | ||||
| 	0xf6, 0xac, 0xfd, 0x3f, 0xb7, 0x60, 0xa7, 0x6a, 0x7f, 0x42, 0x54, 0x44, 0x17, 0x12, 0x7d, 0x06, | ||||
| 	0x60, 0x9e, 0x10, 0xe7, 0x11, 0x23, 0x26, 0x52, 0x76, 0x68, 0x1b, 0xe4, 0x3c, 0x62, 0x04, 0x9d, | ||||
| 	0x00, 0x24, 0x82, 0x44, 0x8a, 0xa4, 0x38, 0x52, 0x26, 0x56, 0x0f, 0x9f, 0xef, 0xb9, 0x65, 0x5c, | ||||
| 	0xdd, 0x3a, 0xae, 0xee, 0x65, 0x1d, 0xd7, 0x71, 0xf7, 0xe6, 0x76, 0xd8, 0xf8, 0xf5, 0xaf, 0xa1, | ||||
| 	0x15, 0xda, 0xd5, 0xbd, 0xaf, 0x14, 0xfa, 0x1c, 0xd0, 0x6b, 0x22, 0x72, 0xb2, 0xc0, 0x3a, 0xd7, | ||||
| 	0xf8, 0xf8, 0xe8, 0x08, 0xe7, 0xd2, 0x04, 0xab, 0x19, 0x3e, 0x2a, 0x19, 0xed, 0x70, 0x7c, 0x74, | ||||
| 	0x74, 0x2e, 0x91, 0x0b, 0x1f, 0x57, 0xcb, 0x4c, 0x38, 0x63, 0x54, 0xe1, 0x78, 0xad, 0x88, 0x34, | ||||
| 	0x09, 0x6b, 0x86, 0xbb, 0x25, 0x75, 0x62, 0x98, 0xb1, 0x26, 0xd0, 0x29, 0x8c, 0x2a, 0xfd, 0xcf, | ||||
| 	0x5c, 0xbc, 0xa6, 0x79, 0x86, 0x25, 0x51, 0xb8, 0x10, 0x74, 0x15, 0x29, 0x52, 0x5d, 0x6e, 0x99, | ||||
| 	0xcb, 0x9f, 0x96, 0xba, 0x57, 0xa5, 0x6c, 0x46, 0x54, 0x50, 0x8a, 0x4a, 0x9f, 0x09, 0x0c, 0xef, | ||||
| 	0xf1, 0x91, 0xf3, 0x48, 0x90, 0xb4, 0xb2, 0x69, 0x1b, 0x9b, 0x4f, 0xde, 0xb7, 0x99, 0x19, 0x4d, | ||||
| 	0xe9, 0xf2, 0x0c, 0xa0, 0x0a, 0x0e, 0xa6, 0xa9, 0x89, 0xd8, 0xf6, 0x78, 0x7b, 0x73, 0x3b, 0xb4, | ||||
| 	0xab, 0xb5, 0xfb, 0x93, 0xd0, 0xae, 0x04, 0x7e, 0x8a, 0x9e, 0x40, 0x6f, 0x29, 0x89, 0xf8, 0xcf, | ||||
| 	0x5a, 0xba, 0xa6, 0xc8, 0xb6, 0xc6, 0xdf, 0x2d, 0xe5, 0x31, 0x74, 0xc8, 0x35, 0x49, 0xb4, 0xa7, | ||||
| 	0xce, 0x95, 0x3d, 0x86, 0xcd, 0xed, 0xb0, 0x3d, 0xbd, 0x26, 0x89, 0x3f, 0x09, 0xdb, 0x9a, 0xf2, | ||||
| 	0xd3, 0x71, 0x7a, 0xf3, 0x76, 0xd0, 0xf8, 0xe3, 0xed, 0xa0, 0xf1, 0xcb, 0x66, 0x60, 0xdd, 0x6c, | ||||
| 	0x06, 0xd6, 0xef, 0x9b, 0x81, 0xf5, 0xf7, 0x66, 0x60, 0xfd, 0xf8, 0xcd, 0x87, 0xff, 0xb9, 0x7d, | ||||
| 	0x59, 0xfd, 0x7e, 0xdf, 0x88, 0xdb, 0xe6, 0xdd, 0xbf, 0xf8, 0x27, 0x00, 0x00, 0xff, 0xff, 0x75, | ||||
| 	0x1f, 0x14, 0xf4, 0x33, 0x05, 0x00, 0x00, | ||||
| 	// 883 bytes of a gzipped FileDescriptorProto | ||||
| 	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x94, 0xdb, 0x6e, 0xdb, 0x36, | ||||
| 	0x18, 0xc7, 0xad, 0x26, 0x71, 0xa2, 0x2f, 0x71, 0xea, 0x70, 0x06, 0x26, 0xa4, 0xab, 0x6d, 0xa4, | ||||
| 	0x03, 0x9a, 0x62, 0x8d, 0x94, 0x74, 0x97, 0x1b, 0x30, 0xcc, 0x87, 0xb4, 0x1e, 0x9a, 0xc4, 0x90, | ||||
| 	0xb3, 0x74, 0x87, 0x0b, 0x42, 0x07, 0x5a, 0x26, 0x6a, 0x8a, 0x82, 0x48, 0x7b, 0x71, 0xaf, 0xf6, | ||||
| 	0x08, 0x7b, 0x9b, 0xbd, 0x42, 0x2e, 0x77, 0x39, 0x60, 0x40, 0xb6, 0xfa, 0x49, 0x06, 0x52, 0x94, | ||||
| 	0xbb, 0x05, 0xc1, 0x6e, 0x76, 0x65, 0xea, 0xff, 0xfd, 0xf8, 0xe7, 0xc7, 0xc3, 0xdf, 0x70, 0x91, | ||||
| 	0x50, 0x39, 0x99, 0x85, 0x6e, 0xc4, 0x99, 0x77, 0x46, 0xa3, 0x9c, 0x0b, 0x3e, 0x96, 0xde, 0x24, | ||||
| 	0x12, 0x62, 0x42, 0x99, 0x17, 0xb1, 0xd8, 0x8b, 0x78, 0x2a, 0x03, 0x9a, 0x92, 0x3c, 0x3e, 0x52, | ||||
| 	0xda, 0x51, 0x3e, 0x4b, 0x27, 0x91, 0x38, 0x9a, 0x9f, 0x78, 0x3c, 0x93, 0x94, 0xa7, 0xc2, 0x2b, | ||||
| 	0x14, 0x37, 0xcb, 0xb9, 0xe4, 0xa8, 0xf1, 0x81, 0x77, 0x4d, 0x61, 0x7e, 0xb2, 0xdf, 0x48, 0x78, | ||||
| 	0xc2, 0x35, 0xe0, 0xa9, 0x51, 0xc1, 0xee, 0xb7, 0x12, 0xce, 0x93, 0x29, 0xf1, 0xf4, 0x57, 0x38, | ||||
| 	0x1b, 0x7b, 0x92, 0x32, 0x22, 0x64, 0xc0, 0xb2, 0x02, 0x38, 0xf8, 0xb5, 0x0a, 0x9b, 0x17, 0xc5, | ||||
| 	0x2a, 0xa8, 0x01, 0x1b, 0x31, 0x09, 0x67, 0x89, 0x63, 0xb5, 0xad, 0xc3, 0x2d, 0xbf, 0xf8, 0x40, | ||||
| 	0xa7, 0x00, 0x7a, 0x80, 0xe5, 0x22, 0x23, 0xce, 0x83, 0xb6, 0x75, 0xb8, 0xfb, 0xe2, 0xa9, 0x7b, | ||||
| 	0x5f, 0x0f, 0xae, 0x31, 0x72, 0x7b, 0x8a, 0xbf, 0x5c, 0x64, 0xc4, 0xb7, 0xe3, 0x72, 0x88, 0x9e, | ||||
| 	0x40, 0x2d, 0x27, 0x09, 0x15, 0x32, 0x5f, 0xe0, 0x9c, 0x73, 0xe9, 0xac, 0xb5, 0xad, 0x43, 0xdb, | ||||
| 	0xdf, 0x29, 0x45, 0x9f, 0x73, 0xa9, 0x20, 0x11, 0xa4, 0x71, 0xc8, 0xaf, 0x31, 0x65, 0x41, 0x42, | ||||
| 	0x9c, 0xf5, 0x02, 0x32, 0xe2, 0x40, 0x69, 0xe8, 0x19, 0xd4, 0x4b, 0x28, 0x9b, 0x06, 0x72, 0xcc, | ||||
| 	0x73, 0xe6, 0x6c, 0x68, 0xee, 0xa1, 0xd1, 0x87, 0x46, 0x46, 0x3f, 0xc2, 0xde, 0xca, 0x4f, 0xf0, | ||||
| 	0x69, 0xa0, 0xfa, 0x73, 0xaa, 0x7a, 0x0f, 0xee, 0x7f, 0xef, 0x61, 0x64, 0x56, 0x2c, 0x67, 0xf9, | ||||
| 	0xe5, 0x9a, 0x2b, 0x05, 0x79, 0xd0, 0x08, 0x39, 0x97, 0x78, 0x4c, 0xa7, 0x44, 0xe8, 0x3d, 0xe1, | ||||
| 	0x2c, 0x90, 0x13, 0x67, 0x53, 0xf7, 0xb2, 0xa7, 0x6a, 0xa7, 0xaa, 0xa4, 0x76, 0x36, 0x0c, 0xe4, | ||||
| 	0x04, 0x3d, 0x07, 0x34, 0x67, 0x38, 0xcb, 0x79, 0x44, 0x84, 0xe0, 0x39, 0x8e, 0xf8, 0x2c, 0x95, | ||||
| 	0xce, 0x56, 0xdb, 0x3a, 0xdc, 0xf0, 0xeb, 0x73, 0x36, 0x2c, 0x0b, 0x5d, 0xa5, 0x23, 0x17, 0x1a, | ||||
| 	0x73, 0x86, 0x19, 0x61, 0x3c, 0x5f, 0x60, 0x41, 0xdf, 0x11, 0x4c, 0x53, 0xcc, 0x42, 0xc7, 0x2e, | ||||
| 	0xf9, 0x33, 0x5d, 0x1a, 0xd1, 0x77, 0x64, 0x90, 0x9e, 0x85, 0xa8, 0x09, 0xf0, 0x72, 0xf8, 0xed, | ||||
| 	0xd5, 0xab, 0x9e, 0x5a, 0xcb, 0x01, 0xdd, 0xc4, 0x3f, 0x14, 0xf4, 0x25, 0x3c, 0x12, 0x51, 0x30, | ||||
| 	0x25, 0x38, 0xca, 0x66, 0x78, 0x4a, 0x19, 0x95, 0x02, 0x4b, 0x8e, 0xcd, 0xb6, 0x9c, 0x6d, 0x7d, | ||||
| 	0xe9, 0x1f, 0x6b, 0xa4, 0x9b, 0xcd, 0x5e, 0x6b, 0xe0, 0x92, 0x9b, 0x73, 0x40, 0x67, 0xf0, 0x69, | ||||
| 	0x4c, 0xc6, 0xc1, 0x6c, 0x2a, 0xf1, 0xea, 0xdc, 0xb0, 0x88, 0xf2, 0x40, 0x46, 0x93, 0x55, 0x77, | ||||
| 	0x49, 0xe8, 0xec, 0xe8, 0xee, 0x5a, 0x86, 0xed, 0x96, 0xe8, 0xa8, 0x20, 0x8b, 0x66, 0x5f, 0x86, | ||||
| 	0xe8, 0x2b, 0x78, 0x5c, 0xda, 0xcd, 0xd9, 0x7d, 0x3e, 0x35, 0xed, 0xe3, 0x18, 0xe8, 0x8a, 0xdd, | ||||
| 	0x35, 0x50, 0x2f, 0x65, 0x12, 0xe4, 0xa4, 0x9c, 0xeb, 0xec, 0xea, 0xfe, 0x77, 0xb4, 0x68, 0xe0, | ||||
| 	0x83, 0x67, 0x60, 0xaf, 0xde, 0x22, 0xb2, 0x61, 0xe3, 0x7c, 0x38, 0x18, 0xf6, 0xeb, 0x15, 0xb4, | ||||
| 	0x05, 0xeb, 0xa7, 0x83, 0xd7, 0xfd, 0xba, 0x85, 0x36, 0x61, 0xad, 0x7f, 0xf9, 0xa6, 0xfe, 0xe0, | ||||
| 	0xc0, 0x83, 0xfa, 0xdd, 0x2b, 0x47, 0xdb, 0xb0, 0x39, 0xf4, 0x2f, 0xba, 0xfd, 0xd1, 0xa8, 0x5e, | ||||
| 	0x41, 0xbb, 0x00, 0xaf, 0xbe, 0x1f, 0xf6, 0xfd, 0xab, 0xc1, 0xe8, 0xc2, 0xaf, 0x5b, 0x07, 0x7f, | ||||
| 	0xac, 0xc1, 0xae, 0xb9, 0xb1, 0x1e, 0x91, 0x01, 0x9d, 0x0a, 0xf4, 0x18, 0x40, 0xbf, 0x5a, 0x9c, | ||||
| 	0x06, 0x8c, 0xe8, 0x14, 0xd9, 0xbe, 0xad, 0x95, 0xf3, 0x80, 0x11, 0xd4, 0x05, 0x88, 0x72, 0x12, | ||||
| 	0x48, 0x12, 0xe3, 0x40, 0xea, 0x24, 0x6d, 0xbf, 0xd8, 0x77, 0x8b, 0x84, 0xba, 0x65, 0x42, 0xdd, | ||||
| 	0xcb, 0x32, 0xa1, 0x9d, 0xad, 0x9b, 0xdb, 0x56, 0xe5, 0x97, 0x3f, 0x5b, 0x96, 0x6f, 0x9b, 0x79, | ||||
| 	0x5f, 0x4b, 0xf4, 0x19, 0xa0, 0xb7, 0x24, 0x4f, 0xc9, 0x14, 0xab, 0x28, 0xe3, 0x93, 0xe3, 0x63, | ||||
| 	0x9c, 0x0a, 0x9d, 0xa5, 0x75, 0xff, 0x61, 0x51, 0x51, 0x0e, 0x27, 0xc7, 0xc7, 0xe7, 0x02, 0xb9, | ||||
| 	0xf0, 0x91, 0x79, 0x3f, 0x11, 0x67, 0x8c, 0x4a, 0x1c, 0x2e, 0x24, 0x11, 0x3a, 0x54, 0xeb, 0xfe, | ||||
| 	0x5e, 0x51, 0xea, 0xea, 0x4a, 0x47, 0x15, 0xd0, 0x29, 0xb4, 0x0d, 0xff, 0x13, 0xcf, 0xdf, 0xd2, | ||||
| 	0x34, 0xc1, 0x82, 0x48, 0x9c, 0xe5, 0x74, 0x1e, 0x48, 0x62, 0x26, 0x6f, 0xe8, 0xc9, 0x9f, 0x14, | ||||
| 	0xdc, 0x9b, 0x02, 0x1b, 0x11, 0x39, 0x2c, 0xa0, 0xc2, 0xa7, 0x07, 0xad, 0x7b, 0x7c, 0xf4, 0xd5, | ||||
| 	0xc4, 0xc6, 0xa6, 0xaa, 0x6d, 0x1e, 0xdd, 0xb5, 0x19, 0x69, 0xa6, 0x70, 0x79, 0x0e, 0x60, 0xb2, | ||||
| 	0x82, 0x69, 0xac, 0x53, 0x55, 0xeb, 0xd4, 0x96, 0xb7, 0x2d, 0xdb, 0x1c, 0xfb, 0xa0, 0xe7, 0xdb, | ||||
| 	0x06, 0x18, 0xc4, 0xe8, 0x29, 0xd4, 0x67, 0x82, 0xe4, 0xff, 0x3a, 0x96, 0x2d, 0xbd, 0x48, 0x4d, | ||||
| 	0xe9, 0x1f, 0x0e, 0xe5, 0x09, 0x6c, 0x92, 0x6b, 0x12, 0x29, 0x4f, 0x15, 0x25, 0xbb, 0x03, 0xcb, | ||||
| 	0xdb, 0x56, 0xb5, 0x7f, 0x4d, 0xa2, 0x41, 0xcf, 0xaf, 0xaa, 0xd2, 0x20, 0xee, 0xc4, 0x37, 0xef, | ||||
| 	0x9b, 0x95, 0xdf, 0xdf, 0x37, 0x2b, 0x3f, 0x2f, 0x9b, 0xd6, 0xcd, 0xb2, 0x69, 0xfd, 0xb6, 0x6c, | ||||
| 	0x5a, 0x7f, 0x2d, 0x9b, 0xd6, 0x0f, 0xdf, 0xfc, 0xff, 0xff, 0xf3, 0x2f, 0xcc, 0xef, 0x77, 0x95, | ||||
| 	0xb0, 0xaa, 0xef, 0xfd, 0xf3, 0xbf, 0x03, 0x00, 0x00, 0xff, 0xff, 0xbb, 0xb6, 0x6d, 0x09, 0x26, | ||||
| 	0x06, 0x00, 0x00, | ||||
| } | ||||
|  | ||||
| func (m *Options) Marshal() (dAtA []byte, err error) { | ||||
| @@ -341,6 +365,36 @@ func (m *Options) MarshalTo(dAtA []byte) (int, error) { | ||||
| 		i = encodeVarintRunhcs(dAtA, i, uint64(len(m.GPUVHDPath))) | ||||
| 		i += copy(dAtA[i:], m.GPUVHDPath) | ||||
| 	} | ||||
| 	if m.ScaleCpuLimitsToSandbox { | ||||
| 		dAtA[i] = 0x58 | ||||
| 		i++ | ||||
| 		if m.ScaleCpuLimitsToSandbox { | ||||
| 			dAtA[i] = 1 | ||||
| 		} else { | ||||
| 			dAtA[i] = 0 | ||||
| 		} | ||||
| 		i++ | ||||
| 	} | ||||
| 	if m.DefaultContainerScratchSizeInGb != 0 { | ||||
| 		dAtA[i] = 0x60 | ||||
| 		i++ | ||||
| 		i = encodeVarintRunhcs(dAtA, i, uint64(m.DefaultContainerScratchSizeInGb)) | ||||
| 	} | ||||
| 	if m.DefaultVmScratchSizeInGb != 0 { | ||||
| 		dAtA[i] = 0x68 | ||||
| 		i++ | ||||
| 		i = encodeVarintRunhcs(dAtA, i, uint64(m.DefaultVmScratchSizeInGb)) | ||||
| 	} | ||||
| 	if m.ShareScratch { | ||||
| 		dAtA[i] = 0x70 | ||||
| 		i++ | ||||
| 		if m.ShareScratch { | ||||
| 			dAtA[i] = 1 | ||||
| 		} else { | ||||
| 			dAtA[i] = 0 | ||||
| 		} | ||||
| 		i++ | ||||
| 	} | ||||
| 	if m.XXX_unrecognized != nil { | ||||
| 		i += copy(dAtA[i:], m.XXX_unrecognized) | ||||
| 	} | ||||
| @@ -468,6 +522,18 @@ func (m *Options) Size() (n int) { | ||||
| 	if l > 0 { | ||||
| 		n += 1 + l + sovRunhcs(uint64(l)) | ||||
| 	} | ||||
| 	if m.ScaleCpuLimitsToSandbox { | ||||
| 		n += 2 | ||||
| 	} | ||||
| 	if m.DefaultContainerScratchSizeInGb != 0 { | ||||
| 		n += 1 + sovRunhcs(uint64(m.DefaultContainerScratchSizeInGb)) | ||||
| 	} | ||||
| 	if m.DefaultVmScratchSizeInGb != 0 { | ||||
| 		n += 1 + sovRunhcs(uint64(m.DefaultVmScratchSizeInGb)) | ||||
| 	} | ||||
| 	if m.ShareScratch { | ||||
| 		n += 2 | ||||
| 	} | ||||
| 	if m.XXX_unrecognized != nil { | ||||
| 		n += len(m.XXX_unrecognized) | ||||
| 	} | ||||
| @@ -542,6 +608,10 @@ func (this *Options) String() string { | ||||
| 		`VmProcessorCount:` + fmt.Sprintf("%v", this.VmProcessorCount) + `,`, | ||||
| 		`VmMemorySizeInMb:` + fmt.Sprintf("%v", this.VmMemorySizeInMb) + `,`, | ||||
| 		`GPUVHDPath:` + fmt.Sprintf("%v", this.GPUVHDPath) + `,`, | ||||
| 		`ScaleCpuLimitsToSandbox:` + fmt.Sprintf("%v", this.ScaleCpuLimitsToSandbox) + `,`, | ||||
| 		`DefaultContainerScratchSizeInGb:` + fmt.Sprintf("%v", this.DefaultContainerScratchSizeInGb) + `,`, | ||||
| 		`DefaultVmScratchSizeInGb:` + fmt.Sprintf("%v", this.DefaultVmScratchSizeInGb) + `,`, | ||||
| 		`ShareScratch:` + fmt.Sprintf("%v", this.ShareScratch) + `,`, | ||||
| 		`XXX_unrecognized:` + fmt.Sprintf("%v", this.XXX_unrecognized) + `,`, | ||||
| 		`}`, | ||||
| 	}, "") | ||||
| @@ -859,6 +929,84 @@ func (m *Options) Unmarshal(dAtA []byte) error { | ||||
| 			} | ||||
| 			m.GPUVHDPath = string(dAtA[iNdEx:postIndex]) | ||||
| 			iNdEx = postIndex | ||||
| 		case 11: | ||||
| 			if wireType != 0 { | ||||
| 				return fmt.Errorf("proto: wrong wireType = %d for field ScaleCpuLimitsToSandbox", wireType) | ||||
| 			} | ||||
| 			var v int | ||||
| 			for shift := uint(0); ; shift += 7 { | ||||
| 				if shift >= 64 { | ||||
| 					return ErrIntOverflowRunhcs | ||||
| 				} | ||||
| 				if iNdEx >= l { | ||||
| 					return io.ErrUnexpectedEOF | ||||
| 				} | ||||
| 				b := dAtA[iNdEx] | ||||
| 				iNdEx++ | ||||
| 				v |= int(b&0x7F) << shift | ||||
| 				if b < 0x80 { | ||||
| 					break | ||||
| 				} | ||||
| 			} | ||||
| 			m.ScaleCpuLimitsToSandbox = bool(v != 0) | ||||
| 		case 12: | ||||
| 			if wireType != 0 { | ||||
| 				return fmt.Errorf("proto: wrong wireType = %d for field DefaultContainerScratchSizeInGb", wireType) | ||||
| 			} | ||||
| 			m.DefaultContainerScratchSizeInGb = 0 | ||||
| 			for shift := uint(0); ; shift += 7 { | ||||
| 				if shift >= 64 { | ||||
| 					return ErrIntOverflowRunhcs | ||||
| 				} | ||||
| 				if iNdEx >= l { | ||||
| 					return io.ErrUnexpectedEOF | ||||
| 				} | ||||
| 				b := dAtA[iNdEx] | ||||
| 				iNdEx++ | ||||
| 				m.DefaultContainerScratchSizeInGb |= int32(b&0x7F) << shift | ||||
| 				if b < 0x80 { | ||||
| 					break | ||||
| 				} | ||||
| 			} | ||||
| 		case 13: | ||||
| 			if wireType != 0 { | ||||
| 				return fmt.Errorf("proto: wrong wireType = %d for field DefaultVmScratchSizeInGb", wireType) | ||||
| 			} | ||||
| 			m.DefaultVmScratchSizeInGb = 0 | ||||
| 			for shift := uint(0); ; shift += 7 { | ||||
| 				if shift >= 64 { | ||||
| 					return ErrIntOverflowRunhcs | ||||
| 				} | ||||
| 				if iNdEx >= l { | ||||
| 					return io.ErrUnexpectedEOF | ||||
| 				} | ||||
| 				b := dAtA[iNdEx] | ||||
| 				iNdEx++ | ||||
| 				m.DefaultVmScratchSizeInGb |= int32(b&0x7F) << shift | ||||
| 				if b < 0x80 { | ||||
| 					break | ||||
| 				} | ||||
| 			} | ||||
| 		case 14: | ||||
| 			if wireType != 0 { | ||||
| 				return fmt.Errorf("proto: wrong wireType = %d for field ShareScratch", wireType) | ||||
| 			} | ||||
| 			var v int | ||||
| 			for shift := uint(0); ; shift += 7 { | ||||
| 				if shift >= 64 { | ||||
| 					return ErrIntOverflowRunhcs | ||||
| 				} | ||||
| 				if iNdEx >= l { | ||||
| 					return io.ErrUnexpectedEOF | ||||
| 				} | ||||
| 				b := dAtA[iNdEx] | ||||
| 				iNdEx++ | ||||
| 				v |= int(b&0x7F) << shift | ||||
| 				if b < 0x80 { | ||||
| 					break | ||||
| 				} | ||||
| 			} | ||||
| 			m.ShareScratch = bool(v != 0) | ||||
| 		default: | ||||
| 			iNdEx = preIndex | ||||
| 			skippy, err := skipRunhcs(dAtA[iNdEx:]) | ||||
|   | ||||
							
								
								
									
										20
									
								
								vendor/github.com/Microsoft/hcsshim/cmd/containerd-shim-runhcs-v1/options/runhcs.proto
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										20
									
								
								vendor/github.com/Microsoft/hcsshim/cmd/containerd-shim-runhcs-v1/options/runhcs.proto
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -63,6 +63,26 @@ message Options { | ||||
| 	// GPUVHDPath is the path to the gpu vhd to add to the uvm | ||||
| 	// when a container requests a gpu | ||||
| 	string GPUVHDPath = 10; | ||||
|  | ||||
| 	// scale_cpu_limits_to_sandbox indicates that container CPU limits should | ||||
| 	// be adjusted to account for the difference in number of cores between the | ||||
| 	// host and UVM. | ||||
| 	bool scale_cpu_limits_to_sandbox = 11; | ||||
|  | ||||
| 	// default_container_scratch_size_in_gb is the default scratch size (sandbox.vhdx)  | ||||
| 	// to be used for containers. Every container will get a sandbox of `size_in_gb` assigned | ||||
| 	// instead of the default of 20GB.  | ||||
| 	int32 default_container_scratch_size_in_gb = 12; | ||||
|  | ||||
| 	// default_vm_scratch_size_in_gb is the default scratch size (sandbox.vhdx)  | ||||
| 	// to be used for the UVM. This only applies to WCOW as LCOW doesn't mount a scratch  | ||||
| 	// specifically for the UVM. | ||||
| 	int32 default_vm_scratch_size_in_gb = 13; | ||||
|  | ||||
| 	// share_scratch specifies if we'd like to reuse scratch space between multiple containers.  | ||||
| 	// This currently only affects LCOW. The sandbox containers scratch space is re-used for all | ||||
| 	// subsequent containers launched in the pod.   | ||||
| 	bool share_scratch = 14; | ||||
| } | ||||
|  | ||||
| // ProcessDetails contains additional information about a process. This is the additional | ||||
|   | ||||
							
								
								
									
										38
									
								
								vendor/github.com/Microsoft/hcsshim/computestorage/attach.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								vendor/github.com/Microsoft/hcsshim/computestorage/attach.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,38 @@ | ||||
| package computestorage | ||||
|  | ||||
| import ( | ||||
| 	"context" | ||||
| 	"encoding/json" | ||||
| 	"fmt" | ||||
|  | ||||
| 	"github.com/Microsoft/hcsshim/internal/oc" | ||||
| 	"go.opencensus.io/trace" | ||||
| ) | ||||
|  | ||||
| // AttachLayerStorageFilter sets up the layer storage filter on a writable | ||||
| // container layer. | ||||
| // | ||||
| // `layerPath` is a path to a directory the writable layer is mounted. If the | ||||
| // path does not end in a `\` the platform will append it automatically. | ||||
| // | ||||
| // `layerData` is the parent read-only layer data. | ||||
| func AttachLayerStorageFilter(ctx context.Context, layerPath string, layerData LayerData) (err error) { | ||||
| 	title := "hcsshim.AttachLayerStorageFilter" | ||||
| 	ctx, span := trace.StartSpan(ctx, title) | ||||
| 	defer span.End() | ||||
| 	defer func() { oc.SetSpanStatus(span, err) }() | ||||
| 	span.AddAttributes( | ||||
| 		trace.StringAttribute("layerPath", layerPath), | ||||
| 	) | ||||
|  | ||||
| 	bytes, err := json.Marshal(layerData) | ||||
| 	if err != nil { | ||||
| 		return err | ||||
| 	} | ||||
|  | ||||
| 	err = hcsAttachLayerStorageFilter(layerPath, string(bytes)) | ||||
| 	if err != nil { | ||||
| 		return fmt.Errorf("failed to attach layer storage filter: %s", err) | ||||
| 	} | ||||
| 	return nil | ||||
| } | ||||
							
								
								
									
										26
									
								
								vendor/github.com/Microsoft/hcsshim/computestorage/destroy.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								vendor/github.com/Microsoft/hcsshim/computestorage/destroy.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,26 @@ | ||||
| package computestorage | ||||
|  | ||||
| import ( | ||||
| 	"context" | ||||
| 	"fmt" | ||||
|  | ||||
| 	"github.com/Microsoft/hcsshim/internal/oc" | ||||
| 	"go.opencensus.io/trace" | ||||
| ) | ||||
|  | ||||
| // DestroyLayer deletes a container layer. | ||||
| // | ||||
| // `layerPath` is a path to a directory containing the layer to export. | ||||
| func DestroyLayer(ctx context.Context, layerPath string) (err error) { | ||||
| 	title := "hcsshim.DestroyLayer" | ||||
| 	ctx, span := trace.StartSpan(ctx, title) | ||||
| 	defer span.End() | ||||
| 	defer func() { oc.SetSpanStatus(span, err) }() | ||||
| 	span.AddAttributes(trace.StringAttribute("layerPath", layerPath)) | ||||
|  | ||||
| 	err = hcsDestroyLayer(layerPath) | ||||
| 	if err != nil { | ||||
| 		return fmt.Errorf("failed to destroy layer: %s", err) | ||||
| 	} | ||||
| 	return nil | ||||
| } | ||||
							
								
								
									
										26
									
								
								vendor/github.com/Microsoft/hcsshim/computestorage/detach.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								vendor/github.com/Microsoft/hcsshim/computestorage/detach.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,26 @@ | ||||
| package computestorage | ||||
|  | ||||
| import ( | ||||
| 	"context" | ||||
| 	"fmt" | ||||
|  | ||||
| 	"github.com/Microsoft/hcsshim/internal/oc" | ||||
| 	"go.opencensus.io/trace" | ||||
| ) | ||||
|  | ||||
| // DetachLayerStorageFilter detaches the layer storage filter on a writable container layer. | ||||
| // | ||||
| // `layerPath` is a path to a directory containing the layer to export. | ||||
| func DetachLayerStorageFilter(ctx context.Context, layerPath string) (err error) { | ||||
| 	title := "hcsshim.DetachLayerStorageFilter" | ||||
| 	ctx, span := trace.StartSpan(ctx, title) | ||||
| 	defer span.End() | ||||
| 	defer func() { oc.SetSpanStatus(span, err) }() | ||||
| 	span.AddAttributes(trace.StringAttribute("layerPath", layerPath)) | ||||
|  | ||||
| 	err = hcsDetachLayerStorageFilter(layerPath) | ||||
| 	if err != nil { | ||||
| 		return fmt.Errorf("failed to detach layer storage filter: %s", err) | ||||
| 	} | ||||
| 	return nil | ||||
| } | ||||
							
								
								
									
										46
									
								
								vendor/github.com/Microsoft/hcsshim/computestorage/export.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								vendor/github.com/Microsoft/hcsshim/computestorage/export.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,46 @@ | ||||
| package computestorage | ||||
|  | ||||
| import ( | ||||
| 	"context" | ||||
| 	"encoding/json" | ||||
| 	"fmt" | ||||
|  | ||||
| 	"github.com/Microsoft/hcsshim/internal/oc" | ||||
| 	"go.opencensus.io/trace" | ||||
| ) | ||||
|  | ||||
| // ExportLayer exports a container layer. | ||||
| // | ||||
| // `layerPath` is a path to a directory containing the layer to export. | ||||
| // | ||||
| // `exportFolderPath` is a pre-existing folder to export the layer to. | ||||
| // | ||||
| // `layerData` is the parent layer data. | ||||
| // | ||||
| // `options` are the export options applied to the exported layer. | ||||
| func ExportLayer(ctx context.Context, layerPath, exportFolderPath string, layerData LayerData, options ExportLayerOptions) (err error) { | ||||
| 	title := "hcsshim.ExportLayer" | ||||
| 	ctx, span := trace.StartSpan(ctx, title) | ||||
| 	defer span.End() | ||||
| 	defer func() { oc.SetSpanStatus(span, err) }() | ||||
| 	span.AddAttributes( | ||||
| 		trace.StringAttribute("layerPath", layerPath), | ||||
| 		trace.StringAttribute("exportFolderPath", exportFolderPath), | ||||
| 	) | ||||
|  | ||||
| 	ldbytes, err := json.Marshal(layerData) | ||||
| 	if err != nil { | ||||
| 		return err | ||||
| 	} | ||||
|  | ||||
| 	obytes, err := json.Marshal(options) | ||||
| 	if err != nil { | ||||
| 		return err | ||||
| 	} | ||||
|  | ||||
| 	err = hcsExportLayer(layerPath, exportFolderPath, string(ldbytes), string(obytes)) | ||||
| 	if err != nil { | ||||
| 		return fmt.Errorf("failed to export layer: %s", err) | ||||
| 	} | ||||
| 	return nil | ||||
| } | ||||
							
								
								
									
										26
									
								
								vendor/github.com/Microsoft/hcsshim/computestorage/format.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								vendor/github.com/Microsoft/hcsshim/computestorage/format.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,26 @@ | ||||
| package computestorage | ||||
|  | ||||
| import ( | ||||
| 	"context" | ||||
| 	"fmt" | ||||
|  | ||||
| 	"github.com/Microsoft/hcsshim/internal/oc" | ||||
| 	"go.opencensus.io/trace" | ||||
| 	"golang.org/x/sys/windows" | ||||
| ) | ||||
|  | ||||
| // FormatWritableLayerVhd formats a virtual disk for use as a writable container layer. | ||||
| // | ||||
| // If the VHD is not mounted it will be temporarily mounted. | ||||
| func FormatWritableLayerVhd(ctx context.Context, vhdHandle windows.Handle) (err error) { | ||||
| 	title := "hcsshim.FormatWritableLayerVhd" | ||||
| 	ctx, span := trace.StartSpan(ctx, title) | ||||
| 	defer span.End() | ||||
| 	defer func() { oc.SetSpanStatus(span, err) }() | ||||
|  | ||||
| 	err = hcsFormatWritableLayerVhd(vhdHandle) | ||||
| 	if err != nil { | ||||
| 		return fmt.Errorf("failed to format writable layer vhd: %s", err) | ||||
| 	} | ||||
| 	return nil | ||||
| } | ||||
							
								
								
									
										197
									
								
								vendor/github.com/Microsoft/hcsshim/computestorage/helpers.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										197
									
								
								vendor/github.com/Microsoft/hcsshim/computestorage/helpers.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,197 @@ | ||||
| package computestorage | ||||
|  | ||||
| import ( | ||||
| 	"context" | ||||
| 	"os" | ||||
| 	"path/filepath" | ||||
| 	"syscall" | ||||
|  | ||||
| 	"github.com/Microsoft/go-winio/pkg/security" | ||||
| 	"github.com/Microsoft/go-winio/vhd" | ||||
| 	"github.com/pkg/errors" | ||||
| 	"golang.org/x/sys/windows" | ||||
| ) | ||||
|  | ||||
| const defaultVHDXBlockSizeInMB = 1 | ||||
|  | ||||
| // SetupContainerBaseLayer is a helper to setup a containers scratch. It | ||||
| // will create and format the vhdx's inside and the size is configurable with the sizeInGB | ||||
| // parameter. | ||||
| // | ||||
| // `layerPath` is the path to the base container layer on disk. | ||||
| // | ||||
| // `baseVhdPath` is the path to where the base vhdx for the base layer should be created. | ||||
| // | ||||
| // `diffVhdPath` is the path where the differencing disk for the base layer should be created. | ||||
| // | ||||
| // `sizeInGB` is the size in gigabytes to make the base vhdx. | ||||
| func SetupContainerBaseLayer(ctx context.Context, layerPath, baseVhdPath, diffVhdPath string, sizeInGB uint64) (err error) { | ||||
| 	var ( | ||||
| 		hivesPath  = filepath.Join(layerPath, "Hives") | ||||
| 		layoutPath = filepath.Join(layerPath, "Layout") | ||||
| 	) | ||||
|  | ||||
| 	// We need to remove the hives directory and layout file as `SetupBaseOSLayer` fails if these files | ||||
| 	// already exist. `SetupBaseOSLayer` will create these files internally. We also remove the base and | ||||
| 	// differencing disks if they exist in case we're asking for a different size. | ||||
| 	if _, err := os.Stat(hivesPath); err == nil { | ||||
| 		if err := os.RemoveAll(hivesPath); err != nil { | ||||
| 			return errors.Wrap(err, "failed to remove prexisting hives directory") | ||||
| 		} | ||||
| 	} | ||||
| 	if _, err := os.Stat(layoutPath); err == nil { | ||||
| 		if err := os.RemoveAll(layoutPath); err != nil { | ||||
| 			return errors.Wrap(err, "failed to remove prexisting layout file") | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	if _, err := os.Stat(baseVhdPath); err == nil { | ||||
| 		if err := os.RemoveAll(baseVhdPath); err != nil { | ||||
| 			return errors.Wrap(err, "failed to remove base vhdx path") | ||||
| 		} | ||||
| 	} | ||||
| 	if _, err := os.Stat(diffVhdPath); err == nil { | ||||
| 		if err := os.RemoveAll(diffVhdPath); err != nil { | ||||
| 			return errors.Wrap(err, "failed to remove differencing vhdx") | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	createParams := &vhd.CreateVirtualDiskParameters{ | ||||
| 		Version: 2, | ||||
| 		Version2: vhd.CreateVersion2{ | ||||
| 			MaximumSize:      sizeInGB * 1024 * 1024 * 1024, | ||||
| 			BlockSizeInBytes: defaultVHDXBlockSizeInMB * 1024 * 1024, | ||||
| 		}, | ||||
| 	} | ||||
| 	handle, err := vhd.CreateVirtualDisk(baseVhdPath, vhd.VirtualDiskAccessNone, vhd.CreateVirtualDiskFlagNone, createParams) | ||||
| 	if err != nil { | ||||
| 		return errors.Wrap(err, "failed to create vhdx") | ||||
| 	} | ||||
|  | ||||
| 	defer func() { | ||||
| 		if err != nil { | ||||
| 			syscall.CloseHandle(handle) | ||||
| 			os.RemoveAll(baseVhdPath) | ||||
| 			if os.Stat(diffVhdPath); err == nil { | ||||
| 				os.RemoveAll(diffVhdPath) | ||||
| 			} | ||||
| 		} | ||||
| 	}() | ||||
|  | ||||
| 	if err = FormatWritableLayerVhd(ctx, windows.Handle(handle)); err != nil { | ||||
| 		return err | ||||
| 	} | ||||
| 	// Base vhd handle must be closed before calling SetupBaseLayer in case of Container layer | ||||
| 	if err = syscall.CloseHandle(handle); err != nil { | ||||
| 		return errors.Wrap(err, "failed to close vhdx handle") | ||||
| 	} | ||||
|  | ||||
| 	options := OsLayerOptions{ | ||||
| 		Type: OsLayerTypeContainer, | ||||
| 	} | ||||
|  | ||||
| 	// SetupBaseOSLayer expects an empty vhd handle for a container layer and will | ||||
| 	// error out otherwise. | ||||
| 	if err = SetupBaseOSLayer(ctx, layerPath, 0, options); err != nil { | ||||
| 		return err | ||||
| 	} | ||||
| 	// Create the differencing disk that will be what's copied for the final rw layer | ||||
| 	// for a container. | ||||
| 	if err = vhd.CreateDiffVhd(diffVhdPath, baseVhdPath, defaultVHDXBlockSizeInMB); err != nil { | ||||
| 		return errors.Wrap(err, "failed to create differencing disk") | ||||
| 	} | ||||
|  | ||||
| 	if err = security.GrantVmGroupAccess(baseVhdPath); err != nil { | ||||
| 		return errors.Wrapf(err, "failed to grant vm group access to %s", baseVhdPath) | ||||
| 	} | ||||
| 	if err = security.GrantVmGroupAccess(diffVhdPath); err != nil { | ||||
| 		return errors.Wrapf(err, "failed to grant vm group access to %s", diffVhdPath) | ||||
| 	} | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| // SetupUtilityVMBaseLayer is a helper to setup a UVMs scratch space. It will create and format | ||||
| // the vhdx inside and the size is configurable by the sizeInGB parameter. | ||||
| // | ||||
| // `uvmPath` is the path to the UtilityVM filesystem. | ||||
| // | ||||
| // `baseVhdPath` is the path to where the base vhdx for the UVM should be created. | ||||
| // | ||||
| // `diffVhdPath` is the path where the differencing disk for the UVM should be created. | ||||
| // | ||||
| // `sizeInGB` specifies the size in gigabytes to make the base vhdx. | ||||
| func SetupUtilityVMBaseLayer(ctx context.Context, uvmPath, baseVhdPath, diffVhdPath string, sizeInGB uint64) (err error) { | ||||
| 	// Remove the base and differencing disks if they exist in case we're asking for a different size. | ||||
| 	if _, err := os.Stat(baseVhdPath); err == nil { | ||||
| 		if err := os.RemoveAll(baseVhdPath); err != nil { | ||||
| 			return errors.Wrap(err, "failed to remove base vhdx") | ||||
| 		} | ||||
| 	} | ||||
| 	if _, err := os.Stat(diffVhdPath); err == nil { | ||||
| 		if err := os.RemoveAll(diffVhdPath); err != nil { | ||||
| 			return errors.Wrap(err, "failed to remove differencing vhdx") | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	// Just create the vhdx for utilityVM layer, no need to format it. | ||||
| 	createParams := &vhd.CreateVirtualDiskParameters{ | ||||
| 		Version: 2, | ||||
| 		Version2: vhd.CreateVersion2{ | ||||
| 			MaximumSize:      sizeInGB * 1024 * 1024 * 1024, | ||||
| 			BlockSizeInBytes: defaultVHDXBlockSizeInMB * 1024 * 1024, | ||||
| 		}, | ||||
| 	} | ||||
| 	handle, err := vhd.CreateVirtualDisk(baseVhdPath, vhd.VirtualDiskAccessNone, vhd.CreateVirtualDiskFlagNone, createParams) | ||||
| 	if err != nil { | ||||
| 		return errors.Wrap(err, "failed to create vhdx") | ||||
| 	} | ||||
|  | ||||
| 	defer func() { | ||||
| 		if err != nil { | ||||
| 			syscall.CloseHandle(handle) | ||||
| 			os.RemoveAll(baseVhdPath) | ||||
| 			if os.Stat(diffVhdPath); err == nil { | ||||
| 				os.RemoveAll(diffVhdPath) | ||||
| 			} | ||||
| 		} | ||||
| 	}() | ||||
|  | ||||
| 	// If it is a UtilityVM layer then the base vhdx must be attached when calling | ||||
| 	// `SetupBaseOSLayer` | ||||
| 	attachParams := &vhd.AttachVirtualDiskParameters{ | ||||
| 		Version: 2, | ||||
| 	} | ||||
| 	if err := vhd.AttachVirtualDisk(handle, vhd.AttachVirtualDiskFlagNone, attachParams); err != nil { | ||||
| 		return errors.Wrapf(err, "failed to attach virtual disk") | ||||
| 	} | ||||
|  | ||||
| 	options := OsLayerOptions{ | ||||
| 		Type: OsLayerTypeVM, | ||||
| 	} | ||||
| 	if err := SetupBaseOSLayer(ctx, uvmPath, windows.Handle(handle), options); err != nil { | ||||
| 		return err | ||||
| 	} | ||||
|  | ||||
| 	// Detach and close the handle after setting up the layer as we don't need the handle | ||||
| 	// for anything else and we no longer need to be attached either. | ||||
| 	if err = vhd.DetachVirtualDisk(handle); err != nil { | ||||
| 		return errors.Wrap(err, "failed to detach vhdx") | ||||
| 	} | ||||
| 	if err = syscall.CloseHandle(handle); err != nil { | ||||
| 		return errors.Wrap(err, "failed to close vhdx handle") | ||||
| 	} | ||||
|  | ||||
| 	// Create the differencing disk that will be what's copied for the final rw layer | ||||
| 	// for a container. | ||||
| 	if err = vhd.CreateDiffVhd(diffVhdPath, baseVhdPath, defaultVHDXBlockSizeInMB); err != nil { | ||||
| 		return errors.Wrap(err, "failed to create differencing disk") | ||||
| 	} | ||||
|  | ||||
| 	if err := security.GrantVmGroupAccess(baseVhdPath); err != nil { | ||||
| 		return errors.Wrapf(err, "failed to grant vm group access to %s", baseVhdPath) | ||||
| 	} | ||||
| 	if err := security.GrantVmGroupAccess(diffVhdPath); err != nil { | ||||
| 		return errors.Wrapf(err, "failed to grant vm group access to %s", diffVhdPath) | ||||
| 	} | ||||
| 	return nil | ||||
| } | ||||
							
								
								
									
										41
									
								
								vendor/github.com/Microsoft/hcsshim/computestorage/import.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								vendor/github.com/Microsoft/hcsshim/computestorage/import.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,41 @@ | ||||
| package computestorage | ||||
|  | ||||
| import ( | ||||
| 	"context" | ||||
| 	"encoding/json" | ||||
| 	"fmt" | ||||
|  | ||||
| 	"github.com/Microsoft/hcsshim/internal/oc" | ||||
| 	"go.opencensus.io/trace" | ||||
| ) | ||||
|  | ||||
| // ImportLayer imports a container layer. | ||||
| // | ||||
| // `layerPath` is a path to a directory to import the layer to. If the directory | ||||
| // does not exist it will be automatically created. | ||||
| // | ||||
| // `sourceFolderpath` is a pre-existing folder that contains the layer to | ||||
| // import. | ||||
| // | ||||
| // `layerData` is the parent layer data. | ||||
| func ImportLayer(ctx context.Context, layerPath, sourceFolderPath string, layerData LayerData) (err error) { | ||||
| 	title := "hcsshim.ImportLayer" | ||||
| 	ctx, span := trace.StartSpan(ctx, title) | ||||
| 	defer span.End() | ||||
| 	defer func() { oc.SetSpanStatus(span, err) }() | ||||
| 	span.AddAttributes( | ||||
| 		trace.StringAttribute("layerPath", layerPath), | ||||
| 		trace.StringAttribute("sourceFolderPath", sourceFolderPath), | ||||
| 	) | ||||
|  | ||||
| 	bytes, err := json.Marshal(layerData) | ||||
| 	if err != nil { | ||||
| 		return err | ||||
| 	} | ||||
|  | ||||
| 	err = hcsImportLayer(layerPath, sourceFolderPath, string(bytes)) | ||||
| 	if err != nil { | ||||
| 		return fmt.Errorf("failed to import layer: %s", err) | ||||
| 	} | ||||
| 	return nil | ||||
| } | ||||
							
								
								
									
										38
									
								
								vendor/github.com/Microsoft/hcsshim/computestorage/initialize.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								vendor/github.com/Microsoft/hcsshim/computestorage/initialize.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,38 @@ | ||||
| package computestorage | ||||
|  | ||||
| import ( | ||||
| 	"context" | ||||
| 	"encoding/json" | ||||
| 	"fmt" | ||||
|  | ||||
| 	"github.com/Microsoft/hcsshim/internal/oc" | ||||
| 	"go.opencensus.io/trace" | ||||
| ) | ||||
|  | ||||
| // InitializeWritableLayer initializes a writable layer for a container. | ||||
| // | ||||
| // `layerPath` is a path to a directory the layer is mounted. If the | ||||
| // path does not end in a `\` the platform will append it automatically. | ||||
| // | ||||
| // `layerData` is the parent read-only layer data. | ||||
| func InitializeWritableLayer(ctx context.Context, layerPath string, layerData LayerData) (err error) { | ||||
| 	title := "hcsshim.InitializeWritableLayer" | ||||
| 	ctx, span := trace.StartSpan(ctx, title) | ||||
| 	defer span.End() | ||||
| 	defer func() { oc.SetSpanStatus(span, err) }() | ||||
| 	span.AddAttributes( | ||||
| 		trace.StringAttribute("layerPath", layerPath), | ||||
| 	) | ||||
|  | ||||
| 	bytes, err := json.Marshal(layerData) | ||||
| 	if err != nil { | ||||
| 		return err | ||||
| 	} | ||||
|  | ||||
| 	// Options are not used in the platform as of RS5 | ||||
| 	err = hcsInitializeWritableLayer(layerPath, string(bytes), "") | ||||
| 	if err != nil { | ||||
| 		return fmt.Errorf("failed to intitialize container layer: %s", err) | ||||
| 	} | ||||
| 	return nil | ||||
| } | ||||
							
								
								
									
										27
									
								
								vendor/github.com/Microsoft/hcsshim/computestorage/mount.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								vendor/github.com/Microsoft/hcsshim/computestorage/mount.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,27 @@ | ||||
| package computestorage | ||||
|  | ||||
| import ( | ||||
| 	"context" | ||||
| 	"fmt" | ||||
|  | ||||
| 	"github.com/Microsoft/hcsshim/internal/interop" | ||||
| 	"github.com/Microsoft/hcsshim/internal/oc" | ||||
| 	"go.opencensus.io/trace" | ||||
| 	"golang.org/x/sys/windows" | ||||
| ) | ||||
|  | ||||
| // GetLayerVhdMountPath returns the volume path for a virtual disk of a writable container layer. | ||||
| func GetLayerVhdMountPath(ctx context.Context, vhdHandle windows.Handle) (path string, err error) { | ||||
| 	title := "hcsshim.GetLayerVhdMountPath" | ||||
| 	ctx, span := trace.StartSpan(ctx, title) | ||||
| 	defer span.End() | ||||
| 	defer func() { oc.SetSpanStatus(span, err) }() | ||||
|  | ||||
| 	var mountPath *uint16 | ||||
| 	err = hcsGetLayerVhdMountPath(vhdHandle, &mountPath) | ||||
| 	if err != nil { | ||||
| 		return "", fmt.Errorf("failed to get vhd mount path: %s", err) | ||||
| 	} | ||||
| 	path = interop.ConvertAndFreeCoTaskMemString(mountPath) | ||||
| 	return path, nil | ||||
| } | ||||
							
								
								
									
										75
									
								
								vendor/github.com/Microsoft/hcsshim/computestorage/setup.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										75
									
								
								vendor/github.com/Microsoft/hcsshim/computestorage/setup.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,75 @@ | ||||
| package computestorage | ||||
|  | ||||
| import ( | ||||
| 	"context" | ||||
| 	"encoding/json" | ||||
| 	"errors" | ||||
| 	"fmt" | ||||
|  | ||||
| 	"github.com/Microsoft/hcsshim/internal/oc" | ||||
| 	"github.com/Microsoft/hcsshim/osversion" | ||||
| 	"go.opencensus.io/trace" | ||||
| 	"golang.org/x/sys/windows" | ||||
| ) | ||||
|  | ||||
| // SetupBaseOSLayer sets up a layer that contains a base OS for a container. | ||||
| // | ||||
| // `layerPath` is a path to a directory containing the layer. | ||||
| // | ||||
| // `vhdHandle` is an empty file handle of `options.Type == OsLayerTypeContainer` | ||||
| // or else it is a file handle to the 'SystemTemplateBase.vhdx' if `options.Type | ||||
| // == OsLayerTypeVm`. | ||||
| // | ||||
| // `options` are the options applied while processing the layer. | ||||
| func SetupBaseOSLayer(ctx context.Context, layerPath string, vhdHandle windows.Handle, options OsLayerOptions) (err error) { | ||||
| 	title := "hcsshim.SetupBaseOSLayer" | ||||
| 	ctx, span := trace.StartSpan(ctx, title) | ||||
| 	defer span.End() | ||||
| 	defer func() { oc.SetSpanStatus(span, err) }() | ||||
| 	span.AddAttributes( | ||||
| 		trace.StringAttribute("layerPath", layerPath), | ||||
| 	) | ||||
|  | ||||
| 	bytes, err := json.Marshal(options) | ||||
| 	if err != nil { | ||||
| 		return err | ||||
| 	} | ||||
|  | ||||
| 	err = hcsSetupBaseOSLayer(layerPath, vhdHandle, string(bytes)) | ||||
| 	if err != nil { | ||||
| 		return fmt.Errorf("failed to setup base OS layer: %s", err) | ||||
| 	} | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| // SetupBaseOSVolume sets up a volume that contains a base OS for a container. | ||||
| // | ||||
| // `layerPath` is a path to a directory containing the layer. | ||||
| // | ||||
| // `volumePath` is the path to the volume to be used for setup. | ||||
| // | ||||
| // `options` are the options applied while processing the layer. | ||||
| func SetupBaseOSVolume(ctx context.Context, layerPath, volumePath string, options OsLayerOptions) (err error) { | ||||
| 	if osversion.Get().Build < 19645 { | ||||
| 		return errors.New("SetupBaseOSVolume is not present on builds older than 19645") | ||||
| 	} | ||||
| 	title := "hcsshim.SetupBaseOSVolume" | ||||
| 	ctx, span := trace.StartSpan(ctx, title) | ||||
| 	defer span.End() | ||||
| 	defer func() { oc.SetSpanStatus(span, err) }() | ||||
| 	span.AddAttributes( | ||||
| 		trace.StringAttribute("layerPath", layerPath), | ||||
| 		trace.StringAttribute("volumePath", volumePath), | ||||
| 	) | ||||
|  | ||||
| 	bytes, err := json.Marshal(options) | ||||
| 	if err != nil { | ||||
| 		return err | ||||
| 	} | ||||
|  | ||||
| 	err = hcsSetupBaseOSVolume(layerPath, volumePath, string(bytes)) | ||||
| 	if err != nil { | ||||
| 		return fmt.Errorf("failed to setup base OS layer: %s", err) | ||||
| 	} | ||||
| 	return nil | ||||
| } | ||||
							
								
								
									
										50
									
								
								vendor/github.com/Microsoft/hcsshim/computestorage/storage.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										50
									
								
								vendor/github.com/Microsoft/hcsshim/computestorage/storage.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,50 @@ | ||||
| // Package computestorage is a wrapper around the HCS storage APIs. These are new storage APIs introduced | ||||
| // separate from the original graphdriver calls intended to give more freedom around creating | ||||
| // and managing container layers and scratch spaces. | ||||
| package computestorage | ||||
|  | ||||
| import ( | ||||
| 	hcsschema "github.com/Microsoft/hcsshim/internal/schema2" | ||||
| ) | ||||
|  | ||||
| //go:generate go run ../mksyscall_windows.go -output zsyscall_windows.go storage.go | ||||
|  | ||||
| //sys hcsImportLayer(layerPath string, sourceFolderPath string, layerData string) (hr error) = computestorage.HcsImportLayer? | ||||
| //sys hcsExportLayer(layerPath string, exportFolderPath string, layerData string, options string) (hr error) = computestorage.HcsExportLayer? | ||||
| //sys hcsDestroyLayer(layerPath string) (hr error) = computestorage.HcsDestoryLayer? | ||||
| //sys hcsSetupBaseOSLayer(layerPath string, handle windows.Handle, options string) (hr error) = computestorage.HcsSetupBaseOSLayer? | ||||
| //sys hcsInitializeWritableLayer(writableLayerPath string, layerData string, options string) (hr error) = computestorage.HcsInitializeWritableLayer? | ||||
| //sys hcsAttachLayerStorageFilter(layerPath string, layerData string) (hr error) = computestorage.HcsAttachLayerStorageFilter? | ||||
| //sys hcsDetachLayerStorageFilter(layerPath string) (hr error) = computestorage.HcsDetachLayerStorageFilter? | ||||
| //sys hcsFormatWritableLayerVhd(handle windows.Handle) (hr error) = computestorage.HcsFormatWritableLayerVhd? | ||||
| //sys hcsGetLayerVhdMountPath(vhdHandle windows.Handle, mountPath **uint16) (hr error) = computestorage.HcsGetLayerVhdMountPath? | ||||
| //sys hcsSetupBaseOSVolume(layerPath string, volumePath string, options string) (hr error) = computestorage.HcsSetupBaseOSVolume? | ||||
|  | ||||
| // LayerData is the data used to describe parent layer information. | ||||
| type LayerData struct { | ||||
| 	SchemaVersion hcsschema.Version `json:"SchemaVersion,omitempty"` | ||||
| 	Layers        []hcsschema.Layer `json:"Layers,omitempty"` | ||||
| } | ||||
|  | ||||
| // ExportLayerOptions are the set of options that are used with the `computestorage.HcsExportLayer` syscall. | ||||
| type ExportLayerOptions struct { | ||||
| 	IsWritableLayer bool `json:"IsWritableLayer,omitempty"` | ||||
| } | ||||
|  | ||||
| // OsLayerType is the type of layer being operated on. | ||||
| type OsLayerType string | ||||
|  | ||||
| const ( | ||||
| 	// OsLayerTypeContainer is a container layer. | ||||
| 	OsLayerTypeContainer OsLayerType = "Container" | ||||
| 	// OsLayerTypeVM is a virtual machine layer. | ||||
| 	OsLayerTypeVM OsLayerType = "Vm" | ||||
| ) | ||||
|  | ||||
| // OsLayerOptions are the set of options that are used with the `SetupBaseOSLayer` and | ||||
| // `SetupBaseOSVolume` calls. | ||||
| type OsLayerOptions struct { | ||||
| 	Type                       OsLayerType `json:"Type,omitempty"` | ||||
| 	DisableCiCacheOptimization bool        `json:"DisableCiCacheOptimization,omitempty"` | ||||
| 	SkipUpdateBcdForBoot       bool        `json:"SkipUpdateBcdForBoot,omitempty"` | ||||
| } | ||||
							
								
								
									
										319
									
								
								vendor/github.com/Microsoft/hcsshim/computestorage/zsyscall_windows.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										319
									
								
								vendor/github.com/Microsoft/hcsshim/computestorage/zsyscall_windows.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,319 @@ | ||||
| // Code generated mksyscall_windows.exe DO NOT EDIT | ||||
|  | ||||
| package computestorage | ||||
|  | ||||
| import ( | ||||
| 	"syscall" | ||||
| 	"unsafe" | ||||
|  | ||||
| 	"golang.org/x/sys/windows" | ||||
| ) | ||||
|  | ||||
| var _ unsafe.Pointer | ||||
|  | ||||
| // Do the interface allocations only once for common | ||||
| // Errno values. | ||||
| const ( | ||||
| 	errnoERROR_IO_PENDING = 997 | ||||
| ) | ||||
|  | ||||
| var ( | ||||
| 	errERROR_IO_PENDING error = syscall.Errno(errnoERROR_IO_PENDING) | ||||
| ) | ||||
|  | ||||
| // errnoErr returns common boxed Errno values, to prevent | ||||
| // allocations at runtime. | ||||
| func errnoErr(e syscall.Errno) error { | ||||
| 	switch e { | ||||
| 	case 0: | ||||
| 		return nil | ||||
| 	case errnoERROR_IO_PENDING: | ||||
| 		return errERROR_IO_PENDING | ||||
| 	} | ||||
| 	// TODO: add more here, after collecting data on the common | ||||
| 	// error values see on Windows. (perhaps when running | ||||
| 	// all.bat?) | ||||
| 	return e | ||||
| } | ||||
|  | ||||
| var ( | ||||
| 	modcomputestorage = windows.NewLazySystemDLL("computestorage.dll") | ||||
|  | ||||
| 	procHcsImportLayer              = modcomputestorage.NewProc("HcsImportLayer") | ||||
| 	procHcsExportLayer              = modcomputestorage.NewProc("HcsExportLayer") | ||||
| 	procHcsDestoryLayer             = modcomputestorage.NewProc("HcsDestoryLayer") | ||||
| 	procHcsSetupBaseOSLayer         = modcomputestorage.NewProc("HcsSetupBaseOSLayer") | ||||
| 	procHcsInitializeWritableLayer  = modcomputestorage.NewProc("HcsInitializeWritableLayer") | ||||
| 	procHcsAttachLayerStorageFilter = modcomputestorage.NewProc("HcsAttachLayerStorageFilter") | ||||
| 	procHcsDetachLayerStorageFilter = modcomputestorage.NewProc("HcsDetachLayerStorageFilter") | ||||
| 	procHcsFormatWritableLayerVhd   = modcomputestorage.NewProc("HcsFormatWritableLayerVhd") | ||||
| 	procHcsGetLayerVhdMountPath     = modcomputestorage.NewProc("HcsGetLayerVhdMountPath") | ||||
| 	procHcsSetupBaseOSVolume        = modcomputestorage.NewProc("HcsSetupBaseOSVolume") | ||||
| ) | ||||
|  | ||||
| func hcsImportLayer(layerPath string, sourceFolderPath string, layerData string) (hr error) { | ||||
| 	var _p0 *uint16 | ||||
| 	_p0, hr = syscall.UTF16PtrFromString(layerPath) | ||||
| 	if hr != nil { | ||||
| 		return | ||||
| 	} | ||||
| 	var _p1 *uint16 | ||||
| 	_p1, hr = syscall.UTF16PtrFromString(sourceFolderPath) | ||||
| 	if hr != nil { | ||||
| 		return | ||||
| 	} | ||||
| 	var _p2 *uint16 | ||||
| 	_p2, hr = syscall.UTF16PtrFromString(layerData) | ||||
| 	if hr != nil { | ||||
| 		return | ||||
| 	} | ||||
| 	return _hcsImportLayer(_p0, _p1, _p2) | ||||
| } | ||||
|  | ||||
| func _hcsImportLayer(layerPath *uint16, sourceFolderPath *uint16, layerData *uint16) (hr error) { | ||||
| 	if hr = procHcsImportLayer.Find(); hr != nil { | ||||
| 		return | ||||
| 	} | ||||
| 	r0, _, _ := syscall.Syscall(procHcsImportLayer.Addr(), 3, uintptr(unsafe.Pointer(layerPath)), uintptr(unsafe.Pointer(sourceFolderPath)), uintptr(unsafe.Pointer(layerData))) | ||||
| 	if int32(r0) < 0 { | ||||
| 		if r0&0x1fff0000 == 0x00070000 { | ||||
| 			r0 &= 0xffff | ||||
| 		} | ||||
| 		hr = syscall.Errno(r0) | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func hcsExportLayer(layerPath string, exportFolderPath string, layerData string, options string) (hr error) { | ||||
| 	var _p0 *uint16 | ||||
| 	_p0, hr = syscall.UTF16PtrFromString(layerPath) | ||||
| 	if hr != nil { | ||||
| 		return | ||||
| 	} | ||||
| 	var _p1 *uint16 | ||||
| 	_p1, hr = syscall.UTF16PtrFromString(exportFolderPath) | ||||
| 	if hr != nil { | ||||
| 		return | ||||
| 	} | ||||
| 	var _p2 *uint16 | ||||
| 	_p2, hr = syscall.UTF16PtrFromString(layerData) | ||||
| 	if hr != nil { | ||||
| 		return | ||||
| 	} | ||||
| 	var _p3 *uint16 | ||||
| 	_p3, hr = syscall.UTF16PtrFromString(options) | ||||
| 	if hr != nil { | ||||
| 		return | ||||
| 	} | ||||
| 	return _hcsExportLayer(_p0, _p1, _p2, _p3) | ||||
| } | ||||
|  | ||||
| func _hcsExportLayer(layerPath *uint16, exportFolderPath *uint16, layerData *uint16, options *uint16) (hr error) { | ||||
| 	if hr = procHcsExportLayer.Find(); hr != nil { | ||||
| 		return | ||||
| 	} | ||||
| 	r0, _, _ := syscall.Syscall6(procHcsExportLayer.Addr(), 4, uintptr(unsafe.Pointer(layerPath)), uintptr(unsafe.Pointer(exportFolderPath)), uintptr(unsafe.Pointer(layerData)), uintptr(unsafe.Pointer(options)), 0, 0) | ||||
| 	if int32(r0) < 0 { | ||||
| 		if r0&0x1fff0000 == 0x00070000 { | ||||
| 			r0 &= 0xffff | ||||
| 		} | ||||
| 		hr = syscall.Errno(r0) | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func hcsDestroyLayer(layerPath string) (hr error) { | ||||
| 	var _p0 *uint16 | ||||
| 	_p0, hr = syscall.UTF16PtrFromString(layerPath) | ||||
| 	if hr != nil { | ||||
| 		return | ||||
| 	} | ||||
| 	return _hcsDestroyLayer(_p0) | ||||
| } | ||||
|  | ||||
| func _hcsDestroyLayer(layerPath *uint16) (hr error) { | ||||
| 	if hr = procHcsDestoryLayer.Find(); hr != nil { | ||||
| 		return | ||||
| 	} | ||||
| 	r0, _, _ := syscall.Syscall(procHcsDestoryLayer.Addr(), 1, uintptr(unsafe.Pointer(layerPath)), 0, 0) | ||||
| 	if int32(r0) < 0 { | ||||
| 		if r0&0x1fff0000 == 0x00070000 { | ||||
| 			r0 &= 0xffff | ||||
| 		} | ||||
| 		hr = syscall.Errno(r0) | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func hcsSetupBaseOSLayer(layerPath string, handle windows.Handle, options string) (hr error) { | ||||
| 	var _p0 *uint16 | ||||
| 	_p0, hr = syscall.UTF16PtrFromString(layerPath) | ||||
| 	if hr != nil { | ||||
| 		return | ||||
| 	} | ||||
| 	var _p1 *uint16 | ||||
| 	_p1, hr = syscall.UTF16PtrFromString(options) | ||||
| 	if hr != nil { | ||||
| 		return | ||||
| 	} | ||||
| 	return _hcsSetupBaseOSLayer(_p0, handle, _p1) | ||||
| } | ||||
|  | ||||
| func _hcsSetupBaseOSLayer(layerPath *uint16, handle windows.Handle, options *uint16) (hr error) { | ||||
| 	if hr = procHcsSetupBaseOSLayer.Find(); hr != nil { | ||||
| 		return | ||||
| 	} | ||||
| 	r0, _, _ := syscall.Syscall(procHcsSetupBaseOSLayer.Addr(), 3, uintptr(unsafe.Pointer(layerPath)), uintptr(handle), uintptr(unsafe.Pointer(options))) | ||||
| 	if int32(r0) < 0 { | ||||
| 		if r0&0x1fff0000 == 0x00070000 { | ||||
| 			r0 &= 0xffff | ||||
| 		} | ||||
| 		hr = syscall.Errno(r0) | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func hcsInitializeWritableLayer(writableLayerPath string, layerData string, options string) (hr error) { | ||||
| 	var _p0 *uint16 | ||||
| 	_p0, hr = syscall.UTF16PtrFromString(writableLayerPath) | ||||
| 	if hr != nil { | ||||
| 		return | ||||
| 	} | ||||
| 	var _p1 *uint16 | ||||
| 	_p1, hr = syscall.UTF16PtrFromString(layerData) | ||||
| 	if hr != nil { | ||||
| 		return | ||||
| 	} | ||||
| 	var _p2 *uint16 | ||||
| 	_p2, hr = syscall.UTF16PtrFromString(options) | ||||
| 	if hr != nil { | ||||
| 		return | ||||
| 	} | ||||
| 	return _hcsInitializeWritableLayer(_p0, _p1, _p2) | ||||
| } | ||||
|  | ||||
| func _hcsInitializeWritableLayer(writableLayerPath *uint16, layerData *uint16, options *uint16) (hr error) { | ||||
| 	if hr = procHcsInitializeWritableLayer.Find(); hr != nil { | ||||
| 		return | ||||
| 	} | ||||
| 	r0, _, _ := syscall.Syscall(procHcsInitializeWritableLayer.Addr(), 3, uintptr(unsafe.Pointer(writableLayerPath)), uintptr(unsafe.Pointer(layerData)), uintptr(unsafe.Pointer(options))) | ||||
| 	if int32(r0) < 0 { | ||||
| 		if r0&0x1fff0000 == 0x00070000 { | ||||
| 			r0 &= 0xffff | ||||
| 		} | ||||
| 		hr = syscall.Errno(r0) | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func hcsAttachLayerStorageFilter(layerPath string, layerData string) (hr error) { | ||||
| 	var _p0 *uint16 | ||||
| 	_p0, hr = syscall.UTF16PtrFromString(layerPath) | ||||
| 	if hr != nil { | ||||
| 		return | ||||
| 	} | ||||
| 	var _p1 *uint16 | ||||
| 	_p1, hr = syscall.UTF16PtrFromString(layerData) | ||||
| 	if hr != nil { | ||||
| 		return | ||||
| 	} | ||||
| 	return _hcsAttachLayerStorageFilter(_p0, _p1) | ||||
| } | ||||
|  | ||||
| func _hcsAttachLayerStorageFilter(layerPath *uint16, layerData *uint16) (hr error) { | ||||
| 	if hr = procHcsAttachLayerStorageFilter.Find(); hr != nil { | ||||
| 		return | ||||
| 	} | ||||
| 	r0, _, _ := syscall.Syscall(procHcsAttachLayerStorageFilter.Addr(), 2, uintptr(unsafe.Pointer(layerPath)), uintptr(unsafe.Pointer(layerData)), 0) | ||||
| 	if int32(r0) < 0 { | ||||
| 		if r0&0x1fff0000 == 0x00070000 { | ||||
| 			r0 &= 0xffff | ||||
| 		} | ||||
| 		hr = syscall.Errno(r0) | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func hcsDetachLayerStorageFilter(layerPath string) (hr error) { | ||||
| 	var _p0 *uint16 | ||||
| 	_p0, hr = syscall.UTF16PtrFromString(layerPath) | ||||
| 	if hr != nil { | ||||
| 		return | ||||
| 	} | ||||
| 	return _hcsDetachLayerStorageFilter(_p0) | ||||
| } | ||||
|  | ||||
| func _hcsDetachLayerStorageFilter(layerPath *uint16) (hr error) { | ||||
| 	if hr = procHcsDetachLayerStorageFilter.Find(); hr != nil { | ||||
| 		return | ||||
| 	} | ||||
| 	r0, _, _ := syscall.Syscall(procHcsDetachLayerStorageFilter.Addr(), 1, uintptr(unsafe.Pointer(layerPath)), 0, 0) | ||||
| 	if int32(r0) < 0 { | ||||
| 		if r0&0x1fff0000 == 0x00070000 { | ||||
| 			r0 &= 0xffff | ||||
| 		} | ||||
| 		hr = syscall.Errno(r0) | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func hcsFormatWritableLayerVhd(handle windows.Handle) (hr error) { | ||||
| 	if hr = procHcsFormatWritableLayerVhd.Find(); hr != nil { | ||||
| 		return | ||||
| 	} | ||||
| 	r0, _, _ := syscall.Syscall(procHcsFormatWritableLayerVhd.Addr(), 1, uintptr(handle), 0, 0) | ||||
| 	if int32(r0) < 0 { | ||||
| 		if r0&0x1fff0000 == 0x00070000 { | ||||
| 			r0 &= 0xffff | ||||
| 		} | ||||
| 		hr = syscall.Errno(r0) | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func hcsGetLayerVhdMountPath(vhdHandle windows.Handle, mountPath **uint16) (hr error) { | ||||
| 	if hr = procHcsGetLayerVhdMountPath.Find(); hr != nil { | ||||
| 		return | ||||
| 	} | ||||
| 	r0, _, _ := syscall.Syscall(procHcsGetLayerVhdMountPath.Addr(), 2, uintptr(vhdHandle), uintptr(unsafe.Pointer(mountPath)), 0) | ||||
| 	if int32(r0) < 0 { | ||||
| 		if r0&0x1fff0000 == 0x00070000 { | ||||
| 			r0 &= 0xffff | ||||
| 		} | ||||
| 		hr = syscall.Errno(r0) | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func hcsSetupBaseOSVolume(layerPath string, volumePath string, options string) (hr error) { | ||||
| 	var _p0 *uint16 | ||||
| 	_p0, hr = syscall.UTF16PtrFromString(layerPath) | ||||
| 	if hr != nil { | ||||
| 		return | ||||
| 	} | ||||
| 	var _p1 *uint16 | ||||
| 	_p1, hr = syscall.UTF16PtrFromString(volumePath) | ||||
| 	if hr != nil { | ||||
| 		return | ||||
| 	} | ||||
| 	var _p2 *uint16 | ||||
| 	_p2, hr = syscall.UTF16PtrFromString(options) | ||||
| 	if hr != nil { | ||||
| 		return | ||||
| 	} | ||||
| 	return _hcsSetupBaseOSVolume(_p0, _p1, _p2) | ||||
| } | ||||
|  | ||||
| func _hcsSetupBaseOSVolume(layerPath *uint16, volumePath *uint16, options *uint16) (hr error) { | ||||
| 	if hr = procHcsSetupBaseOSVolume.Find(); hr != nil { | ||||
| 		return | ||||
| 	} | ||||
| 	r0, _, _ := syscall.Syscall(procHcsSetupBaseOSVolume.Addr(), 3, uintptr(unsafe.Pointer(layerPath)), uintptr(unsafe.Pointer(volumePath)), uintptr(unsafe.Pointer(options))) | ||||
| 	if int32(r0) < 0 { | ||||
| 		if r0&0x1fff0000 == 0x00070000 { | ||||
| 			r0 &= 0xffff | ||||
| 		} | ||||
| 		hr = syscall.Errno(r0) | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
							
								
								
									
										4
									
								
								vendor/github.com/Microsoft/hcsshim/go.mod
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								vendor/github.com/Microsoft/hcsshim/go.mod
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -3,7 +3,7 @@ module github.com/Microsoft/hcsshim | ||||
| go 1.13 | ||||
|  | ||||
| require ( | ||||
| 	github.com/Microsoft/go-winio v0.4.15-0.20200908182639-5b44b70ab3ab | ||||
| 	github.com/Microsoft/go-winio v0.4.16-0.20201130162521-d1ffc52c7331 | ||||
| 	github.com/containerd/cgroups v0.0.0-20200531161412-0dbf7f05ba59 | ||||
| 	github.com/containerd/console v0.0.0-20180822173158-c12b1e7919c1 | ||||
| 	github.com/containerd/containerd v1.3.2 | ||||
| @@ -26,7 +26,7 @@ require ( | ||||
| 	go.opencensus.io v0.22.0 | ||||
| 	golang.org/x/net v0.0.0-20191004110552-13f9640d40b9 // indirect | ||||
| 	golang.org/x/sync v0.0.0-20190423024810-112230192c58 | ||||
| 	golang.org/x/sys v0.0.0-20200120151820-655fe14d7479 | ||||
| 	golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3 | ||||
| 	google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873 // indirect | ||||
| 	google.golang.org/grpc v1.23.1 | ||||
| 	gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 // indirect | ||||
|   | ||||
							
								
								
									
										4
									
								
								vendor/github.com/Microsoft/hcsshim/go.sum
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								vendor/github.com/Microsoft/hcsshim/go.sum
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -3,6 +3,8 @@ github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ | ||||
| github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= | ||||
| github.com/Microsoft/go-winio v0.4.15-0.20200908182639-5b44b70ab3ab h1:9pygWVFqbY9lPxM0peffumuVDyMuIMzNLyO9uFjJuQo= | ||||
| github.com/Microsoft/go-winio v0.4.15-0.20200908182639-5b44b70ab3ab/go.mod h1:tTuCMEN+UleMWgg9dVx4Hu52b1bJo+59jBh3ajtinzw= | ||||
| github.com/Microsoft/go-winio v0.4.16-0.20201130162521-d1ffc52c7331 h1:3YnB7Hpmh1lPecPE8doMOtYCrMdrpedZOvxfuNES/Vk= | ||||
| github.com/Microsoft/go-winio v0.4.16-0.20201130162521-d1ffc52c7331/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugXOPRXwdLnMv0= | ||||
| github.com/cilium/ebpf v0.0.0-20200110133405-4032b1d8aae3/go.mod h1:MA5e5Lr8slmEg9bt0VpxxWqJlO4iwu3FBdHUzV7wQVg= | ||||
| github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= | ||||
| github.com/containerd/cgroups v0.0.0-20200531161412-0dbf7f05ba59 h1:qWj4qVYZ95vLWwqyNJCQg7rDsG5wPdze0UaPolH7DUk= | ||||
| @@ -121,6 +123,8 @@ golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7w | ||||
| golang.org/x/sys v0.0.0-20191022100944-742c48ecaeb7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||
| golang.org/x/sys v0.0.0-20200120151820-655fe14d7479 h1:LhLiKguPgZL+Tglay4GhVtfF0kb8cvOJ0dHTCBO8YNI= | ||||
| golang.org/x/sys v0.0.0-20200120151820-655fe14d7479/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||
| golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3 h1:kzM6+9dur93BcC2kVlYl34cHU+TYZLanmpSJHVMmL64= | ||||
| golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||
| golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg= | ||||
| golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= | ||||
| golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= | ||||
|   | ||||
							
								
								
									
										10
									
								
								vendor/github.com/Microsoft/hcsshim/hcn/hcnglobals.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										10
									
								
								vendor/github.com/Microsoft/hcsshim/hcn/hcnglobals.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -63,8 +63,14 @@ var ( | ||||
| 	// HNS 10.3 allows for VXLAN ports | ||||
| 	VxlanPortVersion = VersionRanges{VersionRange{MinVersion: Version{Major: 10, Minor: 3}, MaxVersion: Version{Major: math.MaxInt32, Minor: math.MaxInt32}}} | ||||
|  | ||||
| 	//HNS 13.1 allows for L4Proxy Policy support | ||||
| 	L4ProxyPolicyVersion = VersionRanges{VersionRange{MinVersion: Version{Major: 13, Minor: 1}, MaxVersion: Version{Major: math.MaxInt32, Minor: math.MaxInt32}}} | ||||
| 	//HNS 9.5 through 10.0(not included), 10.5 through 11.0(not included), 11.11 through 12.0(not included), 12.1 through 13.0(not included), 13.1+ allows for Network L4Proxy Policy support | ||||
| 	L4ProxyPolicyVersion = VersionRanges{ | ||||
| 		VersionRange{MinVersion: Version{Major: 9, Minor: 5}, MaxVersion: Version{Major: 9, Minor: math.MaxInt32}}, | ||||
| 		VersionRange{MinVersion: Version{Major: 10, Minor: 5}, MaxVersion: Version{Major: 10, Minor: math.MaxInt32}}, | ||||
| 		VersionRange{MinVersion: Version{Major: 11, Minor: 11}, MaxVersion: Version{Major: 11, Minor: math.MaxInt32}}, | ||||
| 		VersionRange{MinVersion: Version{Major: 12, Minor: 1}, MaxVersion: Version{Major: 12, Minor: math.MaxInt32}}, | ||||
| 		VersionRange{MinVersion: Version{Major: 13, Minor: 1}, MaxVersion: Version{Major: math.MaxInt32, Minor: math.MaxInt32}}, | ||||
| 	} | ||||
|  | ||||
| 	//HNS 13.2 allows for L4WfpProxy Policy support | ||||
| 	L4WfpProxyPolicyVersion = VersionRanges{VersionRange{MinVersion: Version{Major: 13, Minor: 2}, MaxVersion: Version{Major: math.MaxInt32, Minor: math.MaxInt32}}} | ||||
|   | ||||
							
								
								
									
										7
									
								
								vendor/github.com/Microsoft/hcsshim/hcn/hcnpolicy.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										7
									
								
								vendor/github.com/Microsoft/hcsshim/hcn/hcnpolicy.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -154,9 +154,10 @@ type FiveTuple struct { | ||||
|  | ||||
| // L4WfpProxyPolicySetting sets Layer-4 Proxy on an endpoint. | ||||
| type L4WfpProxyPolicySetting struct { | ||||
| 	Port        string    `json:",omitempty"` | ||||
| 	FilterTuple FiveTuple `json:",omitempty"` | ||||
| 	UserSID     string    `json:",omitempty"` | ||||
| 	InboundProxyPort  string    `json:",omitempty"` | ||||
| 	OutboundProxyPort string    `json:",omitempty"` | ||||
| 	FilterTuple       FiveTuple `json:",omitempty"` | ||||
| 	UserSID           string    `json:",omitempty"` | ||||
| } | ||||
|  | ||||
| // PortnameEndpointPolicySetting sets the port name for an endpoint. | ||||
|   | ||||
							
								
								
									
										5
									
								
								vendor/github.com/Microsoft/hcsshim/internal/hcs/syscall.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										5
									
								
								vendor/github.com/Microsoft/hcsshim/internal/hcs/syscall.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,5 +0,0 @@ | ||||
| package hcs | ||||
|  | ||||
| //go:generate go run ../../mksyscall_windows.go -output zsyscall_windows.go syscall.go | ||||
|  | ||||
| //sys hcsFormatWritableLayerVhd(handle uintptr) (hr error) = computestorage.HcsFormatWritableLayerVhd | ||||
							
								
								
									
										5
									
								
								vendor/github.com/Microsoft/hcsshim/internal/hcs/utils.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										5
									
								
								vendor/github.com/Microsoft/hcsshim/internal/hcs/utils.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -7,6 +7,7 @@ import ( | ||||
|  | ||||
| 	"github.com/Microsoft/go-winio" | ||||
| 	diskutil "github.com/Microsoft/go-winio/vhd" | ||||
| 	"github.com/Microsoft/hcsshim/computestorage" | ||||
| 	"github.com/pkg/errors" | ||||
| 	"golang.org/x/sys/windows" | ||||
| ) | ||||
| @@ -36,7 +37,7 @@ func makeOpenFiles(hs []syscall.Handle) (_ []io.ReadWriteCloser, err error) { | ||||
| 	return fs, nil | ||||
| } | ||||
|  | ||||
| // creates a VHD formatted with NTFS of size `sizeGB` at the given `vhdPath`. | ||||
| // CreateNTFSVHD creates a VHD formatted with NTFS of size `sizeGB` at the given `vhdPath`. | ||||
| func CreateNTFSVHD(ctx context.Context, vhdPath string, sizeGB uint32) (err error) { | ||||
| 	if err := diskutil.CreateVhdx(vhdPath, sizeGB, 1); err != nil { | ||||
| 		return errors.Wrap(err, "failed to create VHD") | ||||
| @@ -53,7 +54,7 @@ func CreateNTFSVHD(ctx context.Context, vhdPath string, sizeGB uint32) (err erro | ||||
| 		} | ||||
| 	}() | ||||
|  | ||||
| 	if err := hcsFormatWritableLayerVhd(uintptr(vhd)); err != nil { | ||||
| 	if err := computestorage.FormatWritableLayerVhd(ctx, windows.Handle(vhd)); err != nil { | ||||
| 		return errors.Wrap(err, "failed to format VHD") | ||||
| 	} | ||||
|  | ||||
|   | ||||
							
								
								
									
										54
									
								
								vendor/github.com/Microsoft/hcsshim/internal/hcs/zsyscall_windows.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										54
									
								
								vendor/github.com/Microsoft/hcsshim/internal/hcs/zsyscall_windows.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,54 +0,0 @@ | ||||
| // Code generated mksyscall_windows.exe DO NOT EDIT | ||||
|  | ||||
| package hcs | ||||
|  | ||||
| import ( | ||||
| 	"syscall" | ||||
| 	"unsafe" | ||||
|  | ||||
| 	"golang.org/x/sys/windows" | ||||
| ) | ||||
|  | ||||
| var _ unsafe.Pointer | ||||
|  | ||||
| // Do the interface allocations only once for common | ||||
| // Errno values. | ||||
| const ( | ||||
| 	errnoERROR_IO_PENDING = 997 | ||||
| ) | ||||
|  | ||||
| var ( | ||||
| 	errERROR_IO_PENDING error = syscall.Errno(errnoERROR_IO_PENDING) | ||||
| ) | ||||
|  | ||||
| // errnoErr returns common boxed Errno values, to prevent | ||||
| // allocations at runtime. | ||||
| func errnoErr(e syscall.Errno) error { | ||||
| 	switch e { | ||||
| 	case 0: | ||||
| 		return nil | ||||
| 	case errnoERROR_IO_PENDING: | ||||
| 		return errERROR_IO_PENDING | ||||
| 	} | ||||
| 	// TODO: add more here, after collecting data on the common | ||||
| 	// error values see on Windows. (perhaps when running | ||||
| 	// all.bat?) | ||||
| 	return e | ||||
| } | ||||
|  | ||||
| var ( | ||||
| 	modcomputestorage = windows.NewLazySystemDLL("computestorage.dll") | ||||
|  | ||||
| 	procHcsFormatWritableLayerVhd = modcomputestorage.NewProc("HcsFormatWritableLayerVhd") | ||||
| ) | ||||
|  | ||||
| func hcsFormatWritableLayerVhd(handle uintptr) (hr error) { | ||||
| 	r0, _, _ := syscall.Syscall(procHcsFormatWritableLayerVhd.Addr(), 1, uintptr(handle), 0, 0) | ||||
| 	if int32(r0) < 0 { | ||||
| 		if r0&0x1fff0000 == 0x00070000 { | ||||
| 			r0 &= 0xffff | ||||
| 		} | ||||
| 		hr = syscall.Errno(r0) | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
							
								
								
									
										7
									
								
								vendor/github.com/Microsoft/hcsshim/internal/hns/namespace.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										7
									
								
								vendor/github.com/Microsoft/hcsshim/internal/hns/namespace.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -27,9 +27,10 @@ type namespaceResourceRequest struct { | ||||
| } | ||||
|  | ||||
| type Namespace struct { | ||||
| 	ID           string | ||||
| 	IsDefault    bool                `json:",omitempty"` | ||||
| 	ResourceList []NamespaceResource `json:",omitempty"` | ||||
| 	ID            string | ||||
| 	IsDefault     bool                `json:",omitempty"` | ||||
| 	ResourceList  []NamespaceResource `json:",omitempty"` | ||||
| 	CompartmentId uint32              `json:",omitempty"` | ||||
| } | ||||
|  | ||||
| func issueNamespaceRequest(id *string, method, subpath string, request interface{}) (*Namespace, error) { | ||||
|   | ||||
							
								
								
									
										15
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/cpu_group.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/cpu_group.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,15 @@ | ||||
| /* | ||||
|  * HCS API | ||||
|  * | ||||
|  * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen) | ||||
|  * | ||||
|  * API version: 2.4 | ||||
|  * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) | ||||
|  */ | ||||
|  | ||||
| package hcsschema | ||||
|  | ||||
| // CPU groups allow Hyper-V administrators to better manage and allocate the host's CPU resources across guest virtual machines | ||||
| type CpuGroup struct { | ||||
| 	Id string `json:"Id,omitempty"` | ||||
| } | ||||
							
								
								
									
										15
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/cpu_group_affinity.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/cpu_group_affinity.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,15 @@ | ||||
| /* | ||||
|  * HCS API | ||||
|  * | ||||
|  * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen) | ||||
|  * | ||||
|  * API version: 2.4 | ||||
|  * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) | ||||
|  */ | ||||
|  | ||||
| package hcsschema | ||||
|  | ||||
| type CpuGroupAffinity struct { | ||||
| 	LogicalProcessorCount int32   `json:"LogicalProcessorCount,omitempty"` | ||||
| 	LogicalProcessors     []int32 `json:"LogicalProcessors,omitempty"` | ||||
| } | ||||
							
								
								
									
										18
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/cpu_group_config.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/cpu_group_config.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,18 @@ | ||||
| /* | ||||
|  * HCS API | ||||
|  * | ||||
|  * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen) | ||||
|  * | ||||
|  * API version: 2.4 | ||||
|  * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) | ||||
|  */ | ||||
|  | ||||
| package hcsschema | ||||
|  | ||||
| type CpuGroupConfig struct { | ||||
| 	GroupId         string             `json:"GroupId,omitempty"` | ||||
| 	Affinity        *CpuGroupAffinity  `json:"Affinity,omitempty"` | ||||
| 	GroupProperties []CpuGroupProperty `json:"GroupProperties,omitempty"` | ||||
| 	// Hypervisor CPU group IDs exposed to clients | ||||
| 	HypervisorGroupId int32 `json:"HypervisorGroupId,omitempty"` | ||||
| } | ||||
							
								
								
									
										15
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/cpu_group_configurations.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/cpu_group_configurations.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,15 @@ | ||||
| /* | ||||
|  * HCS API | ||||
|  * | ||||
|  * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen) | ||||
|  * | ||||
|  * API version: 2.4 | ||||
|  * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) | ||||
|  */ | ||||
|  | ||||
| package hcsschema | ||||
|  | ||||
| // Structure used to return cpu groups for a Service property query | ||||
| type CpuGroupConfigurations struct { | ||||
| 	CpuGroups []CpuGroupConfig `json:"CpuGroups,omitempty"` | ||||
| } | ||||
							
								
								
									
										18
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/cpu_group_operations.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/cpu_group_operations.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,18 @@ | ||||
| /* | ||||
|  * HCS API | ||||
|  * | ||||
|  * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen) | ||||
|  * | ||||
|  * API version: 2.4 | ||||
|  * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) | ||||
|  */ | ||||
|  | ||||
| package hcsschema | ||||
|  | ||||
| type CPUGroupOperation string | ||||
|  | ||||
| const ( | ||||
| 	CreateGroup CPUGroupOperation = "CreateGroup" | ||||
| 	DeleteGroup CPUGroupOperation = "DeleteGroup" | ||||
| 	SetProperty CPUGroupOperation = "SetProperty" | ||||
| ) | ||||
							
								
								
									
										15
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/cpu_group_property.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/cpu_group_property.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,15 @@ | ||||
| /* | ||||
|  * HCS API | ||||
|  * | ||||
|  * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen) | ||||
|  * | ||||
|  * API version: 2.4 | ||||
|  * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) | ||||
|  */ | ||||
|  | ||||
| package hcsschema | ||||
|  | ||||
| type CpuGroupProperty struct { | ||||
| 	PropertyCode  uint32 `json:"PropertyCode,omitempty"` | ||||
| 	PropertyValue uint32 `json:"PropertyValue,omitempty"` | ||||
| } | ||||
							
								
								
									
										17
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/create_group_operation.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/create_group_operation.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,17 @@ | ||||
| /* | ||||
|  * HCS API | ||||
|  * | ||||
|  * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen) | ||||
|  * | ||||
|  * API version: 2.4 | ||||
|  * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) | ||||
|  */ | ||||
|  | ||||
| package hcsschema | ||||
|  | ||||
| // Create group operation settings | ||||
| type CreateGroupOperation struct { | ||||
| 	GroupId               string   `json:"GroupId,omitempty"` | ||||
| 	LogicalProcessorCount uint32   `json:"LogicalProcessorCount,omitempty"` | ||||
| 	LogicalProcessors     []uint32 `json:"LogicalProcessors,omitempty"` | ||||
| } | ||||
							
								
								
									
										15
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/delete_group_operation.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/delete_group_operation.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,15 @@ | ||||
| /* | ||||
|  * HCS API | ||||
|  * | ||||
|  * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen) | ||||
|  * | ||||
|  * API version: 2.4 | ||||
|  * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) | ||||
|  */ | ||||
|  | ||||
| package hcsschema | ||||
|  | ||||
| // Delete group operation settings | ||||
| type DeleteGroupOperation struct { | ||||
| 	GroupId string `json:"GroupId,omitempty"` | ||||
| } | ||||
							
								
								
									
										16
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/host_processor_modify_request.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/host_processor_modify_request.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,16 @@ | ||||
| /* | ||||
|  * HCS API | ||||
|  * | ||||
|  * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen) | ||||
|  * | ||||
|  * API version: 2.4 | ||||
|  * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) | ||||
|  */ | ||||
|  | ||||
| package hcsschema | ||||
|  | ||||
| // Structure used to request a service processor modification | ||||
| type HostProcessorModificationRequest struct { | ||||
| 	Operation        CPUGroupOperation `json:"Operation,omitempty"` | ||||
| 	OperationDetails interface{}       `json:"OperationDetails,omitempty"` | ||||
| } | ||||
							
								
								
									
										6
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/hv_socket_service_config.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/hv_socket_service_config.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -19,4 +19,10 @@ type HvSocketServiceConfig struct { | ||||
|  | ||||
| 	//  If true, HvSocket will process wildcard binds for this service/system combination.  Wildcard binds are secured in the registry at  SOFTWARE/Microsoft/Windows NT/CurrentVersion/Virtualization/HvSocket/WildcardDescriptors | ||||
| 	AllowWildcardBinds bool `json:"AllowWildcardBinds,omitempty"` | ||||
|  | ||||
| 	// Disabled controls whether the HvSocket service is accepting connection requests. | ||||
| 	// This set to true will make the service refuse all incoming connections as well as cancel | ||||
| 	// any connections already established. The service itself will still be active however | ||||
| 	// and can be re-enabled at a future time. | ||||
| 	Disabled bool `json:"Disabled,omitempty"` | ||||
| } | ||||
|   | ||||
							
								
								
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/property_type.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/property_type.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -22,4 +22,5 @@ const ( | ||||
| 	PTGuestConnection             PropertyType = "GuestConnection" | ||||
| 	PTICHeartbeatStatus           PropertyType = "ICHeartbeatStatus" | ||||
| 	PTProcessorTopology           PropertyType = "ProcessorTopology" | ||||
| 	PTCPUGroup                    PropertyType = "CpuGroup" | ||||
| ) | ||||
|   | ||||
							
								
								
									
										22
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/vm_processor_limits.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								vendor/github.com/Microsoft/hcsshim/internal/schema2/vm_processor_limits.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,22 @@ | ||||
| /* | ||||
|  * HCS API | ||||
|  * | ||||
|  * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen) | ||||
|  * | ||||
|  * API version: 2.4 | ||||
|  * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) | ||||
|  */ | ||||
|  | ||||
| package hcsschema | ||||
|  | ||||
| // ProcessorLimits is used when modifying processor scheduling limits of a virtual machine. | ||||
| type ProcessorLimits struct { | ||||
| 	// Maximum amount of host CPU resources that the virtual machine can use. | ||||
| 	Limit uint64 `json:"Limit,omitempty"` | ||||
| 	// Value describing the relative priority of this virtual machine compared to other virtual machines. | ||||
| 	Weight uint64 `json:"Weight,omitempty"` | ||||
| 	// Minimum amount of host CPU resources that the virtual machine is guaranteed. | ||||
| 	Reservation uint64 `json:"Reservation,omitempty"` | ||||
| 	// Provides the target maximum CPU frequency, in MHz, for a virtual machine. | ||||
| 	MaximumFrequencyMHz uint32 `json:"MaximumFrequencyMHz,omitempty"` | ||||
| } | ||||
							
								
								
									
										49
									
								
								vendor/github.com/Microsoft/hcsshim/internal/winapi/filesystem.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										49
									
								
								vendor/github.com/Microsoft/hcsshim/internal/winapi/filesystem.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -31,6 +31,43 @@ const ( | ||||
| 	STATUS_NO_MORE_ENTRIES = 0x8000001a | ||||
| ) | ||||
|  | ||||
| // Select entries from FILE_INFO_BY_HANDLE_CLASS. | ||||
| // | ||||
| // C declaration: | ||||
| //   typedef enum _FILE_INFO_BY_HANDLE_CLASS { | ||||
| //       FileBasicInfo, | ||||
| //       FileStandardInfo, | ||||
| //       FileNameInfo, | ||||
| //       FileRenameInfo, | ||||
| //       FileDispositionInfo, | ||||
| //       FileAllocationInfo, | ||||
| //       FileEndOfFileInfo, | ||||
| //       FileStreamInfo, | ||||
| //       FileCompressionInfo, | ||||
| //       FileAttributeTagInfo, | ||||
| //       FileIdBothDirectoryInfo, | ||||
| //       FileIdBothDirectoryRestartInfo, | ||||
| //       FileIoPriorityHintInfo, | ||||
| //       FileRemoteProtocolInfo, | ||||
| //       FileFullDirectoryInfo, | ||||
| //       FileFullDirectoryRestartInfo, | ||||
| //       FileStorageInfo, | ||||
| //       FileAlignmentInfo, | ||||
| //       FileIdInfo, | ||||
| //       FileIdExtdDirectoryInfo, | ||||
| //       FileIdExtdDirectoryRestartInfo, | ||||
| //       FileDispositionInfoEx, | ||||
| //       FileRenameInfoEx, | ||||
| //       FileCaseSensitiveInfo, | ||||
| //       FileNormalizedNameInfo, | ||||
| //       MaximumFileInfoByHandleClass | ||||
| //   } FILE_INFO_BY_HANDLE_CLASS, *PFILE_INFO_BY_HANDLE_CLASS; | ||||
| // | ||||
| // Documentation: https://docs.microsoft.com/en-us/windows/win32/api/minwinbase/ne-minwinbase-file_info_by_handle_class | ||||
| const ( | ||||
| 	FileIdInfo = 18 | ||||
| ) | ||||
|  | ||||
| type FileDispositionInformationEx struct { | ||||
| 	Flags uintptr | ||||
| } | ||||
| @@ -59,3 +96,15 @@ type FileLinkInformation struct { | ||||
| 	FileNameLength  uint32 | ||||
| 	FileName        [1]uint16 | ||||
| } | ||||
|  | ||||
| // C declaration: | ||||
| //   typedef struct _FILE_ID_INFO { | ||||
| //       ULONGLONG   VolumeSerialNumber; | ||||
| //       FILE_ID_128 FileId; | ||||
| //   } FILE_ID_INFO, *PFILE_ID_INFO; | ||||
| // | ||||
| // Documentation: https://docs.microsoft.com/en-us/windows/win32/api/winbase/ns-winbase-file_id_info | ||||
| type FILE_ID_INFO struct { | ||||
| 	VolumeSerialNumber uint64 | ||||
| 	FileID             [16]byte | ||||
| } | ||||
|   | ||||
							
								
								
									
										3
									
								
								vendor/github.com/Microsoft/hcsshim/internal/winapi/iocp.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								vendor/github.com/Microsoft/hcsshim/internal/winapi/iocp.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | ||||
| package winapi | ||||
|  | ||||
| //sys GetQueuedCompletionStatus(cphandle windows.Handle, qty *uint32, key *uintptr, overlapped **windows.Overlapped, timeout uint32) (err error) | ||||
							
								
								
									
										91
									
								
								vendor/github.com/Microsoft/hcsshim/internal/winapi/jobobject.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										91
									
								
								vendor/github.com/Microsoft/hcsshim/internal/winapi/jobobject.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,22 +1,24 @@ | ||||
| package winapi | ||||
|  | ||||
| import ( | ||||
| 	"unsafe" | ||||
|  | ||||
| 	"golang.org/x/sys/windows" | ||||
| ) | ||||
|  | ||||
| // Messages that can be received from an assigned io completion port. | ||||
| // https://docs.microsoft.com/en-us/windows/win32/api/winnt/ns-winnt-jobobject_associate_completion_port | ||||
| const ( | ||||
| 	JOB_OBJECT_MSG_END_OF_JOB_TIME       = 1 | ||||
| 	JOB_OBJECT_MSG_END_OF_PROCESS_TIME   = 2 | ||||
| 	JOB_OBJECT_MSG_ACTIVE_PROCESS_LIMIT  = 3 | ||||
| 	JOB_OBJECT_MSG_ACTIVE_PROCESS_ZERO   = 4 | ||||
| 	JOB_OBJECT_MSG_NEW_PROCESS           = 6 | ||||
| 	JOB_OBJECT_MSG_EXIT_PROCESS          = 7 | ||||
| 	JOB_OBJECT_MSG_ABNORMAL_EXIT_PROCESS = 8 | ||||
| 	JOB_OBJECT_MSG_PROCESS_MEMORY_LIMIT  = 9 | ||||
| 	JOB_OBJECT_MSG_JOB_MEMORY_LIMIT      = 10 | ||||
| 	JOB_OBJECT_MSG_NOTIFICATION_LIMIT    = 11 | ||||
| 	JOB_OBJECT_MSG_END_OF_JOB_TIME       uint32 = 1 | ||||
| 	JOB_OBJECT_MSG_END_OF_PROCESS_TIME   uint32 = 2 | ||||
| 	JOB_OBJECT_MSG_ACTIVE_PROCESS_LIMIT  uint32 = 3 | ||||
| 	JOB_OBJECT_MSG_ACTIVE_PROCESS_ZERO   uint32 = 4 | ||||
| 	JOB_OBJECT_MSG_NEW_PROCESS           uint32 = 6 | ||||
| 	JOB_OBJECT_MSG_EXIT_PROCESS          uint32 = 7 | ||||
| 	JOB_OBJECT_MSG_ABNORMAL_EXIT_PROCESS uint32 = 8 | ||||
| 	JOB_OBJECT_MSG_PROCESS_MEMORY_LIMIT  uint32 = 9 | ||||
| 	JOB_OBJECT_MSG_JOB_MEMORY_LIMIT      uint32 = 10 | ||||
| 	JOB_OBJECT_MSG_NOTIFICATION_LIMIT    uint32 = 11 | ||||
| ) | ||||
|  | ||||
| // IO limit flags | ||||
| @@ -24,9 +26,11 @@ const ( | ||||
| // https://docs.microsoft.com/en-us/windows/win32/api/jobapi2/ns-jobapi2-jobobject_io_rate_control_information | ||||
| const JOB_OBJECT_IO_RATE_CONTROL_ENABLE = 0x1 | ||||
|  | ||||
| const JOBOBJECT_IO_ATTRIBUTION_CONTROL_ENABLE uint32 = 0x1 | ||||
|  | ||||
| // https://docs.microsoft.com/en-us/windows/win32/api/winnt/ns-winnt-jobobject_cpu_rate_control_information | ||||
| const ( | ||||
| 	JOB_OBJECT_CPU_RATE_CONTROL_ENABLE = 1 << iota | ||||
| 	JOB_OBJECT_CPU_RATE_CONTROL_ENABLE uint32 = 1 << iota | ||||
| 	JOB_OBJECT_CPU_RATE_CONTROL_WEIGHT_BASED | ||||
| 	JOB_OBJECT_CPU_RATE_CONTROL_HARD_CAP | ||||
| 	JOB_OBJECT_CPU_RATE_CONTROL_NOTIFY | ||||
| @@ -41,7 +45,9 @@ const ( | ||||
| 	JobObjectBasicProcessIdList              uint32 = 3 | ||||
| 	JobObjectBasicAndIoAccountingInformation uint32 = 8 | ||||
| 	JobObjectLimitViolationInformation       uint32 = 13 | ||||
| 	JobObjectMemoryUsageInformation          uint32 = 28 | ||||
| 	JobObjectNotificationLimitInformation2   uint32 = 33 | ||||
| 	JobObjectIoAttribution                   uint32 = 42 | ||||
| ) | ||||
|  | ||||
| // https://docs.microsoft.com/en-us/windows/win32/api/winnt/ns-winnt-jobobject_basic_limit_information | ||||
| @@ -60,7 +66,7 @@ type JOBOBJECT_BASIC_LIMIT_INFORMATION struct { | ||||
| // https://docs.microsoft.com/en-us/windows/win32/api/winnt/ns-winnt-jobobject_cpu_rate_control_information | ||||
| type JOBOBJECT_CPU_RATE_CONTROL_INFORMATION struct { | ||||
| 	ControlFlags uint32 | ||||
| 	Rate         uint32 | ||||
| 	Value        uint32 | ||||
| } | ||||
|  | ||||
| // https://docs.microsoft.com/en-us/windows/win32/api/jobapi2/ns-jobapi2-jobobject_io_rate_control_information | ||||
| @@ -80,9 +86,68 @@ type JOBOBJECT_BASIC_PROCESS_ID_LIST struct { | ||||
| 	ProcessIdList             [1]uintptr | ||||
| } | ||||
|  | ||||
| // AllPids returns all the process Ids in the job object. | ||||
| func (p *JOBOBJECT_BASIC_PROCESS_ID_LIST) AllPids() []uintptr { | ||||
| 	return (*[(1 << 27) - 1]uintptr)(unsafe.Pointer(&p.ProcessIdList[0]))[:p.NumberOfProcessIdsInList] | ||||
| } | ||||
|  | ||||
| // https://docs.microsoft.com/en-us/windows/win32/api/winnt/ns-winnt-jobobject_basic_accounting_information | ||||
| type JOBOBJECT_BASIC_ACCOUNTING_INFORMATION struct { | ||||
| 	TotalUserTime             int64 | ||||
| 	TotalKernelTime           int64 | ||||
| 	ThisPeriodTotalUserTime   int64 | ||||
| 	ThisPeriodTotalKernelTime int64 | ||||
| 	TotalPageFaultCount       uint32 | ||||
| 	TotalProcesses            uint32 | ||||
| 	ActiveProcesses           uint32 | ||||
| 	TotalTerminateProcesses   uint32 | ||||
| } | ||||
|  | ||||
| //https://docs.microsoft.com/en-us/windows/win32/api/winnt/ns-winnt-jobobject_basic_and_io_accounting_information | ||||
| type JOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION struct { | ||||
| 	BasicInfo JOBOBJECT_BASIC_ACCOUNTING_INFORMATION | ||||
| 	IoInfo    windows.IO_COUNTERS | ||||
| } | ||||
|  | ||||
| // typedef struct _JOBOBJECT_MEMORY_USAGE_INFORMATION { | ||||
| //     ULONG64 JobMemory; | ||||
| //     ULONG64 PeakJobMemoryUsed; | ||||
| // } JOBOBJECT_MEMORY_USAGE_INFORMATION, *PJOBOBJECT_MEMORY_USAGE_INFORMATION; | ||||
| // | ||||
| type JOBOBJECT_MEMORY_USAGE_INFORMATION struct { | ||||
| 	JobMemory         uint64 | ||||
| 	PeakJobMemoryUsed uint64 | ||||
| } | ||||
|  | ||||
| // typedef struct _JOBOBJECT_IO_ATTRIBUTION_STATS { | ||||
| //     ULONG_PTR IoCount; | ||||
| //     ULONGLONG TotalNonOverlappedQueueTime; | ||||
| //     ULONGLONG TotalNonOverlappedServiceTime; | ||||
| //     ULONGLONG TotalSize; | ||||
| // } JOBOBJECT_IO_ATTRIBUTION_STATS, *PJOBOBJECT_IO_ATTRIBUTION_STATS; | ||||
| // | ||||
| type JOBOBJECT_IO_ATTRIBUTION_STATS struct { | ||||
| 	IoCount                       uintptr | ||||
| 	TotalNonOverlappedQueueTime   uint64 | ||||
| 	TotalNonOverlappedServiceTime uint64 | ||||
| 	TotalSize                     uint64 | ||||
| } | ||||
|  | ||||
| // typedef struct _JOBOBJECT_IO_ATTRIBUTION_INFORMATION { | ||||
| //     ULONG ControlFlags; | ||||
| //     JOBOBJECT_IO_ATTRIBUTION_STATS ReadStats; | ||||
| //     JOBOBJECT_IO_ATTRIBUTION_STATS WriteStats; | ||||
| // } JOBOBJECT_IO_ATTRIBUTION_INFORMATION, *PJOBOBJECT_IO_ATTRIBUTION_INFORMATION; | ||||
| // | ||||
| type JOBOBJECT_IO_ATTRIBUTION_INFORMATION struct { | ||||
| 	ControlFlags uint32 | ||||
| 	ReadStats    JOBOBJECT_IO_ATTRIBUTION_STATS | ||||
| 	WriteStats   JOBOBJECT_IO_ATTRIBUTION_STATS | ||||
| } | ||||
|  | ||||
| // https://docs.microsoft.com/en-us/windows/win32/api/winnt/ns-winnt-jobobject_associate_completion_port | ||||
| type JOBOBJECT_ASSOCIATE_COMPLETION_PORT struct { | ||||
| 	CompletionKey  uintptr | ||||
| 	CompletionKey  windows.Handle | ||||
| 	CompletionPort windows.Handle | ||||
| } | ||||
|  | ||||
|   | ||||
							
								
								
									
										3
									
								
								vendor/github.com/Microsoft/hcsshim/internal/winapi/net.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								vendor/github.com/Microsoft/hcsshim/internal/winapi/net.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | ||||
| package winapi | ||||
|  | ||||
| //sys SetJobCompartmentId(handle windows.Handle, compartmentId uint32) (win32Err error) = iphlpapi.SetJobCompartmentId | ||||
							
								
								
									
										2
									
								
								vendor/github.com/Microsoft/hcsshim/internal/winapi/winapi.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/github.com/Microsoft/hcsshim/internal/winapi/winapi.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -2,4 +2,4 @@ | ||||
| // be thought of as an extension to golang.org/x/sys/windows. | ||||
| package winapi | ||||
|  | ||||
| //go:generate go run ..\..\mksyscall_windows.go -output zsyscall_windows.go jobobject.go path.go logon.go memory.go processor.go devices.go filesystem.go errors.go | ||||
| //go:generate go run ..\..\mksyscall_windows.go -output zsyscall_windows.go net.go iocp.go jobobject.go path.go logon.go memory.go processor.go devices.go filesystem.go errors.go | ||||
|   | ||||
							
								
								
									
										23
									
								
								vendor/github.com/Microsoft/hcsshim/internal/winapi/zsyscall_windows.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										23
									
								
								vendor/github.com/Microsoft/hcsshim/internal/winapi/zsyscall_windows.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -37,15 +37,18 @@ func errnoErr(e syscall.Errno) error { | ||||
| } | ||||
|  | ||||
| var ( | ||||
| 	modiphlpapi = windows.NewLazySystemDLL("iphlpapi.dll") | ||||
| 	modkernel32 = windows.NewLazySystemDLL("kernel32.dll") | ||||
| 	modadvapi32 = windows.NewLazySystemDLL("advapi32.dll") | ||||
| 	modcfgmgr32 = windows.NewLazySystemDLL("cfgmgr32.dll") | ||||
| 	modntdll    = windows.NewLazySystemDLL("ntdll.dll") | ||||
|  | ||||
| 	procSetJobCompartmentId                  = modiphlpapi.NewProc("SetJobCompartmentId") | ||||
| 	procIsProcessInJob                       = modkernel32.NewProc("IsProcessInJob") | ||||
| 	procQueryInformationJobObject            = modkernel32.NewProc("QueryInformationJobObject") | ||||
| 	procOpenJobObjectW                       = modkernel32.NewProc("OpenJobObjectW") | ||||
| 	procSetIoRateControlInformationJobObject = modkernel32.NewProc("SetIoRateControlInformationJobObject") | ||||
| 	procGetQueuedCompletionStatus            = modkernel32.NewProc("GetQueuedCompletionStatus") | ||||
| 	procSearchPathW                          = modkernel32.NewProc("SearchPathW") | ||||
| 	procLogonUserW                           = modadvapi32.NewProc("LogonUserW") | ||||
| 	procRtlMoveMemory                        = modkernel32.NewProc("RtlMoveMemory") | ||||
| @@ -63,6 +66,14 @@ var ( | ||||
| 	procRtlNtStatusToDosError                = modntdll.NewProc("RtlNtStatusToDosError") | ||||
| ) | ||||
|  | ||||
| func SetJobCompartmentId(handle windows.Handle, compartmentId uint32) (win32Err error) { | ||||
| 	r0, _, _ := syscall.Syscall(procSetJobCompartmentId.Addr(), 2, uintptr(handle), uintptr(compartmentId), 0) | ||||
| 	if r0 != 0 { | ||||
| 		win32Err = syscall.Errno(r0) | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func IsProcessInJob(procHandle windows.Handle, jobHandle windows.Handle, result *bool) (err error) { | ||||
| 	r1, _, e1 := syscall.Syscall(procIsProcessInJob.Addr(), 3, uintptr(procHandle), uintptr(jobHandle), uintptr(unsafe.Pointer(result))) | ||||
| 	if r1 == 0 { | ||||
| @@ -119,6 +130,18 @@ func SetIoRateControlInformationJobObject(jobHandle windows.Handle, ioRateContro | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func GetQueuedCompletionStatus(cphandle windows.Handle, qty *uint32, key *uintptr, overlapped **windows.Overlapped, timeout uint32) (err error) { | ||||
| 	r1, _, e1 := syscall.Syscall6(procGetQueuedCompletionStatus.Addr(), 5, uintptr(cphandle), uintptr(unsafe.Pointer(qty)), uintptr(unsafe.Pointer(key)), uintptr(unsafe.Pointer(overlapped)), uintptr(timeout), 0) | ||||
| 	if r1 == 0 { | ||||
| 		if e1 != 0 { | ||||
| 			err = errnoErr(e1) | ||||
| 		} else { | ||||
| 			err = syscall.EINVAL | ||||
| 		} | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func SearchPath(lpPath *uint16, lpFileName *uint16, lpExtension *uint16, nBufferLength uint32, lpBuffer *uint16, lpFilePath **uint16) (size uint32, err error) { | ||||
| 	r0, _, e1 := syscall.Syscall6(procSearchPathW.Addr(), 6, uintptr(unsafe.Pointer(lpPath)), uintptr(unsafe.Pointer(lpFileName)), uintptr(unsafe.Pointer(lpExtension)), uintptr(nBufferLength), uintptr(unsafe.Pointer(lpBuffer)), uintptr(unsafe.Pointer(lpFilePath))) | ||||
| 	size = uint32(r0) | ||||
|   | ||||
							
								
								
									
										3
									
								
								vendor/github.com/Microsoft/hcsshim/osversion/windowsbuilds.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								vendor/github.com/Microsoft/hcsshim/osversion/windowsbuilds.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -32,4 +32,7 @@ const ( | ||||
| 	// V20H1 (version 2004) corresponds to Windows Server 2004 (semi-annual | ||||
| 	// channel). | ||||
| 	V20H1 = 19041 | ||||
|  | ||||
| 	// V20H2 corresponds to Windows Server 20H2 (semi-annual channel). | ||||
| 	V20H2 = 19042 | ||||
| ) | ||||
|   | ||||
							
								
								
									
										7
									
								
								vendor/modules.txt
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										7
									
								
								vendor/modules.txt
									
									
									
									
										vendored
									
									
								
							| @@ -1,7 +1,7 @@ | ||||
| # github.com/BurntSushi/toml v0.3.1 | ||||
| ## explicit | ||||
| github.com/BurntSushi/toml | ||||
| # github.com/Microsoft/go-winio v0.4.15 | ||||
| # github.com/Microsoft/go-winio v0.4.16 | ||||
| ## explicit | ||||
| github.com/Microsoft/go-winio | ||||
| github.com/Microsoft/go-winio/backuptar | ||||
| @@ -11,11 +11,12 @@ github.com/Microsoft/go-winio/pkg/fs | ||||
| github.com/Microsoft/go-winio/pkg/guid | ||||
| github.com/Microsoft/go-winio/pkg/security | ||||
| github.com/Microsoft/go-winio/vhd | ||||
| # github.com/Microsoft/hcsshim v0.8.10 | ||||
| # github.com/Microsoft/hcsshim v0.8.14 | ||||
| ## explicit | ||||
| github.com/Microsoft/hcsshim | ||||
| github.com/Microsoft/hcsshim/cmd/containerd-shim-runhcs-v1/options | ||||
| github.com/Microsoft/hcsshim/cmd/containerd-shim-runhcs-v1/stats | ||||
| github.com/Microsoft/hcsshim/computestorage | ||||
| github.com/Microsoft/hcsshim/ext4/internal/compactext4 | ||||
| github.com/Microsoft/hcsshim/ext4/internal/format | ||||
| github.com/Microsoft/hcsshim/ext4/tar2ext4 | ||||
| @@ -42,7 +43,7 @@ github.com/Microsoft/hcsshim/internal/wclayer | ||||
| github.com/Microsoft/hcsshim/internal/winapi | ||||
| github.com/Microsoft/hcsshim/osversion | ||||
| github.com/Microsoft/hcsshim/pkg/go-runhcs | ||||
| # github.com/Microsoft/hcsshim/test v0.0.0-20201119174602-966bebae11b4 | ||||
| # github.com/Microsoft/hcsshim/test v0.0.0-20201218223536-d3e5debf77da | ||||
| ## explicit | ||||
| github.com/Microsoft/hcsshim/test/functional/manifest | ||||
| # github.com/beorn7/perks v1.0.1 | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Daniel Canter
					Daniel Canter