- also note that device='lun' will only be recognized for
actual raw devices, never for individual partitions or LVM
partitions (in those cases, the kernel will reject the generic
- SCSI commands, making it identical to device='disk'). The
- optional <code>snapshot</code> attribute indicates the default
+ SCSI commands, making it identical to device='disk').
+ The optional <code>rawio</code> attribute indicates that the disk
+ is desirous of rawio capability. This attribute is only valid when
+ device is "lun".
+ The optional <code>snapshot</code> attribute indicates the default
behavior of the disk during disk snapshots: "internal"
requires a file format such as qcow2 that can store both the
snapshot and the data changes since the snapshot;
</choice>
</attribute>
</optional>
+ <optional>
+ <attribute name="rawio">
+ <choice>
+ <value>yes</value>
+ <value>no</value>
+ </choice>
+ </attribute>
+ </optional>
<optional>
<ref name="snapshot"/>
</optional>
char *type = NULL;
char *device = NULL;
char *snapshot = NULL;
+ char *rawio = NULL;
char *driverName = NULL;
char *driverType = NULL;
char *source = NULL;
snapshot = virXMLPropString(node, "snapshot");
+ rawio = virXMLPropString(node, "rawio");
+
cur = node->children;
while (cur != NULL) {
if (cur->type == XML_ELEMENT_NODE) {
def->snapshot = VIR_DOMAIN_DISK_SNAPSHOT_NO;
}
+ if (rawio) {
+ def->rawio_specified = true;
+ if (def->device == VIR_DOMAIN_DISK_DEVICE_LUN) {
+ if (STREQ(rawio, "yes")) {
+ def->rawio = 1;
+ } else if (STREQ(rawio, "no")) {
+ def->rawio = 0;
+ } else {
+ virDomainReportError(VIR_ERR_XML_ERROR,
+ _("unknown disk rawio setting '%s'"),
+ rawio);
+ goto error;
+ }
+ } else {
+ virDomainReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
+ _("rawio can be used only with device='lun'"));
+ goto error;
+ }
+ }
+
if (bus) {
if ((def->bus = virDomainDiskBusTypeFromString(bus)) < 0) {
virDomainReportError(VIR_ERR_INTERNAL_ERROR,
virBufferAsprintf(buf,
" <disk type='%s' device='%s'",
type, device);
+ if (def->rawio_specified) {
+ if (def->rawio == 1) {
+ virBufferAddLit(buf, " rawio='yes'");
+ } else if (def->rawio == 0) {
+ virBufferAddLit(buf, " rawio='no'");
+ }
+ }
if (def->snapshot &&
!(def->snapshot == VIR_DOMAIN_DISK_SNAPSHOT_NO && def->readonly))
virBufferAsprintf(buf, " snapshot='%s'",
unsigned int transient : 1;
virDomainDeviceInfo info;
virStorageEncryptionPtr encryption;
+ bool rawio_specified;
+ int rawio; /* no = 0, yes = 1 */
};
-boot dc -device virtio-serial-pci,id=virtio-serial0,bus=pci.0,addr=0x6 \
-drive file=/dev/sdfake,if=none,id=drive-virtio-disk0 \
-device virtio-blk-pci,scsi=on,bus=pci.0,addr=0x4,drive=drive-virtio-disk0,id=virtio-disk0 \
--drive file=/var/lib/libvirt/Fedora-14-x86_64-Live-KDE.iso,if=none,media=cdrom,id=drive-ide0-1-0 \
--device ide-drive,bus=ide.1,unit=0,drive=drive-ide0-1-0,id=ide0-1-0 \
+-drive file=/dev/sdfake2,if=none,id=drive-virtio-disk1 \
+-device virtio-blk-pci,scsi=on,bus=pci.0,addr=0x5,drive=drive-virtio-disk1,id=virtio-disk1 \
-device virtio-net-pci,vlan=0,id=net0,mac=52:54:00:e5:48:58,bus=pci.0,addr=0x3 \
-net user,vlan=0,name=hostnet0 -serial pty -usb -vnc 127.0.0.1:-809 -std-vga \
--device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x5
+-device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x7
<on_crash>restart</on_crash>
<devices>
<emulator>/usr/bin/qemu</emulator>
- <disk type='block' device='lun'>
+ <disk type='block' device='lun' rawio='yes'>
<driver name='qemu' type='qcow2'/>
<source dev='/dev/sdfake'/>
<target dev='vda' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
</disk>
- <disk type='file' device='cdrom'>
- <driver name='qemu' type='raw'/>
- <source file='/var/lib/libvirt/Fedora-14-x86_64-Live-KDE.iso'/>
- <target dev='hdc' bus='ide'/>
- <readonly/>
- <address type='drive' controller='0' bus='1' unit='0'/>
+ <disk type='block' device='lun'>
+ <driver name='qemu' type='qcow2'/>
+ <source dev='/dev/sdfake2'/>
+ <target dev='vdb' bus='virtio'/>
+ <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
</disk>
<controller type='virtio-serial' index='0'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>