diff --git a/client/tomcatconf/components.xml.in b/client/tomcatconf/components.xml.in
index 3119a71cda9..87f9dcaf4f4 100755
--- a/client/tomcatconf/components.xml.in
+++ b/client/tomcatconf/components.xml.in
@@ -123,8 +123,8 @@
-
-
+ < adapter name="Storage" class="com.cloud.storage.allocator.FirstFitStoragePoolAllocator"/ >
+
diff --git a/core/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java b/core/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java
index 89f97e00f46..114de0e504a 100644
--- a/core/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java
+++ b/core/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java
@@ -4692,7 +4692,7 @@ public abstract class CitrixResourceBase implements StoragePoolResource, ServerR
vdir.type = Types.VdiType.USER;
if(cmd.getSize()!=0)
- vdir.virtualSize = cmd.getSize();
+ vdir.virtualSize = (cmd.getSize()*1024*1024*1L);
else
vdir.virtualSize = dskch.getSize();
vdi = VDI.create(conn, vdir);
diff --git a/server/src/com/cloud/configuration/Config.java b/server/src/com/cloud/configuration/Config.java
index f4daf1068b8..55e279909fd 100644
--- a/server/src/com/cloud/configuration/Config.java
+++ b/server/src/com/cloud/configuration/Config.java
@@ -48,7 +48,7 @@ public enum Config {
StorageOverprovisioningFactor("Storage", StoragePoolAllocator.class, String.class, "storage.overprovisioning.factor", "2", "Used for storage overprovisioning calculation; available storage will be (actualStorageSize * storage.overprovisioning.factor)", null),
StorageStatsInterval("Storage", ManagementServer.class, String.class, "storage.stats.interval", "60000", "The interval in milliseconds when storage stats (per host) are retrieved from agents.", null),
- MaxVolumeSize("Storage", ManagementServer.class, Integer.class, "max.volume.size.gb", "2000", "The maximum size for a volume in gigabytes.", null),
+ MaxVolumeSize("Storage", ManagementServer.class, Integer.class, "max.volume.size.mb", "1024000", "The maximum size for a volume in megabytes.", null),
TotalRetries("Storage", AgentManager.class, Integer.class, "total.retries", "4", "The number of times each command sent to a host should be retried in case of failure.", null),
// Network
diff --git a/server/src/com/cloud/server/ManagementServerImpl.java b/server/src/com/cloud/server/ManagementServerImpl.java
index 79be06e07ee..4352700eea1 100755
--- a/server/src/com/cloud/server/ManagementServerImpl.java
+++ b/server/src/com/cloud/server/ManagementServerImpl.java
@@ -393,7 +393,7 @@ public class ManagementServerImpl implements ManagementServer {
private final int _routerRamSize;
private final int _proxyRamSize;
private final int _ssRamSize;
- private int _maxVolumeSizeInGb;
+ private int _maxVolumeSizeInMb;
private final Map _availableIdsMap;
@@ -512,9 +512,9 @@ public class ManagementServerImpl implements ManagementServer {
_networkGroupsEnabled = true;
}
- String maxVolumeSizeInGbString = _configDao.getValue("max.volume.size.gb");
- int maxVolumeSizeGb = NumbersUtil.parseInt(maxVolumeSizeInGbString, 2000);
- _maxVolumeSizeInGb = maxVolumeSizeGb;
+ String maxVolumeSizeInMbString = _configDao.getValue("max.volume.size.gb");
+ int maxVolumeSizeMb = NumbersUtil.parseInt(maxVolumeSizeInMbString, (2000*1024));//2000 gb
+ _maxVolumeSizeInMb = maxVolumeSizeMb;
}
protected Map getConfigs() {
@@ -1216,8 +1216,8 @@ public class ManagementServerImpl implements ManagementServer {
throw new InvalidParameterValueException("Please specify a valid disk size for VM creation; custom disk offering has no size set");
}
- if(diskOffering != null && diskOffering.isCustomized() && size > _maxVolumeSizeInGb){
- throw new InvalidParameterValueException("Please specify a valid disk size for VM creation; custom disk offering max size is:"+_maxVolumeSizeInGb);
+ if(diskOffering != null && diskOffering.isCustomized() && size > _maxVolumeSizeInMb){
+ throw new InvalidParameterValueException("Please specify a valid disk size for VM creation; custom disk offering max size is:"+_maxVolumeSizeInMb);
}
// validate that the template is usable by the account
diff --git a/server/src/com/cloud/storage/StorageManagerImpl.java b/server/src/com/cloud/storage/StorageManagerImpl.java
index c3aeb3b82b9..b2f641a3737 100755
--- a/server/src/com/cloud/storage/StorageManagerImpl.java
+++ b/server/src/com/cloud/storage/StorageManagerImpl.java
@@ -716,6 +716,9 @@ public class StorageManagerImpl implements StorageManager {
StoragePoolVO pool = null;
final HashSet avoidPools = new HashSet(avoids);
+ if(diskOffering != null && diskOffering.isCustomized()){
+ diskOffering.setDiskSize(size);
+ }
DiskProfile dskCh = null;
if (volume.getVolumeType() == VolumeType.ROOT && Storage.ImageFormat.ISO != template.getFormat()) {
dskCh = createDiskCharacteristics(volume, template, dc, offering);
@@ -842,7 +845,7 @@ public class StorageManagerImpl implements StorageManager {
rootVol.setDeviceId(0l);
rootVol = _volsDao.persist(rootVol);
- if (diskOffering != null && diskOffering.getDiskSizeInBytes() > 0) {
+ if ((diskOffering != null && diskOffering.getDiskSizeInBytes() > 0)) {
dataVol = new VolumeVO(VolumeType.DATADISK, vm.getId(), vm.getInstanceName() + "-DATA", dc.getId(), pod.getId(), account.getId(), account.getDomainId(), (size>0)? size : diskOffering.getDiskSizeInBytes());
createStartedEvent(account, dataVol);