Bug 1925894 - VM with vhost-user server option changes and hit warning: short-form boolean option 'server' deprecated
Summary: VM with vhost-user server option changes and hit warning: short-form boolean ...
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Red Hat Enterprise Linux Advanced Virtualization
Classification: Red Hat
Component: libvirt
Version: 8.4
Hardware: Unspecified
OS: Unspecified
unspecified
unspecified
Target Milestone: rc
: 8.4
Assignee: Michal Privoznik
QA Contact: Luyao Huang
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2021-02-07 08:42 UTC by Pei Zhang
Modified: 2021-11-16 08:12 UTC (History)
9 users (show)

Fixed In Version: libvirt-7.3.0-1.el8
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed: 2021-11-16 07:51:32 UTC
Type: Bug
Target Upstream Version: 7.1.0
Embargoed:


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
Red Hat Product Errata RHBA-2021:4684 0 None None None 2021-11-16 07:51:58 UTC

Description Pei Zhang 2021-02-07 08:42:21 UTC
Description of problem:
Boot VM with vhost-user server mode, seems the option usage has changed from "server" to "server=on" 

Version-Release number of selected component (if applicable):
qemu-kvm-5.2.0-5.scrmod+el8.4.0+9783+7f5b6b81.wrb210203.x86_64
libvirt-7.0.0-3.scrmod+el8.4.0+9783+5765bd69.x86_64

How reproducible:
100%

Steps to Reproduce:
1. Boot OVS

# ovs-vsctl show
d96517fa-c587-42e7-a4f1-97e4bd488ffb
    Bridge ovsbr0
        datapath_type: netdev
        Port vhost-user0
            Interface vhost-user0
                type: dpdkvhostuserclient
                options: {vhost-server-path="/tmp/vhostuser0.sock"}
        Port dpdk0
            Interface dpdk0
                type: dpdk
                options: {dpdk-devargs="0000:5e:00.0"}
        Port ovsbr0
            Interface ovsbr0
                type: internal
    Bridge ovsbr1
        datapath_type: netdev
        Port vhost-user1
            Interface vhost-user1
                type: dpdkvhostuserclient
                options: {vhost-server-path="/tmp/vhostuser1.sock"}
        Port dpdk1
            Interface dpdk1
                type: dpdk
                options: {dpdk-devargs="0000:5e:00.1"}
        Port ovsbr1
            Interface ovsbr1
                type: internal


2. Boot VM with vhost-user server, successfully.

    <interface type="vhostuser">
      <mac address="18:66:da:5f:dd:02" />
      <source mode="server" path="/tmp/vhostuser0.sock" type="unix" />
      <model type="virtio" />
      <driver ats="on" iommu="on" name="vhost" queues="4" rx_queue_size="1024" />
      <address bus="0x6" domain="0x0000" function="0x0" slot="0x00" type="pci" />
    </interface>
    <interface type="vhostuser">
      <mac address="18:66:da:5f:dd:03" />
      <source mode="server" path="/tmp/vhostuser1.sock" type="unix" />
      <model type="virtio" />
      <driver ats="on" iommu="on" name="vhost" queues="4" rx_queue_size="1024" />
      <address bus="0x7" domain="0x0000" function="0x0" slot="0x00" type="pci" />
    </interface>


3. Check libvirt log, there are warning info: "warning: short-form boolean option 'server' deprecated". Please see below.

...
2021-02-07 08:16:02.443+0000: Domain id=1 is tainted: high-privileges
qemu-kvm: -chardev socket,id=charmonitor,fd=36,server,nowait: warning: short-form boolean option 'server' deprecated
Please use server=on instead
qemu-kvm: -chardev socket,id=charmonitor,fd=36,server,nowait: warning: short-form boolean option 'nowait' deprecated
Please use wait=off instead
qemu-kvm: -chardev socket,id=charnet1,path=/tmp/vhostuser0.sock,server: warning: short-form boolean option 'server' deprecated
Please use server=on instead
qemu-kvm: -chardev socket,id=charnet2,path=/tmp/vhostuser1.sock,server: warning: short-form boolean option 'server' deprecated
Please use server=on instead
2021-02-07T08:16:02.510649Z qemu-kvm: -chardev socket,id=charnet1,path=/tmp/vhostuser0.sock,server: info: QEMU waiting for connection on: disconnected:unix:/tmp/vhostuser0.sock,server
2021-02-07T08:16:02.983951Z qemu-kvm: -chardev socket,id=charnet2,path=/tmp/vhostuser1.sock,server: info: QEMU waiting for connection on: disconnected:unix:/tmp/vhostuser1.sock,server
char device redirected to /dev/pts/1 (label charserial0)


Actual results:
Warning info shows.

Expected results:
There should be no warning info.

Additional info:
1. Qemu usage change causes this warning. Libvirt should adjust itself to qemu accordingly.

(1) Boot qemu with vhost-user "server", it prints "warning: short-form boolean option 'server' deprecated. Please use server=on instead" 

