[libvirt] [PATCH 2/2] qemu: add a check when cold-plug a Chr device
lhuang
lhuang at redhat.com
Thu Jan 22 01:45:06 UTC 2015
On 01/22/2015 07:16 AM, John Ferlan wrote:
>
> On 12/09/2014 01:48 AM, Luyao Huang wrote:
>> Add a func just check the base target type which
>> qemu support. But i still doubt this will be useful
>> , we already have a check when we try to start the
>> vm. And this check only check the target type, and
>> the other things will be done in virDomainChrDefParseXML.
>>
>> Signed-off-by: Luyao Huang <lhuang at redhat.com>
>> ---
>> src/qemu/qemu_hotplug.c | 64 +++++++++++++++++++++++++++++++++++++++++++++++++
>> 1 file changed, 64 insertions(+)
>>
> I forgot to add that this didn't build without:
>
> --- a/src/libvirt_private.syms
> +++ b/src/libvirt_private.syms
> @@ -145,6 +145,8 @@ virDomainBlockedReasonTypeFromString;
> virDomainBlockedReasonTypeToString;
> virDomainCapabilitiesPolicyTypeToString;
> virDomainCapsFeatureTypeToString;
> +virDomainChrChannelTargetTypeFromString;
> +virDomainChrChannelTargetTypeToString;
> virDomainChrConsoleTargetTypeFromString;
> virDomainChrConsoleTargetTypeToString;
> virDomainChrDefForeach;
>
>
> Since it seems you'll be resending your patches, I'll wait for your
> patches before proceeding1...
Thanks a lot for pointing out, I will add these code in next version.
> John
>> diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c
>> index b9a0cee..fe91ec7 100644
>> --- a/src/qemu/qemu_hotplug.c
>> +++ b/src/qemu/qemu_hotplug.c
>> @@ -1384,10 +1384,74 @@ int qemuDomainAttachRedirdevDevice(virQEMUDriverPtr driver,
>>
>> }
>>
>> +static int
>> +qemuDomainChrCheckDefSupport(virDomainChrDefPtr chr)
>> +{
>> + int ret = -1;
>> +
>> + switch (chr->deviceType) {
>> + case VIR_DOMAIN_CHR_DEVICE_TYPE_SERIAL:
>> + switch ((virDomainChrSerialTargetType) chr->targetType) {
>> + case VIR_DOMAIN_CHR_SERIAL_TARGET_TYPE_ISA:
>> + case VIR_DOMAIN_CHR_SERIAL_TARGET_TYPE_USB:
>> + ret = 0;
>> + break;
>> +
>> + default:
>> + virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
>> + _("unsupported serial target type %s for qemu"),
>> + NULLSTR(virDomainChrSerialTargetTypeToString(chr->targetType)));
>> + break;
>> + }
>> + break;
>> +
>> + case VIR_DOMAIN_CHR_DEVICE_TYPE_PARALLEL:
>> + ret = 0;
>> + break;
>> +
>> + case VIR_DOMAIN_CHR_DEVICE_TYPE_CHANNEL:
>> + switch ((virDomainChrChannelTargetType) chr->targetType) {
>> + case VIR_DOMAIN_CHR_CHANNEL_TARGET_TYPE_GUESTFWD:
>> + case VIR_DOMAIN_CHR_CHANNEL_TARGET_TYPE_VIRTIO:
>> + ret = 0;
>> + break;
>> +
>> + default:
>> + virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
>> + _("unsupported channel target type %s for qemu"),
>> + NULLSTR(virDomainChrChannelTargetTypeToString(chr->targetType)));
>> + break;
>> + }
>> + break;
>> +
>> + case VIR_DOMAIN_CHR_DEVICE_TYPE_CONSOLE:
>> + switch ((virDomainChrConsoleTargetType) chr->targetType) {
>> + case VIR_DOMAIN_CHR_CONSOLE_TARGET_TYPE_SERIAL:
>> + case VIR_DOMAIN_CHR_CONSOLE_TARGET_TYPE_VIRTIO:
>> + case VIR_DOMAIN_CHR_CONSOLE_TARGET_TYPE_SCLP:
>> + case VIR_DOMAIN_CHR_CONSOLE_TARGET_TYPE_SCLPLM:
>> + ret = 0;
>> + break;
>> +
>> + default:
>> + virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
>> + _("unsupported console target type %s for qemu"),
>> + NULLSTR(virDomainChrConsoleTargetTypeToString(chr->targetType)));
>> + break;
>> + }
>> + break;
>> + }
>> +
>> + return ret;
>> +}
>> +
>> int
>> qemuDomainChrInsert(virDomainDefPtr vmdef,
>> virDomainChrDefPtr chr)
>> {
>> + if (qemuDomainChrCheckDefSupport(chr) < 0)
>> + return -1;
>> +
>> if (chr->deviceType == VIR_DOMAIN_CHR_DEVICE_TYPE_CONSOLE &&
>> chr->targetType == VIR_DOMAIN_CHR_CONSOLE_TARGET_TYPE_SERIAL) {
>> virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s",
>>
Luyao
More information about the libvir-list
mailing list