Uploaded image for project: 'RHEL'
  1. RHEL
  2. RHEL-50769

scsi-block: Cannot setup Windows Failover Cluster, qemu crashes on assert[RHEL-10.beta]

    • Icon: Bug Bug
    • Resolution: Unresolved
    • Icon: Undefined Undefined
    • None
    • rhel-10.0.beta
    • qemu-kvm / Storage
    • None
    • None
    • Important
    • sst_virtualization_storage
    • ssg_virtualization
    • 5
    • False
    • Hide

      None

      Show
      None
    • None
    • OpenShift Virtualization, Red Hat Enterprise Linux
    • None
    • None
    • None
    • x86_64
    • None

      What were you trying to do that didn't work?

      Same issue find on

      Red Hat Enterprise Linux release 10.0 Beta (Coughlan)
      6.10.0-15.el10.x86_64
      qemu-kvm-9.0.0-4.el10.x86_64
      seabios-bin-1.16.3-4.el10.noarch
      edk2-ovmf-20240524-1.el10.noarch
      libvirt-10.5.0-1.el10.x86_64

       

      Potentially not limited to, but the scenario is:

      • In OpenShift Virtualization 4.16 (RHEL 9.4 based), set 2 Windows 2019 Virtual Machines.
      • Present a shared LUN from SAN to each, with reservation turned on
      $ oc get vm windows-2019 -o yaml  | yq '.spec.template.spec.domain.devices.disks'
      [
      ...
        {
          "lun": {
            "bus": "scsi",
            "reservation": true
          },
          "name": "iscsi-pv"
        }
      ]
      

       

      For this, kubevirt generates the following XML

       

      $ oc rsh virt-launcher-windows-2019-hd4h2 virsh dumpxml 1 --xpath //domain//devices//disk
      ...
      <disk type="block" device="lun">
        <driver name="qemu" type="raw" cache="none" error_policy="stop" io="native" discard="unmap"/>
        <source dev="/dev/iscsi-pv" index="1">
          <reservations managed="no">
            <source type="unix" path="/var/run/kubevirt/daemons/pr/pr-helper.sock" mode="client"/>
          </reservations>
        </source>
        <backingStore/>
        <target dev="sdb" bus="scsi"/>
        <alias name="ua-iscsi-pv"/>
        <address type="drive" controller="0" bus="0" target="0" unit="1"/>
      </disk>
      

       

      Once both VMs are up using this shared LUN, create a Failover Cluster and try to run the Validation Test (make sure the disk is offline on the cluster otherwise it won't try to failover the disk).

      When it tries to failover the disk, one of the VMs will crash.

      341257 04:55:28.245249 write(2<pipe:[3066370]>, "qemu-kvm: ../hw/scsi/scsi-disk.c:558: void scsi_write_data(SCSIRequest *): Assertion `r->req.aiocb == NULL' failed.\n", 116) = 116 <0.000005>

      Another simpler way to reproduce this:

      1. setup the cluster in the first VM, bring the disk online
      2. on the second VM, try to bring the disk online (without any cluster setup)

      Please provide the package NVR for which bug is seen:

      qemu-kvm-core-8.2.0-11.el9_4.3.x86_64

      How reproducible:

      Always

      Expected results

      VM is up, disk can failover and test passes

      Actual results

      VMs are crashing, cannot use cluster or failover disk

            kwolf@redhat.com Kevin Wolf
            qingwangrh qing wang
            virt-maint virt-maint
            qing wang qing wang
            Votes:
            0 Vote for this issue
            Watchers:
            6 Start watching this issue

              Created:
              Updated: