Source:
<code>private void writeDiskDriver(VmDevice device, Disk disk, DiskVmElement dve) { writer.writeStartElement("driver"); writer.writeAttributeString("name", "qemu"); if (FeatureSupported.passDiscardSupported(vm.getCompatibilityVersion()) && dve.isPassDiscard()) { writer.writeAttributeString("discard", "unmap"); } if (device.getSpecParams().containsKey("pinToIoThread")) { writer.writeAttributeString("iothread", device.getSpecParams().get("pinToIoThread").toString()); } switch (disk.getDiskStorageType()) { case IMAGE: DiskImage diskImage = (DiskImage) disk; String diskType = this.vmInfoBuildUtils.getDiskType(this.vm, diskImage); <START> writer.writeAttributeString("io", "file".equals(diskType) ? "native" : "threads"); <END> writer.writeAttributeString("type", diskImage.getVolumeFormat() == VolumeFormat.COW ? "qcow2" : "raw"); writer.writeAttributeString("error_policy", disk.getPropagateErrors() == PropagateErrors.On ? "enospace" : "stop"); break; case LUN: writer.writeAttributeString("io", "native"); writer.writeAttributeString("type", "raw"); writer.writeAttributeString("error_policy", disk.getPropagateErrors() == PropagateErrors.On ? "enospace" : "stop"); break; case CINDER: writer.writeAttributeString("type", "raw"); writer.writeAttributeString("error_policy", "stop"); writer.writeAttributeString("io", "threads"); break; } if (device.getSnapshotId() != null) { writer.writeAttributeString("cache", "writethrough"); } else { switch (dve.getDiskInterface()) { case VirtIO: default: writer.writeAttributeString("cache", "none"); } } writer.writeEndElement(); }</code><technical_language>other around: block->"native", others->"threads" ([1]) is this change intentional a mistake? [1] <LINK_0></technical_language>

Target:
private void writeDiskDriver(VmDevice device, Disk disk, DiskVmElement dve) { writer.writeStartElement("driver"); writer.writeAttributeString("name", "qemu"); if (FeatureSupported.passDiscardSupported(vm.getCompatibilityVersion()) && dve.isPassDiscard()) { writer.writeAttributeString("discard", "unmap"); } if (device.getSpecParams().containsKey("pinToIoThread")) { writer.writeAttributeString("iothread", device.getSpecParams().get("pinToIoThread").toString()); } switch (disk.getDiskStorageType()) { case IMAGE: DiskImage diskImage = (DiskImage) disk; String diskType = this.vmInfoBuildUtils.getDiskType(this.vm, diskImage); writer.writeAttributeString("io", "file".equals(diskType) ? "threads" : "native"); writer.writeAttributeString("type", diskImage.getVolumeFormat() == VolumeFormat.COW ? "qcow2" : "raw"); writer.writeAttributeString("error_policy", disk.getPropagateErrors() == PropagateErrors.On ? "enospace" : "stop"); break; case LUN: writer.writeAttributeString("io", "native"); writer.writeAttributeString("type", "raw"); writer.writeAttributeString("error_policy", disk.getPropagateErrors() == PropagateErrors.On ? "enospace" : "stop"); break; case CINDER: writer.writeAttributeString("type", "raw"); writer.writeAttributeString("error_policy", "stop"); writer.writeAttributeString("io", "threads"); break; } if (device.getSnapshotId() != null) { writer.writeAttributeString("cache", "writethrough"); } else { switch (dve.getDiskInterface()) { case VirtIO: default: writer.writeAttributeString("cache", "none"); } } writer.writeEndElement(); }