fix(esxi): UnitNumber 7 is unavailable for scsi controller

By default, the virtual SCSI controller is assigned to virtual device node (z:7),
so that device node is unavailable for hard disks or other devices.
https://docs.vmware.com/en/VMware-vSphere/6.7/com.vmware.vsphere.vm_admin.doc/GUID-5872D173-A076-42FE-8D0B-9DB0EB0E7362.html
This commit is contained in:
Rain
2020-03-11 17:33:35 +08:00
parent 0a4171bd6a
commit 31f623dd30
2 changed files with 12 additions and 0 deletions
+6
View File
@@ -787,6 +787,9 @@ func (self *SHost) DoCreateVM(ctx context.Context, ds *SDatastore, params SCreat
ctrlKey = 1000
index = scsiIdx
scsiIdx += 1
if scsiIdx == 7 {
scsiIdx++
}
} else {
ctrlKey = 200 + ideIdx/2
index = ideIdx % 2
@@ -951,6 +954,9 @@ func (host *SHost) CloneVM(ctx context.Context, from *SVirtualMachine, ds *SData
var key int32 = 2000
sameDisk := from.FindDiskByDriver("scsi", "pvscsi")
index += int32(len(sameDisk))
if index >= 7 {
index++
}
if len(sameDisk) > 0 {
key = minDiskKey(sameDisk)
}
+6
View File
@@ -876,6 +876,12 @@ func (self *SVirtualMachine) CreateDisk(ctx context.Context, sizeMb int, uuid st
ctlKey += int32(index / 2)
}
// By default, the virtual SCSI controller is assigned to virtual device node (z:7),
// so that device node is unavailable for hard disks or other devices.
if index >= 7 && driver == "scsi" {
index++
}
return self.createDiskInternal(ctx, sizeMb, uuid, int32(index), diskKey, ctlKey, "", true)
}