[...]
>>> + if (iothread) {
>>> + if (def->model != VIR_DOMAIN_CONTROLLER_MODEL_SCSI_VIRTIO_SCSI)
{
>>> + virReportError(VIR_ERR_XML_ERROR,
>>> + _("'iothread' attribute only
supported for "
>>> + "controller model '%s'"),
>>> +
virDomainControllerModelSCSITypeToString(VIR_DOMAIN_CONTROLLER_MODEL_SCSI_VIRTIO_SCSI));
>>> + goto error;
>>> + }
>>
>> I think this particular check should be moved to one of the generic PostParse
>> validation functions, since it's not specific to parse time.
>>
>
> I guess I was under the impression that post parse callbacks were to be
> used when we didn't have all the information about a relationship
> between say a disk and controller.
>
For driver specific bits, maybe. But in general I think as much validation as
possible should move out of the XML parsing routines, and into the generic
PostParse function, so drivers that manually populate virDomainDef hit the
checks as well.
OK, reasonable - I'll move the def->model part...
> In this case, the attribute is only supported on the controller
that has
> been defined using "virtio-scsi" or "virtio-ccw". Since those
weren't
> "discover-able" based on some other relationship, thus checking at parse
> time was better.
>
> IDC either way, but I think (without too much digging), that would mean
> a change to qemuDomainDeviceDefPostParse in the following if:
>
I would put it in generic code instead. Roughly what
virDomainDefPostParseTimer does, but probably tied into the device iteration.
Really the check being in done in DomainDefParse* isn't impactful in this
case, but it's a pattern we should try to break out of IMO
True - a lot easier to "decide" in the parse code where the check would
go considering other attributes that can be found with <driver> are
checked inline... Chasing the post parse callbacks and deciding where
is the "best" place for a check just requires more thought.
I'll add a check virDomainDeviceDefPostParseInternal since it's a device
specific callback check as opposed to a domain def check.
I'll push 1-4 since they're ACK'd and repost 5-7 in a v2 shortly.
Tks -
John