Bug 621933

Summary: KVM is not reporting missing support for SCSI
Product: Red Hat Enterprise Linux 6 Reporter: Alexander Todorov <atodorov>
Component: qemu-kvmAssignee: Markus Armbruster <armbru>
Status: CLOSED WONTFIX QA Contact: Virtualization Bugs <virt-bugs>
Severity: medium Docs Contact:
Priority: low    
Version: 6.0CC: berrange, eblake, gozen, mishu, mkenneth, rfreire, rmitchel, sneuner, tburke, virt-maint, weizhan, xen-maint
Target Milestone: beta   
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
: 727766 (view as bug list) Environment:
Last Closed: 2010-11-18 14:01:46 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---
Bug Depends On:    
Bug Blocks: 580953, 727766    

Description Alexander Todorov 2010-08-06 14:29:20 UTC
Description of problem:

I get the below traceback when trying to create a new guest with 3 disk images.

Traceback (most recent call last):
  File "/usr/share/virt-manager/virtManager/create.py", line 1561, in do_install
    dom = guest.start_install(False, meter = meter)
  File "/usr/lib/python2.6/site-packages/virtinst/Guest.py", line 973, in start_install
    return self._do_install(consolecb, meter, removeOld, wait)
  File "/usr/lib/python2.6/site-packages/virtinst/Guest.py", line 1038, in _do_install
    "install")
  File "/usr/lib/python2.6/site-packages/virtinst/Guest.py", line 1009, in _create_guest
    dom = self.conn.createLinux(start_xml, 0)
  File "/usr/lib64/python2.6/site-packages/libvirt.py", line 1270, in createLinux
    if ret is None:raise libvirtError('virDomainCreateLinux() failed', conn=self)
libvirtError: internal error Process exited while reading console log output: char device redirected to /dev/pts/1
qemu-kvm: -device lsi,id=scsi0,bus=pci.0,addr=0x5: Parameter 'driver' expects a driver name
Try with argument '?' for a list.

Version-Release number of selected component (if applicable):
libvirt-0.8.1-20.el6.x86_64
kernel-2.6.32-54.el6.x86_64
virt-manager-0.8.4-7.el6.noarch
qemu-kvm-0.12.1.2-2.104.el6.x86_64

RHEL6 snap #0 (0805.0)

How reproducible:
Always

Steps to Reproduce:
1. Using virt-manager create a new guest and assign standard 8GB virtio disk
2. Select to customize the guest before install
3. Add additional storage: 1st - 10GB image as IDE disk, 2nd 1GB image as SCSI disk
  
Actual results:
The above traceback. Guest not created.

Expected results:
Guests starts installing.

Additional info:
libvirt error message from /var/log/messages is pretty much the same as in the traceback:

libvirtd: 10:21:34.402: error : qemudReadLogOutput:2313 : internal error Process exited while reading console log output: char device redirected to /dev/pts/1#012qemu-kvm: -device lsi,id=scsi0,bus=pci.0,addr=0x5: Parameter 'driver' expects a driver name#012Try with argument '?' for a list.#012

Comment 1 Daniel Berrange 2010-08-06 14:47:48 UTC
This is a QEMU bug. It appears latest builds have removed support for SCSI, but the way this is reported when launching a guest with SCSI is horribly misleading making it look like a syntax error in the command line.

# qemu-system-x86_64: -device lsi,id=scsi0,bus=pci.0,addr=0x5: Parameter 'driver' expects a driver name

Should say something along the lines of

# qemu-system-x86_64: -device lsi,id=scsi0,bus=pci.0,addr=0x5: No support for driver name 'lsi'

Comment 2 Daniel Berrange 2010-08-09 02:03:17 UTC
*** Bug 622340 has been marked as a duplicate of this bug. ***

Comment 3 Daniel Berrange 2010-08-11 13:48:38 UTC
*** Bug 623079 has been marked as a duplicate of this bug. ***

Comment 4 Rodrigo A B Freire 2010-11-03 14:19:33 UTC
*** Bug 649305 has been marked as a duplicate of this bug. ***

Comment 5 Markus Armbruster 2010-11-17 14:37:57 UTC
I think we have two separate bugs here.

One is that QEMU's error message is too unspecific.  That's indeed a qemu-kvm bug.

The other is that libvirt doesn't handle the "driver not available" error, and throws an internal error instead (traceback and all).

If libvirt discovered available drivers, not checking for a "driver unavailable" error could be excused, because then the error *is* an internal error.  But since it doesn't discover them, I think it should check for and handle "driver unavailable".

Libvirt not discovering available drivers is a conscious decision. Feature discovery it is rather brittle with current QEMU, because QEMU still lacks sensible discovery interfaces.  Therefore, discovery should be used as sparingly as practical.