提交 327430fc 编写于 作者: P Peter Krempa

qemu: Format 'write-cache' parameter for disk frontends

The disk cache mode translates to various frontend and backend
attributes for the qemu block layer. For the frontend device the
'writeback' parameter is used and provided as 'write-cache'. Implement
this so that we can later switch to using -blockdev where we will not
pass the cachemode directly any more.
Signed-off-by: NPeter Krempa <pkrempa@redhat.com>
上级 955df88d
......@@ -1824,6 +1824,30 @@ qemuCheckIOThreads(const virDomainDef *def,
}
static int
qemuBuildDriveDevCacheStr(virDomainDiskDefPtr disk,
virBufferPtr buf,
virQEMUCapsPtr qemuCaps)
{
bool wb;
if (disk->cachemode == VIR_DOMAIN_DISK_CACHE_DEFAULT)
return 0;
if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_DISK_WRITE_CACHE))
return 0;
if (qemuDomainDiskCachemodeFlags(disk->cachemode, &wb, NULL, NULL) < 0)
return -1;
virBufferStrcat(buf, ",write-cache=",
virTristateSwitchTypeToString(virTristateSwitchFromBool(wb)),
NULL);
return 0;
}
char *
qemuBuildDriveDevStr(const virDomainDef *def,
virDomainDiskDefPtr disk,
......@@ -2140,6 +2164,9 @@ qemuBuildDriveDevStr(const virDomainDef *def,
}
}
if (qemuBuildDriveDevCacheStr(disk, &opt, qemuCaps) < 0)
goto error;
if (virBufferCheckError(&opt) < 0)
goto error;
......
......@@ -28,16 +28,18 @@ server,nowait \
-device lsi,id=scsi0,bus=pci.0,addr=0x2 \
-drive file=/dev/HostVG/QEMUGuest1,format=qcow2,if=none,id=drive-ide0-0-0,\
cache=writeback \
-device ide-hd,bus=ide.0,unit=0,drive=drive-ide0-0-0,id=ide0-0-0,bootindex=1 \
-device ide-hd,bus=ide.0,unit=0,drive=drive-ide0-0-0,id=ide0-0-0,bootindex=1,\
write-cache=on \
-drive file=/dev/HostVG/QEMUGuest1,format=qcow2,if=none,id=drive-scsi0-0-0,\
cache=none \
-device scsi-hd,bus=scsi0.0,scsi-id=0,drive=drive-scsi0-0-0,id=scsi0-0-0 \
-device scsi-hd,bus=scsi0.0,scsi-id=0,drive=drive-scsi0-0-0,id=scsi0-0-0,\
write-cache=on \
-drive file=/dev/HostVG/QEMUGuest1,format=qcow2,if=none,id=drive-virtio-disk0,\
cache=writethrough \
-device virtio-blk-pci,scsi=off,bus=pci.0,addr=0x3,drive=drive-virtio-disk0,\
id=virtio-disk0 \
id=virtio-disk0,write-cache=off \
-drive file=/dev/HostVG/QEMUGuest1,format=qcow2,if=none,id=drive-usb-disk1,\
cache=directsync \
-device usb-storage,bus=usb.0,port=1,drive=drive-usb-disk1,id=usb-disk1,\
removable=off \
removable=off,write-cache=off \
-msg timestamp=on
......@@ -28,18 +28,20 @@ server,nowait \
-device lsi,id=scsi0,bus=pci.0,addr=0x2 \
-drive file=/dev/HostVG/QEMUGuest1,format=qcow2,if=none,id=drive-ide0-0-0,\
cache=writeback \
-device ide-hd,bus=ide.0,unit=0,drive=drive-ide0-0-0,id=ide0-0-0,bootindex=1 \
-device ide-hd,bus=ide.0,unit=0,drive=drive-ide0-0-0,id=ide0-0-0,bootindex=1,\
write-cache=on \
-drive file=/dev/HostVG/QEMUGuest1,format=qcow2,if=none,id=drive-scsi0-0-0,\
cache=none \
-device scsi-hd,bus=scsi0.0,scsi-id=0,drive=drive-scsi0-0-0,id=scsi0-0-0 \
-device scsi-hd,bus=scsi0.0,scsi-id=0,drive=drive-scsi0-0-0,id=scsi0-0-0,\
write-cache=on \
-drive file=/dev/HostVG/QEMUGuest1,format=qcow2,if=none,id=drive-virtio-disk0,\
cache=writethrough \
-device virtio-blk-pci,scsi=off,bus=pci.0,addr=0x3,drive=drive-virtio-disk0,\
id=virtio-disk0 \
id=virtio-disk0,write-cache=off \
-drive file=/dev/HostVG/QEMUGuest1,format=qcow2,if=none,id=drive-usb-disk1,\
cache=directsync \
-device usb-storage,bus=usb.0,port=1,drive=drive-usb-disk1,id=usb-disk1,\
removable=off \
removable=off,write-cache=off \
-sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,\
resourcecontrol=deny \
-msg timestamp=on
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册