mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-03-20 07:59:00 +00:00
qemu: Always assume QEMU_CAPS_STORAGE_WERROR
All supported QEMUs now accept werror/rerror as argument for the frontend disk device, so we can remove the old code. Signed-off-by: Peter Krempa <pkrempa@redhat.com> Reviewed-by: Ján Tomko <jtomko@redhat.com>
This commit is contained in:
parent
cb1d044e38
commit
d3f7b6fe2f
@ -2036,8 +2036,7 @@ qemuBuildDiskGetErrorPolicy(virDomainDiskDef *disk,
|
||||
|
||||
|
||||
static char *
|
||||
qemuBuildDriveStr(virDomainDiskDef *disk,
|
||||
virQEMUCaps *qemuCaps)
|
||||
qemuBuildDriveStr(virDomainDiskDef *disk)
|
||||
{
|
||||
g_auto(virBuffer) opt = VIR_BUFFER_INITIALIZER;
|
||||
int detect_zeroes = virDomainDiskGetDetectZeroesMode(disk->discard,
|
||||
@ -2058,20 +2057,6 @@ qemuBuildDriveStr(virDomainDiskDef *disk,
|
||||
virDiskNameToIndex(disk->dst));
|
||||
}
|
||||
|
||||
/* werror/rerror are really frontend attributes, but older
|
||||
* qemu requires them on -drive instead of -device */
|
||||
if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_STORAGE_WERROR)) {
|
||||
const char *wpolicy = NULL;
|
||||
const char *rpolicy = NULL;
|
||||
|
||||
qemuBuildDiskGetErrorPolicy(disk, &wpolicy, &rpolicy);
|
||||
|
||||
if (wpolicy)
|
||||
virBufferAsprintf(&opt, ",werror=%s", wpolicy);
|
||||
if (rpolicy)
|
||||
virBufferAsprintf(&opt, ",rerror=%s", rpolicy);
|
||||
}
|
||||
|
||||
if (disk->src->readonly)
|
||||
virBufferAddLit(&opt, ",readonly=on");
|
||||
|
||||
@ -2307,8 +2292,7 @@ qemuBuildDiskDeviceProps(const virDomainDef *def,
|
||||
serial = virBufferContentAndReset(&buf);
|
||||
}
|
||||
|
||||
if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_STORAGE_WERROR))
|
||||
qemuBuildDiskGetErrorPolicy(disk, &wpolicy, &rpolicy);
|
||||
qemuBuildDiskGetErrorPolicy(disk, &wpolicy, &rpolicy);
|
||||
|
||||
if (virJSONValueObjectAdd(&props,
|
||||
"S:device_id", scsiVPDDeviceId,
|
||||
@ -2588,7 +2572,7 @@ qemuBuildDiskSourceCommandLine(virCommand *cmd,
|
||||
!(copyOnReadProps = qemuBlockStorageGetCopyOnReadProps(disk)))
|
||||
return -1;
|
||||
} else {
|
||||
if (!(data = qemuBuildStorageSourceChainAttachPrepareDrive(disk, qemuCaps)))
|
||||
if (!(data = qemuBuildStorageSourceChainAttachPrepareDrive(disk)))
|
||||
return -1;
|
||||
}
|
||||
|
||||
@ -10906,20 +10890,18 @@ qemuBuildHotpluggableCPUProps(const virDomainVcpuDef *vcpu)
|
||||
/**
|
||||
* qemuBuildStorageSourceAttachPrepareDrive:
|
||||
* @disk: disk object to prepare
|
||||
* @qemuCaps: qemu capabilities object
|
||||
*
|
||||
* Prepare qemuBlockStorageSourceAttachData *for use with the old approach
|
||||
* using -drive/drive_add. See qemuBlockStorageSourceAttachPrepareBlockdev.
|
||||
*/
|
||||
static qemuBlockStorageSourceAttachData *
|
||||
qemuBuildStorageSourceAttachPrepareDrive(virDomainDiskDef *disk,
|
||||
virQEMUCaps *qemuCaps)
|
||||
qemuBuildStorageSourceAttachPrepareDrive(virDomainDiskDef *disk)
|
||||
{
|
||||
g_autoptr(qemuBlockStorageSourceAttachData) data = NULL;
|
||||
|
||||
data = g_new0(qemuBlockStorageSourceAttachData, 1);
|
||||
|
||||
if (!(data->driveCmd = qemuBuildDriveStr(disk, qemuCaps)) ||
|
||||
if (!(data->driveCmd = qemuBuildDriveStr(disk)) ||
|
||||
!(data->driveAlias = qemuAliasDiskDriveFromDisk(disk)))
|
||||
return NULL;
|
||||
|
||||
@ -11001,20 +10983,18 @@ qemuBuildStorageSourceAttachPrepareCommon(virStorageSource *src,
|
||||
/**
|
||||
* qemuBuildStorageSourceChainAttachPrepareDrive:
|
||||
* @disk: disk definition
|
||||
* @qemuCaps: qemu capabilities object
|
||||
*
|
||||
* Prepares qemuBlockStorageSourceChainData *for attaching @disk via -drive.
|
||||
*/
|
||||
qemuBlockStorageSourceChainData *
|
||||
qemuBuildStorageSourceChainAttachPrepareDrive(virDomainDiskDef *disk,
|
||||
virQEMUCaps *qemuCaps)
|
||||
qemuBuildStorageSourceChainAttachPrepareDrive(virDomainDiskDef *disk)
|
||||
{
|
||||
g_autoptr(qemuBlockStorageSourceAttachData) elem = NULL;
|
||||
g_autoptr(qemuBlockStorageSourceChainData) data = NULL;
|
||||
|
||||
data = g_new0(qemuBlockStorageSourceChainData, 1);
|
||||
|
||||
if (!(elem = qemuBuildStorageSourceAttachPrepareDrive(disk, qemuCaps)))
|
||||
if (!(elem = qemuBuildStorageSourceAttachPrepareDrive(disk)))
|
||||
return NULL;
|
||||
|
||||
if (qemuBuildStorageSourceAttachPrepareCommon(disk->src, elem) < 0)
|
||||
|
@ -110,8 +110,7 @@ qemuBuildStorageSourceAttachPrepareCommon(virStorageSource *src,
|
||||
|
||||
|
||||
qemuBlockStorageSourceChainData *
|
||||
qemuBuildStorageSourceChainAttachPrepareDrive(virDomainDiskDef *disk,
|
||||
virQEMUCaps *qemuCaps);
|
||||
qemuBuildStorageSourceChainAttachPrepareDrive(virDomainDiskDef *disk);
|
||||
|
||||
|
||||
qemuBlockStorageSourceChainData *
|
||||
|
@ -770,8 +770,7 @@ qemuDomainAttachDiskGeneric(virQEMUDriver *driver,
|
||||
}
|
||||
|
||||
} else {
|
||||
if (!(data = qemuBuildStorageSourceChainAttachPrepareDrive(disk,
|
||||
priv->qemuCaps)))
|
||||
if (!(data = qemuBuildStorageSourceChainAttachPrepareDrive(disk)))
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user