Skip to content

[CloudStack 4.20.1.0]Extra lsilogic SCSI controller on aarch64 causes last disk unrecognized #12090

@gw769

Description

@gw769

problem

Environment

  • CloudStack Version: 4.20.1.0
  • CPU Architecture: aarch64
  • Hypervisor: KVM
  • UEFI Configuration (relevant for aarch64 VM boot, from /etc/cloudstack/agent/uefi.properties):
# CloudStack Agent UEFI Configuration for ARM64
# This file configures UEFI boot support for ARM64 virtual machines

# Secure boot mode with Microsoft keys
guest.nvram.template.secure=/usr/share/AAVMF/AAVMF_VARS.ms.fd
guest.loader.secure=/usr/share/AAVMF/AAVMF_CODE.ms.fd

# Secure boot mode without Microsoft keys
guest.nvram.template.secboot=/usr/share/AAVMF/AAVMF_VARS.fd
guest.loader.secboot=/usr/share/AAVMF/AAVMF_CODE.secboot.fd

# Standard UEFI mode (default)
guest.nvram.template.legacy=/usr/share/AAVMF/AAVMF_VARS.fd
guest.loader.legacy=/usr/share/AAVMF/AAVMF_CODE.fd

# No secure boot mode (explicitly disabled)
guest.nvram.template.nosecboot=/usr/share/AAVMF/AAVMF_VARS.fd
guest.loader.nosecboot=/usr/share/AAVMF/AAVMF_CODE.no-secboot.fd

# NVRAM storage path
guest.nvram.path=/var/lib/libvirt/qemu/nvram/

Problem Description

When attaching multiple disks to an aarch64 VM, CloudStack incorrectly adds an extra lsilogic SCSI controller after allocating virtio-scsi controllers for every 7 disks. This causes the last disk to be unrecognized after VM reboot.

Key Evidence: The second SCSI controller switches from virtio-scsi to lsilogic after reboot.

Reproduction Steps

  1. Deploy an aarch64 VM with 5 disks → all recognized correctly under virtio-scsi controller
  2. Hot-add a 6th disk while VM running → temporarily works, creates second virtio-scsi controller
  3. Shutdown and restart the VM → second controller becomes lsilogic, 6th disk disappears

Expected Behavior

All disks assigned to virtio-scsi controllers, no lsilogic controller added.

Actual Behavior (with Evidence)

After reboot - WRONG
<controller type='scsi' index='1' model='lsilogic'>
Should be:  <controller type='scsi' index='1' model='virtio-scsi'>

Related Code

PR #9823 (bug at the end of implementation)

Attachments

Step 1: Initial State (5 disks attached)
root@NODE159:/var/log/cloudstack/agent# virsh dumpxml i-2-971-VM  | grep controller
      <address type='drive' controller='0' bus='0' target='0' unit='0'/>
      <address type='drive' controller='0' bus='0' target='0' unit='1'/>
      <address type='drive' controller='0' bus='0' target='0' unit='2'/>
      <address type='drive' controller='0' bus='0' target='0' unit='4'/>
      <address type='drive' controller='0' bus='0' target='0' unit='5'/>
      <address type='drive' controller='0' bus='0' target='0' unit='6'/>
    <controller type='usb' index='0' model='qemu-xhci'>
    </controller>
    <controller type='scsi' index='0' model='virtio-scsi'>
    </controller>
    <controller type='pci' index='0' model='pcie-root'>
    </controller>
    <controller type='virtio-serial' index='0'>
    </controller>
    <controller type='pci' index='1' model='pcie-root-port'>
    </controller>
    <controller type='pci' index='2' model='pcie-root-port'>
    </controller>
    <controller type='pci' index='3' model='pcie-root-port'>
    </controller>
    <controller type='pci' index='4' model='pcie-root-port'>
    </controller>
    <controller type='pci' index='5' model='pcie-root-port'>
    </controller>
    <controller type='pci' index='6' model='pcie-root-port'>
    </controller>
    <controller type='pci' index='7' model='pcie-to-pci-bridge'>
    </controller>
    <controller type='pci' index='8' model='pcie-root-port'>
    </controller>
      <address type='virtio-serial' controller='0' bus='0' port='1'/>

