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

qemu hit io error and crash scsi-disk.c:554: scsi_write_data: Assertion `r->req.aiocb == NULL' failed

Linking RHIVOS CVEs to...Migration: Automation ...SWIFT: POC ConversionSync from "Extern...XMLWordPrintable

    • None
    • Critical
    • 1
    • rhel-virt-storage
    • None
    • False
    • False
    • Hide

      None

      Show
      None
    • None
    • Planning backlog
    • None
    • None
    • Unspecified
    • Unspecified
    • Unspecified
    • None

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

      Passthrough the host multipath as scsi-block device.

      Execute  MSFC test (Failover cluster validation) in Windows guest.

      One of the guest  hit io error

      {"timestamp": \{"seconds": 1760164140, "microseconds": 741253}

      , "event": "BLOCK_IO_ERROR", "data": {"device": "", "nospace": false, "node-name": "host_disk", "reason": "Invalid argument", "operation": "write", "action": "stop"}}

      The guest crashed after resuming the VM

      qemu-kvm: ../hw/scsi/scsi-disk.c:554: scsi_write_data: Assertion `r->req.aiocb == NULL' failed.

       

                  Stack trace of thread 68461:
                      #0  0x00007f905cc2f52f raise (libc.so.6)
                      #1  0x00007f905cc02e65 abort (libc.so.6)
                      #2  0x00007f905cc02d39 __assert_fail_base.cold.0 (libc.so.6)
                      #3  0x00007f905cc27e86 __assert_fail (libc.so.6)
                      #4  0x000055e65c392b41 scsi_write_data (qemu-kvm)
                      #5  0x000055e65c38f86d scsi_dma_restart_bh (qemu-kvm)
                      #6  0x000055e65c64a1c8 aio_bh_call (qemu-kvm)
                      #7  0x000055e65c64a29e aio_bh_poll (qemu-kvm)
                      #8  0x000055e65c638102 aio_dispatch (qemu-kvm)
                      #9  0x000055e65c64a0f2 aio_ctx_dispatch (qemu-kvm)
                      #10 0x00007f905dcdfaed g_main_context_dispatch (libglib-2.0.so.0)
                      #11 0x000055e65c654720 glib_pollfds_poll (qemu-kvm)
                      #12 0x000055e65c44d1d9 qemu_main_loop (qemu-kvm)
                      #13 0x000055e65c280ec2 main (qemu-kvm)
                      #14 0x00007f905cc1b7e5 __libc_start_main (libc.so.6)

      What is the impact of this issue to you?

      Please provide the package NVR for which the bug is seen:

      4.18.0-553.el8_10.x86_64

      device-mapper-1.02.181-14.el8.x86_64
      device-mapper-multipath-0.8.4-41.el8.x86_64
      qemu-kvm-6.2.0-53.module+el8.10.0+23081+c18b1ee3.4.x86_64
      seabios-bin-1.16.0-4.module+el8.9.0+19570+14a90618.noarch

      How reproducible is this bug?:

      100%

      Steps to reproduce

      1. Boot VMs on two hosts with the pass-through multipath
      
      /usr/libexec/qemu-kvm \
       -name node1 \
       -machine q35 \
       -nodefaults \
       -device VGA,bus=pcie.0,addr=0x1 \
       -device pvpanic,ioport=0x505,id=idZcGD6F \
       -device pcie-root-port,id=pcie-root-port-2,slot=2,chassis=2,addr=0x2,bus=pcie.0 \
       -device qemu-xhci,id=usb1,bus=pcie-root-port-2,addr=0x0 \
       -device pcie-root-port,id=pcie-root-port-3,slot=3,chassis=3,addr=0x3,bus=pcie.0 \
       -device pcie-root-port,id=pcie-root-port-4,slot=4,chassis=4,addr=0x4,bus=pcie.0 \
       -device pcie-root-port,id=pcie-root-port-5,slot=5,chassis=5,addr=0x5,bus=pcie.0 \
       -device pcie-root-port,id=pcie-root-port-6,slot=6,chassis=6,addr=0x6,bus=pcie.0 \
       -device virtio-scsi-pci,id=scsi0,bus=pcie-root-port-3,addr=0x0 \
       -device virtio-scsi-pci,id=scsi1,bus=pcie-root-port-4,addr=0x0,max_sectors=512 \
       -object pr-manager-helper,id=helper0,path=/var/run/qemu-pr-helper.sock \
       -blockdev driver=file,node-name=file_disk,cache.direct=off,cache.no-flush=on,filename=/home/msfo/ms-node1.qcow2 \
       -blockdev driver=qcow2,node-name=protocol_disk,file=file_disk \
       -device scsi-hd,drive=protocol_disk,bus=scsi0.0,serial=node1,id=os_disk,bootindex=1 \
       -blockdev driver=host_device,filename=/dev/mapper/mpathb,cache.direct=on,node-name=drive_disk,pr-manager=helper0 \
       -blockdev driver=raw,node-name=host_disk,file=drive_disk \
       -device scsi-block,bus=scsi1.0,drive=host_disk,id=scsi0-0-0-0,bootindex=2,werror=stop,rerror=stop \
       -device virtio-net-pci,mac=9a:95:96:97:98:91,id=idKSMZST,netdev=idWCSiU5,bus=pcie-root-port-6,addr=0x0 \
       -netdev tap,id=idWCSiU5,script=/etc/qemu-ifup,vhost=on \
       -m 12G \
       -cpu host,vmx,+kvm_pv_unhalt \
       -smp 8,maxcpus=8,cores=4,threads=1,sockets=2 \
       -device usb-tablet,id=usb-tablet1,bus=usb1.0,port=1 \
       -vnc :7 \
       -rtc base=localtime,clock=host,driftfix=slew \
       -boot order=cdn,once=c,menu=off,strict=off \
       -enable-kvm \
       -monitor stdio \
       -chardev socket,id=socket-serial,path=/var/tmp/socket-serial,logfile=/var/tmp/file-serial.log,mux=on,server=on,wait=off \
       -serial chardev:socket-serial \
       -chardev file,path=/var/tmp/file-bios.log,id=file-bios \
       -device isa-debugcon,chardev=file-bios,iobase=0x402 \
       -chardev socket,id=socket-qmp,path=/var/tmp/socket-qmp,logfile=/var/tmp/file-qmp.log,mux=on,server=on,wait=off \
       -mon chardev=socket-qmp,mode=control \
       -chardev socket,id=socket-hmp,path=/var/tmp/socket-hmp,logfile=/var/tmp/file-hmp.log,mux=on,server=on,wait=off \
       -mon chardev=socket-hmp,mode=readline
      
      

      2. Execute WSFC test

       

      Expected results

      The test may pass

      Actual results

      One VM gets paused due to io-error

      It crashed after resuming the VM

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

                Created:
                Updated: