Merge pull request #4859 from dcantah/update-hcsshim-winio
Update hcsshim and go-winio vendoring
This commit is contained in:
commit
9d98f882b9
6
go.mod
6
go.mod
@ -4,9 +4,9 @@ go 1.15
|
|||||||
|
|
||||||
require (
|
require (
|
||||||
github.com/BurntSushi/toml v0.3.1
|
github.com/BurntSushi/toml v0.3.1
|
||||||
github.com/Microsoft/go-winio v0.4.15
|
github.com/Microsoft/go-winio v0.4.16
|
||||||
github.com/Microsoft/hcsshim v0.8.10
|
github.com/Microsoft/hcsshim v0.8.14
|
||||||
github.com/Microsoft/hcsshim/test v0.0.0-20201119174602-966bebae11b4
|
github.com/Microsoft/hcsshim/test v0.0.0-20201218223536-d3e5debf77da
|
||||||
github.com/containerd/aufs v0.0.0-20200908144142-dab0cbea06f4
|
github.com/containerd/aufs v0.0.0-20200908144142-dab0cbea06f4
|
||||||
github.com/containerd/btrfs v0.0.0-20201111183144-404b9149801e
|
github.com/containerd/btrfs v0.0.0-20201111183144-404b9149801e
|
||||||
github.com/containerd/cgroups v0.0.0-20200824123100-0b889c03f102
|
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.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.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.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.16-0.20201130162521-d1ffc52c7331/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugXOPRXwdLnMv0=
|
||||||
github.com/Microsoft/go-winio v0.4.15 h1:qkLXKzb1QoVatRyd/YlXZ/Kg0m5K3SPuoD82jjSOaBc=
|
github.com/Microsoft/go-winio v0.4.16 h1:FtSW/jqD+l4ba5iPBj9CODVtgfYAD8w2wS923g/cFDk=
|
||||||
github.com/Microsoft/go-winio v0.4.15/go.mod h1:tTuCMEN+UleMWgg9dVx4Hu52b1bJo+59jBh3ajtinzw=
|
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.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-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.7/go.mod h1:OHd7sQqRFrYd3RmSgbgji+ctCwkbq2wbEYNSzOYtcBQ=
|
||||||
github.com/Microsoft/hcsshim v0.8.9/go.mod h1:5692vkUqntj1idxauYlpoINNKeqCiG6Sg38RRsjT5y8=
|
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.14 h1:lbPVK25c1cu5xTLITwpUcxoA9vKrKErASPYygvouJns=
|
||||||
github.com/Microsoft/hcsshim v0.8.10/go.mod h1:g5uw8EV2mAlzqe94tfNBNdr89fnbD/n3HV0OhsddkmM=
|
github.com/Microsoft/hcsshim v0.8.14/go.mod h1:NtVKoYxQuTLx6gEq0L96c9Ju4JbRJ4nY2ow3VK6a9Lg=
|
||||||
github.com/Microsoft/hcsshim/test v0.0.0-20201119174602-966bebae11b4 h1:1Q14MTWJKwTKSXQqAumktvGuUZ5dZflHNm/sMgGa7/4=
|
github.com/Microsoft/hcsshim/test v0.0.0-20201218223536-d3e5debf77da h1:sqPBuX6WumurdHaSRbS8xyyyP8Rf7kUpLUlJaN7rztw=
|
||||||
github.com/Microsoft/hcsshim/test v0.0.0-20201119174602-966bebae11b4/go.mod h1:IrOsC3sbIiki4idDR4z1Plxm8vAUM5dKN/HEVkRU0GI=
|
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/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.0.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0=
|
||||||
github.com/PuerkitoBio/purell v1.1.1/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
|
go 1.12
|
||||||
|
|
||||||
require (
|
require (
|
||||||
github.com/pkg/errors v0.8.1
|
github.com/pkg/errors v0.9.1
|
||||||
github.com/sirupsen/logrus v1.4.1
|
github.com/sirupsen/logrus v1.4.1
|
||||||
golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3
|
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/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 h1:mweAR1A6xJ3oS2pRaGiHgQ4OO8tzTaLawm8vnODuwDk=
|
||||||
github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
|
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.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
|
||||||
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
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 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
||||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||||
github.com/sirupsen/logrus v1.4.1 h1:GL2rEmy6nsikmW0r8opw9JIRScdMF5hA8cOYLH7In1k=
|
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 h1:bSDNvY7ZPG5RlJ8otE/7V6gMiyenm9RtJ7IUVIAoJ1w=
|
||||||
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
|
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-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 h1:7TYNF4UdlohbFwpNH04CoPMp1cHUZgO1Ebq5r2hIjfo=
|
||||||
golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
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.
|
// when the pipe is in message mode.
|
||||||
MessageMode bool
|
MessageMode bool
|
||||||
|
|
||||||
// InputBufferSize specifies the size the input buffer, in bytes.
|
// InputBufferSize specifies the size of the input buffer, in bytes.
|
||||||
InputBufferSize int32
|
InputBufferSize int32
|
||||||
|
|
||||||
// OutputBufferSize specifies the size the input buffer, in bytes.
|
// OutputBufferSize specifies the size of the output buffer, in bytes.
|
||||||
OutputBufferSize int32
|
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
|
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
|
//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 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, flags uint32, parameters *openVirtualDiskParameters, handle *syscall.Handle) (err error) [failretval != 0] = VirtDisk.OpenVirtualDisk
|
//sys openVirtualDisk(virtualStorageType *VirtualStorageType, path string, virtualDiskAccessMask uint32, openVirtualDiskFlags 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
|
//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
|
||||||
type virtualStorageType struct {
|
//sys getVirtualDiskPhysicalPath(handle syscall.Handle, diskPathSizeInBytes *uint32, buffer *uint16) (err error) [failretval != 0] = virtdisk.GetVirtualDiskPhysicalPath
|
||||||
DeviceID uint32
|
|
||||||
VendorID [16]byte
|
|
||||||
}
|
|
||||||
|
|
||||||
type (
|
type (
|
||||||
createVirtualDiskFlag uint32
|
CreateVirtualDiskFlag uint32
|
||||||
VirtualDiskAccessMask uint32
|
|
||||||
VirtualDiskFlag uint32
|
VirtualDiskFlag uint32
|
||||||
|
AttachVirtualDiskFlag uint32
|
||||||
|
DetachVirtualDiskFlag uint32
|
||||||
|
VirtualDiskAccessMask uint32
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
type VirtualStorageType struct {
|
||||||
// Flags for creating a VHD (not exported)
|
DeviceID uint32
|
||||||
createVirtualDiskFlagNone createVirtualDiskFlag = 0
|
VendorID guid.GUID
|
||||||
createVirtualDiskFlagFullPhysicalAllocation createVirtualDiskFlag = 1
|
}
|
||||||
createVirtualDiskFlagPreventWritesToSourceDisk createVirtualDiskFlag = 2
|
|
||||||
createVirtualDiskFlagDoNotCopyMetadataFromParent createVirtualDiskFlag = 4
|
|
||||||
|
|
||||||
// Access Mask for opening a VHD
|
type CreateVersion2 struct {
|
||||||
VirtualDiskAccessNone VirtualDiskAccessMask = 0
|
UniqueID guid.GUID
|
||||||
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
|
|
||||||
MaximumSize uint64
|
MaximumSize uint64
|
||||||
BlockSizeInBytes uint32
|
BlockSizeInBytes uint32
|
||||||
SectorSizeInBytes uint32
|
SectorSizeInBytes uint32
|
||||||
|
PhysicalSectorSizeInByte uint32
|
||||||
ParentPath *uint16 // string
|
ParentPath *uint16 // string
|
||||||
SourcePath *uint16 // string
|
SourcePath *uint16 // string
|
||||||
OpenFlags uint32
|
OpenFlags uint32
|
||||||
ParentVirtualStorageType virtualStorageType
|
ParentVirtualStorageType VirtualStorageType
|
||||||
SourceVirtualStorageType virtualStorageType
|
SourceVirtualStorageType VirtualStorageType
|
||||||
ResiliencyGUID [16]byte // GUID
|
ResiliencyGUID guid.GUID
|
||||||
}
|
}
|
||||||
|
|
||||||
type createVirtualDiskParameters struct {
|
type CreateVirtualDiskParameters struct {
|
||||||
Version uint32 // Must always be set to 2
|
Version uint32 // Must always be set to 2
|
||||||
Version2 createVersion2
|
Version2 CreateVersion2
|
||||||
}
|
}
|
||||||
|
|
||||||
type openVersion2 struct {
|
type OpenVersion2 struct {
|
||||||
GetInfoOnly int32 // bool but 4-byte aligned
|
GetInfoOnly bool
|
||||||
ReadOnly int32 // bool but 4-byte aligned
|
ReadOnly bool
|
||||||
ResiliencyGUID [16]byte // GUID
|
ResiliencyGUID guid.GUID
|
||||||
}
|
}
|
||||||
|
|
||||||
type openVirtualDiskParameters struct {
|
type OpenVirtualDiskParameters struct {
|
||||||
Version uint32 // Must always be set to 2
|
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 {
|
func CreateVhdx(path string, maxSizeInGb, blockSizeInMb uint32) error {
|
||||||
var (
|
params := CreateVirtualDiskParameters{
|
||||||
defaultType virtualStorageType
|
|
||||||
handle syscall.Handle
|
|
||||||
)
|
|
||||||
|
|
||||||
parameters := createVirtualDiskParameters{
|
|
||||||
Version: 2,
|
Version: 2,
|
||||||
Version2: createVersion2{
|
Version2: CreateVersion2{
|
||||||
MaximumSize: uint64(maxSizeInGb) * 1024 * 1024 * 1024,
|
MaximumSize: uint64(maxSizeInGb) * 1024 * 1024 * 1024,
|
||||||
BlockSizeInBytes: blockSizeInMb * 1024 * 1024,
|
BlockSizeInBytes: blockSizeInMb * 1024 * 1024,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := createVirtualDisk(
|
handle, err := CreateVirtualDisk(path, VirtualDiskAccessNone, CreateVirtualDiskFlagNone, ¶ms)
|
||||||
&defaultType,
|
if err != nil {
|
||||||
path,
|
|
||||||
uint32(VirtualDiskAccessNone),
|
|
||||||
nil,
|
|
||||||
uint32(createVirtualDiskFlagNone),
|
|
||||||
0,
|
|
||||||
¶meters,
|
|
||||||
nil,
|
|
||||||
&handle); err != nil {
|
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := syscall.CloseHandle(handle); err != nil {
|
if err := syscall.CloseHandle(handle); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
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 {
|
func DetachVhd(path string) error {
|
||||||
handle, err := OpenVirtualDisk(
|
handle, err := OpenVirtualDisk(
|
||||||
path,
|
path,
|
||||||
VirtualDiskAccessNone,
|
VirtualDiskAccessNone,
|
||||||
OpenVirtualDiskFlagCachedIO|OpenVirtualDiskFlagIgnoreRelativeParentLocator)
|
OpenVirtualDiskFlagCachedIO|OpenVirtualDiskFlagIgnoreRelativeParentLocator,
|
||||||
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
defer syscall.CloseHandle(handle)
|
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.
|
// 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) {
|
func OpenVirtualDisk(vhdPath string, virtualDiskAccessMask VirtualDiskAccessMask, openVirtualDiskFlags VirtualDiskFlag) (syscall.Handle, error) {
|
||||||
var (
|
parameters := OpenVirtualDiskParameters{Version: 2}
|
||||||
defaultType virtualStorageType
|
handle, err := OpenVirtualDiskWithParameters(
|
||||||
handle syscall.Handle
|
vhdPath,
|
||||||
)
|
virtualDiskAccessMask,
|
||||||
parameters := openVirtualDiskParameters{Version: 2}
|
openVirtualDiskFlags,
|
||||||
if err := openVirtualDisk(
|
|
||||||
&defaultType,
|
|
||||||
path,
|
|
||||||
uint32(accessMask),
|
|
||||||
uint32(flag),
|
|
||||||
¶meters,
|
¶meters,
|
||||||
&handle); err != nil {
|
)
|
||||||
|
if err != nil {
|
||||||
return 0, err
|
return 0, err
|
||||||
}
|
}
|
||||||
return handle, nil
|
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 (
|
var (
|
||||||
modVirtDisk = windows.NewLazySystemDLL("VirtDisk.dll")
|
modvirtdisk = windows.NewLazySystemDLL("virtdisk.dll")
|
||||||
|
|
||||||
procCreateVirtualDisk = modVirtDisk.NewProc("CreateVirtualDisk")
|
procCreateVirtualDisk = modvirtdisk.NewProc("CreateVirtualDisk")
|
||||||
procOpenVirtualDisk = modVirtDisk.NewProc("OpenVirtualDisk")
|
procOpenVirtualDisk = modvirtdisk.NewProc("OpenVirtualDisk")
|
||||||
procDetachVirtualDisk = modVirtDisk.NewProc("DetachVirtualDisk")
|
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
|
var _p0 *uint16
|
||||||
_p0, err = syscall.UTF16PtrFromString(path)
|
_p0, err = syscall.UTF16PtrFromString(path)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
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) {
|
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(flags), uintptr(providerSpecificFlags), uintptr(unsafe.Pointer(parameters)), uintptr(unsafe.Pointer(o)), uintptr(unsafe.Pointer(handle)))
|
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 r1 != 0 {
|
||||||
if e1 != 0 {
|
if e1 != 0 {
|
||||||
err = errnoErr(e1)
|
err = errnoErr(e1)
|
||||||
@ -65,17 +67,17 @@ func _createVirtualDisk(virtualStorageType *virtualStorageType, path *uint16, vi
|
|||||||
return
|
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
|
var _p0 *uint16
|
||||||
_p0, err = syscall.UTF16PtrFromString(path)
|
_p0, err = syscall.UTF16PtrFromString(path)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
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) {
|
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(flags), uintptr(unsafe.Pointer(parameters)), uintptr(unsafe.Pointer(handle)))
|
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 r1 != 0 {
|
||||||
if e1 != 0 {
|
if e1 != 0 {
|
||||||
err = errnoErr(e1)
|
err = errnoErr(e1)
|
||||||
@ -86,8 +88,32 @@ func _openVirtualDisk(virtualStorageType *virtualStorageType, path *uint16, virt
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
func detachVirtualDisk(handle syscall.Handle, flags uint32, providerSpecificFlags uint32) (err error) {
|
func attachVirtualDisk(handle syscall.Handle, securityDescriptor *uintptr, attachVirtualDiskFlag uint32, providerSpecificFlags uint32, parameters *AttachVirtualDiskParameters, overlapped *syscall.Overlapped) (err error) {
|
||||||
r1, _, e1 := syscall.Syscall(procDetachVirtualDisk.Addr(), 3, uintptr(handle), uintptr(flags), uintptr(providerSpecificFlags))
|
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 r1 != 0 {
|
||||||
if e1 != 0 {
|
if e1 != 0 {
|
||||||
err = errnoErr(e1)
|
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
|
type: TYPE_STRING
|
||||||
json_name: "GPUVHDPath"
|
json_name: "GPUVHDPath"
|
||||||
}
|
}
|
||||||
|
field {
|
||||||
|
name: "scale_cpu_limits_to_sandbox"
|
||||||
|
number: 11
|
||||||
|
label: LABEL_OPTIONAL
|
||||||
|
type: TYPE_BOOL
|
||||||
|
json_name: "scaleCpuLimitsToSandbox"
|
||||||
|
}
|
||||||
enum_type {
|
enum_type {
|
||||||
name: "DebugType"
|
name: "DebugType"
|
||||||
value {
|
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 (
|
import (
|
||||||
fmt "fmt"
|
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"
|
io "io"
|
||||||
math "math"
|
math "math"
|
||||||
reflect "reflect"
|
reflect "reflect"
|
||||||
strings "strings"
|
strings "strings"
|
||||||
time "time"
|
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.
|
// 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"`
|
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
|
// GPUVHDPath is the path to the gpu vhd to add to the uvm
|
||||||
// when a container requests a gpu
|
// 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_NoUnkeyedLiteral struct{} `json:"-"`
|
||||||
XXX_unrecognized []byte `json:"-"`
|
XXX_unrecognized []byte `json:"-"`
|
||||||
XXX_sizecache int32 `json:"-"`
|
XXX_sizecache int32 `json:"-"`
|
||||||
@ -214,56 +231,63 @@ func init() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var fileDescriptor_b643df6839c75082 = []byte{
|
var fileDescriptor_b643df6839c75082 = []byte{
|
||||||
// 775 bytes of a gzipped FileDescriptorProto
|
// 883 bytes of a gzipped FileDescriptorProto
|
||||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x54, 0xcd, 0x6f, 0xdb, 0x36,
|
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x94, 0xdb, 0x6e, 0xdb, 0x36,
|
||||||
0x1c, 0xb5, 0x1a, 0x7f, 0xe9, 0xd7, 0x25, 0x75, 0x38, 0x1f, 0x84, 0x6c, 0xb3, 0x8d, 0xf4, 0xd0,
|
0x18, 0xc7, 0xad, 0x26, 0x71, 0xa2, 0x2f, 0x71, 0xea, 0x70, 0x06, 0x26, 0xa4, 0xab, 0x6d, 0xa4,
|
||||||
0x14, 0x6b, 0xa4, 0xa4, 0x3b, 0xee, 0x34, 0xc7, 0xce, 0xaa, 0x61, 0x49, 0x04, 0x39, 0x6b, 0xf7,
|
0x03, 0x9a, 0x62, 0x8d, 0x94, 0x74, 0x97, 0x1b, 0x30, 0xcc, 0x87, 0xb4, 0x1e, 0x9a, 0xc4, 0x90,
|
||||||
0x71, 0x20, 0xf4, 0xc1, 0xc8, 0x44, 0x4d, 0x51, 0x20, 0x69, 0x2f, 0xee, 0x69, 0x7f, 0xc2, 0xfe,
|
0xb3, 0x74, 0x87, 0x0b, 0x42, 0x07, 0x5a, 0x26, 0x6a, 0x8a, 0x82, 0x48, 0x7b, 0x71, 0xaf, 0xf6,
|
||||||
0xa8, 0x1d, 0x72, 0xdc, 0x71, 0xc0, 0x80, 0x6c, 0xf5, 0x5f, 0x32, 0x90, 0x92, 0xd2, 0xad, 0x08,
|
0x08, 0x7b, 0x9b, 0xbd, 0x42, 0x2e, 0x77, 0x39, 0x60, 0x40, 0xb6, 0xfa, 0x49, 0x06, 0x52, 0x94,
|
||||||
0x76, 0xe9, 0xc9, 0xd4, 0x7b, 0x8f, 0xef, 0xf7, 0xc1, 0x07, 0xc3, 0x45, 0x46, 0xd5, 0x7c, 0x19,
|
0xbb, 0x05, 0xc1, 0x6e, 0x76, 0x65, 0xea, 0xff, 0xfd, 0xf8, 0xe7, 0xc7, 0xc3, 0xdf, 0x70, 0x91,
|
||||||
0xbb, 0x09, 0x67, 0xde, 0x19, 0x4d, 0x04, 0x97, 0xfc, 0x4a, 0x79, 0xf3, 0x44, 0xca, 0x39, 0x65,
|
0x50, 0x39, 0x99, 0x85, 0x6e, 0xc4, 0x99, 0x77, 0x46, 0xa3, 0x9c, 0x0b, 0x3e, 0x96, 0xde, 0x24,
|
||||||
0x5e, 0xc2, 0x52, 0x2f, 0xe1, 0xb9, 0x8a, 0x68, 0x4e, 0x44, 0x7a, 0xa8, 0xb1, 0x43, 0xb1, 0xcc,
|
0x12, 0x62, 0x42, 0x99, 0x17, 0xb1, 0xd8, 0x8b, 0x78, 0x2a, 0x03, 0x9a, 0x92, 0x3c, 0x3e, 0x52,
|
||||||
0xe7, 0x89, 0x3c, 0x5c, 0x1d, 0x7b, 0xbc, 0x50, 0x94, 0xe7, 0xd2, 0x2b, 0x11, 0xb7, 0x10, 0x5c,
|
0xda, 0x51, 0x3e, 0x4b, 0x27, 0x91, 0x38, 0x9a, 0x9f, 0x78, 0x3c, 0x93, 0x94, 0xa7, 0xc2, 0x2b,
|
||||||
0x71, 0xd4, 0x7f, 0xa7, 0x77, 0x2b, 0x62, 0x75, 0xbc, 0xd7, 0xcf, 0x78, 0xc6, 0x8d, 0xc0, 0xd3,
|
0x14, 0x37, 0xcb, 0xb9, 0xe4, 0xa8, 0xf1, 0x81, 0x77, 0x4d, 0x61, 0x7e, 0xb2, 0xdf, 0x48, 0x78,
|
||||||
0xa7, 0x52, 0xbb, 0x37, 0xcc, 0x38, 0xcf, 0x16, 0xc4, 0x33, 0x5f, 0xf1, 0xf2, 0xca, 0x53, 0x94,
|
0xc2, 0x35, 0xe0, 0xa9, 0x51, 0xc1, 0xee, 0xb7, 0x12, 0xce, 0x93, 0x29, 0xf1, 0xf4, 0x57, 0x38,
|
||||||
0x11, 0xa9, 0x22, 0x56, 0x94, 0x82, 0xfd, 0xdf, 0x9a, 0xd0, 0xb9, 0x28, 0xab, 0xa0, 0x3e, 0xb4,
|
0x1b, 0x7b, 0x92, 0x32, 0x22, 0x64, 0xc0, 0xb2, 0x02, 0x38, 0xf8, 0xb5, 0x0a, 0x9b, 0x17, 0xc5,
|
||||||
0x52, 0x12, 0x2f, 0x33, 0xc7, 0x1a, 0x59, 0x07, 0xdd, 0xb0, 0xfc, 0x40, 0xa7, 0x00, 0xe6, 0x80,
|
0x2a, 0xa8, 0x01, 0x1b, 0x31, 0x09, 0x67, 0x89, 0x63, 0xb5, 0xad, 0xc3, 0x2d, 0xbf, 0xf8, 0x40,
|
||||||
0xd5, 0xba, 0x20, 0xce, 0x83, 0x91, 0x75, 0xb0, 0xf3, 0xfc, 0x89, 0x7b, 0x5f, 0x0f, 0x6e, 0x65,
|
0xa7, 0x00, 0x7a, 0x80, 0xe5, 0x22, 0x23, 0xce, 0x83, 0xb6, 0x75, 0xb8, 0xfb, 0xe2, 0xa9, 0x7b,
|
||||||
0xe4, 0x4e, 0xb4, 0xfe, 0x72, 0x5d, 0x90, 0xd0, 0x4e, 0xeb, 0x23, 0x7a, 0x0c, 0xdb, 0x82, 0x64,
|
0x5f, 0x0f, 0xae, 0x31, 0x72, 0x7b, 0x8a, 0xbf, 0x5c, 0x64, 0xc4, 0xb7, 0xe3, 0x72, 0x88, 0x9e,
|
||||||
0x54, 0x2a, 0xb1, 0xc6, 0x82, 0x73, 0xe5, 0x6c, 0x8d, 0xac, 0x03, 0x3b, 0xfc, 0xa8, 0x06, 0x43,
|
0x40, 0x2d, 0x27, 0x09, 0x15, 0x32, 0x5f, 0xe0, 0x9c, 0x73, 0xe9, 0xac, 0xb5, 0xad, 0x43, 0xdb,
|
||||||
0xce, 0x95, 0x16, 0xc9, 0x28, 0x4f, 0x63, 0x7e, 0x8d, 0x29, 0x8b, 0x32, 0xe2, 0x34, 0x4b, 0x51,
|
0xdf, 0x29, 0x45, 0x9f, 0x73, 0xa9, 0x20, 0x11, 0xa4, 0x71, 0xc8, 0xaf, 0x31, 0x65, 0x41, 0x42,
|
||||||
0x05, 0xfa, 0x1a, 0x43, 0x4f, 0xa1, 0x57, 0x8b, 0x8a, 0x45, 0xa4, 0xae, 0xb8, 0x60, 0x4e, 0xcb,
|
0x9c, 0xf5, 0x02, 0x32, 0xe2, 0x40, 0x69, 0xe8, 0x19, 0xd4, 0x4b, 0x28, 0x9b, 0x06, 0x72, 0xcc,
|
||||||
0xe8, 0x1e, 0x55, 0x78, 0x50, 0xc1, 0xe8, 0x27, 0xd8, 0xbd, 0xf3, 0x93, 0x7c, 0x11, 0xe9, 0xfe,
|
0x73, 0xe6, 0x6c, 0x68, 0xee, 0xa1, 0xd1, 0x87, 0x46, 0x46, 0x3f, 0xc2, 0xde, 0xca, 0x4f, 0xf0,
|
||||||
0x9c, 0xb6, 0x99, 0xc1, 0xfd, 0xff, 0x19, 0x66, 0x55, 0xc5, 0xfa, 0x56, 0x58, 0xd7, 0xbc, 0x43,
|
0x69, 0xa0, 0xfa, 0x73, 0xaa, 0x7a, 0x0f, 0xee, 0x7f, 0xef, 0x61, 0x64, 0x56, 0x2c, 0x67, 0xf9,
|
||||||
0x90, 0x07, 0xfd, 0x98, 0x73, 0x85, 0xaf, 0xe8, 0x82, 0x48, 0x33, 0x13, 0x2e, 0x22, 0x35, 0x77,
|
0xe5, 0x9a, 0x2b, 0x05, 0x79, 0xd0, 0x08, 0x39, 0x97, 0x78, 0x4c, 0xa7, 0x44, 0xe8, 0x3d, 0xe1,
|
||||||
0x3a, 0xa6, 0x97, 0x5d, 0xcd, 0x9d, 0x6a, 0x4a, 0x4f, 0x16, 0x44, 0x6a, 0x8e, 0x9e, 0x01, 0x5a,
|
0x2c, 0x90, 0x13, 0x67, 0x53, 0xf7, 0xb2, 0xa7, 0x6a, 0xa7, 0xaa, 0xa4, 0x76, 0x36, 0x0c, 0xe4,
|
||||||
0x31, 0x5c, 0x08, 0x9e, 0x10, 0x29, 0xb9, 0xc0, 0x09, 0x5f, 0xe6, 0xca, 0xe9, 0x8e, 0xac, 0x83,
|
0x04, 0x3d, 0x07, 0x34, 0x67, 0x38, 0xcb, 0x79, 0x44, 0x84, 0xe0, 0x39, 0x8e, 0xf8, 0x2c, 0x95,
|
||||||
0x56, 0xd8, 0x5b, 0xb1, 0xa0, 0x26, 0x4e, 0x34, 0x8e, 0x5c, 0xe8, 0xaf, 0x18, 0x66, 0x84, 0x71,
|
0xce, 0x56, 0xdb, 0x3a, 0xdc, 0xf0, 0xeb, 0x73, 0x36, 0x2c, 0x0b, 0x5d, 0xa5, 0x23, 0x17, 0x1a,
|
||||||
0xb1, 0xc6, 0x92, 0xbe, 0x21, 0x98, 0xe6, 0x98, 0xc5, 0x8e, 0x5d, 0xeb, 0xcf, 0x0c, 0x35, 0xa3,
|
0x73, 0x86, 0x19, 0x61, 0x3c, 0x5f, 0x60, 0x41, 0xdf, 0x11, 0x4c, 0x53, 0xcc, 0x42, 0xc7, 0x2e,
|
||||||
0x6f, 0x88, 0x9f, 0x9f, 0xc5, 0x68, 0x00, 0xf0, 0x75, 0xf0, 0xdd, 0xcb, 0x17, 0x13, 0x5d, 0xcb,
|
0xf9, 0x33, 0x5d, 0x1a, 0xd1, 0x77, 0x64, 0x90, 0x9e, 0x85, 0xa8, 0x09, 0xf0, 0x72, 0xf8, 0xed,
|
||||||
0x01, 0xd3, 0xc4, 0xbf, 0x90, 0xfd, 0xa7, 0x60, 0xdf, 0x3d, 0x0c, 0xb2, 0xa1, 0x75, 0x1e, 0xf8,
|
0xd5, 0xab, 0x9e, 0x5a, 0xcb, 0x01, 0xdd, 0xc4, 0x3f, 0x14, 0xf4, 0x25, 0x3c, 0x12, 0x51, 0x30,
|
||||||
0xc1, 0xb4, 0xd7, 0x40, 0x5d, 0x68, 0x9e, 0xfa, 0xdf, 0x4e, 0x7b, 0x16, 0xea, 0xc0, 0xd6, 0xf4,
|
0x25, 0x38, 0xca, 0x66, 0x78, 0x4a, 0x19, 0x95, 0x02, 0x4b, 0x8e, 0xcd, 0xb6, 0x9c, 0x6d, 0x7d,
|
||||||
0xf2, 0x55, 0xef, 0xc1, 0xbe, 0x07, 0xbd, 0xf7, 0xe7, 0x47, 0x0f, 0xa1, 0x13, 0x84, 0x17, 0x27,
|
0xe9, 0x1f, 0x6b, 0xa4, 0x9b, 0xcd, 0x5e, 0x6b, 0xe0, 0x92, 0x9b, 0x73, 0x40, 0x67, 0xf0, 0x69,
|
||||||
0xd3, 0xd9, 0xac, 0xd7, 0x40, 0x3b, 0x00, 0x2f, 0x7e, 0x08, 0xa6, 0xe1, 0x4b, 0x7f, 0x76, 0x11,
|
0x4c, 0xc6, 0xc1, 0x6c, 0x2a, 0xf1, 0xea, 0xdc, 0xb0, 0x88, 0xf2, 0x40, 0x46, 0x93, 0x55, 0x77,
|
||||||
0xf6, 0xac, 0xfd, 0x3f, 0xb7, 0x60, 0xa7, 0x6a, 0x7f, 0x42, 0x54, 0x44, 0x17, 0x12, 0x7d, 0x06,
|
0x49, 0xe8, 0xec, 0xe8, 0xee, 0x5a, 0x86, 0xed, 0x96, 0xe8, 0xa8, 0x20, 0x8b, 0x66, 0x5f, 0x86,
|
||||||
0x60, 0x9e, 0x10, 0xe7, 0x11, 0x23, 0x26, 0x52, 0x76, 0x68, 0x1b, 0xe4, 0x3c, 0x62, 0x04, 0x9d,
|
0xe8, 0x2b, 0x78, 0x5c, 0xda, 0xcd, 0xd9, 0x7d, 0x3e, 0x35, 0xed, 0xe3, 0x18, 0xe8, 0x8a, 0xdd,
|
||||||
0x00, 0x24, 0x82, 0x44, 0x8a, 0xa4, 0x38, 0x52, 0x26, 0x56, 0x0f, 0x9f, 0xef, 0xb9, 0x65, 0x5c,
|
0x35, 0x50, 0x2f, 0x65, 0x12, 0xe4, 0xa4, 0x9c, 0xeb, 0xec, 0xea, 0xfe, 0x77, 0xb4, 0x68, 0xe0,
|
||||||
0xdd, 0x3a, 0xae, 0xee, 0x65, 0x1d, 0xd7, 0x71, 0xf7, 0xe6, 0x76, 0xd8, 0xf8, 0xf5, 0xaf, 0xa1,
|
0x83, 0x67, 0x60, 0xaf, 0xde, 0x22, 0xb2, 0x61, 0xe3, 0x7c, 0x38, 0x18, 0xf6, 0xeb, 0x15, 0xb4,
|
||||||
0x15, 0xda, 0xd5, 0xbd, 0xaf, 0x14, 0xfa, 0x1c, 0xd0, 0x6b, 0x22, 0x72, 0xb2, 0xc0, 0x3a, 0xd7,
|
0x05, 0xeb, 0xa7, 0x83, 0xd7, 0xfd, 0xba, 0x85, 0x36, 0x61, 0xad, 0x7f, 0xf9, 0xa6, 0xfe, 0xe0,
|
||||||
0xf8, 0xf8, 0xe8, 0x08, 0xe7, 0xd2, 0x04, 0xab, 0x19, 0x3e, 0x2a, 0x19, 0xed, 0x70, 0x7c, 0x74,
|
0xc0, 0x83, 0xfa, 0xdd, 0x2b, 0x47, 0xdb, 0xb0, 0x39, 0xf4, 0x2f, 0xba, 0xfd, 0xd1, 0xa8, 0x5e,
|
||||||
0x74, 0x2e, 0x91, 0x0b, 0x1f, 0x57, 0xcb, 0x4c, 0x38, 0x63, 0x54, 0xe1, 0x78, 0xad, 0x88, 0x34,
|
0x41, 0xbb, 0x00, 0xaf, 0xbe, 0x1f, 0xf6, 0xfd, 0xab, 0xc1, 0xe8, 0xc2, 0xaf, 0x5b, 0x07, 0x7f,
|
||||||
0x09, 0x6b, 0x86, 0xbb, 0x25, 0x75, 0x62, 0x98, 0xb1, 0x26, 0xd0, 0x29, 0x8c, 0x2a, 0xfd, 0xcf,
|
0xac, 0xc1, 0xae, 0xb9, 0xb1, 0x1e, 0x91, 0x01, 0x9d, 0x0a, 0xf4, 0x18, 0x40, 0xbf, 0x5a, 0x9c,
|
||||||
0x5c, 0xbc, 0xa6, 0x79, 0x86, 0x25, 0x51, 0xb8, 0x10, 0x74, 0x15, 0x29, 0x52, 0x5d, 0x6e, 0x99,
|
0x06, 0x8c, 0xe8, 0x14, 0xd9, 0xbe, 0xad, 0x95, 0xf3, 0x80, 0x11, 0xd4, 0x05, 0x88, 0x72, 0x12,
|
||||||
0xcb, 0x9f, 0x96, 0xba, 0x57, 0xa5, 0x6c, 0x46, 0x54, 0x50, 0x8a, 0x4a, 0x9f, 0x09, 0x0c, 0xef,
|
0x48, 0x12, 0xe3, 0x40, 0xea, 0x24, 0x6d, 0xbf, 0xd8, 0x77, 0x8b, 0x84, 0xba, 0x65, 0x42, 0xdd,
|
||||||
0xf1, 0x91, 0xf3, 0x48, 0x90, 0xb4, 0xb2, 0x69, 0x1b, 0x9b, 0x4f, 0xde, 0xb7, 0x99, 0x19, 0x4d,
|
0xcb, 0x32, 0xa1, 0x9d, 0xad, 0x9b, 0xdb, 0x56, 0xe5, 0x97, 0x3f, 0x5b, 0x96, 0x6f, 0x9b, 0x79,
|
||||||
0xe9, 0xf2, 0x0c, 0xa0, 0x0a, 0x0e, 0xa6, 0xa9, 0x89, 0xd8, 0xf6, 0x78, 0x7b, 0x73, 0x3b, 0xb4,
|
0x5f, 0x4b, 0xf4, 0x19, 0xa0, 0xb7, 0x24, 0x4f, 0xc9, 0x14, 0xab, 0x28, 0xe3, 0x93, 0xe3, 0x63,
|
||||||
0xab, 0xb5, 0xfb, 0x93, 0xd0, 0xae, 0x04, 0x7e, 0x8a, 0x9e, 0x40, 0x6f, 0x29, 0x89, 0xf8, 0xcf,
|
0x9c, 0x0a, 0x9d, 0xa5, 0x75, 0xff, 0x61, 0x51, 0x51, 0x0e, 0x27, 0xc7, 0xc7, 0xe7, 0x02, 0xb9,
|
||||||
0x5a, 0xba, 0xa6, 0xc8, 0xb6, 0xc6, 0xdf, 0x2d, 0xe5, 0x31, 0x74, 0xc8, 0x35, 0x49, 0xb4, 0xa7,
|
0xf0, 0x91, 0x79, 0x3f, 0x11, 0x67, 0x8c, 0x4a, 0x1c, 0x2e, 0x24, 0x11, 0x3a, 0x54, 0xeb, 0xfe,
|
||||||
0xce, 0x95, 0x3d, 0x86, 0xcd, 0xed, 0xb0, 0x3d, 0xbd, 0x26, 0x89, 0x3f, 0x09, 0xdb, 0x9a, 0xf2,
|
0x5e, 0x51, 0xea, 0xea, 0x4a, 0x47, 0x15, 0xd0, 0x29, 0xb4, 0x0d, 0xff, 0x13, 0xcf, 0xdf, 0xd2,
|
||||||
0xd3, 0x71, 0x7a, 0xf3, 0x76, 0xd0, 0xf8, 0xe3, 0xed, 0xa0, 0xf1, 0xcb, 0x66, 0x60, 0xdd, 0x6c,
|
0x34, 0xc1, 0x82, 0x48, 0x9c, 0xe5, 0x74, 0x1e, 0x48, 0x62, 0x26, 0x6f, 0xe8, 0xc9, 0x9f, 0x14,
|
||||||
0x06, 0xd6, 0xef, 0x9b, 0x81, 0xf5, 0xf7, 0x66, 0x60, 0xfd, 0xf8, 0xcd, 0x87, 0xff, 0xb9, 0x7d,
|
0xdc, 0x9b, 0x02, 0x1b, 0x11, 0x39, 0x2c, 0xa0, 0xc2, 0xa7, 0x07, 0xad, 0x7b, 0x7c, 0xf4, 0xd5,
|
||||||
0x59, 0xfd, 0x7e, 0xdf, 0x88, 0xdb, 0xe6, 0xdd, 0xbf, 0xf8, 0x27, 0x00, 0x00, 0xff, 0xff, 0x75,
|
0xc4, 0xc6, 0xa6, 0xaa, 0x6d, 0x1e, 0xdd, 0xb5, 0x19, 0x69, 0xa6, 0x70, 0x79, 0x0e, 0x60, 0xb2,
|
||||||
0x1f, 0x14, 0xf4, 0x33, 0x05, 0x00, 0x00,
|
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) {
|
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 = encodeVarintRunhcs(dAtA, i, uint64(len(m.GPUVHDPath)))
|
||||||
i += copy(dAtA[i:], 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 {
|
if m.XXX_unrecognized != nil {
|
||||||
i += copy(dAtA[i:], m.XXX_unrecognized)
|
i += copy(dAtA[i:], m.XXX_unrecognized)
|
||||||
}
|
}
|
||||||
@ -468,6 +522,18 @@ func (m *Options) Size() (n int) {
|
|||||||
if l > 0 {
|
if l > 0 {
|
||||||
n += 1 + l + sovRunhcs(uint64(l))
|
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 {
|
if m.XXX_unrecognized != nil {
|
||||||
n += len(m.XXX_unrecognized)
|
n += len(m.XXX_unrecognized)
|
||||||
}
|
}
|
||||||
@ -542,6 +608,10 @@ func (this *Options) String() string {
|
|||||||
`VmProcessorCount:` + fmt.Sprintf("%v", this.VmProcessorCount) + `,`,
|
`VmProcessorCount:` + fmt.Sprintf("%v", this.VmProcessorCount) + `,`,
|
||||||
`VmMemorySizeInMb:` + fmt.Sprintf("%v", this.VmMemorySizeInMb) + `,`,
|
`VmMemorySizeInMb:` + fmt.Sprintf("%v", this.VmMemorySizeInMb) + `,`,
|
||||||
`GPUVHDPath:` + fmt.Sprintf("%v", this.GPUVHDPath) + `,`,
|
`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) + `,`,
|
`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])
|
m.GPUVHDPath = string(dAtA[iNdEx:postIndex])
|
||||||
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:
|
default:
|
||||||
iNdEx = preIndex
|
iNdEx = preIndex
|
||||||
skippy, err := skipRunhcs(dAtA[iNdEx:])
|
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
|
// GPUVHDPath is the path to the gpu vhd to add to the uvm
|
||||||
// when a container requests a gpu
|
// when a container requests a gpu
|
||||||
string GPUVHDPath = 10;
|
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
|
// 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
|
go 1.13
|
||||||
|
|
||||||
require (
|
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/cgroups v0.0.0-20200531161412-0dbf7f05ba59
|
||||||
github.com/containerd/console v0.0.0-20180822173158-c12b1e7919c1
|
github.com/containerd/console v0.0.0-20180822173158-c12b1e7919c1
|
||||||
github.com/containerd/containerd v1.3.2
|
github.com/containerd/containerd v1.3.2
|
||||||
@ -26,7 +26,7 @@ require (
|
|||||||
go.opencensus.io v0.22.0
|
go.opencensus.io v0.22.0
|
||||||
golang.org/x/net v0.0.0-20191004110552-13f9640d40b9 // indirect
|
golang.org/x/net v0.0.0-20191004110552-13f9640d40b9 // indirect
|
||||||
golang.org/x/sync v0.0.0-20190423024810-112230192c58
|
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/genproto v0.0.0-20190502173448-54afdca5d873 // indirect
|
||||||
google.golang.org/grpc v1.23.1
|
google.golang.org/grpc v1.23.1
|
||||||
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 // indirect
|
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/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 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.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/cilium/ebpf v0.0.0-20200110133405-4032b1d8aae3/go.mod h1:MA5e5Lr8slmEg9bt0VpxxWqJlO4iwu3FBdHUzV7wQVg=
|
||||||
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
|
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
|
||||||
github.com/containerd/cgroups v0.0.0-20200531161412-0dbf7f05ba59 h1:qWj4qVYZ95vLWwqyNJCQg7rDsG5wPdze0UaPolH7DUk=
|
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-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 h1:LhLiKguPgZL+Tglay4GhVtfF0kb8cvOJ0dHTCBO8YNI=
|
||||||
golang.org/x/sys v0.0.0-20200120151820-655fe14d7479/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
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 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg=
|
||||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||||
golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs=
|
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
|
// HNS 10.3 allows for VXLAN ports
|
||||||
VxlanPortVersion = VersionRanges{VersionRange{MinVersion: Version{Major: 10, Minor: 3}, MaxVersion: Version{Major: math.MaxInt32, Minor: math.MaxInt32}}}
|
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
|
//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: 13, Minor: 1}, MaxVersion: Version{Major: math.MaxInt32, Minor: math.MaxInt32}}}
|
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
|
//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}}}
|
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.
|
// L4WfpProxyPolicySetting sets Layer-4 Proxy on an endpoint.
|
||||||
type L4WfpProxyPolicySetting struct {
|
type L4WfpProxyPolicySetting struct {
|
||||||
Port string `json:",omitempty"`
|
InboundProxyPort string `json:",omitempty"`
|
||||||
FilterTuple FiveTuple `json:",omitempty"`
|
OutboundProxyPort string `json:",omitempty"`
|
||||||
UserSID string `json:",omitempty"`
|
FilterTuple FiveTuple `json:",omitempty"`
|
||||||
|
UserSID string `json:",omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// PortnameEndpointPolicySetting sets the port name for an endpoint.
|
// 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"
|
"github.com/Microsoft/go-winio"
|
||||||
diskutil "github.com/Microsoft/go-winio/vhd"
|
diskutil "github.com/Microsoft/go-winio/vhd"
|
||||||
|
"github.com/Microsoft/hcsshim/computestorage"
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
"golang.org/x/sys/windows"
|
"golang.org/x/sys/windows"
|
||||||
)
|
)
|
||||||
@ -36,7 +37,7 @@ func makeOpenFiles(hs []syscall.Handle) (_ []io.ReadWriteCloser, err error) {
|
|||||||
return fs, nil
|
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) {
|
func CreateNTFSVHD(ctx context.Context, vhdPath string, sizeGB uint32) (err error) {
|
||||||
if err := diskutil.CreateVhdx(vhdPath, sizeGB, 1); err != nil {
|
if err := diskutil.CreateVhdx(vhdPath, sizeGB, 1); err != nil {
|
||||||
return errors.Wrap(err, "failed to create VHD")
|
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")
|
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 {
|
type Namespace struct {
|
||||||
ID string
|
ID string
|
||||||
IsDefault bool `json:",omitempty"`
|
IsDefault bool `json:",omitempty"`
|
||||||
ResourceList []NamespaceResource `json:",omitempty"`
|
ResourceList []NamespaceResource `json:",omitempty"`
|
||||||
|
CompartmentId uint32 `json:",omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func issueNamespaceRequest(id *string, method, subpath string, request interface{}) (*Namespace, error) {
|
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
|
// 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"`
|
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"
|
PTGuestConnection PropertyType = "GuestConnection"
|
||||||
PTICHeartbeatStatus PropertyType = "ICHeartbeatStatus"
|
PTICHeartbeatStatus PropertyType = "ICHeartbeatStatus"
|
||||||
PTProcessorTopology PropertyType = "ProcessorTopology"
|
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
|
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 {
|
type FileDispositionInformationEx struct {
|
||||||
Flags uintptr
|
Flags uintptr
|
||||||
}
|
}
|
||||||
@ -59,3 +96,15 @@ type FileLinkInformation struct {
|
|||||||
FileNameLength uint32
|
FileNameLength uint32
|
||||||
FileName [1]uint16
|
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
|
package winapi
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"unsafe"
|
||||||
|
|
||||||
"golang.org/x/sys/windows"
|
"golang.org/x/sys/windows"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Messages that can be received from an assigned io completion port.
|
// 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
|
// https://docs.microsoft.com/en-us/windows/win32/api/winnt/ns-winnt-jobobject_associate_completion_port
|
||||||
const (
|
const (
|
||||||
JOB_OBJECT_MSG_END_OF_JOB_TIME = 1
|
JOB_OBJECT_MSG_END_OF_JOB_TIME uint32 = 1
|
||||||
JOB_OBJECT_MSG_END_OF_PROCESS_TIME = 2
|
JOB_OBJECT_MSG_END_OF_PROCESS_TIME uint32 = 2
|
||||||
JOB_OBJECT_MSG_ACTIVE_PROCESS_LIMIT = 3
|
JOB_OBJECT_MSG_ACTIVE_PROCESS_LIMIT uint32 = 3
|
||||||
JOB_OBJECT_MSG_ACTIVE_PROCESS_ZERO = 4
|
JOB_OBJECT_MSG_ACTIVE_PROCESS_ZERO uint32 = 4
|
||||||
JOB_OBJECT_MSG_NEW_PROCESS = 6
|
JOB_OBJECT_MSG_NEW_PROCESS uint32 = 6
|
||||||
JOB_OBJECT_MSG_EXIT_PROCESS = 7
|
JOB_OBJECT_MSG_EXIT_PROCESS uint32 = 7
|
||||||
JOB_OBJECT_MSG_ABNORMAL_EXIT_PROCESS = 8
|
JOB_OBJECT_MSG_ABNORMAL_EXIT_PROCESS uint32 = 8
|
||||||
JOB_OBJECT_MSG_PROCESS_MEMORY_LIMIT = 9
|
JOB_OBJECT_MSG_PROCESS_MEMORY_LIMIT uint32 = 9
|
||||||
JOB_OBJECT_MSG_JOB_MEMORY_LIMIT = 10
|
JOB_OBJECT_MSG_JOB_MEMORY_LIMIT uint32 = 10
|
||||||
JOB_OBJECT_MSG_NOTIFICATION_LIMIT = 11
|
JOB_OBJECT_MSG_NOTIFICATION_LIMIT uint32 = 11
|
||||||
)
|
)
|
||||||
|
|
||||||
// IO limit flags
|
// 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
|
// 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 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
|
// https://docs.microsoft.com/en-us/windows/win32/api/winnt/ns-winnt-jobobject_cpu_rate_control_information
|
||||||
const (
|
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_WEIGHT_BASED
|
||||||
JOB_OBJECT_CPU_RATE_CONTROL_HARD_CAP
|
JOB_OBJECT_CPU_RATE_CONTROL_HARD_CAP
|
||||||
JOB_OBJECT_CPU_RATE_CONTROL_NOTIFY
|
JOB_OBJECT_CPU_RATE_CONTROL_NOTIFY
|
||||||
@ -41,7 +45,9 @@ const (
|
|||||||
JobObjectBasicProcessIdList uint32 = 3
|
JobObjectBasicProcessIdList uint32 = 3
|
||||||
JobObjectBasicAndIoAccountingInformation uint32 = 8
|
JobObjectBasicAndIoAccountingInformation uint32 = 8
|
||||||
JobObjectLimitViolationInformation uint32 = 13
|
JobObjectLimitViolationInformation uint32 = 13
|
||||||
|
JobObjectMemoryUsageInformation uint32 = 28
|
||||||
JobObjectNotificationLimitInformation2 uint32 = 33
|
JobObjectNotificationLimitInformation2 uint32 = 33
|
||||||
|
JobObjectIoAttribution uint32 = 42
|
||||||
)
|
)
|
||||||
|
|
||||||
// https://docs.microsoft.com/en-us/windows/win32/api/winnt/ns-winnt-jobobject_basic_limit_information
|
// 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
|
// https://docs.microsoft.com/en-us/windows/win32/api/winnt/ns-winnt-jobobject_cpu_rate_control_information
|
||||||
type JOBOBJECT_CPU_RATE_CONTROL_INFORMATION struct {
|
type JOBOBJECT_CPU_RATE_CONTROL_INFORMATION struct {
|
||||||
ControlFlags uint32
|
ControlFlags uint32
|
||||||
Rate uint32
|
Value uint32
|
||||||
}
|
}
|
||||||
|
|
||||||
// https://docs.microsoft.com/en-us/windows/win32/api/jobapi2/ns-jobapi2-jobobject_io_rate_control_information
|
// 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
|
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
|
// https://docs.microsoft.com/en-us/windows/win32/api/winnt/ns-winnt-jobobject_associate_completion_port
|
||||||
type JOBOBJECT_ASSOCIATE_COMPLETION_PORT struct {
|
type JOBOBJECT_ASSOCIATE_COMPLETION_PORT struct {
|
||||||
CompletionKey uintptr
|
CompletionKey windows.Handle
|
||||||
CompletionPort 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.
|
// be thought of as an extension to golang.org/x/sys/windows.
|
||||||
package winapi
|
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 (
|
var (
|
||||||
|
modiphlpapi = windows.NewLazySystemDLL("iphlpapi.dll")
|
||||||
modkernel32 = windows.NewLazySystemDLL("kernel32.dll")
|
modkernel32 = windows.NewLazySystemDLL("kernel32.dll")
|
||||||
modadvapi32 = windows.NewLazySystemDLL("advapi32.dll")
|
modadvapi32 = windows.NewLazySystemDLL("advapi32.dll")
|
||||||
modcfgmgr32 = windows.NewLazySystemDLL("cfgmgr32.dll")
|
modcfgmgr32 = windows.NewLazySystemDLL("cfgmgr32.dll")
|
||||||
modntdll = windows.NewLazySystemDLL("ntdll.dll")
|
modntdll = windows.NewLazySystemDLL("ntdll.dll")
|
||||||
|
|
||||||
|
procSetJobCompartmentId = modiphlpapi.NewProc("SetJobCompartmentId")
|
||||||
procIsProcessInJob = modkernel32.NewProc("IsProcessInJob")
|
procIsProcessInJob = modkernel32.NewProc("IsProcessInJob")
|
||||||
procQueryInformationJobObject = modkernel32.NewProc("QueryInformationJobObject")
|
procQueryInformationJobObject = modkernel32.NewProc("QueryInformationJobObject")
|
||||||
procOpenJobObjectW = modkernel32.NewProc("OpenJobObjectW")
|
procOpenJobObjectW = modkernel32.NewProc("OpenJobObjectW")
|
||||||
procSetIoRateControlInformationJobObject = modkernel32.NewProc("SetIoRateControlInformationJobObject")
|
procSetIoRateControlInformationJobObject = modkernel32.NewProc("SetIoRateControlInformationJobObject")
|
||||||
|
procGetQueuedCompletionStatus = modkernel32.NewProc("GetQueuedCompletionStatus")
|
||||||
procSearchPathW = modkernel32.NewProc("SearchPathW")
|
procSearchPathW = modkernel32.NewProc("SearchPathW")
|
||||||
procLogonUserW = modadvapi32.NewProc("LogonUserW")
|
procLogonUserW = modadvapi32.NewProc("LogonUserW")
|
||||||
procRtlMoveMemory = modkernel32.NewProc("RtlMoveMemory")
|
procRtlMoveMemory = modkernel32.NewProc("RtlMoveMemory")
|
||||||
@ -63,6 +66,14 @@ var (
|
|||||||
procRtlNtStatusToDosError = modntdll.NewProc("RtlNtStatusToDosError")
|
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) {
|
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)))
|
r1, _, e1 := syscall.Syscall(procIsProcessInJob.Addr(), 3, uintptr(procHandle), uintptr(jobHandle), uintptr(unsafe.Pointer(result)))
|
||||||
if r1 == 0 {
|
if r1 == 0 {
|
||||||
@ -119,6 +130,18 @@ func SetIoRateControlInformationJobObject(jobHandle windows.Handle, ioRateContro
|
|||||||
return
|
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) {
|
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)))
|
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)
|
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
|
// V20H1 (version 2004) corresponds to Windows Server 2004 (semi-annual
|
||||||
// channel).
|
// channel).
|
||||||
V20H1 = 19041
|
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
|
# github.com/BurntSushi/toml v0.3.1
|
||||||
## explicit
|
## explicit
|
||||||
github.com/BurntSushi/toml
|
github.com/BurntSushi/toml
|
||||||
# github.com/Microsoft/go-winio v0.4.15
|
# github.com/Microsoft/go-winio v0.4.16
|
||||||
## explicit
|
## explicit
|
||||||
github.com/Microsoft/go-winio
|
github.com/Microsoft/go-winio
|
||||||
github.com/Microsoft/go-winio/backuptar
|
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/guid
|
||||||
github.com/Microsoft/go-winio/pkg/security
|
github.com/Microsoft/go-winio/pkg/security
|
||||||
github.com/Microsoft/go-winio/vhd
|
github.com/Microsoft/go-winio/vhd
|
||||||
# github.com/Microsoft/hcsshim v0.8.10
|
# github.com/Microsoft/hcsshim v0.8.14
|
||||||
## explicit
|
## explicit
|
||||||
github.com/Microsoft/hcsshim
|
github.com/Microsoft/hcsshim
|
||||||
github.com/Microsoft/hcsshim/cmd/containerd-shim-runhcs-v1/options
|
github.com/Microsoft/hcsshim/cmd/containerd-shim-runhcs-v1/options
|
||||||
github.com/Microsoft/hcsshim/cmd/containerd-shim-runhcs-v1/stats
|
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/compactext4
|
||||||
github.com/Microsoft/hcsshim/ext4/internal/format
|
github.com/Microsoft/hcsshim/ext4/internal/format
|
||||||
github.com/Microsoft/hcsshim/ext4/tar2ext4
|
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/internal/winapi
|
||||||
github.com/Microsoft/hcsshim/osversion
|
github.com/Microsoft/hcsshim/osversion
|
||||||
github.com/Microsoft/hcsshim/pkg/go-runhcs
|
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
|
## explicit
|
||||||
github.com/Microsoft/hcsshim/test/functional/manifest
|
github.com/Microsoft/hcsshim/test/functional/manifest
|
||||||
# github.com/beorn7/perks v1.0.1
|
# github.com/beorn7/perks v1.0.1
|
||||||
|
Loading…
Reference in New Issue
Block a user