← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1524301] [NEW] image_meta scsi model ignored

 

Public bug reported:

Hi,
We use virtio-scsi by adding into our glance image properties hw_scsi_model=virtio-scsi and hw_disk_bus=scsi

It works well most of the times, but when the instance got more than six
disks attached, additional disk doesn't have virtio-scsi enabled.

I have dig into the issue, nova seems generated a correct xml with "one" virtio-scsi and attached disks to it but libvirt transforms the xml. It adds another scsi controller (that use 53c895a driver instead of virtio-scsi) and attach some disks to
this controllers.

Extract of the bugged libvirt xml built by libvirt:

<controller type='scsi' index='0' model='virtio-scsi'>
  <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
</controller>
<controller type='scsi' index='1'>
  <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
</controller>

Inside the vm, with lspci I see these controllers:

00:04.0 SCSI storage controller: Red Hat, Inc Virtio SCSI
00:05.0 SCSI storage controller: LSI Logic / Symbios Logic 53c895a

Some disks are attached to pci-00:04.0 and some other to pci-00:05.0 .

Our current workaround is:

 --- nova/virt/libvirt/driver.py.orig    2015-12-09 12:18:49.016279849 +0100
 +++ nova/virt/libvirt/driver.py 2015-12-09 12:19:47.042987865 +0100
 @@ -3247,10 +3269,12 @@
          if (image_meta and
                  image_meta.get('properties', {}).get('hw_scsi_model')):
              hw_scsi_model = image_meta['properties']['hw_scsi_model']
 -            scsi_controller = vconfig.LibvirtConfigGuestController()
 -            scsi_controller.type = 'scsi'
 -            scsi_controller.model = hw_scsi_model
 -            devices.append(scsi_controller)
 +            for i in range(0, 3):
 +                scsi_controller = vconfig.LibvirtConfigGuestController()
 +                scsi_controller.type = 'scsi'
 +                scsi_controller.index = i
 +                scsi_controller.model = hw_scsi_model
 +                devices.append(scsi_controller)

Cheers,

** Affects: nova
     Importance: Undecided
         Status: New

** Description changed:

  Hi,
  We use virtio-scsi by adding into our glance image properties hw_scsi_model=virtio-scsi and hw_disk_bus=scsi
  
  It works well most of the times, but when the instance got more than six
  disks attached, additional disk doesn't have virtio-scsi enabled.
  
- I have dig into the issue, nova seems generated a correct xml with "one" virtio-scsi and attached disks to it but libvirt transforms the xml. It adds another scsi controller (that use 53c895a driver instead of virtio-scsi) and attach some disks to 
+ I have dig into the issue, nova seems generated a correct xml with "one" virtio-scsi and attached disks to it but libvirt transforms the xml. It adds another scsi controller (that use 53c895a driver instead of virtio-scsi) and attach some disks to
  this controllers.
  
  Extract of the bugged libvirt xml built by libvirt:
  
  <controller type='scsi' index='0' model='virtio-scsi'>
-   <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
+   <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
  </controller>
  <controller type='scsi' index='1'>
-   <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
+   <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
  </controller>
  
  Inside the vm, with lspci I see these controllers:
  
- 00:04.0 SCSI storage controller: Red Hat, Inc Virtio SCSI 
+ 00:04.0 SCSI storage controller: Red Hat, Inc Virtio SCSI
  00:05.0 SCSI storage controller: LSI Logic / Symbios Logic 53c895a
  
  Some disks are attached to pci-00:04.0 and some other to pci-00:05.0 .
  
  Our current workaround is:
  
