mirror of
https://github.com/apache/cloudstack.git
synced 2025-10-26 08:42:29 +01:00
CLOUDSTACK-8119. [VMware] Cannot attach more than 8 volumes to a VM.
While attaching a new disk to an instance, the unit number on the controller key should be the lowest unit number that is not in use. And in case the controller type is SCSI it shouln't be the reserved SCSI unit number.
This commit is contained in:
parent
ddcae8a930
commit
f420dd55fb
@ -1018,8 +1018,6 @@ public class VirtualMachineMO extends BaseMO {
|
||||
}
|
||||
|
||||
int deviceNumber = getNextDeviceNumber(controllerKey);
|
||||
if (controllerKey != ideControllerKey && VmwareHelper.isReservedScsiDeviceNumber(deviceNumber))
|
||||
deviceNumber++;
|
||||
|
||||
newDisk.setControllerKey(controllerKey);
|
||||
newDisk.setKey(-deviceNumber);
|
||||
@ -1858,8 +1856,6 @@ public class VirtualMachineMO extends BaseMO {
|
||||
public int getNextScsiDiskDeviceNumber() throws Exception {
|
||||
int scsiControllerKey = getScsiDeviceControllerKey();
|
||||
int deviceNumber = getNextDeviceNumber(scsiControllerKey);
|
||||
if (VmwareHelper.isReservedScsiDeviceNumber(deviceNumber))
|
||||
deviceNumber++;
|
||||
|
||||
return deviceNumber;
|
||||
}
|
||||
@ -2319,6 +2315,7 @@ public class VirtualMachineMO extends BaseMO {
|
||||
|
||||
List<Integer> existingUnitNumbers = new ArrayList<Integer>();
|
||||
int deviceNumber = 0;
|
||||
int ideControllerKey = getIDEDeviceControllerKey();
|
||||
if (devices != null && devices.size() > 0) {
|
||||
for (VirtualDevice device : devices) {
|
||||
if (device.getControllerKey() != null && device.getControllerKey().intValue() == controllerKey) {
|
||||
@ -2327,8 +2324,10 @@ public class VirtualMachineMO extends BaseMO {
|
||||
}
|
||||
}
|
||||
while (true) {
|
||||
// Next device number should be the lowest device number on the key that is not in use and is not reserved.
|
||||
if (!existingUnitNumbers.contains(Integer.valueOf(deviceNumber))) {
|
||||
break;
|
||||
if (controllerKey != ideControllerKey && !VmwareHelper.isReservedScsiDeviceNumber(deviceNumber))
|
||||
break;
|
||||
}
|
||||
++deviceNumber;
|
||||
}
|
||||
|
||||
@ -188,8 +188,6 @@ public class VmwareHelper {
|
||||
controllerKey = ideControllerKey;
|
||||
if (deviceNumber < 0) {
|
||||
deviceNumber = vmMo.getNextDeviceNumber(controllerKey);
|
||||
if (controllerKey != ideControllerKey && isReservedScsiDeviceNumber(deviceNumber))
|
||||
deviceNumber++;
|
||||
}
|
||||
disk.setControllerKey(controllerKey);
|
||||
|
||||
@ -261,8 +259,6 @@ public class VmwareHelper {
|
||||
disk.setControllerKey(controllerKey);
|
||||
if (deviceNumber < 0) {
|
||||
deviceNumber = vmMo.getNextDeviceNumber(controllerKey);
|
||||
if (controllerKey != ideControllerKey && isReservedScsiDeviceNumber(deviceNumber))
|
||||
deviceNumber++;
|
||||
}
|
||||
|
||||
disk.setKey(-contextNumber);
|
||||
@ -300,8 +296,6 @@ public class VmwareHelper {
|
||||
controllerKey = ideControllerKey;
|
||||
if (deviceNumber < 0) {
|
||||
deviceNumber = vmMo.getNextDeviceNumber(controllerKey);
|
||||
if (controllerKey != ideControllerKey && isReservedScsiDeviceNumber(deviceNumber))
|
||||
deviceNumber++;
|
||||
}
|
||||
|
||||
disk.setControllerKey(controllerKey);
|
||||
@ -354,8 +348,6 @@ public class VmwareHelper {
|
||||
controllerKey = ideControllerKey;
|
||||
if (deviceNumber < 0) {
|
||||
deviceNumber = vmMo.getNextDeviceNumber(controllerKey);
|
||||
if (controllerKey != ideControllerKey && isReservedScsiDeviceNumber(deviceNumber))
|
||||
deviceNumber++;
|
||||
}
|
||||
|
||||
disk.setControllerKey(controllerKey);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user