# /usr/libexec/qemu-kvm -chardev socket,id=charnet2,path=/tmp/vhostuser1.sock,server
qemu-kvm: -chardev socket,id=charnet2,path=/tmp/vhostuser1.sock,server: warning: short-form boolean option 'server' deprecated
Please use server=on instead
qemu-kvm: -chardev socket,id=charnet2,path=/tmp/vhostuser1.sock,server: info: QEMU waiting for connection on: disconnected:unix:/tmp/vhostuser1.sock,server

(2) Boot qemu with vhost-user "server=on", it works well.

# /usr/libexec/qemu-kvm -chardev socket,id=charnet2,path=/tmp/vhostuser1.sock,server=on
qemu-kvm: -chardev socket,id=charnet2,path=/tmp/vhostuser1.sock,server=on: info: QEMU waiting for connection on: disconnected:unix:/tmp/vhostuser1.sock,server


2. Qemu version changes
qemu-kvm-5.2.0-5.module+el8.4.0+9775+0937c167.x86_64              still "server"
qemu-kvm-5.2.0-5.scrmod+el8.4.0+9783+7f5b6b81.wrb210203.x86_64    need "server=on"

3. I would assume this warning should be fixed by Libvirt component. If not, feel free to switch to qemu component. Thank you.

Comment 1 Pei Zhang 2021-02-19 02:30:50 UTC
More info:
Seems official build doesn't hit this issue, only upstream build hit it.

qemu-kvm-5.2.0-7.module+el8.4.0+9943+d64b3717.x86_64               still "server"
qemu-kvm-5.2.0-7.scrmod+el8.4.0+10001+766c7930.wrb210217.x86_64    need "server=on"

Comment 2 Michal Privoznik 2021-02-19 10:50:36 UTC
Fixed upstream as:

2931839966 qemu: remove support for generating yes|no boolean options
0d981fcd97 qemu: use on|off instead of yes|no for -drive boolean properties
8851d87556 qemu: use on|off instead of yes|no for -object boolean properties
cff6236105 qemu: use on|off for -vnc boolean option values
a4f57fa37d qemu: probe for -vnc supporting use of QemuOpts syntax
67f8ccb4e2 qemu: use long on|off syntax for -spice boolean option values
43c9c0859f qemu: use long on|off syntax for -chardev boolean option values

v7.0.0-483-g2931839966

Comment 11 Luyao Huang 2021-06-03 08:50:42 UTC
Verify this bug with libvirt-daemon-7.4.0-1.module+el8.5.0+11218+83343022.x86_64:

1. prepare vhost-user server and client interface:

# ovs-vsctl show
9676e68f-3545-49b7-9da4-0ba940cfdaf1
    Bridge "ovsbr0"
        Port "ovsbr0"
            Interface "ovsbr0"
                type: internal
        Port "vhost-client-1"
            Interface "vhost-client-1"
                type: dpdkvhostuserclient
                options: {vhost-server-path="/var/lib/libvirt/qemu/vhost-client-1"}
        Port "vhost-user2"
            Interface "vhost-user2"
                type: dpdkvhostuser
        Port "vhost-user1"
            Interface "vhost-user1"
                type: dpdkvhostuser

2. define a guest which have vhost-user server and client VNIC:

# virsh dumpxml vm1
...
    <interface type='vhostuser'>
      <mac address='52:54:00:93:51:dd'/>
      <source type='unix' path='/var/run/openvswitch/vhost-user2' mode='client'/>
      <model type='virtio'/>
      <driver name='vhost' queues='4' rx_queue_size='1024' iommu='on' ats='on'/>
      <address type='pci' domain='0x0000' bus='0x03' slot='0x00' function='0x0'/>
    </interface>
    <interface type='vhostuser'>
      <mac address='52:54:00:70:c2:4b'/>
      <source type='unix' path='/var/lib/libvirt/qemu/vhost-client-1' mode='server'/>
      <model type='virtio'/>
      <driver name='vhost' queues='4' rx_queue_size='1024' iommu='on' ats='on'/>
      <address type='pci' domain='0x0000' bus='0x08' slot='0x00' function='0x0'/>
    </interface>
...


3. check qemu command line and find that libvirt use server=on instead of server:

# ps aux|grep qemu
...-chardev socket,id=charnet1,path=/var/run/openvswitch/vhost-user2 -netdev vhost-user,chardev=charnet1,queues=4,id=hostnet1 -device virtio-net-pci,mq=on,vectors=10,rx_queue_size=1024,netdev=hostnet1,id=net1,mac=52:54:00:93:51:dd,bus=pci.3,addr=0x0,iommu_platform=on,ats=on -chardev socket,id=charnet2,path=/var/lib/libvirt/qemu/vhost-client-1,server=on -netdev vhost-user,chardev=charnet2,queues=4,id=hostnet2 -device virtio-net-pci,mq=on,vectors=10,rx_queue_size=1024,netdev=hostnet2,id=net2,mac=52:54:00:70:c2:4b,bus=pci.8,addr=0x0,iommu_platform=on,ats=on

4. check guest logs, there is no warning like  "warning: short-form boolean option 'server' deprecated"

Comment 13 errata-xmlrpc 2021-11-16 07:51:32 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory (virt:av bug fix and enhancement update), and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://access.redhat.com/errata/RHBA-2021:4684


Note You need to log in before you can comment on or make changes to this bug.