mirror of https://github.com/apache/cloudstack.git
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.
(cherry picked from commit f420dd55fb)
Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
This commit is contained in:
parent
326bb3e0a4
commit
4708a0b40d
|
|
@ -1056,8 +1056,6 @@ public class VirtualMachineMO extends BaseMO {
|
|||
}
|
||||
|
||||
int deviceNumber = getNextDeviceNumber(controllerKey);
|
||||
if (controllerKey != ideControllerKey && VmwareHelper.isReservedScsiDeviceNumber(deviceNumber))
|
||||
deviceNumber++;
|
||||
|
||||
newDisk.setControllerKey(controllerKey);
|
||||
newDisk.setKey(-deviceNumber);
|
||||
|
|
@ -1911,8 +1909,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;
|
||||
}
|
||||
|
|
@ -2381,6 +2377,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) {
|
||||
|
|
@ -2389,8 +2386,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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -189,8 +189,6 @@ public class VmwareHelper {
|
|||
controllerKey = ideControllerKey;
|
||||
if (deviceNumber < 0) {
|
||||
deviceNumber = vmMo.getNextDeviceNumber(controllerKey);
|
||||
if (controllerKey != ideControllerKey && isReservedScsiDeviceNumber(deviceNumber))
|
||||
deviceNumber++;
|
||||
}
|
||||
disk.setControllerKey(controllerKey);
|
||||
|
||||
|
|
@ -262,8 +260,6 @@ public class VmwareHelper {
|
|||
disk.setControllerKey(controllerKey);
|
||||
if (deviceNumber < 0) {
|
||||
deviceNumber = vmMo.getNextDeviceNumber(controllerKey);
|
||||
if (controllerKey != ideControllerKey && isReservedScsiDeviceNumber(deviceNumber))
|
||||
deviceNumber++;
|
||||
}
|
||||
|
||||
disk.setKey(-contextNumber);
|
||||
|
|
@ -301,8 +297,6 @@ public class VmwareHelper {
|
|||
controllerKey = ideControllerKey;
|
||||
if (deviceNumber < 0) {
|
||||
deviceNumber = vmMo.getNextDeviceNumber(controllerKey);
|
||||
if (controllerKey != ideControllerKey && isReservedScsiDeviceNumber(deviceNumber))
|
||||
deviceNumber++;
|
||||
}
|
||||
|
||||
disk.setControllerKey(controllerKey);
|
||||
|
|
@ -355,8 +349,6 @@ public class VmwareHelper {
|
|||
controllerKey = ideControllerKey;
|
||||
if (deviceNumber < 0) {
|
||||
deviceNumber = vmMo.getNextDeviceNumber(controllerKey);
|
||||
if (controllerKey != ideControllerKey && isReservedScsiDeviceNumber(deviceNumber))
|
||||
deviceNumber++;
|
||||
}
|
||||
|
||||
disk.setControllerKey(controllerKey);
|
||||
|
|
|
|||
Loading…
Reference in New Issue