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

qemu crash on virtio_scsi_ctx_check: Assertion `blk_get_aio_context(d->conf.blk) == s->ctx' failed with repeatedly hotplug/unplug disk with IO doing

    • Major
    • sst_virtualization_storage
    • ssg_virtualization
    • QE ack
    • False
    • Hide

      None

      Show
      None
    • Red Hat Enterprise Linux
    • x86_64
    • Linux

      What were you trying to do that didn't work?
      repeatedly hotplug/unplug scsi disk result in qemu crash
      virtio_scsi_ctx_check: Assertion `blk_get_aio_context(d->conf.blk) == s->ctx' failed

      #0 0x00007f5a56f5170f raise (libc.so.6)
      #1 0x00007f5a56f3bb25 abort (libc.so.6)
      #2 0x00007f5a56f3b9f9 __assert_fail_base.cold.0 (libc.so.6)
      #3 0x00007f5a56f49cc6 __assert_fail (libc.so.6)
      #4 0x000055a9c366c339 virtio_scsi_handle_cmd_vq (qemu-kvm)
      #5 0x000055a9c366ce8e virtio_scsi_data_plane_handle_cmd (qemu->
      #6 0x000055a9c3912f22 aio_dispatch_handlers (qemu-kvm)
      #7 0x000055a9c3913bcf aio_poll (qemu-kvm)
      #8 0x000055a9c37060e6 iothread_run (qemu-kvm)
      #9 0x00007f5a572e42de start_thread (libpthread.so.0)
      #10 0x00007f5a57015e83 __clone (libc.so.6)

      Please provide the package NVR for which bug is seen:
      Red Hat Enterprise Linux release 8.2 (Ootpa)
      4.18.0-193.128.1.el8_2.x86_64
      qemu-kvm-2.12.0-99.module+el8.2.0+19800+e8ec3bd8.8.x86_64
      seabios-bin-1.11.1-4.module+el8.1.0+4066+0f1aadab.noarch
      edk2-ovmf-20190829git37eef91017ad-9.el8_2.3.noarch
      libvirt-4.5.0-42.1.module+el8.2.0+14235+7beeb3f6.x86_64
      virtio-win-prewhql-0.1-248.iso

      How reproducible:
      5%

      Steps to reproduce
      1.Boot VM
      
      /usr/libexec/qemu-kvm \
           -S  \
           -name 'avocado-vt-vm1'  \
           -sandbox on \
           -machine q35 \
           -device pcie-root-port,id=pcie-root-port-0,multifunction=on,bus=pcie.0,addr=0x1,chassis=1 \
           -device pcie-pci-bridge,id=pcie-pci-bridge-0,addr=0x0,bus=pcie-root-port-0  \
           -nodefaults \
           -device VGA,bus=pcie.0,addr=0x2 \
           -m 6144  \
           -smp 6,maxcpus=6,cores=3,threads=1,sockets=2  \
           -cpu 'Haswell-noTSX-IBRS',vme=on,ss=on,vmx=on,f16c=on,rdrand=on,hypervisor=on,arat=on,tsc-adjust=on,umip=on,md-clear=on,stibp=on,arch-capabilities=on,ssbd=on,xsaveopt=on,pdpe1gb=on,abm=on,ibpb=on,skip-l1dfl-vmentry=on,kvm_pv_unhalt=on \
       \
           -device pcie-root-port,id=pcie-root-port-1,port=0x1,addr=0x1.0x1,bus=pcie.0,chassis=2 \
           -device qemu-xhci,id=usb1,bus=pcie-root-port-1,addr=0x0 \
           -device usb-tablet,id=usb-tablet1,bus=usb1.0,port=1 \
           -object iothread,id=iothread0 \
           -object iothread,id=iothread1 \
           -device pcie-root-port,id=pcie-root-port-2,port=0x2,addr=0x1.0x2,bus=pcie.0,chassis=3 \
           -device virtio-scsi-pci,id=virtio_scsi_pci0,bus=pcie-root-port-2,addr=0x0,iothread=iothread0 \
           -drive id=drive_image1,if=none,snapshot=off,readonly=off,aio=threads,cache=none,format=qcow2,file=/home/kvm_autotest_root/images/rhel940-64-virtio-scsi.qcow2 \
           -device scsi-hd,id=image1,drive=drive_image1 \
           -device pcie-root-port,id=pcie-root-port-3,port=0x3,addr=0x1.0x3,bus=pcie.0,chassis=4 \
           -device virtio-net-pci,mac=9a:26:ed:ca:72:32,id=id1txQVn,netdev=id4DObfw,bus=pcie-root-port-3,addr=0x0 \
           -netdev tap,id=id4DObfw,vhost=on,vhostfd=18,fd=15  \
           -vnc :0  \
           -rtc base=utc,clock=host,driftfix=slew  \
           -boot menu=off,order=cdn,once=c,strict=off \
           -enable-kvm \
           -device pcie-root-port,id=pcie_extra_root_port_0,multifunction=on,bus=pcie.0,addr=0x3,chassis=5
      
      2.hotplug disk
      drive_add auto id=drive_stg0,if=none,snapshot=off,readonly=off,aio=threads,cache=none,format=qcow2,file=/home/kvm_autotest_root/images/storage0.qcow2
      {"execute": "device_add", "arguments": {"driver": "scsi-hd", "id": "stg0", "drive": "drive_stg0", "bus": "virtio_scsi_pci0.0"}, "id": "qNtzV8oW"}
      
      3.format the new disk
      dd if=/dev/zero of=/dev/sdb bs=1M count=64 oflag=direct && sleep 1; partprobe /dev/sdb
      parted -s "/dev/sdb" mklabel msdos
      parted -s "/dev/sdb" mkpart primary 0M 15360.0M
      partprobe /dev/sdb
      yes|mkfs.ext4 -F '/dev/sdb1'
      rm -rf /mnt/sdb1; mkdir /mnt/sdb1
      mount -t ext4 /dev/sdb1 /mnt/sdb1
      
      4.execute io on disk
      /home/iozone_inst/src/current/iozone -az -g 10G -y 32k -i 0 -i 1 -I -f /mnt/sdb1/iozone_test
      
      5.unplug disk
      {"execute": "device_del", "arguments": {"id": "stg0"}, "id": "jBVHXCyW"}
      
      6. umount disk
      mount|grep sdb ; umount /mnt/sdb1 && sleep 3 
      
      7. repeat step2-6 60 times
      
      Expected results
      login guest succeed after above steps
      
      Actual results
      qemu crash
        
      (not hit crash issue on rhel8.4 /8.6/8.8)

            virt-maint virt-maint
            qingwangrh qing wang
            virt-maint virt-maint
            qing wang qing wang
            Votes:
            0 Vote for this issue
            Watchers:
            11 Start watching this issue

              Created:
              Updated:
              Resolved: