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

The VM hit io error when do S3-PR integration on the pass-through failover multipath device

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

    • None
    • Important
    • rhel-virt-storage
    • None
    • False
    • False
    • Hide

      None

      Show
      None
    • None
    • None
    • None
    • None
    • Unspecified
    • Unspecified
    • Unspecified
    • None

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

      Pass through the multipath device as scsi-block disk of the guest

      Keep switching the active path on the host to simulate the failover scenario.

      Execute the S3-PR relevant command in the guest multiple times

      Each round includes register/reserve/release/unregister key 

      What is the impact of this issue to you?

      It results in the VM being paused status

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

      Red Hat Enterprise Linux release 9.4 (Plow)
      5.14.0-427.77.1.el9_4.x86_64
      device-mapper-1.02.197-2.el9.x86_64
      device-mapper-multipath-0.8.7-27.el9_4.3.x86_64
      qemu-kvm-8.2.0-11.el9_4.14.x86_64
      seabios-bin-1.16.3-2.el9_4.1.noarch
      edk2-ovmf-20231122-6.el9_4.9.noarch
      libvirt-10.0.0-6.17.el9_4.x86_64

      How reproducible is this bug?:

      100%

      Steps to reproduce

       

      multipath.conf

      defaults

      {  user_friendly_names yes  find_multipaths yes  enable_foreign "^$"  reservation_key file  #detect_pgpolicy no }

      overrides

      {         path_grouping_policy failover }

       

       1. Boot vm with the passthrough multipath device
      /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/kvm_autotest_root/images/rhel960-64-virtio-scsi.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/mpathd,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. Run the switch script on the host side
      ./multipath-switch.sh -c2 -m mpathd -i2 -a
      
      
       3. Run S3-PR integration test on the disk in the guest
      
      ./wloop.sh 1 10000 1 0 "./pr_test.sh -c9 -d /dev/sdb -i2 -l logs/xdell1-pr.log";
      
      
      pected results

      Expected results

      VM keeps running 

      The guest test script run succeeded

      Actual results

      VM paused due to io error
      , "event": "BLOCK_IO_ERROR", "data": {"device": "", "nospace": false, "node-name": "host_disk", "reason": "Resource temporarily unavailable", "operation": "read", "action": "stop"}}

        1. wloop.sh
          0.7 kB
        2. pr_test.sh
          7 kB
        3. multipath-switch.sh
          11 kB
        4. clog.sh
          0.6 kB

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

                Created:
                Updated: