[libvirt] [PATCH] conf: don't output managed attr for non-pci hostdevs

Nikolay Shirokovskiy nshirokovskiy at virtuozzo.com
Thu Feb 28 06:51:42 UTC 2019



On 27.02.2019 20:43, John Ferlan wrote:
> 
> 
> On 2/22/19 4:35 AM, Nikolay Shirokovskiy wrote:
>> It is ignored on input for non pci hostdevs as written in docs.
>> I guess it would be better if the attr was disabled to be specified
>> in the first place instead but such behaviour is already documented.
>> At least let's not output it back. This will fix issue when
>> managed appeared on output for non pci hostdevs when it was not
>> specified on input.
>>
>> The tests are fixed by next commands:
>> grep  -lRP 'hostdev.*mode=.subsystem.*type=.(?!pci).*managed' `find tests -name '*.xml'` > files
>> sed -i.bak -re 's/ managed=.(yes|no).//' `cat files`
>>
> 
> To save yourself some effort in the future...
> 
> VIR_TEST_REGENERATE_OUTPUT=1 tests/qemuxml2xmltest
> VIR_TEST_REGENERATE_OUTPUT=1 tests/xlconfigtest
> VIR_TEST_REGENERATE_OUTPUT=1 tests/qemuargv2xmltest
> 
> Would have got a lot of them...

Thanx, great hint!

> 
>> Signed-off-by: Nikolay Shirokovskiy <nshirokovskiy at virtuozzo.com>
>> ---
>>  src/conf/domain_conf.c                             |  6 ++++--
>>  tests/qemuargv2xmldata/hostdev-usb-address.xml     |  2 +-
>>  tests/qemuxml2argvdata/controller-order.xml        |  2 +-
>>  .../disk-hostdev-scsi-address-conflict.xml         |  2 +-
>>  .../disk-hostdev-scsi-virtio-iscsi-auth-AES.xml    |  2 +-
>>  .../hostdev-scsi-autogen-address.xml               | 22 +++++++++++-----------
>>  tests/qemuxml2argvdata/hostdev-scsi-boot.xml       |  2 +-
>>  tests/qemuxml2argvdata/hostdev-scsi-large-unit.xml |  2 +-
>>  .../hostdev-scsi-lsi-iscsi-auth.xml                |  4 ++--
>>  tests/qemuxml2argvdata/hostdev-scsi-lsi-iscsi.xml  |  4 ++--
>>  tests/qemuxml2argvdata/hostdev-scsi-lsi.xml        |  2 +-
>>  tests/qemuxml2argvdata/hostdev-scsi-rawio.xml      |  2 +-
>>  tests/qemuxml2argvdata/hostdev-scsi-readonly.xml   |  2 +-
>>  tests/qemuxml2argvdata/hostdev-scsi-sgio.xml       |  2 +-
>>  tests/qemuxml2argvdata/hostdev-scsi-shareable.xml  |  2 +-
>>  .../hostdev-scsi-vhost-scsi-ccw.xml                |  2 +-
>>  .../hostdev-scsi-vhost-scsi-pci.xml                |  2 +-
>>  .../hostdev-scsi-vhost-scsi-pcie.xml               |  2 +-
>>  .../hostdev-scsi-virtio-iscsi-auth.xml             |  4 ++--
>>  .../qemuxml2argvdata/hostdev-scsi-virtio-iscsi.xml |  4 ++--
>>  .../qemuxml2argvdata/hostdev-scsi-virtio-scsi.xml  |  2 +-
>>  .../hostdev-usb-address-device-boot.xml            |  2 +-
>>  .../hostdev-usb-address-device.xml                 |  2 +-
>>  tests/qemuxml2argvdata/hostdev-usb-address.xml     |  2 +-
>>  .../hostdevs-drive-address-conflict.xml            |  4 ++--
>>  tests/qemuxml2argvdata/name-escape.xml             |  2 +-
>>  tests/qemuxml2argvdata/user-aliases-usb.xml        |  4 ++--
>>  tests/qemuxml2xmloutdata/hostdev-mdev-display.xml  |  2 +-
>>  .../qemuxml2xmloutdata/hostdev-mdev-precreated.xml |  2 +-
>>  .../hostdev-scsi-autogen-address.xml               | 22 +++++++++++-----------
>>  .../qemuxml2xmloutdata/hostdev-scsi-large-unit.xml |  2 +-
>>  .../hostdev-scsi-lsi-iscsi-auth.xml                |  4 ++--
>>  .../qemuxml2xmloutdata/hostdev-scsi-lsi-iscsi.xml  |  4 ++--
>>  tests/qemuxml2xmloutdata/hostdev-scsi-lsi.xml      |  2 +-
>>  tests/qemuxml2xmloutdata/hostdev-scsi-rawio.xml    |  2 +-
>>  tests/qemuxml2xmloutdata/hostdev-scsi-readonly.xml |  2 +-
>>  tests/qemuxml2xmloutdata/hostdev-scsi-sgio.xml     |  2 +-
>>  .../qemuxml2xmloutdata/hostdev-scsi-shareable.xml  |  2 +-
>>  .../hostdev-scsi-vhost-scsi-ccw.xml                |  2 +-
>>  .../hostdev-scsi-vhost-scsi-pci.xml                |  2 +-
>>  .../hostdev-scsi-vhost-scsi-pcie.xml               |  2 +-
>>  .../hostdev-scsi-virtio-iscsi-auth.xml             |  4 ++--
>>  .../hostdev-scsi-virtio-iscsi.xml                  |  4 ++--
>>  .../hostdev-scsi-virtio-scsi.xml                   |  2 +-
>>  .../hostdev-subsys-mdev-vfio-ccw.xml               |  2 +-
>>  tests/qemuxml2xmloutdata/hostdev-usb-address.xml   |  2 +-
>>  tests/xlconfigdata/test-usb.xml                    |  2 +-
>>  47 files changed, 80 insertions(+), 78 deletions(-)
>>
>> diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
>> index ceeb247..9ff659c 100644
>> --- a/src/conf/domain_conf.c
>> +++ b/src/conf/domain_conf.c
>> @@ -27330,8 +27330,10 @@ virDomainHostdevDefFormat(virBufferPtr buf,
>>      virBufferAsprintf(buf, "<hostdev mode='%s' type='%s'",
>>                        mode, type);
>>      if (def->mode == VIR_DOMAIN_HOSTDEV_MODE_SUBSYS) {
>> -        virBufferAsprintf(buf, " managed='%s'",
>> -                          def->managed ? "yes" : "no");
>> +        if (def->source.subsys.type == VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_PCI) {
>> +            virBufferAsprintf(buf, " managed='%s'",
>> +                              def->managed ? "yes" : "no");
>> +        }
> 
> Do you think perhaps @managed should be changed to a virTristateBool?
> After all the RNG attribute is a virYesNo like other Tristate's.

AFAIU tristate is nice when we have hypervisor-specific default values.
In this case we not. So tristate won't be that useful. So tristate
is implementation matter decoupled from RNG.

> 
> That way the printing would only be done *if* found specifically on input.

I think we should print "no" for PCI devices if @managed is omitted on input
as we do usually after expanding default values.


Nikolay

> 
> The problem with blindly removing the "no" even though it's listed as
> not being parsed on input is the differences it creates in output when
> someone for some reason does add "managed='{yes|no}'" and now we
> "remove" that...
> 
> So, I'm conflicted on the best resolution for this.  It is just a test
> and PCI is listed as the only one that would manage it, but it is also
> said the others would ignore it other than of course generating the
> output blindly which you're trying to change/fix.
> 
> Perhaps there's some other opinions on this.
> 
> John
> 
>>  
>>          if (def->source.subsys.type == VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI &&
>>              scsisrc->sgio)
> 
> [...]
> 




More information about the libvir-list mailing list