-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Open
Description
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
- Deploy an aarch64 VM with 5 disks → all recognized correctly under
virtio-scsicontroller - Hot-add a 6th disk while VM running → temporarily works, creates second
virtio-scsicontroller - 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
...
What to do about it?
No response