diff --git a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/KVMStorageProcessor.java b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/KVMStorageProcessor.java index 1fb2d5f5efb..89270c10a62 100644 --- a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/KVMStorageProcessor.java +++ b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/KVMStorageProcessor.java @@ -1054,19 +1054,13 @@ public class KVMStorageProcessor implements StorageProcessor { primaryPool = storagePoolMgr.getStoragePool(primaryStore.getPoolType(), primaryStore.getUuid()); disksize = volume.getSize(); - vol = primaryPool.createPhysicalDisk(volume.getUuid(), volume.getProvisioningType(), disksize); + vol = primaryPool.createPhysicalDisk(volume.getUuid(), PhysicalDiskFormat.valueOf(volume.getFormat().toString().toUpperCase()), + volume.getProvisioningType(), disksize); VolumeObjectTO newVol = new VolumeObjectTO(); newVol.setPath(vol.getName()); newVol.setSize(volume.getSize()); - - /** - * Volumes on RBD are always in RAW format - * Hardcode this to RAW since there is no other way right now - */ - if (primaryPool.getType() == StoragePoolType.RBD) { - newVol.setFormat(ImageFormat.RAW); - } + newVol.setFormat(ImageFormat.valueOf(vol.getFormat().toString().toUpperCase())); return new CreateObjectAnswer(newVol); } catch (Exception e) { diff --git a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/LibvirtStorageAdaptor.java b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/LibvirtStorageAdaptor.java index 3c0dd943742..503c51b5520 100644 --- a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/LibvirtStorageAdaptor.java +++ b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/LibvirtStorageAdaptor.java @@ -733,7 +733,6 @@ public class LibvirtStorageAdaptor implements StorageAdaptor { * For that reason we use the native RBD bindings to create the * RBD image until libvirt creates RBD format 2 by default */ - format = PhysicalDiskFormat.RAW; try { s_logger.info("Creating RBD image " + pool.getSourceDir() + "/" + name + " with size " + size); @@ -758,7 +757,7 @@ public class LibvirtStorageAdaptor implements StorageAdaptor { volPath = pool.getSourceDir() + "/" + name; KVMPhysicalDisk disk = new KVMPhysicalDisk(volPath, name, pool); - disk.setFormat(format); + disk.setFormat(PhysicalDiskFormat.RAW); disk.setSize(size); disk.setVirtualSize(size); return disk; diff --git a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/LibvirtStoragePool.java b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/LibvirtStoragePool.java index 7678f1dd237..702816eb308 100644 --- a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/LibvirtStoragePool.java +++ b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/LibvirtStoragePool.java @@ -106,7 +106,7 @@ public class LibvirtStoragePool implements KVMStoragePool { @Override public PhysicalDiskFormat getDefaultFormat() { - if (getStoragePoolType() == StoragePoolType.CLVM) { + if (getStoragePoolType() == StoragePoolType.CLVM || getStoragePoolType() == StoragePoolType.RBD) { return PhysicalDiskFormat.RAW; } else { return PhysicalDiskFormat.QCOW2;