Step 2: Hot-add 6th disk while VM running,witch device id is 7
root@NODE159:/var/log/cloudstack/agent# virsh dumpxml i-2-971-VM  | grep controller
      <address type='drive' controller='0' bus='0' target='0' unit='0'/>
      <address type='drive' controller='0' bus='0' target='0' unit='1'/>
      <address type='drive' controller='0' bus='0' target='0' unit='2'/>
      <address type='drive' controller='0' bus='0' target='0' unit='4'/>
      <address type='drive' controller='0' bus='0' target='0' unit='5'/>
      <address type='drive' controller='0' bus='0' target='0' unit='6'/>
      <address type='drive' controller='1' bus='0' target='0' unit='0'/>
    <controller type='usb' index='0' model='qemu-xhci'>
    </controller>
    <controller type='scsi' index='0' model='virtio-scsi'>
    </controller>
    <controller type='scsi' index='1' model='virtio-scsi'>
    </controller>
    <controller type='pci' index='0' model='pcie-root'>
    </controller>
    <controller type='virtio-serial' index='0'>
    </controller>
    <controller type='pci' index='1' model='pcie-root-port'>
    </controller>
    <controller type='pci' index='2' model='pcie-root-port'>
    </controller>
    <controller type='pci' index='3' model='pcie-root-port'>
    </controller>
    <controller type='pci' index='4' model='pcie-root-port'>
    </controller>
    <controller type='pci' index='5' model='pcie-root-port'>
    </controller>
    <controller type='pci' index='6' model='pcie-root-port'>
    </controller>
    <controller type='pci' index='7' model='pcie-to-pci-bridge'>
    </controller>
    <controller type='pci' index='8' model='pcie-root-port'>
    </controller>
      <address type='virtio-serial' controller='0' bus='0' port='1'/>
Step 3: Reboot VM
root@NODE159:/var/log/cloudstack/agent# virsh dumpxml i-2-971-VM  | grep controller
      <address type='drive' controller='0' bus='0' target='0' unit='0'/>
      <address type='drive' controller='0' bus='0' target='0' unit='1'/>
      <address type='drive' controller='0' bus='0' target='0' unit='2'/>
      <address type='drive' controller='0' bus='0' target='0' unit='4'/>
      <address type='drive' controller='0' bus='0' target='0' unit='5'/>
      <address type='drive' controller='0' bus='0' target='0' unit='6'/>
      <address type='drive' controller='1' bus='0' target='0' unit='0'/>
    <controller type='usb' index='0' model='qemu-xhci'>
    </controller>
    <controller type='scsi' index='0' model='virtio-scsi'>
    </controller>
    <controller type='pci' index='0' model='pcie-root'>
    </controller>
    <controller type='scsi' index='1' model='lsilogic'>    <!-- BUG: Should be virtio-scsi -->
    </controller>
    <controller type='virtio-serial' index='0'>
    </controller>
    <controller type='pci' index='1' model='pcie-root-port'>
    </controller>
    <controller type='pci' index='2' model='pcie-root-port'>
    </controller>
    <controller type='pci' index='3' model='pcie-root-port'>
    </controller>
    <controller type='pci' index='4' model='pcie-root-port'>
    </controller>
    <controller type='pci' index='5' model='pcie-root-port'>
    </controller>
    <controller type='pci' index='6' model='pcie-root-port'>
    </controller>
    <controller type='pci' index='7' model='pcie-to-pci-bridge'>
    </controller>
    <controller type='pci' index='8' model='pcie-root-port'>
    </controller>
      <address type='virtio-serial' controller='0' bus='0' port='1'/>
root@NODE159:/var/log/cloudstack/agent# 

versions

  • CloudStack Version: 4.20.1.0
  • CPU Architecture: aarch64
  • Hypervisor: KVM

The steps to reproduce the bug

1.Initial State 5 disks attached
2.Hot-add 6th disk while VM running
3.reboot VM
...

Image

What to do about it?

No response

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions