Bug 1829550 - Stop using deprecated 'scsi=' parameter for virtio-blk-pci
Summary: Stop using deprecated 'scsi=' parameter for virtio-blk-pci
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Red Hat Enterprise Linux Advanced Virtualization
Classification: Red Hat
Component: libvirt
Version: 8.2
Hardware: Unspecified
OS: Unspecified
high
medium
Target Milestone: rc
: 8.3
Assignee: Peter Krempa
QA Contact: gaojianan
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2020-04-29 18:38 UTC by Peter Krempa
Modified: 2020-11-19 09:23 UTC (History)
8 users (show)

Fixed In Version: libvirt-6.4.0-1.el8
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed: 2020-11-17 17:48:27 UTC
Type: Bug
Target Upstream Version:
Embargoed:


Attachments (Terms of Use)

Description Peter Krempa 2020-04-29 18:38:23 UTC
Description of problem:
-device virtio-blk,scsi=on|off is deprecated since qemu-5.0. Libvirt uses it even with the most recent qemu:

tests/qemuxml2argvdata/disk-network-nbd.x86_64-latest.args:-device virtio-blk-pci,scsi=off,bus=pci.0,addr=0x2,drive=libvirt-5-format,\
tests/qemuxml2argvdata/disk-network-nbd.x86_64-latest.args:-device virtio-blk-pci,scsi=off,bus=pci.0,addr=0x3,drive=libvirt-4-format,\
tests/qemuxml2argvdata/disk-network-nbd.x86_64-latest.args:-device virtio-blk-pci,scsi=off,bus=pci.0,addr=0x4,drive=libvirt-3-format,\
tests/qemuxml2argvdata/disk-network-nbd.x86_64-latest.args:-device virtio-blk-pci,scsi=off,bus=pci.0,addr=0x5,drive=libvirt-2-format,\
tests/qemuxml2argvdata/disk-network-nbd.x86_64-latest.args:-device virtio-blk-pci,scsi=off,bus=pci.0,addr=0x6,drive=libvirt-1-format,\


Version-Release number of selected component (if applicable):
libvirt-6.3.0

Comment 1 Han Han 2020-05-06 02:44:35 UTC
Also the scsi=on:
tests/qemuxml2argvdata/virtio-lun.args
31:-device virtio-blk-pci,scsi=on,bus=pci.0,addr=0x4,drive=drive-virtio-disk0,\
34:-device virtio-blk-pci,scsi=on,bus=pci.0,addr=0x5,drive=drive-virtio-disk1,\

These only exist in virtio bus with lun type, but it cannot work after virtio1.0:
https://bugzilla.redhat.com/show_bug.cgi?id=1365823

scsi=off can be removed directly since the default value is off.
For scsi=on, we can pop up a unsupported error from libvirt.

Comment 2 Peter Krempa 2020-05-06 15:06:39 UTC
'scsi=off' can't be removed always as in older tha qemu-2.5 the default was 'on'. Fortunately the default value is queryable.

Comment 3 Peter Krempa 2020-05-12 09:40:49 UTC
Fixed upstream:

ec69f0190b qemu: command: Stop formatting of 'scsi=off' for virtio-blk-pci
3b7ca6d419 qemu: capabilities: Introduce QEMU_CAPS_VIRTIO_BLK_SCSI_DEFAULT_DISABLED
4b8ad7fc01 virQEMUCapsProbeQMPDeviceProperties: Add per-property callbacks
6de5cac7f0 qemuMonitorGetDeviceProps: Return data in a hash table
0b52b023fc qemuMonitorJSONGetDeviceProps: Refactor to modern standards
d3035e133e virQEMUCapsProbeQMPObjectTypes: Fold in virQEMUCapsProbeQMPGenericProps
be9771a1d2 virQEMUCapsProbeQMPDeviceProperties: Switch to local implementation
568200eb94 virQEMUCapsProbeQMPDevices: Split up into logical chunks

v6.3.0-65-gec69f0190b

Comment 6 gaojianan 2020-06-05 03:28:48 UTC
Verified in :
qemu-kvm-5.0.0-0.module+el8.3.0+6620+5d5e1420.x86_64
libvirt-6.4.0-1.module+el8.3.0+6881+88468c00.x86_64

Step:
Scenario 1:positive test
1.Prepare a guest and different disk type xml(except disk device=lun):
...
    <disk type='block' device='disk'>
      <driver name='qemu' type='raw'/>
      <source dev='/dev/sdb'/>
      <target dev='vdb' bus='virtio'/>
      <address type='pci' domain='0x0000' bus='0x06' slot='0x00' function='0x0'/>
    </disk>
    <disk type='network' device='disk'>
      <driver name='qemu' type='raw'/>
      <source protocol='iscsi' name='iqn.2020-06.com.virttest:volumetest.target/0'>
        <host name='127.0.0.1' port='3260'/>
      </source>
      <target dev='vdc' bus='virtio'/>
      <address type='pci' domain='0x0000' bus='0x09' slot='0x00' function='0x0'/>
    </disk>
...


2.Start the guest and check qemu cmd:
-blockdev {"driver":"host_device","filename":"/dev/sdb","node-name":"libvirt-2-storage","auto-read-only":true,"discard":"unmap"} -blockdev {"node-name":"libvirt-2-format","read-only":false,"driver":"raw","file":"libvirt-2-storage"} -device virtio-blk-pci,bus=pci.6,addr=0x0,drive=libvirt-2-format,id=virtio-disk1 -blockdev {"driver":"iscsi","portal":"127.0.0.1:3260","target":"iqn.2020-06.com.virttest:volumetest.target","lun":0,"transport":"tcp","node-name":"libvirt-1-storage","auto-read-only":true,"discard":"unmap"} -blockdev {"node-name":"libvirt-1-format","read-only":false,"driver":"raw","file":"libvirt-1-storage"} -device virtio-blk-pci,bus=pci.9,addr=0x0,drive=libvirt-1-format,id=virtio-disk2

Scsi=off of virtio-blk-pci has been deleted and guest works well


Scenario 2:nagetive test
1.Edit disk xml with device=lun and type=block
...
    <disk type='block' device='lun'>
      <driver name='qemu' type='raw'/>
      <source dev='/dev/sdb'/>
      <target dev='vdb' bus='virtio'/>
      <address type='pci' domain='0x0000' bus='0x06' slot='0x00' function='0x0'/>
    </disk>
...

2.Try to start the doamin and it should fail as https://bugzilla.redhat.com/show_bug.cgi?id=1365823:
# virsh start test1 
error: Failed to start domain test1
error: internal error: process exited while connecting to monitor: 2020-06-05T03:27:53.290044Z qemu-kvm: -device virtio-blk-pci,scsi=on,bus=pci.6,addr=0x0,drive=libvirt-2-format,id=virtio-disk1: Please set scsi=off for virtio-blk devices in order to use virtio 1.0

Work as expected , so verified

Comment 9 errata-xmlrpc 2020-11-17 17:48:27 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:8.3 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-2020:5137


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