Details
-
Bug
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
4.2.0, 4.3.0
-
Security Level: Public (Anyone can view this level - this is the default.)
-
None
Description
Incorrect primary storage allocation behaviour:
If a datastore reaches ‘disable threshold’ a stopped VM that was already on that datastore will refuse to start? Pre 4.2 thresholds were only applicable at the allocation time.
I still see the code is present in 4.2 and master as well that can cause this issue.
Following highlighted code is what causes it:
DeploymentPlanningMgrImpl :: findPotentialDeploymentResources () {
….
if (hostCanAccessSPool(potentialHost, potentialSPool))
{ hostCanAccessPool = true; if (multipleVolume) { List<Volume> requestVolumes = null; if (volumeAllocationMap.containsKey(potentialSPool)) requestVolumes = volumeAllocationMap.get(potentialSPool); else requestVolumes = new ArrayList<Volume>(); requestVolumes.add(vol); if (!_storageMgr.storagePoolHasEnoughSpace(requestVolumes, potentialSPool)) continue; volumeAllocationMap.put(potentialSPool, requestVolumes); }storage.put(vol, potentialSPool);
haveEnoughSpace = true;
break;
}
…
}
Issue is that this check should NOT be done for a Volume that is already created and exists on the pool.
Happens with a VM having root and data volumes.