- --- nova/virt/libvirt/driver.py.orig    2015-12-09 12:18:49.016279849 +0100
- +++ nova/virt/libvirt/driver.py 2015-12-09 12:19:47.042987865 +0100
- @@ -3247,10 +3269,12 @@
-          if (image_meta and
-                  image_meta.get('properties', {}).get('hw_scsi_model')):
-              hw_scsi_model = image_meta['properties']['hw_scsi_model']
- -            scsi_controller = vconfig.LibvirtConfigGuestController()
- -            scsi_controller.type = 'scsi'
- -            scsi_controller.model = hw_scsi_model
- -            devices.append(scsi_controller)
- +            for i in range(0, 3):
- +                scsi_controller = vconfig.LibvirtConfigGuestController()
- +                scsi_controller.type = 'scsi'
- +                scsi_controller.index = i
- +                scsi_controller.model = hw_scsi_model
- +                devices.append(scsi_controller)
- 
+  --- nova/virt/libvirt/driver.py.orig    2015-12-09 12:18:49.016279849 +0100
+  +++ nova/virt/libvirt/driver.py 2015-12-09 12:19:47.042987865 +0100
+  @@ -3247,10 +3269,12 @@
+           if (image_meta and
+                   image_meta.get('properties', {}).get('hw_scsi_model')):
+               hw_scsi_model = image_meta['properties']['hw_scsi_model']
+  -            scsi_controller = vconfig.LibvirtConfigGuestController()
+  -            scsi_controller.type = 'scsi'
+  -            scsi_controller.model = hw_scsi_model
+  -            devices.append(scsi_controller)
+  +            for i in range(0, 3):
+  +                scsi_controller = vconfig.LibvirtConfigGuestController()
+  +                scsi_controller.type = 'scsi'
+  +                scsi_controller.index = i
+  +                scsi_controller.model = hw_scsi_model
+  +                devices.append(scsi_controller)
  
  Cheers,

-- 
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to OpenStack Compute (nova).
https://bugs.launchpad.net/bugs/1524301

Title:
  image_meta scsi model ignored

Status in OpenStack Compute (nova):
  New

Bug description:
  Hi,
  We use virtio-scsi by adding into our glance image properties hw_scsi_model=virtio-scsi and hw_disk_bus=scsi

  It works well most of the times, but when the instance got more than
  six disks attached, additional disk doesn't have virtio-scsi enabled.

  I have dig into the issue, nova seems generated a correct xml with "one" virtio-scsi and attached disks to it but libvirt transforms the xml. It adds another scsi controller (that use 53c895a driver instead of virtio-scsi) and attach some disks to
  this controllers.

  Extract of the bugged libvirt xml built by libvirt:

  <controller type='scsi' index='0' model='virtio-scsi'>
    <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
  </controller>
  <controller type='scsi' index='1'>
    <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
  </controller>

  Inside the vm, with lspci I see these controllers:

  00:04.0 SCSI storage controller: Red Hat, Inc Virtio SCSI
  00:05.0 SCSI storage controller: LSI Logic / Symbios Logic 53c895a

  Some disks are attached to pci-00:04.0 and some other to pci-00:05.0 .

  Our current workaround is:

   --- nova/virt/libvirt/driver.py.orig    2015-12-09 12:18:49.016279849 +0100
   +++ nova/virt/libvirt/driver.py 2015-12-09 12:19:47.042987865 +0100
   @@ -3247,10 +3269,12 @@
            if (image_meta and
                    image_meta.get('properties', {}).get('hw_scsi_model')):
                hw_scsi_model = image_meta['properties']['hw_scsi_model']
   -            scsi_controller = vconfig.LibvirtConfigGuestController()
   -            scsi_controller.type = 'scsi'
   -            scsi_controller.model = hw_scsi_model
   -            devices.append(scsi_controller)
   +            for i in range(0, 3):
   +                scsi_controller = vconfig.LibvirtConfigGuestController()
   +                scsi_controller.type = 'scsi'
   +                scsi_controller.index = i
   +                scsi_controller.model = hw_scsi_model
   +                devices.append(scsi_controller)

  Cheers,

To manage notifications about this bug go to:
https://bugs.launchpad.net/nova/+bug/1524301/+subscriptions


Follow ups