RHEL Engineering is moving the tracking of its product development work on RHEL 6 through RHEL 9 to Red Hat Jira (issues.redhat.com). If you're a Red Hat customer, please continue to file support cases via the Red Hat customer portal. If you're not, please head to the "RHEL project" in Red Hat Jira and file new tickets here. Individual Bugzilla bugs in the statuses "NEW", "ASSIGNED", and "POST" are being migrated throughout September 2023. Bugs of Red Hat partners with an assigned Engineering Partner Manager (EPM) are migrated in late September as per pre-agreed dates. Bugs against components "kernel", "kernel-rt", and "kpatch" are only migrated if still in "NEW" or "ASSIGNED". If you cannot log in to RH Jira, please consult article #7032570. That failing, please send an e-mail to the RH Jira admins at rh-issues@redhat.com to troubleshoot your issue as a user management inquiry. The email creates a ServiceNow ticket with Red Hat. Individual Bugzilla bugs that are migrated will be moved to status "CLOSED", resolution "MIGRATED", and set with "MigratedToJIRA" in "Keywords". The link to the successor Jira issue will be found under "Links", have a little "two-footprint" icon next to it, and direct you to the "RHEL project" in Red Hat Jira (issue links are of type "https://issues.redhat.com/browse/RHEL-XXXX", where "X" is a digit). This same link will be available in a blue banner at the top of the page informing you that that bug has been migrated.
Bug 1854659 - qemu-kvm: SCSI passthrough does not work properly with an underlying DM-multipath device
Summary: qemu-kvm: SCSI passthrough does not work properly with an underlying DM-mult...
Keywords:
Status: CLOSED DEFERRED
Alias: None
Product: Red Hat Enterprise Linux 8
Classification: Red Hat
Component: qemu-kvm
Version: 8.2
Hardware: All
OS: Linux
high
high
Target Milestone: rc
: ---
Assignee: Virtualization Maintenance
QA Contact: qing.wang
URL:
Whiteboard:
: 1776758 1779758 1783161 1803716 1804850 1817087 1970030 (view as bug list)
Depends On: 1855868
Blocks: 1779758 1783161 1803716 1804850 1817087 1897025 1916117
TreeView+ depends on / blocked
 
Reported: 2020-07-07 21:40 UTC by Ewan D. Milne
Modified: 2023-12-15 18:24 UTC (History)
24 users (show)

Fixed In Version:
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
: 1855868 (view as bug list)
Environment:
Last Closed: 2022-04-21 22:41:11 UTC
Type: Feature Request
Target Upstream Version:
Embargoed:


Attachments (Terms of Use)
sosreport-ilx21r (16.96 MB, application/octet-stream)
2020-10-22 07:54 UTC, IBM Bug Proxy
no flags Details
Connection TOPO of the host ilx21r (25.07 KB, application/octet-stream)
2020-10-22 07:54 UTC, IBM Bug Proxy
no flags Details
sosreport of ilx21r1r (6.57 MB, application/octet-stream)
2020-10-22 07:54 UTC, IBM Bug Proxy
no flags Details
guest config file (9.84 KB, application/octet-stream)
2020-10-22 07:54 UTC, IBM Bug Proxy
no flags Details
/var/log/messages of ilx21r_Dec3 (9.56 MB, application/octet-stream)
2020-10-22 07:54 UTC, IBM Bug Proxy
no flags Details
io logs containing error info (120.04 KB, application/octet-stream)
2020-10-22 07:54 UTC, IBM Bug Proxy
no flags Details
/var/log/messages of ilx21r (12.61 KB, application/octet-stream)
2020-10-22 07:54 UTC, IBM Bug Proxy
no flags Details
/var/log/messages of ilx21r (9.56 MB, application/octet-stream)
2020-10-22 07:55 UTC, IBM Bug Proxy
no flags Details
sosreport-ilx21r1r (6.57 MB, application/octet-stream)
2020-10-22 07:57 UTC, IBM Bug Proxy
no flags Details
updated system tap script with more output (1.38 KB, application/octet-stream)
2020-10-22 08:06 UTC, IBM Bug Proxy
no flags Details
messages-ilx24s-20200405 (3.31 MB, application/octet-stream)
2020-10-22 08:06 UTC, IBM Bug Proxy
no flags Details
disktest, /var/log/messages of ilx24s and ilx24s1r (279.04 KB, application/octet-stream)
2020-10-22 08:06 UTC, IBM Bug Proxy
no flags Details
ilx24s1r.disktest.sda.20200402200029, guest lun of ilx24s (679.10 KB, application/octet-stream)
2020-10-22 08:07 UTC, IBM Bug Proxy
no flags Details
messages-ilx25s-20200405 (2.91 MB, application/octet-stream)
2020-10-22 08:07 UTC, IBM Bug Proxy
no flags Details
io logs and system logs (146.27 KB, application/octet-stream)
2020-10-22 08:09 UTC, IBM Bug Proxy
no flags Details
systemtap script to print the error code on failed requests (375 bytes, application/octet-stream)
2020-10-22 08:09 UTC, IBM Bug Proxy
no flags Details
IO errors, /var/log/messages, and XML for RHEL8.2 guest (2.49 MB, application/octet-stream)
2020-10-22 08:16 UTC, IBM Bug Proxy
no flags Details
sosreport of ilx22r - part 2/2 (9.68 MB, application/octet-stream)
2020-10-22 08:17 UTC, IBM Bug Proxy
no flags Details
abrt log of ilx24s1r (13.10 MB, application/octet-stream)
2020-10-22 08:21 UTC, IBM Bug Proxy
no flags Details
message logs and io log (523.62 KB, application/octet-stream)
2020-10-22 08:21 UTC, IBM Bug Proxy
no flags Details
collectlogs of ilx21r (12.61 KB, application/octet-stream)
2020-10-22 08:29 UTC, IBM Bug Proxy
no flags Details
sosreport of ilx21r (15.97 MB, application/octet-stream)
2020-10-22 08:29 UTC, IBM Bug Proxy
no flags Details
sosreport of ilx21r (15.97 MB, application/octet-stream)
2020-10-22 08:30 UTC, IBM Bug Proxy
no flags Details
sosreport of ilx21r1r (6.76 MB, application/octet-stream)
2020-10-22 08:30 UTC, IBM Bug Proxy
no flags Details
sosreport of ilx21r1r (6.76 MB, application/octet-stream)
2020-10-22 08:31 UTC, IBM Bug Proxy
no flags Details
sosreport of ilx21r - part 2/2 (9.70 MB, application/octet-stream)
2020-10-22 08:49 UTC, IBM Bug Proxy
no flags Details
sosreport of ilx22r - part 1/2 (10.00 MB, application/octet-stream)
2020-10-22 08:50 UTC, IBM Bug Proxy
no flags Details
sosreport of ilx21r - part 1/2 (10.00 MB, application/octet-stream)
2020-10-22 08:50 UTC, IBM Bug Proxy
no flags Details
messages-ilx21r1r-May18 (6.81 MB, application/octet-stream)
2020-10-22 08:50 UTC, IBM Bug Proxy
no flags Details
messages-ilx21r-May18 (4.33 MB, application/octet-stream)
2020-10-22 08:50 UTC, IBM Bug Proxy
no flags Details
sosreport of ilx22r (10.41 KB, application/octet-stream)
2022-08-23 16:45 UTC, IBM Bug Proxy
no flags Details
sosreport of ilx21r (10.41 KB, application/octet-stream)
2022-08-23 16:45 UTC, IBM Bug Proxy
no flags Details

Description Ewan D. Milne 2020-07-07 21:40:20 UTC
Description of problem:

If a guest VM is configured to use SCSI passthrough, and the underlying
device is a DM-multipath device, an I/O failure due to a path error will
*not* be retried on other available paths.  Instead, an I/O error will be
propagated to the guest.  This is not what a user would expect to see.

This appears to occur because SCSI passthrough uses an SG_IO ioctl() from
qemu-kvm to the underlying device to issue the I/O.  Unlike normal block
layer I/O, ioctl()s issued to DM multipath devices do not have their status
examined and interpreted for retry if appropriate (i.e. if the failure is
a path failure rather than an error from the storage device itself).
Instead, the ioctl() mechanism will select the current (e.g. last known
good) path and submit it to the underlying device, and return any error
encountered.

DM-multipath has always worked this way.  It appears as if qemu-kvm expected
that SG_IO ioctl()s would be retried, but they are not.  According to the
upstream DM maintainer, retrying ioctls() sent to underlying devices was
not ever intended to be done.

As a result, under certain failure conditions, an I/O error will be returned
to the guest when other paths are available.  Note that multipathd in userspace
normally has a path checker running which periodically attempts commands
on all the paths, and so, under some conditions, SCSI passthrough may *appear*
to work, as DM-multipath will not send I/O down known bad paths.  However,
just because commands worked when the path checker sent them some time ago
does not mean any new I/O will succeed once a failure occurs.

The same I/O issued directly to the DM-multipath device on the hypervisor machine would not use ioctl()s and would not see this behavior.

The use of non-SCSI-passthrough does not have this problem, because it does
not send SCSI commands to the DM-multipath device with an ioctl().

Version-Release number of selected component (if applicable):  8.2


How reproducible:  100%


Steps to Reproduce:
1. Create VM with a SCSI passthrough device to an underlying DM-multipath
   device on Fibre Channel attached storage with at least 2 separate paths
   through independent FC switch target ports
2. Boot VM and generate I/O with write traffic to the SCSI passthrough device
3. Disable one of the FC switch ports that connects to the target, leaving
   at least one good path from the hypervisor to the LUN.
4. Hypervisor will typically see DID_NO_CONNECT or DID_TRANSPORT_DISRUPTED
   errors when the target port is unreachable
5. Guest will see I/O error, typically ABORTED COMMAND (I/O error that is
   passed to the guest is apparently changed by QEMU, which makes finding
   the source of the problem difficult).

It is often necessary to disable (and then re-enable) the FC switch target
port several times in order to reproduce this problem, but it typically
occurs within 10-100 iterations of port toggling.  It can also occur the
very first time, it just depends when I/O is issued relative to the port loss.

The guest XML configuration in the failing case looks like:

    <disk type='block' device='lun'>
      <driver name='qemu' type='raw' cache='none' io='native'/>
      <source dev='/dev/mapper/mpathb'/>
      <backingStore/>
      <target dev='sda' bus='scsi'/>
      <alias name='scsi0-0-0-0'/>
      <address type='drive' controller='0' bus='0' target='0' unit='0'/>
    </disk>

The problem does *not* occur if SCSI passthrough is not used, which
has XML configuration like:

    <disk type='block' device='disk'>
      <driver name='qemu' type='raw' cache='none' io='native'/>
      <source dev='/dev/mapper/mpathb'/>
      <backingStore/>
      <target dev='vda' bus='virtio'/>
      <alias name='virtio-disk0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x0a' function='0x0'/>
    </disk>


Actual results:    Guest sees I/O errors even if another path is available


Expected results:   Guest does not see I/O errors if another path is available


Additional info:

This problem has been reported on both RHEL7.8 and RHEL8.2   I was not able
to reproduce it on RHEL7, but it is not entirely clear to me how the reporter
of the issue configured their guest VMs.  To reproduce this, I used virt-install
to create the guest, installed RHEL7.7 on the guest, shut it down, used
virsh dumpxml to dump the guest XML, and then edited it to change the device
to be a SCSI passthrough device.  Then I unconfigured the guest and defined
a new guest using virsh with the edited XML.  Then I booted the new guest
configuration.  (I did not have the capability to use the virt-manager UI
because of X11 ssh authentication issues running on the VPN.)

It would seem that the SCSI passthrough mechanism only works with something
like a regular sd device.  I am not sure what this means in terms of customer
exposure.  The problems I investigated were reported because a partner was
attempting to test FC storage array connectivity failures using guest VMs,
when we do this type of storage failure testing in Red Hat QE we use test
software that only runs on dedicate bare-metal machines.

Comment 3 qing.wang 2020-07-08 08:53:36 UTC
My test steps:


4.18.0-222.el8.x86_64
qemu-kvm-core-4.2.0-29.module+el8.3.0+7212+401047e6.x86_64
qemu-kvm-common-4.2.0-29.module+el8.3.0+7212+401047e6.x86_64


1.host FC env
root@hp-dl385pg8-03 /home/rworkdir/vbugs/feature/passthrough # multipath -l
mpatha (360050763008084e6e00000000000019d) dm-3 IBM,2145
size=130G features='1 queue_if_no_path' hwhandler='1 alua' wp=rw
|-+- policy='service-time 0' prio=0 status=enabled
| `- 2:0:0:0 sdb 8:16 active undef running
`-+- policy='service-time 0' prio=0 status=enabled
  `- 2:0:1:0 sdc 8:32 active undef running

There are 2 paths 

3.boot vm with passthrough path,set rerror=stop,werror=stop on the device

/usr/libexec/qemu-kvm \
  -name src_vm1 \
  -machine q35 \
  -nodefaults \
  -vga qxl \
  -device pcie-root-port,id=pcie.0-root-port-2,slot=2,bus=pcie.0,multifunction=on \
  -device pcie-root-port,id=pcie.0-root-port-2-1,chassis=3,bus=pcie.0,addr=0x2.0x1 \
  -device pcie-root-port,id=pcie.0-root-port-2-2,chassis=4,bus=pcie.0,addr=0x2.0x2 \
  -device pcie-root-port,id=pcie.0-root-port-3,slot=3,bus=pcie.0 \
  -device pcie-root-port,id=pcie.0-root-port-4,slot=4,bus=pcie.0 \
  -device pcie-root-port,id=pcie.0-root-port-5,slot=5,bus=pcie.0 \
  -device pcie-root-port,id=pcie.0-root-port-7,slot=7,bus=pcie.0 \
  -device pcie-root-port,id=pcie.0-root-port-8,slot=8,bus=pcie.0 \
  -device pcie-root-port,id=pcie.0-root-port-9,slot=9,bus=pcie.0 \
  -device qemu-xhci,id=usb1,bus=pcie.0-root-port-2-1,addr=0x0 \
  -device usb-tablet,id=usb-tablet1,bus=usb1.0,port=1 \
  -object iothread,id=iothread0 \
  -device virtio-scsi-pci,id=scsi0,bus=pcie.0-root-port-2-2,addr=0x0,iothread=iothread0 \
  \
  -blockdev driver=qcow2,file.driver=file,cache.direct=off,cache.no-flush=on,file.filename=/home/kvm_autotest_root/images/rhel830-64-virtio-scsi.qcow2,node-name=drive_image1 \
  -device scsi-hd,id=os1,drive=drive_image1,bootindex=0 \
  \
  -device virtio-scsi-pci,id=scsi1,bus=pcie.0-root-port-8,addr=0x0 \
  -blockdev node-name=host_device_stg0,driver=host_device,filename=/dev/mapper/mpatha \
  -blockdev node-name=drive_stg0,driver=raw,file=host_device_stg0 \
  -device scsi-block,id=stg0,rerror=stop,werror=stop,drive=drive_stg0,bus=scsi1.0 \
  -vnc :5 \
  -qmp tcp:0:5955,server,nowait \
  -monitor stdio \
  -m 8192 \
  -smp 8 \
  -device virtio-net-pci,mac=9a:b5:b6:b1:b2:b5,id=idMmq1jH,vectors=4,netdev=idxgXAlm,bus=pcie.0-root-port-5,addr=0x0 \
  -netdev tap,id=idxgXAlm \

4.access guest then do io 
root@bootp-73-131-253 ~ # lsblk
NAME                       MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda                          8:0    0   20G  0 disk 
\u251c\u2500sda1                       8:1    0    1G  0 part /boot
\u2514\u2500sda2                       8:2    0   19G  0 part 
  \u251c\u2500rhel_vm--115--131-root 253:0    0   17G  0 lvm  /
  \u2514\u2500rhel_vm--115--131-swap 253:1    0    2G  0 lvm  [SWAP]
sdb                          8:16   0  130G  0 disk 
root@bootp-73-131-253 ~ # dd if=/dev/zero of=/dev/sdb bs=1M count=30000


5. check status 
(qemu) info status
VM status: running


6.Alternately close a path every 10 seconds on host

root@hp-dl385pg8-03 /home/rworkdir/vbugs/feature/passthrough # ./offline.sh 
offline ===== sdb
| `- 2:0:0:0 sdb 8:16 failed faulty offline
online ===== sdb
| `- 2:0:0:0 sdb 8:16 failed undef running
offline ===== sdc
  `- 2:0:1:0 sdc 8:32 failed faulty offline
online ===== sdc
  `- 2:0:1:0 sdc 8:32 failed undef running
mpatha (360050763008084e6e00000000000019d) dm-3 IBM,2145
size=130G features='1 queue_if_no_path' hwhandler='1 alua' wp=rw
|-+- policy='service-time 0' prio=0 status=enabled
| `- 2:0:0:0 sdb 8:16 active undef running
`-+- policy='service-time 0' prio=0 status=enabled
  `- 2:0:1:0 sdc 8:32 active undef running
offline ===== sdb
| `- 2:0:0:0 sdb 8:16 active faulty offline
online ===== sdb
| `- 2:0:0:0 sdb 8:16 failed undef running
offline ===== sdc
  `- 2:0:1:0 sdc 8:32 failed faulty offline
online ===== sdc
  `- 2:0:1:0 sdc 8:32 active undef running
mpatha (360050763008084e6e00000000000019d) dm-3 IBM,2145
size=130G features='1 queue_if_no_path' hwhandler='1 alua' wp=rw
|-+- policy='service-time 0' prio=0 status=enabled
| `- 2:0:0:0 sdb 8:16 active undef running
`-+- policy='service-time 0' prio=0 status=enabled
  `- 2:0:1:0 sdc 8:32 active undef running
offline ===== sdb
| `- 2:0:0:0 sdb 8:16 failed faulty offline
online ===== sdb
| `- 2:0:0:0 sdb 8:16 failed undef running
offline ===== sdc
  `- 2:0:1:0 sdc 8:32 failed faulty offline



7 check guest status
(qemu) info status
VM status: paused (io-error)

8.resume the guest and stop offline script
(qemu) c
(qemu) info status
VM status: running

9.guest may finish job
root@bootp-73-131-253 ~ # dd if=/dev/zero of=/dev/sdb bs=1M count=30000
30000+0 records in
30000+0 records out
31457280000 bytes (31 GB, 29 GiB) copied, 973.289 s, 32.3 MB/s


So in my testing i think it encount io-error is expected if multipath switch path.
My point is the guest may resume if path is ready.

Comment 4 qing.wang 2020-07-08 09:30:46 UTC
If i boot vm without rerror=stop,werror=stop on the device,the guest will always keep running status
and dd operatoin will finish finally. find message in /var/log/message:
Jul  8 17:25:59 bootp-73-131-253 kernel: blk_update_request: I/O error, dev sdb, sector 59475968 op 0x1:(WRITE) flags 0x4800 phys_seg 12 prio class 0
Jul  8 17:25:59 bootp-73-131-253 kernel: sd 1:0:0:0: [sdb] tag#93 CDB: Write(10) 2a 00 03 8b 84 38 00 03 c8 00
Jul  8 17:25:59 bootp-73-131-253 kernel: sd 1:0:0:0: [sdb] tag#75 FAILED Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE cmd_age=0s
Jul  8 17:25:59 bootp-73-131-253 kernel: blk_update_request: I/O error, dev sdb, sector 59475000 op 0x1:(WRITE) flags 0x100000 phys_seg 9 prio class 0
Jul  8 17:25:59 bootp-73-131-253 kernel: sd 1:0:0:0: [sdb] tag#75 Sense Key : Aborted Command [current] 
Jul  8 17:25:59 bootp-73-131-253 kernel: sd 1:0:0:0: [sdb] tag#75 Add. Sense: I/O process terminated
Jul  8 17:25:59 bootp-73-131-253 kernel: sd 1:0:0:0: [sdb] tag#75 CDB: Write(10) 2a 00 03 8b 8c 00 00 04 00 00
Jul  8 17:25:59 bootp-73-131-253 kernel: sd 1:0:0:0: [sdb] tag#87 FAILED Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE cmd_age=0s
Jul  8 17:25:59 bootp-73-131-253 kernel: blk_update_request: I/O error, dev sdb, sector 59476992 op 0x1:(WRITE) flags 0x4800 phys_seg 14 prio class 0
Jul  8 17:25:59 bootp-73-131-253 kernel: sd 1:0:0:0: [sdb] tag#87 Sense Key : Aborted Command [current] 
Jul  8 17:25:59 bootp-73-131-253 kernel: sd 1:0:0:0: [sdb] tag#87 Add. Sense: I/O process terminated
Jul  8 17:25:59 bootp-73-131-253 kernel: sd 1:0:0:0: [sdb] tag#87 CDB: Write(10) 2a 00 03 8b 95 c0 00 03 90 00
Jul  8 17:25:59 bootp-73-131-253 kernel: sd 1:0:0:0: [sdb] tag#74 FAILED Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE cmd_age=0s
Jul  8 17:25:59 bootp-73-131-253 kernel: blk_update_request: I/O error, dev sdb, sector 59479488 op 0x1:(WRITE) flags 0x100000 phys_seg 8 prio class 0
Jul  8 17:25:59 bootp-73-131-253 kernel: sd 1:0:0:0: [sdb] tag#86 FAILED Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE cmd_age=0s
Jul  8 17:25:59 bootp-73-131-253 kernel: sd 1:0:0:0: [sdb] tag#74 Sense Key : Aborted Command [current] 
Jul  8 17:25:59 bootp-73-131-253 kernel: sd 1:0:0:0: [sdb] tag#86 Sense Key : Aborted Command [current] 
Jul  8 17:25:59 bootp-73-131-253 kernel: sd 1:0:0:0: [sdb] tag#74 Add. Sense: I/O process terminated
Jul  8 17:25:59 bootp-73-131-253 kernel: sd 1:0:0:0: [sdb] tag#74 CDB: Write(10) 2a 00 03 8b 91 d0 00 03 f0 00
Jul  8 17:25:59 bootp-73-131-253 kernel: blk_update_request: I/O error, dev sdb, sector 59478480 op 0x1:(WRITE) flags 0x4800 phys_seg 9 prio class 0
Jul  8 17:25:59 bootp-73-131-253 kernel: sd 1:0:0:0: [sdb] tag#86 Add. Sense: I/O process terminated
Jul  8 17:25:59 bootp-73-131-253 kernel: sd 1:0:0:0: [sdb] tag#86 CDB: Write(10) 2a 00 03 8b 9c f8 00 03 f0 00
Jul  8 17:25:59 bootp-73-131-253 kernel: blk_update_request: I/O error, dev sdb, sector 59481336 op 0x1:(WRITE) flags 0x104000 phys_seg 40 prio class 0


if guest in pause status please confirm there are error_policy on disk like as following

<disk type='block' device='lun' sgio='filtered' snapshot='no'>
      <driver name='qemu' type='raw' cache='none' error_policy='stop' io='native'/>
      <source dev='/dev/mapper/360014059b31089df5114cbd830320c2b'/>
      <backingStore/>
      <target dev='sdb' bus='scsi'/>
      <alias name='scsi0-0-0-1'/>
      <address type='drive' controller='0' bus='0' target='0' unit='1'/>
    </disk>

Comment 5 Ewan D. Milne 2020-07-08 16:11:25 UTC
In the cases I looked at the Guest saw the Aborted Command / I/O process terminated
which caused the I/O tests to fail.  The Guest did not pause, although I believe there
are other BZs that have reported a paused guest that did not see I/O errors, so this
may have been the cause.

The I/O errors on write will cause a guest's file system on that device to go read-only.

Comment 6 Paolo Bonzini 2020-07-08 17:08:22 UTC
At the design level, the main issue is that SG_IO returns sense data and a normal errno, not the bio-level BLK_STS_* errors that blk_path_error() uses to decide whether to retry a request.

The proposed solution is to implement SG_IO-specific logic in dm-mpath, or directly in dm.c, so that it can issue REQ_OP_SCSI_IN and REQ_OP_SCSI_OUT bios directly to the paths.

Currently, DM's ioctl path really doesn't have anything SCSI specific---it doesn't even pass the ioctl command to the dm target (see dm_prepare_ioctl in drivers/md/dm.c).  It is simply about passing ioctl down to underlying device(s), so the target selects a bdev and dm_blk_ioctl sends it down.

I'm adding CondNAK Upstream, but this is an important issue for which the only other solution would be redoing multipath in userspace (clearly suboptimal, to say the least).

Comment 7 Ewan D. Milne 2020-07-08 17:23:01 UTC
Yes, it seems like what we need is a some kernel interface that provides the
semantics needed.  Reimplementing multipath in userspace would be a lot of work
and would require that all of the storage vendor partners test that as a whole
other mechanism, plus we could get different failover/recovery behavior which
seems like it would be a huge support problem.

Comment 8 Ewan D. Milne 2020-07-08 17:27:49 UTC
The other alternative I see in the interim is to perhaps pass through all of the
underlying device paths to the Guest and have multipath run in the Guest on those
paths.  I don't know if that can be configured, though, and whether that approach
has been tested/validated.

Comment 9 loberman 2020-07-08 18:57:03 UTC
We have done this before and it does work.
The device has to pass through as a direct device with inquiry and then multipath on guest can be enabled.

Comment 10 Paolo Bonzini 2020-07-10 17:47:59 UTC
> The other alternative I see in the interim is to perhaps pass through all of the
> underlying device paths to the Guest and have multipath run in the Guest on those
> paths.

This would work but I think RHEV very much prefers to have multipath configured on
the host.  Configuring multipath on the guest would remove a lot of the appeal of
storage virtualization; it would complicate the configuration of the VM (i.e. have
to add all paths one by one) and also in the VM (having to configure dm-mpath
on all VMs, possibly with both Linux and Windows guest OSes, instead of just in the
hosts).

Also, path fallback would not work for device handlers that need REQ_FAILFAST_*,
because there's no way to pass them down from the guest to the host through SG_IO.

Comment 12 Ewan D. Milne 2020-10-21 18:36:33 UTC
*** Bug 1776758 has been marked as a duplicate of this bug. ***

Comment 13 Ewan D. Milne 2020-10-21 18:40:28 UTC
*** Bug 1783161 has been marked as a duplicate of this bug. ***

Comment 14 Ewan D. Milne 2020-10-21 18:43:49 UTC
*** Bug 1803716 has been marked as a duplicate of this bug. ***

Comment 15 IBM Bug Proxy 2020-10-21 18:51:26 UTC
------- Comment From shlyi.com 2020-03-10 02:17 EDT-------
(In reply to comment #9)
> Only for ASC 10h, which is reported for T10 DIF errors
>
> 10 00 D ID CRC OR ECC ERROR
> 10 01 D LOGICAL BLOCK GUARD CHECK FAILED
> 10 02 D LOGICAL BLOCK APPLICATION TAG CHECK FAILED
> 10 03 D LOGICAL BLOCK REFERENCE TAG CHECK FAILED
> 10 04   LOGICAL BLOCK PROTECTION ERROR ON RECOVER BUFFERED DATA
> 10 05   LOGICAL BLOCK PROTECTION METHOD ERROR
>
> case ABORTED_COMMAND:
> action = ACTION_FAIL;
> if (sshdr.asc == 0x10) /* DIF */
> error = -EILSEQ;
> break;
>
> The errors we see here are ASC/ASCQ 00h / 06h:
>
> 00 06 D I/O PROCESS TERMINATED
>
> It doesn't look to me like this would set the codes to make
> blk_path_error() return false

Hi emilne,

As I know, Redhat 7.8 has already released several snapshot versions after snapshot2, can you help me answer below two questions?

1, Does redhat has release notes for Redhat 7.8 snapshot version, such as Redhat 7.8 snapshot 5, I've just seen the Redhat 7.8 Beta version release note at https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7-beta/

2, Could you help check if the version snapshot 5 have some updates to solve this issue?

Many thanks to you.

------- Comment From shlyi.com 2020-03-10 22:51 EDT-------
(In reply to comment #12)
> I replied in the email thread, but I'll reply here too to keep everything in
> one place.
>
> We don't have release notes for snapshots, those are just for public
> releases like the beta and GA
>
> We released the RC of RHEL 7.8 today. If you're not being notified, please
> let me know and I can get you added to the mailing list so you receive
> schedules, pre-release announcements, etc.

Thank you all for your updates. As you haven't replied to me for my question 2, I assume the new versions such as Rhel 7.8 RC don't contain updates for this issue.

Besides, do you have a document to explain the upgrade path, for example, from snapshot version to another snapshot version, from snapshot version to RC version, from RC version to GA version, etc?

Based on my experience, my understanding are as below:

1, we cannot upgrade from snapshot version to another snapshot version, or from snapshot version to RC/GA version, since I encountered some conflict when I tried to do that last time.
2, the RC version and GA version may be the same, so I can do normal update/upgrade based on a RC version.

Appreciate for your time.

------- Comment From shlyi.com 2020-03-17 01:19 EDT-------
Hello,
Could you take a look at the comments provided by a redhat focal below? Based on my understanding, his experiment has just illustrated that this issue is caused by the multipath function. Looking forward to hear you back. Thanks.

below comments are coming from issue: https://bugzilla.linux.ibm.com/show_bug.cgi?id=183977

I did some investigations and this is what I found:

I setup the following test enviroment (much more modest that you have :-) ):

a host (my laptop) running iscsi target from a 1 GB file.

Then I connected to that target twice using qemu's iscsi driver, with blkdebug instance running on top of each

I hacked the blkdebug qemu driver such as it passes through the SG_IO and sometimes fails them, such
as the two instances of blkdebug don't fail at the same time.

Thus I have a guest with two paths to same disk and each of paths fails sometimes.

In that guest I aggregated the two paths using the multipath device mapper and I passed
the resulting multipath node to a nested guest running in it.
Inside the nested guest I had run a fio job on the passed through disk.

The results:

Sadly the nested guest sees IO errors.

I tried both direct and buffered IO in the guest, both reads
and writes, and I tried pass the multipath node to the nested guest both as a raw LUN and
as a regular block device.
In all cases I see errors in the nested guest, however the multipath
code does recover eventually and switches the paths.
If I allow the fio to continue on IO errors,
I see that multipath code switches patches in very timely manner with a bunch of IO errors in between.

I even tried to fail only one path (the first one) while keeping the second one always online,
and even then I have seen IO errors in the guest, suggesting
that kernel's multipath code doesn't retry the IO requests on remaining paths when it encounters
a failing path.

I think that this means that in-kernel multipath code is just designed this way, that is geared towards
once in a while disk failure and assumes that the client will retry failing requests
(which is true for linux filesystem code from my experience with nvme-mdev driver I once developed).

One thing for sure, that this bug is not related to virtualization in any way.
in fact running fio in the outer guest (which just simulates the real hardware) produces the same
results.

------- Comment From shlyi.com 2020-03-17 21:51 EDT-------
(In reply to comment #17)
> Created attachment 141606 [details]
> systemtap script to print the error code on failed requests
>
>
> ------- Comment on attachment From bmarzins 2020-03-17 16:55:44
> EDT-------
>
>
> The kernel multipath code will retry requests down different paths, as long
> as the error code on the failing request appears to be transport related.
> Would you be able to run this systemtap script, and reproduce the error, and
> post the script output and /var/log/messages from when the issue occured?
>
> Can you run the script with
>
> # stap mpath_error.stp
>
> Wait for it to log "starting", and then reproduce the issue. When you're
> done, you can kill the script with ctrl-c
>
> To run the script, you need the systemtap package, and the kernel devel and
> debuginfo packages.

Hello,

I failed to start the script you provided as you can see below. I've installed "systemtap" and "kernel-devel" pkg, but it seems that there isn't a "debuginfo" package. Looking forward to hear you back.

[root@ilx24s ~]# yum list |grep debuginfo
[root@ilx24s ~]# yum list |grep kernel-devel
kernel-devel.x86_64                     3.10.0-1127.el7            @anaconda/7.8
[root@ilx24s ~]# yum install debuginfo
Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-manager

This system is not registered with an entitlement server. You can use subscription-manager to register.

No package debuginfo available.
Error: Nothing to do
[root@ilx24s ~]# yum install systemtap
Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-manager

This system is not registered with an entitlement server. You can use subscription-manager to register.

Package systemtap-4.0-11.el7.x86_64 already installed and latest version
Nothing to do
[root@ilx24s ~]# yum install kernel-devel
Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-manager

This system is not registered with an entitlement server. You can use subscription-manager to register.

Package kernel-devel-3.10.0-1127.el7.x86_64 already installed and latest version
Nothing to do

[root@ilx24s ~]# stap mpath_error.stp
semantic error: while resolving probe point: identifier 'module' at mpath_error.stp:9:7
source: probe module("dm_multipath").function("do_end_io"),
^

semantic error: no match (similar functions: multipath_end_io, assign_bit, bypass_pg, init_module, pg_init_done)

Pass 2: analysis failed.  [man error::pass2]
Number of similar error messages suppressed: 1.
Rerun with -v to see them.
[root@ilx24s ~]# stap mpath_error.stp -v
Pass 1: parsed user script and 479 library scripts using 279848virt/77084res/3492shr/73724data kb, in 600usr/30sys/640real ms.
semantic error: while resolving probe point: identifier 'module' at mpath_error.stp:9:7
source: probe module("dm_multipath").function("do_end_io"),
^

semantic error: no match (similar functions: multipath_end_io, assign_bit, bypass_pg, init_module, pg_init_done)

semantic error: while resolving probe point: identifier 'module' at :10:7
source:       module("dm_multipath").function("do_end_io_bio") {
^

semantic error: no match (similar functions: multipath_end_io_bio, assign_bit, fail_path, init_module, multipath_end_io)

Pass 2: analyzed script: 2 probes, 9 functions, 1 embed, 0 globals using 282248virt/80364res/4368shr/76124data kb, in 30usr/60sys/86real ms.
Pass 2: analysis failed.  [man error::pass2]

[root@ilx24s ~]# yum repolist
Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-manager

This system is not registered with an entitlement server. You can use subscription-manager to register.

repo id                                       repo name                                                                   status
HighAvailability                              Red Hat Enterprise Linux 7.8 HighAvailability                                  52
InstallMedia                                  Red Hat Enterprise Linux 7.8                                                5,231
InstallMediasup                               sup Red Hat Enterprise Linux 7.8                                               18
ResilientStorage                              Red Hat Enterprise Linux 7.8 ResilientStorage                                  57
repolist: 5,358

------- Comment From shlyi.com 2020-04-07 05:46 EDT-------
(In reply to comment #17)
> Created attachment 141606 [details]
> systemtap script to print the error code on failed requests
>
>
> ------- Comment on attachment From bmarzins 2020-03-17 16:55:44
> EDT-------
>
>
> The kernel multipath code will retry requests down different paths, as long
> as the error code on the failing request appears to be transport related.
> Would you be able to run this systemtap script, and reproduce the error, and
> post the script output and /var/log/messages from when the issue occured?
>
> Can you run the script with
>
> # stap mpath_error.stp
>
> Wait for it to log "starting", and then reproduce the issue. When you're
> done, you can kill the script with ctrl-c
>
> To run the script, you need the systemtap package, and the kernel devel and
> debuginfo packages.

Hello,

Here is the log you requested:
[root@ilx24s ~]# stap mpath_error.stp
Thu Apr  2 20:00:33 2020 MST: starting

Thu Apr  2 21:57:51 2020 MST: 0: multipath_end_io called with error -5
Thu Apr  2 21:57:51 2020 MST: 6999: multipath_end_io called with error -5
Thu Apr  2 21:57:51 2020 MST: 61: multipath_end_io called with error -5
Fri Apr  3 02:10:12 2020 MST: 14: multipath_end_io called with error -5
Fri Apr  3 02:11:27 2020 MST: 0: multipath_end_io called with error -5
Fri Apr  3 02:11:27 2020 MST: 45: multipath_end_io called with error -5
Fri Apr  3 02:11:27 2020 MST: 45: multipath_end_io called with error -5
Fri Apr  3 05:07:01 2020 MST: 20: multipath_end_io called with error -5
Fri Apr  3 06:29:32 2020 MST: 14: multipath_end_io called with error -5
Fri Apr  3 06:29:32 2020 MST: 14: multipath_end_io called with error -5
Fri Apr  3 06:30:38 2020 MST: 0: multipath_end_io called with error -5
Fri Apr  3 09:21:36 2020 MST: 0: multipath_end_io called with error -5
Fri Apr  3 09:21:36 2020 MST: 20: multipath_end_io called with error -5
Fri Apr  3 09:21:36 2020 MST: 20: multipath_end_io called with error -5
^CTue Apr  7 02:30:16 2020 MST: ending
You have new mail in /var/spool/mail/root
[root@ilx24s ~]#

[root@ilx25s ~]# screen -ls
There is a screen on:
26305.multipath (Detached)
1 Socket in /var/run/screen/S-root.

[root@ilx25s ~]# screen -r 26305.multipath
Thu Apr  2 20:12:35 2020 MST: starting

Fri Apr  3 00:48:40 2020 MST: 0: multipath_end_io called with error -5
Fri Apr  3 00:48:40 2020 MST: 0: multipath_end_io called with error -5
Fri Apr  3 00:48:40 2020 MST: 0: multipath_end_io called with error -5
Fri Apr  3 00:48:40 2020 MST: 0: multipath_end_io called with error -5
Fri Apr  3 00:48:40 2020 MST: 0: multipath_end_io called with error -5
Fri Apr  3 00:48:40 2020 MST: 0: multipath_end_io called with error -5
Fri Apr  3 00:48:45 2020 MST: 50: multipath_end_io called with error -5
Fri Apr  3 02:11:19 2020 MST: 50: multipath_end_io called with error -5
Fri Apr  3 02:11:19 2020 MST: 50: multipath_end_io called with error -5
Fri Apr  3 06:29:33 2020 MST: 6: multipath_end_io called with error -5
Fri Apr  3 06:29:33 2020 MST: 6: multipath_end_io called with error -5
Fri Apr  3 06:29:33 2020 MST: 6: multipath_end_io called with error -5
Fri Apr  3 06:29:33 2020 MST: 6: multipath_end_io called with error -5
Fri Apr  3 06:30:39 2020 MST: 14: multipath_end_io called with error -5
Fri Apr  3 06:30:39 2020 MST: 14: multipath_end_io called with error -5
Fri Apr  3 06:30:39 2020 MST: 14: multipath_end_io called with error -5
Fri Apr  3 06:30:39 2020 MST: 14: multipath_end_io called with error -5
Fri Apr  3 06:30:39 2020 MST: 14: multipath_end_io called with error -5
Fri Apr  3 06:30:39 2020 MST: 14: multipath_end_io called with error -5
Fri Apr  3 06:30:39 2020 MST: 14: multipath_end_io called with error -5
Fri Apr  3 09:21:37 2020 MST: 25: multipath_end_io called with error -5
Fri Apr  3 09:21:37 2020 MST: 25: multipath_end_io called with error -5
Fri Apr  3 09:21:37 2020 MST: 25: multipath_end_io called with error -5
Fri Apr  3 09:21:37 2020 MST: 25: multipath_end_io called with error -5
Fri Apr  3 13:15:25 2020 MST: 0: multipath_end_io called with error -5

^CTue Apr  7 02:30:58 2020 MST: ending
You have new mail in /var/spool/mail/root
[root@ilx25s ~]#

/var/log/messages will be uploaded soon.
messages-ilx24s-20200405
messages-ilx25s-20200405

------- Comment From shlyi.com 2020-04-07 22:00 EDT-------
(In reply to comment #26)
> I can't find any indication that your filesystem went read-only in the
> messages. Do you have the disktest logs as well?

Yes, I've uploaded one disktest log of the guest of ilx24s:
Below is partial content, the error message occurred at the time perfectly matched with your script output.

*************** disktest_16K_FS starting Thu Apr  2 21:30:49 MST 2020 ***************
| 2020/04/02-21:30:49 | START | 7240 | v1.4.2.1 | /fc/dev/sda/test | Start args: -K1 -t 0:1:120 -N 8856661 -PXT -h0 -pl -rw -I f -z -ma -E0 -T 1800 -B 16K (-p u) (-o 0)
| 2020/04/02-21:30:49 | INFO  | 7240 | v1.4.2.1 | /fc/dev/sda/test | Starting pass
| 2020/04/02-21:57:51 | ERROR | 7240 | v1.4.2.1 | /fc/dev/sda/test | Thread 0: Write failed: seek 1216442, lba 1749744 (0x1AB2F0), got = -1, asked for = 8192, errno 30
| 2020/04/02-21:57:51 | ERROR | 7240 | v1.4.2.1 | /fc/dev/sda/test | Thread 0: fsync error = 30
| 2020/04/02-21:59:51 | WARN  | 7240 | v1.4.2.1 | /fc/dev/sda/test | Possible IO hang condition, IO timeout reached, 120 seconds

------- Comment From shlyi.com 2020-04-08 22:28 EDT-------
(In reply to comment #30)
> Thanks, but I still don't see any indication in the logs that a multipath
> device returned an IO error, or lost all of it's paths.  So, just to be
> sure, the test output says "/fc/dev/sda/test". These tests aren't actually
> running directly on top of /dev/sda, are they? If so, then they aren't using
> multipath at all.

"/fc/dev/sda/test" is seen from the guest(ilx24s1r) side, and the guest think it's a raw device without multipath. But in the dependent host's(ilx24s) view, the mapped lun has multiple paths;

------- Comment From shlyi.com 2020-04-26 22:55 EDT-------
We run the EI at weekend, so the earlier error messages flashed out of the screen, below are the error message in the end of the test:

[root@ilx24s ~]# screen -r 152142.stap
Sun Apr 26 15:47:22 2020 MST: 2373: failed path 69:96, nr_active 2
Sun Apr 26 15:47:24 2020 MST: 2373: failed path 68:208, nr_active 3
Sun Apr 26 15:47:24 2020 MST: 2373: failed path 68:224, nr_active 2
Sun Apr 26 15:47:24 2020 MST: 2373: failed path 69:176, nr_active 2
Sun Apr 26 15:57:49 2020 MST: 2373: reinstated path 67:48, nr_active 3
Sun Apr 26 15:57:49 2020 MST: 2373: reinstated path 67:64, nr_active 3
Sun Apr 26 15:57:49 2020 MST: 2373: reinstated path 67:80, nr_active 3
Sun Apr 26 15:57:50 2020 MST: 2373: reinstated path 66:16, nr_active 3
Sun Apr 26 15:57:51 2020 MST: 2373: reinstated path 65:192, nr_active 4
Sun Apr 26 15:57:51 2020 MST: 2373: reinstated path 65:208, nr_active 4
Sun Apr 26 15:57:51 2020 MST: 2373: reinstated path 65:224, nr_active 3
Sun Apr 26 15:57:51 2020 MST: 2373: reinstated path 65:240, nr_active 3
Sun Apr 26 15:57:51 2020 MST: 2373: reinstated path 66:0, nr_active 3
Sun Apr 26 15:57:51 2020 MST: 2373: reinstated path 66:32, nr_active 3
Sun Apr 26 15:57:51 2020 MST: 2373: reinstated path 66:48, nr_active 3
Sun Apr 26 15:57:51 2020 MST: 2373: reinstated path 66:64, nr_active 3
Sun Apr 26 15:57:51 2020 MST: 2373: reinstated path 66:80, nr_active 4
Sun Apr 26 15:57:51 2020 MST: 2373: reinstated path 66:96, nr_active 3
Sun Apr 26 15:57:51 2020 MST: 2373: reinstated path 66:112, nr_active 3
Sun Apr 26 15:57:51 2020 MST: 2373: reinstated path 66:128, nr_active 3
Sun Apr 26 15:57:51 2020 MST: 2373: reinstated path 66:144, nr_active 3
Sun Apr 26 15:57:51 2020 MST: 2373: reinstated path 66:192, nr_active 4
Sun Apr 26 15:57:51 2020 MST: 2373: reinstated path 67:0, nr_active 4
Sun Apr 26 15:57:51 2020 MST: 2373: reinstated path 67:16, nr_active 4
Sun Apr 26 15:57:51 2020 MST: 2373: reinstated path 67:96, nr_active 4
Sun Apr 26 15:57:51 2020 MST: 2373: reinstated path 67:112, nr_active 4
Sun Apr 26 15:57:52 2020 MST: 2373: reinstated path 66:160, nr_active 4
Sun Apr 26 15:57:52 2020 MST: 2373: reinstated path 66:176, nr_active 4
Sun Apr 26 15:57:52 2020 MST: 2373: reinstated path 66:208, nr_active 4
Sun Apr 26 15:57:52 2020 MST: 2373: reinstated path 66:224, nr_active 4
Sun Apr 26 15:57:52 2020 MST: 2373: reinstated path 66:240, nr_active 4
Sun Apr 26 15:57:52 2020 MST: 2373: reinstated path 67:32, nr_active 4
Sun Apr 26 16:00:03 2020 MST: 2373: reinstated path 69:32, nr_active 3
Sun Apr 26 16:00:03 2020 MST: 2373: reinstated path 69:64, nr_active 3
Sun Apr 26 16:00:04 2020 MST: 2373: reinstated path 68:240, nr_active 3
Sun Apr 26 16:00:04 2020 MST: 2373: reinstated path 69:96, nr_active 4
Sun Apr 26 16:00:04 2020 MST: 2373: reinstated path 69:128, nr_active 4
Sun Apr 26 16:00:06 2020 MST: 2373: reinstated path 68:192, nr_active 3
Sun Apr 26 16:00:06 2020 MST: 2373: reinstated path 68:208, nr_active 3
Sun Apr 26 16:00:06 2020 MST: 2373: reinstated path 68:224, nr_active 3
Sun Apr 26 16:00:06 2020 MST: 2373: reinstated path 69:0, nr_active 3
Sun Apr 26 16:00:06 2020 MST: 2373: reinstated path 69:16, nr_active 3
Sun Apr 26 16:00:06 2020 MST: 2373: reinstated path 69:48, nr_active 3
Sun Apr 26 16:00:06 2020 MST: 2373: reinstated path 69:80, nr_active 3
Sun Apr 26 16:00:06 2020 MST: 2373: reinstated path 69:112, nr_active 4
Sun Apr 26 16:00:06 2020 MST: 2373: reinstated path 69:144, nr_active 4
Sun Apr 26 16:00:06 2020 MST: 2373: reinstated path 69:160, nr_active 4
Sun Apr 26 16:00:06 2020 MST: 2373: reinstated path 69:176, nr_active 4
Sun Apr 26 16:00:06 2020 MST: 2373: reinstated path 69:192, nr_active 4
Sun Apr 26 16:00:06 2020 MST: 2373: reinstated path 69:208, nr_active 4
Sun Apr 26 16:00:06 2020 MST: 2373: reinstated path 69:224, nr_active 4
Sun Apr 26 16:00:06 2020 MST: 2373: reinstated path 69:240, nr_active 4

^CSun Apr 26 19:44:14 2020 MST: ending
You have new mail in /var/spool/mail/root

Corresponding log files you asked have been uploaded as "disktest, /var/log/messages of ilx24s and ilx24s1r", since ilx24s1r and ilx25s1s has the similar issue, I only uploaded the related logs of ilx24s1r.

------- Comment From shlyi.com 2020-06-28 00:20 EDT-------
Hello,

Thanks for the guide.

Before you told us these suggested modifications. we've tried three of your suggested modifications, which made a huge difference for the behavior of migrating a guest running io.
modifications we've made:
cache='none' io='native' device='disk'

We haven't run any auto ei case after making the above change yet, we'll update you with the result once we get it.

Besides, both "bus='virtio'" and "bus='scsi'" would be good for our manual test result by now.

Comment 16 Ewan D. Milne 2020-10-21 19:19:39 UTC
*** Bug 1817087 has been marked as a duplicate of this bug. ***

Comment 17 Ewan D. Milne 2020-10-21 19:23:27 UTC
*** Bug 1779758 has been marked as a duplicate of this bug. ***

Comment 18 IBM Bug Proxy 2020-10-21 19:30:12 UTC
------- Comment From shlyi.com 2019-12-23 20:59 EDT-------
(In reply to comment #13)
> Hi, i have no your mentioned storage ENV, but i want to clear following
> questions:
> 1. How to install  RHEL 8.1 cluster env ? Do you mean there are 4 paths in
> one host which point to same lun, each path pass-through to respective
> guest? what software installed in the guest?
> 2. What qemu command line of your guest?
> 3. Could you please share tool "StorageSideCablePull", how to test ?
> 4. Could you test two set two paths to eliminate physical storage issue .
> For example, one cluster is path A and B, the other is path C and D.

Hello, I tried to answer your questions as below:

For question 1: DMMP is used in host, guest use virtio for boot lun, guest use raw scsi map for the data lun;

For question 2: I am not sure what's your meaning, I used the rhel cluster to manage the guest, the resource type is:  "ocf:heartbeat:VirtualDomain". It "Manages virtual domains through the libvirt virtualization framework".

For question 3: 4 Paths are as below, our script for case "StorageSideCablePull" will break and recover below four paths sequentially, we anticipate the failed path could recover after the path recovered.

Host port1 ---------------- switchA port1 ----------Path1----------storage port1
|
switch? port2 -----------Path2---------storage port2

switch? port1 -----------Path3----------storage port3
|
Host port2 ---------------- switchB port2 ----------Path4----------storage port4

For question 4, we only have one cluster, so I don't understand your meaning. Can my above explanation answer your question?

------- Comment From shlyi.com 2019-12-23 21:25 EDT-------
Part of guest config file "ilx21r1r.xml":

<domain type='kvm'>
<name>ilx21r1r</name>
<uuid>f37748d4-3b13-4a95-906e-24606a619736</uuid>
<metadata>
<libosinfo:libosinfo xmlns:libosinfo="http://libosinfo.org/xmlns/libvirt/domain/1.0">
<libosinfo:os id="http://redhat.com/rhel/8.0"/>
</libosinfo:libosinfo>
</metadata>

------- Comment From shlyi.com 2019-12-23 22:06 EDT-------
> (In reply to IBM Bug Proxy from comment #10)
> > (In reply to comment #13)
> > > Hi, i have no your mentioned storage ENV, but i want to clear following
> > > questions:
> > >
> > > 1. How to install  RHEL 8.1 cluster env ? Do you mean there are 4 paths in
> > > one host which point to same lun, each path pass-through to respective
> > > guest? what software installed in the guest?
> > > 2. What qemu command line of your guest?
> > > 3. Could you please share tool "StorageSideCablePull", how to test ?
> > > 4. Could you test two set two paths to eliminate physical storage issue .
> > > For example, one cluster is path A and B, the other is path C and D.
> >
> > Hello, I tried to answer your questions as below:
> >
> > For question 1: DMMP is used in host, guest use virtio for boot lun, guest
> > use raw scsi map for the data lun;
> >
> > For question 2: I am not sure what's your meaning, I used the rhel cluster
> > to manage the guest, the resource type is:  "ocf:heartbeat:VirtualDomain".
> > It "Manages virtual domains through the libvirt virtualization framework".
> >
> > For question 3: 4 Paths are as below, our script for case
> > "StorageSideCablePull" will break and recover below four paths sequentially,
> > we anticipate the failed path could recover after the path recovered.
> >
> > Host port1 ---------------- switchA port1 ----------Path1----------storage
> > port1
> > |
> > switch? port2 -----------Path2---------storage port2
> >
> > switch? port1 -----------Path3----------storage port3
> > |
> > Host port2 ---------------- switchB port2 ----------Path4----------storage
> > port4
> >
> > For question 4, we only have one cluster, so I don't understand your
> > meaning. Can my above explanation answer your question?
> I do not familiar with your software and hardware ENV.
> for the question4 , i mean you may build 2 separated clusters, one using
> path A and B,
> the other using path C and D to verify all path may work well.
> I suggest using targetcli to simulate 4 paths then check it in your ENV

Hello, as I know "targetcli" is used in iscsi env, but my env is in FCP env.

------- Comment From shlyi.com 2019-12-26 01:18 EDT-------
(In reply to comment #20)
> 1.You have 4 path in host, you may run " multipath -l " to check the result.
> 2.I do not know the usage of "disktest", it come from where?  what the usage
> of tool?
> 3.This tool can run on host?
> 4.Could you get the qemu command line of the guest, like as "ps -ax|grep
> qemu"
> 5. if the testing related to switch path, transient io error is expected?

1, Yes, we use that command, and it shows the paths are good after the ei
2, "disktest" is a io tool used by IBM, it can generate and verify the io.
3, it can run on host, but in rhel 8.1 cluster env, we run io on its guest;
4, here is the output of the guest:
[root@ilx21r1r ~]# ps -ax|grep qemu
1398 ?        Ss     0:00 /usr/bin/qemu-ga --method=virtio-serial --path=/dev/virtio-ports/org.qemu.guest_agent.0 --blacklist=guest-file-open,guest-file-close,guest-file-read,guest-file-write,guest-file-seek,guest-file-flush,guest-exec,guest-exec-status -F/etc/qemu-ga/fsfreeze-hook
8323 pts/0    S+     0:00 grep --color=auto qemu
5, since the host 4 paths for each lun running io, so we expect there is no error in the io log for each lun, which would break only half of the paths when running ei.

------- Comment From shlyi.com 2019-12-26 01:33 EDT-------
(In reply to comment #22)
> More questions:
> 1 What the guest behavior when it hit io-error, will it change to "pause"
> status?
> 2 You may set error_policy='stop' for the guest to see what happen ?
> 3 In my understanding, it should be expect result have io error when active
> path is broken,
> am i right?  the point is it may back to if other path may work.
> 4 if you may set error_policy='stop' , the guest will change to pause status
> when hit io error, if
> this issue is fixed. the guest can be back to running after we ask for
> continue running. that is expected result.
> For example:
> <disk type='block' device='lun' sgio='filtered' snapshot='no'>
> <driver name='qemu' type='raw' cache='none' error_policy='stop' io='native'/>
> <source dev='/dev/mapper/360014059b31089df5114cbd830320c2b'/>
> <backingStore/>
> <target dev='sdb' bus='scsi'/>
> <alias name='scsi0-0-0-1'/>
> <address type='drive' controller='0' bus='0' target='0' unit='1'/>
> </disk>

Please see my last comments for its expecting behavior, "we expect there is no error in the io log for each lun, which would break only half of the paths when running ei".
While below is the log when io hit the error, which we think the guest mishandled the issue:

/var/log/message of ilx21r:
Dec  3 01:01:07 ilx21r kernel: sd 3:0:4:0: rejecting I/O to offline device

/var/log/message of ilx21r1r:
Dec  3 01:01:07 ilx21r1r kernel: print_req_error: I/O error, dev sde, sector 135448 flags 801

I don't understand why we should " set error_policy='stop' ", and how to do it.

------- Comment From shlyi.com 2019-12-26 23:02 EDT-------
(In reply to comment #25)
> (In reply to IBM Bug Proxy from comment #19)
> > (In reply to comment #20)
> > > 1.You have 4 path in host, you may run " multipath -l " to check the result.
> > > 2.I do not know the usage of "disktest", it come from where?  what the usage
> > > of tool?
> > > 3.This tool can run on host?
> > > 4.Could you get the qemu command line of the guest, like as "ps -ax|grep
> > > qemu"
> > > 5. if the testing related to switch path, transient io error is expected?
> > 1, Yes, we use that command, and it shows the paths are good after the ei
> > 2, "disktest" is a io tool used by IBM, it can generate and verify the io.
> > 3, it can run on host, but in rhel 8.1 cluster env, we run io on its guest;
> > 4, here is the output of the guest:
> > [root@ilx21r1r ~]# ps -ax|grep qemu
> > 1398 ?        Ss     0:00 /usr/bin/qemu-ga --method=virtio-serial
> > --path=/dev/virtio-ports/org.qemu.guest_agent.0
> > --blacklist=guest-file-open,guest-file-close,guest-file-read,guest-file-
> > write,guest-file-seek,guest-file-flush,guest-exec,guest-exec-status
> > -F/etc/qemu-ga/fsfreeze-hook
> > 8323 pts/0    S+     0:00 grep --color=auto qemu
> > 5, since the host 4 paths for each lun running io, so we expect there is no
> > error in the io log for each lun, which would break only half of the paths
> > when running ei.
> 1.Please share the result/ouput of " multipath -l"
> 2.What result if your do disktest on host during StorageSideCablePull
> running, there is no any ioerror?
> 3.In my understanding, your 4 paths for fail-over,right?
> so only one path in active , if active path is broken, other path will take
> place. if have io-error is accepted in the switch time.
1, I'll put the out put in the bottom;
2, yes, we expect no io error;
3, I think the io shouldn't break during the switch time, at least, this io error didn't happen in previous rhel version.

[root@ilx21r ~]# multipath -l
ilx21r22r_8G_d_0 (36005076b19bcb49b180000004600005c) dm-28 IBM,FlashSystem-9840
size=5.0G features='0' hwhandler='0' wp=rw
`-+- policy='service-time 0' prio=0 status=active
|- 3:0:4:0 sdcr 69:240 active undef running
|- 3:0:3:0 sdcl 69:144 active undef running
|- 4:0:1:0 sddh 70:240 active undef running
`- 4:0:4:0 sddt 71:176 active undef running
FC16G_1_D0 (36005076119909fc118000000bf0001d0) dm-25 IBM,FlashSystem-9840
size=3.0G features='0' hwhandler='0' wp=rw
`-+- policy='service-time 0' prio=0 status=active
|- 3:0:1:3 sdcc 69:0   active undef running
|- 3:0:2:3 sdci 69:96  active undef running
|- 4:0:0:3 sdde 70:192 active undef running
`- 4:0:2:3 sddq 71:128 active undef running
ilx21r22r_16G_d_5 (36005076b19bcb49b180000005900006f) dm-17 IBM,FlashSystem-9840
size=5.0G features='0' hwhandler='0' wp=rw
`-+- policy='service-time 0' prio=0 status=active
|- 1:0:4:3 sdaa 65:160 active undef running
|- 1:0:5:3 sdag 66:0   active undef running
|- 2:0:3:3 sdba 67:64  active undef running
`- 2:0:6:3 sdbr 68:80  active undef running
FC8G_D5 (36005076119909fc118000000730001cb) dm-11 IBM,FlashSystem-9840
size=3.0G features='0' hwhandler='0' wp=rw
`-+- policy='service-time 0' prio=0 status=active
|- 1:0:2:3 sdo  8:224  active undef running
|- 1:0:3:3 sdu  65:64  active undef running
|- 2:0:2:3 sdau 66:224 active undef running
`- 2:0:4:3 sdbg 67:160 active undef running
9840Q_8G_d_1 (3600507639281b4a3900000006c0000ab) dm-21 IBM,FlashSystem-9840
size=4.0G features='0' hwhandler='0' wp=rw
`-+- policy='service-time 0' prio=0 status=active
|- 1:0:8:1 sdak 66:64  active undef running
|- 1:0:9:1 sdam 66:96  active undef running
|- 2:0:0:1 sdao 66:128 active undef running
`- 2:0:1:1 sdaq 66:160 active undef running
ilx21r_22r_kvmcfg (360050762198c1fc21800000041000109) dm-3 IBM,FlashSystem-9840
size=2.0G features='0' hwhandler='0' wp=rw
`-+- policy='service-time 0' prio=0 status=active
|- 1:0:0:3 sde  8:64   active undef running
|- 1:0:1:3 sdj  8:144  active undef running
|- 2:0:5:3 sdbm 68:0   active undef running
`- 2:0:7:3 sdbx 68:176 active undef running
9840Q_8G_d_0 (3600507639281b4a3900000006b0000aa) dm-20 IBM,FlashSystem-9840
size=4.0G features='0' hwhandler='0' wp=rw
`-+- policy='service-time 0' prio=0 status=active
|- 1:0:8:0 sdaj 66:48  active undef running
|- 1:0:9:0 sdal 66:80  active undef running
|- 2:0:0:0 sdan 66:112 active undef running
`- 2:0:1:0 sdap 66:144 active undef running
ilx21r22r_16G_d_2 (36005076b19bcb49b180000004d000063) dm-16 IBM,FlashSystem-9840
size=5.0G features='0' hwhandler='0' wp=rw
`-+- policy='service-time 0' prio=0 status=active
|- 1:0:4:2 sdz  65:144 active undef running
|- 1:0:5:2 sdaf 65:240 active undef running
|- 2:0:3:2 sdaz 67:48  active undef running
`- 2:0:6:2 sdbq 68:64  active undef running
ilx21r1r_b0 (360050762198c1fc21800000032000107) dm-2 IBM,FlashSystem-9840
size=65G features='0' hwhandler='0' wp=rw
`-+- policy='service-time 0' prio=0 status=active
|- 1:0:0:2 sdd  8:48   active undef running
|- 1:0:1:2 sdi  8:128  active undef running
|- 2:0:5:2 sdbl 67:240 active undef running
`- 2:0:7:2 sdbw 68:160 active undef running
FC8G_D2 (36005076119909fc1180000003a0001c8) dm-10 IBM,FlashSystem-9840
size=3.0G features='0' hwhandler='0' wp=rw
`-+- policy='service-time 0' prio=0 status=active
|- 1:0:2:2 sdn  8:208  active undef running
|- 1:0:3:2 sdt  65:48  active undef running
|- 2:0:2:2 sdat 66:208 active undef running
`- 2:0:4:2 sdbf 67:144 active undef running
mpathag (3600605b00dee874024d75438b8e61213) dm-39 Lenovo,RAID 530-8i
size=223G features='0' hwhandler='0' wp=rw
`-+- policy='service-time 0' prio=0 status=active
`- 0:2:0:0 sda  8:0    active undef running
mpatha (360050762198c1fc218000000520000ff) dm-0 IBM,FlashSystem-9840
size=120G features='0' hwhandler='0' wp=rw
`-+- policy='round-robin 0' prio=0 status=active
|- 1:0:0:0 sdb  8:16   active undef running
|- 2:0:5:0 sdbj 67:208 active undef running
|- 1:0:1:0 sdg  8:96   active undef running
`- 2:0:7:0 sdbu 68:128 active undef running
ilx21r22r_16G_d_1 (36005076b19bcb49b180000004c000062) dm-15 IBM,FlashSystem-9840
size=5.0G features='0' hwhandler='0' wp=rw
`-+- policy='service-time 0' prio=0 status=active
|- 1:0:4:1 sdy  65:128 active undef running
|- 1:0:5:1 sdae 65:224 active undef running
|- 2:0:3:1 sday 67:32  active undef running
`- 2:0:6:1 sdbp 68:48  active undef running
ilx22r1s_b0 (360050762198c1fc21800000030000108) dm-1 IBM,FlashSystem-9840
size=65G features='0' hwhandler='0' wp=rw
`-+- policy='service-time 0' prio=0 status=active
|- 1:0:0:1 sdc  8:32   active undef running
|- 1:0:1:1 sdh  8:112  active undef running
|- 2:0:5:1 sdbk 67:224 active undef running
`- 2:0:7:1 sdbv 68:144 active undef running
FC8G_D1 (36005076119909fc118000000390001c7) dm-9 IBM,FlashSystem-9840
size=3.0G features='0' hwhandler='0' wp=rw
`-+- policy='service-time 0' prio=0 status=active
|- 1:0:2:1 sdm  8:192  active undef running
|- 1:0:3:1 sds  65:32  active undef running
|- 2:0:2:1 sdas 66:192 active undef running
`- 2:0:4:1 sdbe 67:128 active undef running
ilx21r22r_16G_d_0 (36005076b19bcb49b180000004b000061) dm-14 IBM,FlashSystem-9840
size=5.0G features='0' hwhandler='0' wp=rw
`-+- policy='service-time 0' prio=0 status=active
|- 1:0:4:0 sdx  65:112 active undef running
|- 1:0:5:0 sdad 65:208 active undef running
|- 2:0:3:0 sdax 67:16  active undef running
`- 2:0:6:0 sdbo 68:32  active undef running
ilx21r22r_8G_d_7 (36005076b19bcb49b1800000052000068) dm-33 IBM,FlashSystem-9840
size=5.0G features='0' hwhandler='0' wp=rw
`-+- policy='service-time 0' prio=0 status=active
|- 3:0:4:5 sdcw 70:64  active undef running
|- 3:0:3:5 sdcq 69:224 active undef running
|- 4:0:1:5 sddm 71:64  active undef running
`- 4:0:4:5 sddy 128:0  active undef running
FC8G_D0 (36005076119909fc118000000330001c6) dm-8 IBM,FlashSystem-9840
size=3.0G features='0' hwhandler='0' wp=rw
`-+- policy='service-time 0' prio=0 status=active
|- 1:0:2:0 sdl  8:176  active undef running
|- 1:0:3:0 sdr  65:16  active undef running
|- 2:0:2:0 sdar 66:176 active undef running
`- 2:0:4:0 sdbd 67:112 active undef running
ilx21r22r_8G_d_6 (36005076b19bcb49b1800000051000067) dm-32 IBM,FlashSystem-9840
size=5.0G features='0' hwhandler='0' wp=rw
`-+- policy='service-time 0' prio=0 status=active
|- 3:0:4:4 sdcv 70:48  active undef running
|- 3:0:3:4 sdcp 69:208 active undef running
|- 4:0:1:4 sddl 71:48  active undef running
`- 4:0:4:4 sddx 71:240 active undef running
9840Q_16G_d_1 (3600507639281b4a3900000006e0000ad) dm-35 IBM,FlashSystem-9840
size=4.0G features='0' hwhandler='0' wp=rw
`-+- policy='service-time 0' prio=0 status=active
|- 3:0:8:1 sdcy 70:96  active undef running
|- 3:0:9:1 sdda 70:128 active undef running
|- 4:0:6:1 sdea 128:32 active undef running
`- 4:0:7:1 sdec 128:64 active undef running
ilx21r22r_8G_d_5 (36005076b19bcb49b1800000050000066) dm-31 IBM,FlashSystem-9840
size=5.0G features='0' hwhandler='0' wp=rw
`-+- policy='service-time 0' prio=0 status=active
|- 3:0:4:3 sdcu 70:32  active undef running
|- 3:0:3:3 sdco 69:192 active undef running
|- 4:0:1:3 sddk 71:32  active undef running
`- 4:0:4:3 sddw 71:224 active undef running
FC16G_2_D2 (36005076119909fc118000000ff0001d7) dm-24 IBM,FlashSystem-9840
size=3.0G features='0' hwhandler='0' wp=rw
`-+- policy='service-time 0' prio=0 status=active
|- 3:0:1:2 sdcb 68:240 active undef running
|- 3:0:2:2 sdch 69:80  active undef running
|- 4:0:0:2 sddd 70:176 active undef running
`- 4:0:2:2 sddp 71:112 active undef running
9840Q_16G_d_0 (3600507639281b4a3900000006d0000ac) dm-34 IBM,FlashSystem-9840
size=4.0G features='0' hwhandler='0' wp=rw
`-+- policy='service-time 0' prio=0 status=active
|- 3:0:8:0 sdcx 70:80  active undef running
|- 3:0:9:0 sdcz 70:112 active undef running
|- 4:0:6:0 sddz 128:16 active undef running
`- 4:0:7:0 sdeb 128:48 active undef running
FC16G_2_D1 (36005076119909fc118000000fe0001d6) dm-23 IBM,FlashSystem-9840
size=3.0G features='0' hwhandler='0' wp=rw
`-+- policy='service-time 0' prio=0 status=active
|- 3:0:1:1 sdca 68:224 active undef running
|- 3:0:2:1 sdcg 69:64  active undef running
|- 4:0:0:1 sddc 70:160 active undef running
`- 4:0:2:1 sddo 71:96  active undef running
FC16G_2_D0 (36005076119909fc118000000fd0001d5) dm-22 IBM,FlashSystem-9840
size=3.0G features='0' hwhandler='0' wp=rw
`-+- policy='service-time 0' prio=0 status=active
|- 3:0:1:0 sdbz 68:208 active undef running
|- 3:0:2:0 sdcf 69:48  active undef running
|- 4:0:0:0 sddb 70:144 active undef running
`- 4:0:2:0 sddn 71:80  active undef running
ilx21r22r_8G_d_2 (36005076b19bcb49b180000004800005e) dm-30 IBM,FlashSystem-9840
size=5.0G features='0' hwhandler='0' wp=rw
`-+- policy='service-time 0' prio=0 status=active
|- 3:0:4:2 sdct 70:16  active undef running
|- 3:0:3:2 sdcn 69:176 active undef running
|- 4:0:1:2 sddj 71:16  active undef running
`- 4:0:4:2 sddv 71:208 active undef running
FC16G_1_D2 (36005076119909fc118000000fa0001d2) dm-27 IBM,FlashSystem-9840
size=3.0G features='0' hwhandler='0' wp=rw
`-+- policy='service-time 0' prio=0 status=active
|- 3:0:1:5 sdce 69:32  active undef running
|- 3:0:2:5 sdck 69:128 active undef running
|- 4:0:0:5 sddg 70:224 active undef running
`- 4:0:2:5 sdds 71:160 active undef running
ilx21r22r_16G_d_7 (36005076b19bcb49b180000005b000071) dm-19 IBM,FlashSystem-9840
size=5.0G features='0' hwhandler='0' wp=rw
`-+- policy='service-time 0' prio=0 status=active
|- 1:0:4:5 sdac 65:192 active undef running
|- 1:0:5:5 sdai 66:32  active undef running
|- 2:0:3:5 sdbc 67:96  active undef running
`- 2:0:6:5 sdbt 68:112 active undef running
FC8G_D7 (36005076119909fc118000000a80001cd) dm-12 IBM,FlashSystem-9840
size=3.0G features='0' hwhandler='0' wp=rw
`-+- policy='service-time 0' prio=0 status=active
|- 1:0:2:5 sdp  8:240  active undef running
|- 1:0:3:5 sdv  65:80  active undef running
|- 2:0:2:5 sdav 66:240 active undef running
`- 2:0:4:5 sdbh 67:176 active undef running
ilx21r22r_8G_d_1 (36005076b19bcb49b180000004700005d) dm-29 IBM,FlashSystem-9840
size=5.0G features='0' hwhandler='0' wp=rw
`-+- policy='service-time 0' prio=0 status=active
|- 3:0:4:1 sdcs 70:0   active undef running
|- 3:0:3:1 sdcm 69:160 active undef running
|- 4:0:1:1 sddi 71:0   active undef running
`- 4:0:4:1 sddu 71:192 active undef running
FC16G_1_D1 (36005076119909fc118000000f90001d1) dm-26 IBM,FlashSystem-9840
size=3.0G features='0' hwhandler='0' wp=rw
`-+- policy='service-time 0' prio=0 status=active
|- 3:0:1:4 sdcd 69:16  active undef running
|- 3:0:2:4 sdcj 69:112 active undef running
|- 4:0:0:4 sddf 70:208 active undef running
`- 4:0:2:4 sddr 71:144 active undef running
ilx21r22r_16G_d_6 (36005076b19bcb49b180000005a000070) dm-18 IBM,FlashSystem-9840
size=5.0G features='0' hwhandler='0' wp=rw
`-+- policy='service-time 0' prio=0 status=active
|- 1:0:4:4 sdab 65:176 active undef running
|- 1:0:5:4 sdah 66:16  active undef running
|- 2:0:3:4 sdbb 67:80  active undef running
`- 2:0:6:4 sdbs 68:96  active undef running
ilx21r22r_fence (360050762198c1fc2180000005f00012d) dm-4 IBM,FlashSystem-9840
size=2.0G features='0' hwhandler='0' wp=rw
`-+- policy='service-time 0' prio=0 status=active
|- 1:0:0:4 sdf  8:80   active undef running
|- 1:0:1:4 sdk  8:160  active undef running
|- 2:0:5:4 sdbn 68:16  active undef running
`- 2:0:7:4 sdby 68:192 active undef running
FC8G_D6 (36005076119909fc118000000780002fe) dm-13 IBM,FlashSystem-9840
size=3.0G features='0' hwhandler='0' wp=rw
`-+- policy='service-time 0' prio=0 status=active
|- 1:0:2:6 sdq  65:0   active undef running
|- 1:0:3:6 sdw  65:96  active undef running
|- 2:0:2:6 sdaw 67:0   active undef running
`- 2:0:4:6 sdbi 67:192 active undef running

------- Comment From shlyi.com 2019-12-30 02:33 EDT-------
(In reply to comment #27)
> 1.What result same test on host only ? please execute it some times.
> I think the host should have same issue. it maybe have lower frequency.
> 2.Does it can recover when hit io-error on guest?
> 3.What do your mean previous rhel? do you mean it is regression issue?
> What is the previous revision of kernel and qemu?

2, io-error reported in this issue won't break the guest
3, when the host and the guest are in os  rhel 7.7, we don't have this kind of issue.
host ilx21r:  rhel 7.7, 3.10.0-1060.el7.x86_64
guest ilx21r1r: rhel 7.7, 3.10.0-1062.el7.x86_64

------- Comment From shlyi.com 2019-12-30 03:38 EDT-------
(In reply to comment #29)
> (In reply to IBM Bug Proxy from comment #24)
> > (In reply to comment #27)
> > > 1.What result same test on host only ? please execute it some times.
> > > I think the host should have same issue. it maybe have lower frequency.
> > > 2.Does it can recover when hit io-error on guest?
> > >
> > > 3.What do your mean previous rhel? do you mean it is regression issue?
> > > What is the previous revision of kernel and qemu?
> > 2, io-error reported in this issue won't break the guest
> If this issue can be recovered finally, I think it is expected result.
> It maybe related to performance.
> Please refer to https://access.redhat.com/solutions/137073
> Could you please collect /var/log/messages and dmesg in host and guest when
> error happened ?
> > 3, when the host and the guest are in os  rhel 7.7, we don't have this kind
> > of issue.
> > host ilx21r:  rhel 7.7, 3.10.0-1060.el7.x86_64
> > guest ilx21r1r: rhel 7.7, 3.10.0-1062.el7.x86_64

I've modified the /etc/mulpath.conf file as that link suggested, let's see if the issue can be solved by this way.

/var/log/messages has already uploaded to the attachment, and I've also uploaded the "sosreport", can you have a check to see if it can cover the config info you need for "dmesg"?

------- Comment From shlyi.com 2019-12-30 21:00 EDT-------
(In reply to comment #31)
> The attachment of message looks like html file, and how to extract your xz
> file ?
> root@QW ~/Downloads # unxz sosreport-ilx21r-2019-12-03-mksahnv.tar.xz
> unxz: sosreport-ilx21r-2019-12-03-mksahnv.tar.xz: File format not recognized

Hello, you can extract it as below:
# tar -xvJf sosreport-ilx21r-2019-12-03-mksahnv.tar.xz

------- Comment From shlyi.com 2019-12-30 21:49 EDT-------
(In reply to comment #35)
> (In reply to IBM Bug Proxy from comment #28)
> > (In reply to comment #31)
> > > The attachment of message looks like html file, and how to extract your xz
> > > file ?
> > > root@QW ~/Downloads # unxz sosreport-ilx21r-2019-12-03-mksahnv.tar.xz
> > > unxz: sosreport-ilx21r-2019-12-03-mksahnv.tar.xz: File format not recognized
> > Hello, you can extract it as below:
> > # tar -xvJf sosreport-ilx21r-2019-12-03-mksahnv.tar.xz
> root@QW ~/Downloads # tar -xvJf sosreport-ilx21r-2019-12-03-mksahnv.tar.xz
> xz: (stdin): File format not recognized
> tar: Child returned status 1
> tar: Error is not recoverable: exiting now
> root@QW ~/Downloads # file sosreport-ilx21r-2019-12-03-mksahnv.tar.xz
> sosreport-ilx21r-2019-12-03-mksahnv.tar.xz: HTML document, ASCII text, with
> very long lines
> Please double check the message and sos file you uploaded..

Sorry for the confusion. I've uploaded it again, this should be good, I've verified it.

------- Comment From shlyi.com 2019-12-31 02:03 EDT-------
(In reply to comment #40)
> I suggest to do same testing on host only several times to check have same
> issue?
> if it exist, the issue not related to qemu.

I'll try it when I have the resource to do it.

------- Comment From shlyi.com 2019-12-31 03:11 EDT-------
(In reply to comment #41)
> (In reply to comment #40)
> > I suggest to do same testing on host only several times to check have same
> > issue?
> > if it exist, the issue not related to qemu.
> I'll try it when I have the resource to do it.

Actually, we do have a standalone host running rhel 8.1 and running io on one of  the storage ilx21r also being using, and from the io log I've checked, it did not encounter the issue.

[root@ilx37s archive]# uname -a
Linux ilx37s.tuc.stglabs.ibm.com 4.18.0-147.el8.x86_64 #1 SMP Thu Sep 26 15:52:44 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
[root@ilx37s archive]# cat /etc/redhat-release
Red Hat Enterprise Linux release 8.1 (Ootpa)

------- Comment From shlyi.com 2020-01-02 00:44 EDT-------
(In reply to comment #43)
> (In reply to IBM Bug Proxy from comment #20)
> > (In reply to comment #22)
> > > More questions:
> > > 1 What the guest behavior when it hit io-error, will it change to "pause"
> > > status?
> > > 2 You may set error_policy='stop' for the guest to see what happen ?
> > > 3 In my understanding, it should be expect result have io error when active
> > > path is broken,
> > > am i right?  the point is it may back to if other path may work.
> > > 4 if you may set error_policy='stop' , the guest will change to pause status
> > > when hit io error, if
> > > this issue is fixed. the guest can be back to running after we ask for
> > > continue running. that is expected result.
> > > For example:
> > > <disk type='block' device='lun' sgio='filtered' snapshot='no'>
> > > <driver name='qemu' type='raw' cache='none' error_policy='stop' io='native'/>
> > > <source dev='/dev/mapper/360014059b31089df5114cbd830320c2b'/>
> > > <backingStore/>
> > > <target dev='sdb' bus='scsi'/>
> > > <alias name='scsi0-0-0-1'/>
> > > <address type='drive' controller='0' bus='0' target='0' unit='1'/>
> > > </disk>
> > Hello,
> > Please see my last comments for its expecting behavior, "we expect there is
> > no error in the io log for each lun, which would break only half of the
> > paths when running ei".
> > While below is the log when io hit the error, which we think the guest
> > mishandled the issue:
> > /var/log/message of ilx21r:
> > Dec  3 01:01:07 ilx21r kernel: sd 3:0:4:0: rejecting I/O to offline device
> > /var/log/message of ilx21r1r:
> > Dec  3 01:01:07 ilx21r1r kernel: print_req_error: I/O error, dev sde, sector
> > 135448 flags 801
> >
> > I don't understand why we should " set error_policy='stop' ", and how to do
> > it.
> 1. What the behavior of your script "StorageSideCablePull" ? is it dedicated
> to your ENV?
> 2. It looks like the host detect the io error, so the guest report io-error.
> That should be expected ,right?

1, Yes, it dedicate to our env, it will simulate the cable pull behavior on the storage side by breaking/recovering the cable connection between the switch and the storage.

2, as you can see from the /var/log/message, the host won't report io error, just report part of paths of the lun to be offline.

------- Comment From shlyi.com 2020-01-02 21:02 EDT-------
(In reply to comment #45)
> (In reply to IBM Bug Proxy from comment #24)
> > (In reply to comment #27)
> > > 1.What result same test on host only ? please execute it some times.
> > > I think the host should have same issue. it maybe have lower frequency.
> > > 2.Does it can recover when hit io-error on guest?
> > >
> > > 3.What do your mean previous rhel? do you mean it is regression issue?
> > > What is the previous revision of kernel and qemu?
> > 2, io-error reported in this issue won't break the guest
> > 3, when the host and the guest are in os  rhel 7.7, we don't have this kind
> > of issue.
> > host ilx21r:  rhel 7.7, 3.10.0-1060.el7.x86_64
> > guest ilx21r1r: rhel 7.7, 3.10.0-1062.el7.x86_64
>
> 1. I suggest using mentioned guest(7.7) do testing:
>
> If issue exist, it may prove this issue does not related to the guest
> version.
> host 8.1 + guest 7.7
> host 7.7 + guest 8.1
>
> 2. There are many disks in guest, is it possible just attach one data disk
> in your guest to check whether issue exist or not,
> it may simplify test scenario to help to address issue ?

1, Could we focus on the env which having the issue, I am afraid we don't have resource and time to test all the config combination which may not have the issue;

2, I can try this one, but we still need to wait to another turn to run this case. Before that, could you explain what the result could tell for "having/ not having issue when only one data lun runing io"?

Besides, I've already modified the parameter according to article "https://access.redhat.com/solutions/137073", I'd like to verify if this workaround could work firstly before trying anything else.

------- Comment From shlyi.com 2020-01-03 01:11 EDT-------
(In reply to comment #47)
> (In reply to IBM Bug Proxy from comment #41)
> > (In reply to comment #45)
> > > (In reply to IBM Bug Proxy from comment #24)
> > > > (In reply to comment #27)
> > > > > 1.What result same test on host only ? please execute it some times.
> > > > > I think the host should have same issue. it maybe have lower frequency.
> > > > > 2.Does it can recover when hit io-error on guest?
> > > > >
> > > > > 3.What do your mean previous rhel? do you mean it is regression issue?
> > > > > What is the previous revision of kernel and qemu?
> > > > 2, io-error reported in this issue won't break the guest
> > > > 3, when the host and the guest are in os  rhel 7.7, we don't have this kind
> > > > of issue.
> > > > host ilx21r:  rhel 7.7, 3.10.0-1060.el7.x86_64
> > > > guest ilx21r1r: rhel 7.7, 3.10.0-1062.el7.x86_64
> > > 1. I suggest using mentioned guest(7.7) do testing:
> > > If issue exist, it may prove this issue does not related to the guest
> > > version.
> > > host 8.1 + guest 7.7
> > > host 7.7 + guest 8.1
> > > 2. There are many disks in guest, is it possible just attach one data disk
> > > in your guest to check whether issue exist or not,
> > > it may simplify test scenario to help to address issue ?
> > Hello,
> > 1, Could we focus on the env which having the issue, I am afraid we don't
> > have resource and time to test all the config combination which may not have
> > the issue;
>
> From your log, it display all disks have same issue, so i want to confirm
> using simple configuration to reproduce this issue.
>
> [root@ilx21r1r ~]# cat /opt/ilab/msdi/log/disktest/disktest.sd* |grep error
> | 2019/12/03-00:51:54 | ERROR | 26388 | v1.4.2.1 | /fc/dev/sda/test | Thread
> 0: fsync error = 5
> | 2019/12/03-04:21:56 | ERROR | 1668 | v1.4.2.1 | /fc/dev/sda/test | Thread
> 0: fsync error = 5
> | 2019/12/03-07:21:58 | ERROR | 9815 | v1.4.2.1 | /fc/dev/sda/test | Thread
> 0: fsync error = 5
> | 2019/12/03-08:21:59 | ERROR | 13233 | v1.4.2.1 | /fc/dev/sda/test | Thread
> 0: fsync error = 5
> | 2019/12/03-00:39:48 | ERROR | 26358 | v1.4.2.1 | /fc/dev/sdb/test | Thread
> 0: fsync error = 30
> | 2019/12/03-00:39:49 | ERROR | 26352 | v1.4.2.1 | /fc/dev/sdc/test | Thread
> 0: fsync error = 30
> | 2019/12/03-00:51:52 | ERROR | 26336 | v1.4.2.1 | /fc/dev/sdd/test | Thread
> 0: fsync error = 5
> | 2019/12/03-04:21:55 | ERROR | 1632 | v1.4.2.1 | /fc/dev/sdd/test | Thread
> 0: fsync error = 5
> | 2019/12/03-07:21:57 | ERROR | 9790 | v1.4.2.1 | /fc/dev/sdd/test | Thread
> 0: fsync error = 5
> | 2019/12/03-08:21:58 | ERROR | 13203 | v1.4.2.1 | /fc/dev/sdd/test | Thread
> 0: fsync error = 5
> | 2019/12/03-01:01:08 | ERROR | 26989 | v1.4.2.1 | /fc/dev/sde/test | Thread
> 0: fsync error = 30
> | 2019/12/03-00:39:48 | ERROR | 26342 | v1.4.2.1 | /fc/dev/sdg/test | Thread
> 0: fsync error = 30
> | 2019/12/03-03:10:55 | ERROR | 31641 | v1.4.2.1 | /fc/dev/sdh/test | Thread
> 0: fsync error = 30
> | 2019/12/03-03:10:55 | ERROR | 31647 | v1.4.2.1 | /fc/dev/sdi/test | Thread
> 0: fsync error = 30
> | 2019/12/03-03:10:55 | ERROR | 31659 | v1.4.2.1 | /fc/dev/sdj/test | Thread
> 0: fsync error = 30
> | 2019/12/03-03:10:55 | ERROR | 31635 | v1.4.2.1 | /fc/dev/sdk/test | Thread
> 0: fsync error = 30
> | 2019/12/03-03:10:55 | ERROR | 31653 | v1.4.2.1 | /fc/dev/sdl/test | Thread
> 0: fsync error = 30
> | 2019/12/03-00:39:48 | ERROR | 26370 | v1.4.2.1 | /fc/dev/sdm/test | Thread
> 0: fsync error = 30
> | 2019/12/03-03:10:55 | ERROR | 31617 | v1.4.2.1 | /fc/dev/sdn/test | Thread
> 0: fsync error = 30
> > 2, I can try this one, but we still need to wait to another turn to run this
> > case. Before that, could you explain what the result could tell for "having/
> > not having issue when only one data lun runing io"?
> > Besides, I've already modified the parameter according to article
> > "https://access.redhat.com/solutions/137073", I'd like to verify if this
> > workaround could work firstly before trying anything else.

1? /fc/dev/sdf didn't show up the error info;

------- Comment From shlyi.com 2020-03-31 05:58 EDT-------
FYI, suggestion in article "https://access.redhat.com/solutions/137073" couldn't solve this issue.

Rhel 8.2 has the similar issue, please look at issue "https://bugzilla.linux.ibm.com/show_bug.cgi?id=184579" for the detail info.

------- Comment From shlyi.com 2020-04-16 04:32 EDT-------
(In reply to comment #51)
> Hanns, bug 1817087 and 1779758 seems related to this one. Are they sharing
> the same environment and related use-case?
>
> We're having trouble reproducing this because of the specific environment
> and test-case. Do you have a way to reproduce it using standard open-source
> tools or manual steps?
>
> The best analysis seems to be from
> https://bugzilla.redhat.com/show_bug.cgi?id=1779758#c21, which I quote:
>
> "so my suspicion would be a memory corruption induced crash involving the
> srb_t in the
> qla2xxx driver, given the number of other bug reports we have had, but
> without a Call Trace
> or a crash dump we cannot be sure.  In addition, note that IBM says this
> persists in 8.2,
> although we do not have log files from that."
>
> Do you think it applies here as well? Thanks.

For reproducing this defect, you can refer to comment 14 of defect: https://bugzilla.linux.ibm.com/show_bug.cgi?id=183977, it may help you reproduce this issue;
I don't quite understand analysis, what's "srb_t", I cannot be sure it can apply. But I can told you that Rhel 7.8, Rhel 8.0, Rhel 8.1 and Rhel 8.2 are having similar issue based on our test result.

------- Comment From shlyi.com 2020-04-20 22:11 EDT-------
(In reply to comment #57)
> (In reply to IBM Bug Proxy from comment #4)
> > Created attachment 1644651 [details]
> > /var/log/messages of ilx21r
>
> This attachment does not contain /var/log/messages, it appears to contain
> Bugzilla XML.

Hello,

Please look at attachment " /var/log/messages of ilx21r_Dec3 ". Thanks.

------- Comment From shlyi.com 2020-06-28 00:16 EDT-------
(In reply to comment #67)
> We are investigating and have a possible reproduction of this issue on RHEL8.
>
> At the present time, we believe it may be related to the use of SCSI
> passthrough
> in QEMU with an underlying multipath device on the hypervisor.
>
> If possible, reconfigure the guest VM to avoid the use of SCSI passthrough.
> i.e. instead of XML that uses device="lun":
>
> <disk type="block" device="lun">
> <driver name="qemu" type="raw"/>
> <source dev="/dev/mapper/9840Q_8G_d_0"/>
> <target dev="sdb" bus="scsi"/>
> <address type="drive" controller="0" bus="0" target="0" unit="1"/>
> </disk>
>
> use device='disk'  (The exact parameters of the underlying device and the
> PCI info would depend upon your configuration, this is only what we tested
> here, so you would probably need to do this with virt-manager):
>
> <disk type='block' device='disk'>
> <driver name='qemu' type='raw' cache='none' io='native'/>
> <source dev='/dev/mapper/9840Q_8G_d_0'/>
> <backingStore/>
> <target dev='vda' bus='virtio'/>
> <alias name='virtio-disk0'/>
> <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
> </disk>
>
> Unfortunately, due to authentication issues with our VPN, I cannot run the
> graphical virt-manager software on our lab machines so cannot give more
> specific
> instructions.

Hello,

Comment 19 IBM Bug Proxy 2020-10-21 19:44:42 UTC
------- Comment From shlyi.com 2019-12-17 21:12 EDT-------
(In reply to comment #14)
> There does not seem to be any useful information in the sosreport log files.
> Is it possible to obtain a crash dump of the guest OS ?  It looks like it
> just stopped.
> There is an incidental finding, the allocation failures while scanning the
> MegaRAID
> devices is a known issue which has been fixed.  I don't see how that caused
> your guest
> to crash though.
> Dec  2 02:17:32 ilx21r kernel: scsi host0: Avago SAS based MegaRAID driver
> Dec  2 02:17:32 ilx21r kernel: scsi_alloc_sdev: Allocation failure during
> SCSI scanning, some SCSI devices might not be configured

I've enabled "ulimit -c unlimited", but no file generated in /var/crash directory after the guest crashed again.

I've also done below config according to https://access.redhat.com/solutions/56021
# abrt-install-ccpp-hook install
# abrt-install-ccpp-hook is-installed; echo $?;
The second command should return 0 (hooks installed)
Ensure that this service is up and the ccpp hook to capture core dumps is enabled:
# service abrtd start
# service abrt-ccpp start

Please confirm what else should I configure to get the dump file, thanks.

------- Comment From shlyi.com 2019-12-18 21:39 EDT-------
(In reply to comment #18)
> Hello
> The crash here, are you saying the guest O/S is panicking.
> You are not talking about Qemu userspace cores right .
> We will need a sosreport to check your kdump configuration and then we can
> guide you to test
> and validate kdump.
> ftp dropbox.redhat.com
> anonymous ENTER
> cd incoming
> binary
> put 1779758.sosreport.xxxx
> Let us know when its there, we will correct any kdump issues, test kdump and
> then we should get a vmcore
> next time the guest panics.
> Regards
> Laurence

File "sosreport-ilx21r-2019-12-18-fdrvtfi.tar.xz" uploaded:

root@iltuc10-nfs:/home/eason/errlog/rhel8.1_guest_crash# ftp dropbox.redhat.com
Connected to origin-dropbox.redhat.com.
220-+---------------------------------------------------------------+
220-| ???????Welcome to Red Hat Global Support Services FTP! ???????|
220-| ??????????????????????????????????????????????????????????????|
220-| ?????Now you can upload files up to 250GB in size directly ???|
220-| ??to the Customer Portal. With this new capability, you can ??|
220-| ????manage everything in one place. You can start taking ?????|
220-| ???????advantage of this improved functionality now. ?????????|
220-| ??????????????????????????????????????????????????????????????|
220-| ???Access to dropbox.redhat.com and dropbox-ssl.redhat.com ???|
220-| ??will no longer be available on March 1, 2019. Please visit ?|
220-| ????https://access.redhat.com/solutions/2112 for details. ????|
220-+---------------------------------------------------------------+
220
Name (dropbox.redhat.com:root): anonymous
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> binary
200 Switching to Binary mode.
ftp> put sosreport-ilx21r-2019-12-18-fdrvtfi.tar.xz
local: sosreport-ilx21r-2019-12-18-fdrvtfi.tar.xz remote: sosreport-ilx21r-2019-12-18-fdrvtfi.tar.xz
200 PORT command successful. Consider using PASV.
553 Could not create file.
ftp> ls
200 PORT command successful. Consider using PASV.
550 Permission denied.

------- Comment From shlyi.com 2019-12-23 03:00 EDT-------
Done.

root@iltuc10-nfs:/home/eason/errlog/rhel8.1_guest_crash# ftp dropbox.redhat.com
Connected to origin-dropbox.redhat.com.
220-+---------------------------------------------------------------+
220-| ???????Welcome to Red Hat Global Support Services FTP! ???????|
220-| ??????????????????????????????????????????????????????????????|
220-| ?????Now you can upload files up to 250GB in size directly ???|
220-| ??to the Customer Portal. With this new capability, you can ??|
220-| ????manage everything in one place. You can start taking ?????|
220-| ???????advantage of this improved functionality now. ?????????|
220-| ??????????????????????????????????????????????????????????????|
220-| ???Access to dropbox.redhat.com and dropbox-ssl.redhat.com ???|
220-| ??will no longer be available on March 1, 2019. Please visit ?|
220-| ????https://access.redhat.com/solutions/2112 for details. ????|
220-+---------------------------------------------------------------+
220
Name (dropbox.redhat.com:root): anonymous
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> cd incoming
250 Directory successfully changed.
ftp> binary
200 Switching to Binary mode.
ftp> put sosreport-ilx21r-2019-12-18-fdrvtfi.tar.xz
local: sosreport-ilx21r-2019-12-18-fdrvtfi.tar.xz remote: sosreport-ilx21r-2019-12-18-fdrvtfi.tar.xz
200 PORT command successful. Consider using PASV.
150 Ok to send data.
226 File receive OK.
17823688 bytes sent in 5.59 secs (3.0399 MB/s)
> Hello
> You forgot to cd incoming, so file was not uploaded
> ftp dropbox.redhat.com
> anonymous ENTER
> cd incoming
> binary
> put 1779758.sosreport.xxxx
> 553 Could not create file.
> ftp> ls
> 200 PORT command successful. Consider using PASV.
> 550 Permission denied.
> Regards
> Laurence

Done.

root@iltuc10-nfs:/home/eason/errlog/rhel8.1_guest_crash# ftp dropbox.redhat.com
Connected to origin-dropbox.redhat.com.
220-+---------------------------------------------------------------+
220-| ???????Welcome to Red Hat Global Support Services FTP! ???????|
220-| ??????????????????????????????????????????????????????????????|
220-| ?????Now you can upload files up to 250GB in size directly ???|
220-| ??to the Customer Portal. With this new capability, you can ??|
220-| ????manage everything in one place. You can start taking ?????|
220-| ???????advantage of this improved functionality now. ?????????|
220-| ??????????????????????????????????????????????????????????????|
220-| ???Access to dropbox.redhat.com and dropbox-ssl.redhat.com ???|
220-| ??will no longer be available on March 1, 2019. Please visit ?|
220-| ????https://access.redhat.com/solutions/2112 for details. ????|
220-+---------------------------------------------------------------+
220
Name (dropbox.redhat.com:root): anonymous
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> cd incoming
250 Directory successfully changed.
ftp> binary
200 Switching to Binary mode.
ftp> put sosreport-ilx21r-2019-12-18-fdrvtfi.tar.xz
local: sosreport-ilx21r-2019-12-18-fdrvtfi.tar.xz remote: sosreport-ilx21r-2019-12-18-fdrvtfi.tar.xz
200 PORT command successful. Consider using PASV.
150 Ok to send data.
226 File receive OK.
17823688 bytes sent in 5.59 secs (3.0399 MB/s)

------- Comment From shlyi.com 2020-01-13 22:03 EDT-------
(In reply to comment #24)
> Hello
> Can we schedule a screen share so I can assist with getting the vmcore.
> Anytime after Wednesday morning should be good.
> I work USA Eastern from 9AM to 6PM.
> Regards
> Laurence Oberman

The time you provided do not work for me, I work in China time, so we have 11 hours time gap.
Would you please provide the steps so I can do it by myself?

------- Comment From shlyi.com 2020-03-31 06:01 EDT-------

------- Comment From chavez.com 2020-03-31 10:38 EDT-------
The mentioned LTC bug 184579 corresponds to Red Hat Bugzilla bug 1817087

------- Comment From shlyi.com 2020-06-04 06:53 EDT-------
> Any progress of obtaining a crash dump of the guest ?

Hello emilne,
1, Since nobody replied me after my comments at "2020-01-13 21:03:17 CST", I still am not able to collect the core dump for the guest.
2, We are testing Rhel 8.2, instead of Rhel 8.1, right now. Below is the current output for the command, I don't know if it meet your need. But if you look at my attachment named of "sosreport of ilx21r", after uncompressing it, you can find the multipath.conf at "sosreport-ilx21r-2019-12-18-fdrvtfi/etc/multipath.conf"
[root@ilx21r ~]# multipath -ll
FC16G_1_D0 (36005076119909fc118000000bf0001d0) dm-33 IBM,FlashSystem-9840
`-+- policy='service-time 0' prio=1 status=active
|- 3:0:5:3 sdco 69:192 active ready running
|- 3:0:7:3 sdcw 70:64  active ready running
|- 4:0:1:3 sdde 70:192 active ready running
`- 4:0:6:3 sdds 71:160 active ready running
ilx21r22r_8G_d_0 (36005076b19bcb49b180000004600005c) dm-24 IBM,FlashSystem-9840
`-+- policy='service-time 0' prio=1 status=active
|- 3:0:1:0 sdcf 69:48  active ready running
|- 3:0:0:0 sdbz 68:208 active ready running
|- 4:0:3:0 sddj 71:16  active ready running
`- 4:0:8:0 sddv 71:208 active ready running
mpathe (360050762198c1fc2180000005f00012d) dm-7 IBM,FlashSystem-9840
`-+- policy='service-time 0' prio=1 status=active
|- 1:0:0:4 sdf  8:80   active ready running
|- 1:0:9:4 sdam 66:96  active ready running
|- 2:0:0:4 sdar 66:176 active ready running
`- 2:0:5:4 sdbq 68:64  active ready running
ilx21r22r_16G_d_5 (36005076b19bcb49b180000005900006f) dm-13 IBM,FlashSystem-9840
`-+- policy='service-time 0' prio=1 status=active
|- 1:0:1:3 sdj  8:144  active ready running
|- 1:0:3:3 sdp  8:240  active ready running
|- 2:0:3:3 sdbd 67:112 active ready running
`- 2:0:8:3 sdbu 68:128 active ready running
FC8G_D5 (36005076119909fc118000000730001cb) dm-19 IBM,FlashSystem-9840
`-+- policy='service-time 0' prio=1 status=active
|- 1:0:5:3 sdv  65:80  active ready running
|- 1:0:8:3 sdaf 65:240 active ready running
|- 2:0:1:3 sdav 66:240 active ready running
`- 2:0:4:3 sdbj 67:208 active ready running
9840Q_8G_d_1 (3600507639281b4a3900000006c0000ab) dm-23 IBM,FlashSystem-9840
`-+- policy='service-time 0' prio=1 status=active
|- 1:0:6:1 sdz  65:144 active ready running
|- 1:0:7:1 sdab 65:176 active ready running
|- 2:0:2:1 sdaz 67:48  active ready running
`- 2:0:9:1 sdby 68:192 active ready running
ilx21r_22r_kvmcfg (360050762198c1fc21800000041000109) dm-6 IBM,FlashSystem-9840
`-+- policy='service-time 0' prio=1 status=active
|- 1:0:0:3 sde  8:64   active ready running
|- 1:0:9:3 sdal 66:80  active ready running
|- 2:0:0:3 sdaq 66:160 active ready running
`- 2:0:5:3 sdbp 68:48  active ready running
9840Q_8G_d_0 (3600507639281b4a3900000006b0000aa) dm-22 IBM,FlashSystem-9840
`-+- policy='service-time 0' prio=1 status=active
|- 1:0:6:0 sdy  65:128 active ready running
|- 1:0:7:0 sdaa 65:160 active ready running
|- 2:0:2:0 sday 67:32  active ready running
`- 2:0:9:0 sdbx 68:176 active ready running
mpathah (3600605b00dee874024d75438b8e61213) dm-38 Lenovo,RAID 530-8i
`-+- policy='service-time 0' prio=1 status=active
`- 0:2:0:0 sda  8:0    active ready running
ilx21r22r_16G_d_2 (36005076b19bcb49b180000004d000063) dm-12 IBM,FlashSystem-9840
`-+- policy='service-time 0' prio=1 status=active
|- 1:0:1:2 sdi  8:128  active ready running
|- 1:0:3:2 sdo  8:224  active ready running
|- 2:0:3:2 sdbc 67:96  active ready running
`- 2:0:8:2 sdbt 68:112 active ready running
`-+- policy='service-time 0' prio=1 status=active
|- 1:0:0:2 sdd  8:48   active ready running
|- 1:0:9:2 sdak 66:64  active ready running
|- 2:0:0:2 sdap 66:144 active ready running
`- 2:0:5:2 sdbo 68:32  active ready running
FC8G_D2 (36005076119909fc1180000003a0001c8) dm-18 IBM,FlashSystem-9840
`-+- policy='service-time 0' prio=1 status=active
|- 1:0:5:2 sdu  65:64  active ready running
|- 1:0:8:2 sdae 65:224 active ready running
|- 2:0:1:2 sdau 66:224 active ready running
`- 2:0:4:2 sdbi 67:192 active ready running
`-+- policy='service-time 0' prio=1 status=active
|- 1:0:0:0 sdb  8:16   active ready running
|- 1:0:9:0 sdai 66:32  active ready running
|- 2:0:0:0 sdan 66:112 active ready running
`- 2:0:5:0 sdbm 68:0   active ready running
ilx21r22r_16G_d_1 (36005076b19bcb49b180000004c000062) dm-10 IBM,FlashSystem-9840
`-+- policy='service-time 0' prio=1 status=active
|- 1:0:1:1 sdh  8:112  active ready running
|- 1:0:3:1 sdn  8:208  active ready running
|- 2:0:3:1 sdbb 67:80  active ready running
`- 2:0:8:1 sdbs 68:96  active ready running
`-+- policy='service-time 0' prio=1 status=active
|- 1:0:0:1 sdc  8:32   active ready running
|- 1:0:9:1 sdaj 66:48  active ready running
|- 2:0:0:1 sdao 66:128 active ready running
`- 2:0:5:1 sdbn 68:16  active ready running
FC8G_D1 (36005076119909fc118000000390001c7) dm-17 IBM,FlashSystem-9840
`-+- policy='service-time 0' prio=1 status=active
|- 1:0:5:1 sdt  65:48  active ready running
|- 1:0:8:1 sdad 65:208 active ready running
|- 2:0:1:1 sdat 66:208 active ready running
`- 2:0:4:1 sdbh 67:176 active ready running
ilx21r22r_16G_d_0 (36005076b19bcb49b180000004b000061) dm-9 IBM,FlashSystem-9840
`-+- policy='service-time 0' prio=1 status=active
|- 1:0:1:0 sdg  8:96   active ready running
|- 1:0:3:0 sdm  8:192  active ready running
|- 2:0:3:0 sdba 67:64  active ready running
`- 2:0:8:0 sdbr 68:80  active ready running
ilx21r22r_8G_d_7 (36005076b19bcb49b1800000052000068) dm-29 IBM,FlashSystem-9840
`-+- policy='service-time 0' prio=1 status=active
|- 3:0:1:5 sdck 69:128 active ready running
|- 3:0:0:5 sdce 69:32  active ready running
|- 4:0:3:5 sddo 71:96  active ready running
`- 4:0:8:5 sdea 128:32 active ready running
FC8G_D0 (36005076119909fc118000000330001c6) dm-16 IBM,FlashSystem-9840
`-+- policy='service-time 0' prio=1 status=active
|- 1:0:5:0 sds  65:32  active ready running
|- 1:0:8:0 sdac 65:192 active ready running
|- 2:0:1:0 sdas 66:192 active ready running
`- 2:0:4:0 sdbg 67:160 active ready running
ilx21r22r_8G_d_6 (36005076b19bcb49b1800000051000067) dm-28 IBM,FlashSystem-9840
`-+- policy='service-time 0' prio=1 status=active
|- 3:0:1:4 sdcj 69:112 active ready running
|- 3:0:0:4 sdcd 69:16  active ready running
|- 4:0:3:4 sddn 71:80  active ready running
`- 4:0:8:4 sddz 128:16 active ready running
9840Q_16G_d_1 (3600507639281b4a3900000006e0000ad) dm-37 IBM,FlashSystem-9840
`-+- policy='service-time 0' prio=1 status=active
|- 3:0:6:1 sdcs 70:0   active ready running
|- 3:0:9:1 sdda 70:128 active ready running
|- 4:0:2:1 sddi 71:0   active ready running
`- 4:0:9:1 sdec 128:64 active ready running
FC16G_2_D2 (36005076119909fc118000000ff0001d7) dm-32 IBM,FlashSystem-9840
`-+- policy='service-time 0' prio=1 status=active
|- 3:0:5:2 sdcn 69:176 active ready running
|- 3:0:7:2 sdcv 70:48  active ready running
|- 4:0:1:2 sddd 70:176 active ready running
`- 4:0:6:2 sddr 71:144 active ready running
ilx21r22r_8G_d_5 (36005076b19bcb49b1800000050000066) dm-27 IBM,FlashSystem-9840
`-+- policy='service-time 0' prio=1 status=active
|- 3:0:1:3 sdci 69:96  active ready running
|- 3:0:0:3 sdcc 69:0   active ready running
|- 4:0:3:3 sddm 71:64  active ready running
`- 4:0:8:3 sddy 128:0  active ready running
9840Q_16G_d_0 (3600507639281b4a3900000006d0000ac) dm-36 IBM,FlashSystem-9840
`-+- policy='service-time 0' prio=1 status=active
|- 3:0:6:0 sdcr 69:240 active ready running
|- 3:0:9:0 sdcz 70:112 active ready running
|- 4:0:2:0 sddh 70:240 active ready running
`- 4:0:9:0 sdeb 128:48 active ready running
FC16G_2_D1 (36005076119909fc118000000fe0001d6) dm-31 IBM,FlashSystem-9840
`-+- policy='service-time 0' prio=1 status=active
|- 3:0:5:1 sdcm 69:160 active ready running
|- 3:0:7:1 sdcu 70:32  active ready running
|- 4:0:1:1 sddc 70:160 active ready running
`- 4:0:6:1 sddq 71:128 active ready running
FC16G_2_D0 (36005076119909fc118000000fd0001d5) dm-30 IBM,FlashSystem-9840
`-+- policy='service-time 0' prio=1 status=active
|- 3:0:5:0 sdcl 69:144 active ready running
|- 3:0:7:0 sdct 70:16  active ready running
|- 4:0:1:0 sddb 70:144 active ready running
`- 4:0:6:0 sddp 71:112 active ready running
FC16G_1_D2 (36005076119909fc118000000fa0001d2) dm-35 IBM,FlashSystem-9840
`-+- policy='service-time 0' prio=1 status=active
|- 3:0:5:5 sdcq 69:224 active ready running
|- 3:0:7:5 sdcy 70:96  active ready running
|- 4:0:1:5 sddg 70:224 active ready running
`- 4:0:6:5 sddu 71:192 active ready running
ilx21r22r_8G_d_2 (36005076b19bcb49b180000004800005e) dm-26 IBM,FlashSystem-9840
`-+- policy='service-time 0' prio=1 status=active
|- 3:0:1:2 sdch 69:80  active ready running
|- 3:0:0:2 sdcb 68:240 active ready running
|- 4:0:3:2 sddl 71:48  active ready running
`- 4:0:8:2 sddx 71:240 active ready running
ilx21r22r_16G_d_7 (36005076b19bcb49b180000005b000071) dm-15 IBM,FlashSystem-9840
`-+- policy='service-time 0' prio=1 status=active
|- 1:0:1:5 sdl  8:176  active ready running
|- 1:0:3:5 sdr  65:16  active ready running
|- 2:0:3:5 sdbf 67:144 active ready running
`- 2:0:8:5 sdbw 68:160 active ready running
FC8G_D7 (36005076119909fc118000000a80001cd) dm-20 IBM,FlashSystem-9840
`-+- policy='service-time 0' prio=1 status=active
|- 1:0:5:5 sdw  65:96  active ready running
|- 1:0:8:5 sdag 66:0   active ready running
|- 2:0:1:5 sdaw 67:0   active ready running
`- 2:0:4:5 sdbk 67:224 active ready running
FC16G_1_D1 (36005076119909fc118000000f90001d1) dm-34 IBM,FlashSystem-9840
`-+- policy='service-time 0' prio=1 status=active
|- 3:0:5:4 sdcp 69:208 active ready running
|- 3:0:7:4 sdcx 70:80  active ready running
|- 4:0:1:4 sddf 70:208 active ready running
`- 4:0:6:4 sddt 71:176 active ready running
ilx21r22r_8G_d_1 (36005076b19bcb49b180000004700005d) dm-25 IBM,FlashSystem-9840
`-+- policy='service-time 0' prio=1 status=active
|- 3:0:1:1 sdcg 69:64  active ready running
|- 3:0:0:1 sdca 68:224 active ready running
|- 4:0:3:1 sddk 71:32  active ready running
`- 4:0:8:1 sddw 71:224 active ready running
ilx21r22r_16G_d_6 (36005076b19bcb49b180000005a000070) dm-14 IBM,FlashSystem-9840
`-+- policy='service-time 0' prio=1 status=active
|- 1:0:1:4 sdk  8:160  active ready running
|- 1:0:3:4 sdq  65:0   active ready running
|- 2:0:3:4 sdbe 67:128 active ready running
`- 2:0:8:4 sdbv 68:144 active ready running
FC8G_D6 (36005076119909fc118000000780002fe) dm-21 IBM,FlashSystem-9840
`-+- policy='service-time 0' prio=1 status=active
|- 1:0:5:6 sdx  65:112 active ready running
|- 1:0:8:6 sdah 66:16  active ready running
|- 2:0:1:6 sdax 67:16  active ready running
`- 2:0:4:6 sdbl 67:240 active ready running

------- Comment From shlyi.com 2020-06-04 06:58 EDT-------
Besides, please notice that we don't have env for Rhel 8.1 cluster right now. Your future need for this issue would better based on Rhel 8.2, and would better to update at "Bug 184579 - RH1817087".

------- Comment From shlyi.com 2020-06-04 20:51 EDT-------
> And, one more question.  How was the guest VM for this test created, exactly?
> >Test details
> >1, Set up RHEL 8.1 cluster env, install RHEL 8.1 guest on them, ...
> >Host names: ilx21r ilx22r
> >Guest name: ilx21r1r

I used virt-manager with a rhel iso file to create the guest, and the os is installed on a sanboot lun.

------- Comment From shlyi.com 2020-06-04 20:52 EDT-------
(In reply to comment #36)
> The guest
> System Information
> Manufacturer: Red Hat
> Product Name: KVM
> Version: RHEL-7.6.0 PC (Q35 + ICH9, 2009)
> Serial Number: Not Specified
> UUID: f37748d4-3b13-4a95-906e-24606a619736
> Wake-up Type: Power Switch
> SKU Number: Not Specified
> Family: Red Hat Enterprise Linux
> I assume IBM used virt-manager, created the guest and then assigned
> passthrough LUNS.
> I know its passthrough because I dont see virtio scsi or virtio block. the
> devices shows up as
> Attached devices:
> Host: scsi0 Channel: 00 Id: 00 Lun: 06
> Vendor: IBM      Model: FlashSystem-9840 Rev: 1611
> Type:   Direct-Access                    ANSI  SCSI revision: 05
> We have some known issues with KVM and passthrough so I need to try
> reproduce here in our lab.
> I should be able to work on this next week.
> One thing I need to know, if I reboot storage controllers and toggle switch
> ports, is that similar to your error injection
> Thanks
> Laurence

Yes, I think so.

Comment 20 Ewan D. Milne 2020-10-21 19:51:08 UTC
*** Bug 1804850 has been marked as a duplicate of this bug. ***

Comment 21 IBM Bug Proxy 2020-10-21 20:01:08 UTC
------- Comment From shlyi.com 2020-02-23 19:45 EDT-------
(In reply to comment #7)
> Moving to rhel-7.9.0 since rhel-7.8.0 is essentially closed for changes.
> Victor, I'm unclear why this ends up being a Virtualization problem. Hard to
> get that from the problem report, but from my read I wonder about the fabric
> and host interactions.
> The ilx24s part1 and part2 host logs seem to have quite a few ominous (to
> me) looking messages regarding the storage...  the part2 logs include some
> tracebacks.  Whether that's normal as part of what the "disktest" and
> "SwitchReboot" do is really unclear to me.
> Could just be that the guest is a victim here.
> IBM: Need some more information regarding the host env - specifically what
> version of qemu (and libvirt) is installed?  Makes it easier to route the
> bug that way.

The libvirt version is 4.5.0-31.el7.x86_64 as you can see below; disktest is a IBM io tool used by our team, it keeps running io with a specific block size on a raw lun mapped from IBM storage; SwitchReboot is just reboot the switch which the host/storage connected to, it would break partial lun paths, we need to see the broken paths recovered after the switch recovered without affecting the guest status or its io status.

[root@ilx24s ~]# rpm -qa |grep libvirt
libvirt-glib-1.0.0-1.el7.x86_64
libvirt-daemon-4.5.0-31.el7.x86_64
libvirt-daemon-driver-qemu-4.5.0-31.el7.x86_64
libvirt-daemon-driver-nodedev-4.5.0-31.el7.x86_64
libvirt-daemon-driver-storage-rbd-4.5.0-31.el7.x86_64
libvirt-daemon-driver-nwfilter-4.5.0-31.el7.x86_64
libvirt-daemon-driver-lxc-4.5.0-31.el7.x86_64
libvirt-daemon-driver-storage-scsi-4.5.0-31.el7.x86_64
libvirt-4.5.0-31.el7.x86_64
libvirt-libs-4.5.0-31.el7.x86_64
libvirt-client-4.5.0-31.el7.x86_64
libvirt-bash-completion-4.5.0-31.el7.x86_64
libvirt-daemon-driver-storage-disk-4.5.0-31.el7.x86_64
libvirt-daemon-kvm-4.5.0-31.el7.x86_64
libvirt-daemon-driver-secret-4.5.0-31.el7.x86_64
libvirt-gobject-1.0.0-1.el7.x86_64
libvirt-daemon-driver-storage-iscsi-4.5.0-31.el7.x86_64
libvirt-daemon-driver-network-4.5.0-31.el7.x86_64
libvirt-daemon-config-nwfilter-4.5.0-31.el7.x86_64
libvirt-gconfig-1.0.0-1.el7.x86_64
libvirt-daemon-driver-storage-core-4.5.0-31.el7.x86_64
libvirt-daemon-driver-storage-mpath-4.5.0-31.el7.x86_64
libvirt-daemon-driver-interface-4.5.0-31.el7.x86_64
libvirt-daemon-driver-storage-logical-4.5.0-31.el7.x86_64
libvirt-daemon-config-network-4.5.0-31.el7.x86_64
libvirt-daemon-driver-storage-gluster-4.5.0-31.el7.x86_64
libvirt-python-4.5.0-1.el7.x86_64
libvirt-daemon-driver-storage-4.5.0-31.el7.x86_64

------- Comment From shlyi.com 2020-03-12 22:26 EDT-------
(In reply to comment #10)
> I need some info
> As I understand it you have a LUN which is connected by 4 redundant patches
> to the host.
> How do you pass these paths to the guest? Each separately or you pass
> /dev/mpathN node to the guest?
> Could you provide the xml (and if possible qemu command line) that was used?

Hello, the guest's os disk is managed by virtio as you can see below, and the guest cannot see the multipath the host has. I think the correct behavior of the host should be that it should not let the guest be affected if only partial of its lun paths lost.

<disk type='file' device='disk'>
<driver name='qemu' type='qcow2'/>
<source file='/mnt/gfs1/rhel7.7.qcow2'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>

besides, the guest was managed by the redhat cluster(pcs), so I don't need to use qemu command line to manage the guest.

Below is the command line I use to create the guest resource:
# pcs resource create ilx24s1r_guest ocf:heartbeat:VirtualDomain hypervisor="qemu:///system" config="/mnt/kvmconf/rhel7.7.xml" migration_transport=ssh op start timeout="120s" op stop timeout="120s" op monitor  timeout="30" interval="10"  meta allow-migrate="true" priority="100" op migrate_from interval="0" timeout="120s" op migrate_to interval="0" timeout="120"

Based on my analysis, the real problem is lying on the host's cpu usage, the usage is very high at Feb 16 00:59:14 and some other time, and our check logs showed that the host hung during that time, then recovered after a while. But the guest may not be so lucky, it failed to be recovered.

Below is the "xml" file you asked:

[root@ilx24s ~]# cat /mnt/kvmconf/rhel7.7.xml
<!--
WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE
OVERWRITTEN AND LOST. Changes to this xml configuration should be made using:
virsh edit rhel7.7
or other application using the libvirt API.
-->

<name>rhel7.7</name>
<uuid>99e9771e-9dd3-4f83-8fa8-6ca530c96513</uuid>
<memory unit='KiB'>8388608</memory>
<currentMemory unit='KiB'>8388608</currentMemory>
<vcpu placement='static'>8</vcpu>
<os>
<type arch='x86_64' machine='pc-i440fx-rhel7.0.0'>hvm</type>
<boot dev='hd'/>
</os>
<features>
<acpi/>
<apic/>
</features>
<cpu mode='custom' match='exact' check='partial'>
<model fallback='allow'>Skylake-Server-IBRS</model>
<feature policy='require' name='md-clear'/>
<feature policy='require' name='spec-ctrl'/>
<feature policy='require' name='ssbd'/>
</cpu>
<clock offset='utc'>
<timer name='rtc' tickpolicy='catchup'/>
<timer name='pit' tickpolicy='delay'/>
<timer name='hpet' present='no'/>
</clock>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>destroy</on_crash>
<pm>
<suspend-to-mem enabled='no'/>
<suspend-to-disk enabled='no'/>
</pm>
<devices>
<emulator>/usr/libexec/qemu-kvm</emulator>
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2'/>
<source file='/mnt/gfs1/rhel7.7.qcow2'/>
<target dev='vda' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
<disk type='file' device='cdrom'>
<driver name='qemu' type='raw'/>
<target dev='hda' bus='ide'/>
<readonly/>
<driver name='qemu' type='raw'/>
<source dev='/dev/mapper/ilx24s25s_9840l_q16_d0'/>
<address type='drive' controller='0' bus='0' target='0' unit='0'/>
</disk>
<disk type='block' device='lun'>
<driver name='qemu' type='raw'/>
<source dev='/dev/mapper/ilx24s25s_9840l_q32_d0'/>
</disk>
<disk type='block' device='lun'>
<driver name='qemu' type='raw'/>
<source dev='/dev/mapper/ilx24s25s_9840o_q16_d0'/>
<target dev='sdc' bus='scsi'/>
<address type='drive' controller='0' bus='0' target='0' unit='2'/>
</disk>
<disk type='block' device='lun'>
<driver name='qemu' type='raw'/>
<source dev='/dev/mapper/ilx24s25s_9840o_q16_d1'/>
<target dev='sdd' bus='scsi'/>
<address type='drive' controller='0' bus='0' target='0' unit='3'/>
</disk>
<disk type='block' device='lun'>
<driver name='qemu' type='raw'/>
<source dev='/dev/mapper/ilx24s25s_9840o_q32_d0'/>
<target dev='sde' bus='scsi'/>
<address type='drive' controller='0' bus='0' target='0' unit='4'/>
</disk>
<disk type='block' device='lun'>
<driver name='qemu' type='raw'/>
<source dev='/dev/mapper/ilx24s25s_9840o_q32_d1'/>
<target dev='sdf' bus='scsi'/>
<address type='drive' controller='0' bus='0' target='0' unit='5'/>
</disk>
<disk type='block' device='lun'>
<driver name='qemu' type='raw'/>
<source dev='/dev/mapper/ilx24s25s_9840q_q16_d0'/>
<target dev='sdg' bus='scsi'/>
<address type='drive' controller='0' bus='0' target='0' unit='6'/>
</disk>
<disk type='block' device='lun'>
<driver name='qemu' type='raw'/>
<source dev='/dev/mapper/ilx24s25s_9840q_q16_d1'/>
<target dev='sdh' bus='scsi'/>
<address type='drive' controller='0' bus='0' target='0' unit='7'/>
</disk>
<disk type='block' device='lun'>
<driver name='qemu' type='raw'/>
<source dev='/dev/mapper/ilx24s25s_9840q_q32_d0'/>
<target dev='sdi' bus='scsi'/>
<address type='drive' controller='0' bus='0' target='0' unit='8'/>
</disk>
<disk type='block' device='lun'>
<driver name='qemu' type='raw'/>
<source dev='/dev/mapper/ilx24s25s_9840q_q32_d1'/>
<target dev='sdl' bus='scsi'/>
<address type='drive' controller='0' bus='0' target='0' unit='9'/>
</disk>
<controller type='usb' index='0' model='ich9-ehci1'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x7'/>
</controller>
<controller type='usb' index='0' model='ich9-uhci1'>
<master startport='0'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0' multifunction='on'/>
</controller>
<controller type='usb' index='0' model='ich9-uhci2'>
<master startport='2'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x1'/>
</controller>
<controller type='usb' index='0' model='ich9-uhci3'>
<master startport='4'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x2'/>
</controller>
<controller type='pci' index='0' model='pci-root'/>
<controller type='ide' index='0'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
</controller>
<controller type='virtio-serial' index='0'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
</controller>
<interface type='bridge'>
<mac address='52:54:00:73:98:1a'/>
<source bridge='br1'/>
<model type='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>
<serial type='pty'>
<target type='isa-serial' port='0'>
<model name='isa-serial'/>
</target>
</serial>
<console type='pty'>
<target type='serial' port='0'/>
</console>
<channel type='unix'>
<target type='virtio' name='org.qemu.guest_agent.0'/>
<address type='virtio-serial' controller='0' bus='0' port='1'/>
</channel>
<channel type='spicevmc'>
<target type='virtio' name='com.redhat.spice.0'/>
<address type='virtio-serial' controller='0' bus='0' port='2'/>
</channel>
<input type='tablet' bus='usb'>
<address type='usb' bus='0' port='1'/>
</input>
<input type='mouse' bus='ps2'/>
<input type='keyboard' bus='ps2'/>
<graphics type='spice' autoport='yes'>
<listen type='address'/>
<image compression='off'/>
</graphics>
<sound model='ich6'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
</sound>
<video>
<model type='qxl' ram='65536' vram='65536' vgamem='16384' heads='1' primary='yes'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
</video>
<redirdev bus='usb' type='spicevmc'>
<address type='usb' bus='0' port='2'/>
</redirdev>
<redirdev bus='usb' type='spicevmc'>
<address type='usb' bus='0' port='3'/>
</redirdev>
<memballoon model='virtio'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/>
</memballoon>
<rng model='virtio'>
<backend model='random'>/dev/urandom</backend>
<address type='pci' domain='0x0000' bus='0x00' slot='0x09' function='0x0'/>
</rng>
</devices>
</domain>

------- Comment From shlyi.com 2020-03-12 22:33 EDT-------
(In reply to comment #11)
> (In reply to comment #10)
> > I need some info
> > As I understand it you have a LUN which is connected by 4 redundant patches
> > to the host.
> > How do you pass these paths to the guest? Each separately or you pass
> > /dev/mpathN node to the guest?
> > Could you provide the xml (and if possible qemu command line) that was used?
> Hello, the guest's os disk is managed by virtio as you can see below, and
> the guest cannot see the multipath the host has. I think the correct
> behavior of the host should be that it should not let the guest be affected
> if only partial of its lun paths lost.
>     <disk type='file' device='disk'>
>       <driver name='qemu' type='qcow2'/>
>       <source file='/mnt/gfs1/rhel7.7.qcow2'/>
>       <target dev='vda' bus='virtio'/>
>       <address type='pci' domain='0x0000' bus='0x00' slot='0x07'
> function='0x0'/>
>     </disk>
> besides, the guest was managed by the redhat cluster(pcs), so I don't need
> to use qemu command line to manage the guest.
> Below is the command line I use to create the guest resource:
> # pcs resource create ilx24s1r_guest ocf:heartbeat:VirtualDomain
> hypervisor="qemu:///system" config="/mnt/kvmconf/rhel7.7.xml"
> migration_transport=ssh op start timeout="120s" op stop timeout="120s" op
> monitor  timeout="30" interval="10"  meta allow-migrate="true"
> priority="100" op migrate_from interval="0" timeout="120s" op migrate_to
> interval="0" timeout="120"
> Based on my analysis, the real problem is lying on the host's cpu usage, the
> usage is very high at Feb 16 00:59:14 and some other time, and our check
> logs showed that the host hung during that time, then recovered after a
> while. But the guest may not be so lucky, it failed to be recovered.
> Below is the "xml" file you asked:
> [root@ilx24s ~]# cat /mnt/kvmconf/rhel7.7.xml
> <!--
> WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE
> OVERWRITTEN AND LOST. Changes to this xml configuration should be made using:
>   virsh edit rhel7.7
> or other application using the libvirt API.
> -->
> <domain type='kvm'>
>   <name>rhel7.7</name>
>   <uuid>99e9771e-9dd3-4f83-8fa8-6ca530c96513</uuid>
>   <memory unit='KiB'>8388608</memory>
>   <currentMemory unit='KiB'>8388608</currentMemory>
>   <vcpu placement='static'>8</vcpu>
>   <os>
>     <type arch='x86_64' machine='pc-i440fx-rhel7.0.0'>hvm</type>
>     <boot dev='hd'/>
>   </os>
>   <features>
>     <acpi/>
>     <apic/>
>   </features>
>   <cpu mode='custom' match='exact' check='partial'>
>     <model fallback='allow'>Skylake-Server-IBRS</model>
>     <feature policy='require' name='md-clear'/>
>     <feature policy='require' name='spec-ctrl'/>
>     <feature policy='require' name='ssbd'/>
>   </cpu>
>   <clock offset='utc'>
>     <timer name='rtc' tickpolicy='catchup'/>
>     <timer name='pit' tickpolicy='delay'/>
>     <timer name='hpet' present='no'/>
>   </clock>
>   <on_poweroff>destroy</on_poweroff>
>   <on_reboot>restart</on_reboot>
>   <on_crash>destroy</on_crash>
>   <pm>
>     <suspend-to-mem enabled='no'/>
>     <suspend-to-disk enabled='no'/>
>   </pm>
>   <devices>
>     <emulator>/usr/libexec/qemu-kvm</emulator>
>     <disk type='file' device='disk'>
>       <driver name='qemu' type='qcow2'/>
>       <source file='/mnt/gfs1/rhel7.7.qcow2'/>
>       <target dev='vda' bus='virtio'/>
>       <address type='pci' domain='0x0000' bus='0x00' slot='0x07'
> function='0x0'/>
>     </disk>
>     <disk type='file' device='cdrom'>
>       <driver name='qemu' type='raw'/>
>       <target dev='hda' bus='ide'/>
>       <readonly/>
>       <address type='drive' controller='0' bus='0' target='0' unit='0'/>
>     </disk>
>     <disk type='block' device='lun'>
>       <driver name='qemu' type='raw'/>
>       <source dev='/dev/mapper/ilx24s25s_9840l_q16_d0'/>
>       <target dev='sda' bus='scsi'/>
>       <address type='drive' controller='0' bus='0' target='0' unit='0'/>
>     </disk>
>     <disk type='block' device='lun'>
>       <driver name='qemu' type='raw'/>
>       <source dev='/dev/mapper/ilx24s25s_9840l_q32_d0'/>
>       <target dev='sdb' bus='scsi'/>
>       <address type='drive' controller='0' bus='0' target='0' unit='1'/>
>     </disk>
>     <disk type='block' device='lun'>
>       <driver name='qemu' type='raw'/>
>       <source dev='/dev/mapper/ilx24s25s_9840o_q16_d0'/>
>       <target dev='sdc' bus='scsi'/>
>       <address type='drive' controller='0' bus='0' target='0' unit='2'/>
>     </disk>
>     <disk type='block' device='lun'>
>       <driver name='qemu' type='raw'/>
>       <source dev='/dev/mapper/ilx24s25s_9840o_q16_d1'/>
>       <target dev='sdd' bus='scsi'/>
>       <address type='drive' controller='0' bus='0' target='0' unit='3'/>
>     </disk>
>     <disk type='block' device='lun'>
>       <driver name='qemu' type='raw'/>
>       <source dev='/dev/mapper/ilx24s25s_9840o_q32_d0'/>
>       <target dev='sde' bus='scsi'/>
>       <address type='drive' controller='0' bus='0' target='0' unit='4'/>
>     </disk>
>     <disk type='block' device='lun'>
>       <driver name='qemu' type='raw'/>
>       <source dev='/dev/mapper/ilx24s25s_9840o_q32_d1'/>
>       <target dev='sdf' bus='scsi'/>
>       <address type='drive' controller='0' bus='0' target='0' unit='5'/>
>     </disk>
>     <disk type='block' device='lun'>
>       <driver name='qemu' type='raw'/>
>       <source dev='/dev/mapper/ilx24s25s_9840q_q16_d0'/>
>       <target dev='sdg' bus='scsi'/>
>       <address type='drive' controller='0' bus='0' target='0' unit='6'/>
>     </disk>
>     <disk type='block' device='lun'>
>       <driver name='qemu' type='raw'/>
>       <source dev='/dev/mapper/ilx24s25s_9840q_q16_d1'/>
>       <target dev='sdh' bus='scsi'/>
>       <address type='drive' controller='0' bus='0' target='0' unit='7'/>
>     </disk>
>     <disk type='block' device='lun'>
>       <driver name='qemu' type='raw'/>
>       <source dev='/dev/mapper/ilx24s25s_9840q_q32_d0'/>
>       <target dev='sdi' bus='scsi'/>
>       <address type='drive' controller='0' bus='0' target='0' unit='8'/>
>     </disk>
>     <disk type='block' device='lun'>
>       <driver name='qemu' type='raw'/>
>       <source dev='/dev/mapper/ilx24s25s_9840q_q32_d1'/>
>       <target dev='sdl' bus='scsi'/>
>       <address type='drive' controller='0' bus='0' target='0' unit='9'/>
>     </disk>
>     <controller type='usb' index='0' model='ich9-ehci1'>
>       <address type='pci' domain='0x0000' bus='0x00' slot='0x05'
> function='0x7'/>
>     </controller>
>     <controller type='usb' index='0' model='ich9-uhci1'>
>       <master startport='0'/>
>       <address type='pci' domain='0x0000' bus='0x00' slot='0x05'
> function='0x0' multifunction='on'/>
>     </controller>
>     <controller type='usb' index='0' model='ich9-uhci2'>
>       <master startport='2'/>
>       <address type='pci' domain='0x0000' bus='0x00' slot='0x05'
> function='0x1'/>
>     </controller>
>     <controller type='usb' index='0' model='ich9-uhci3'>
>       <master startport='4'/>
>       <address type='pci' domain='0x0000' bus='0x00' slot='0x05'
> function='0x2'/>
>     </controller>
>     <controller type='pci' index='0' model='pci-root'/>
>     <controller type='ide' index='0'>
>       <address type='pci' domain='0x0000' bus='0x00' slot='0x01'
> function='0x1'/>
>     </controller>
>     <controller type='virtio-serial' index='0'>
>       <address type='pci' domain='0x0000' bus='0x00' slot='0x06'
> function='0x0'/>
>     </controller>
>     <interface type='bridge'>
>       <mac address='52:54:00:73:98:1a'/>
>       <source bridge='br1'/>
>       <model type='virtio'/>
>       <address type='pci' domain='0x0000' bus='0x00' slot='0x03'
> function='0x0'/>
>     </interface>
>     <serial type='pty'>
>       <target type='isa-serial' port='0'>
>         <model name='isa-serial'/>
>       </target>
>     </serial>
>     <console type='pty'>
>       <target type='serial' port='0'/>
>     </console>
>     <channel type='unix'>
>       <target type='virtio' name='org.qemu.guest_agent.0'/>
>       <address type='virtio-serial' controller='0' bus='0' port='1'/>
>     </channel>
>     <channel type='spicevmc'>
>       <target type='virtio' name='com.redhat.spice.0'/>
>       <address type='virtio-serial' controller='0' bus='0' port='2'/>
>     </channel>
>     <input type='tablet' bus='usb'>
>       <address type='usb' bus='0' port='1'/>
>     </input>
>     <input type='mouse' bus='ps2'/>
>     <input type='keyboard' bus='ps2'/>
>     <graphics type='spice' autoport='yes'>
>       <listen type='address'/>
>       <image compression='off'/>
>     </graphics>
>     <sound model='ich6'>
>       <address type='pci' domain='0x0000' bus='0x00' slot='0x04'
> function='0x0'/>
>     </sound>
>     <video>
>       <model type='qxl' ram='65536' vram='65536' vgamem='16384' heads='1'
> primary='yes'/>
>       <address type='pci' domain='0x0000' bus='0x00' slot='0x02'
> function='0x0'/>
>     </video>
>     <redirdev bus='usb' type='spicevmc'>
>       <address type='usb' bus='0' port='2'/>
>     </redirdev>
>     <redirdev bus='usb' type='spicevmc'>
>       <address type='usb' bus='0' port='3'/>
>     </redirdev>
>     <memballoon model='virtio'>
>       <address type='pci' domain='0x0000' bus='0x00' slot='0x08'
> function='0x0'/>
>     </memballoon>
>     <rng model='virtio'>
>       <backend model='random'>/dev/urandom</backend>
>       <address type='pci' domain='0x0000' bus='0x00' slot='0x09'
> function='0x0'/>
>     </rng>
>   </devices>
> </domain>

Correct some words of below sentence:
Before:
Based on my analysis, the real problem is lying on the host's cpu usage, the usage is very high at Feb 16 00:59:14 and some other time, and our check logs showed that the host hung during that time, then recovered after a while. But the guest may not be so lucky, it failed to be recovered.
Corrected:
Based on my analysis, the real problem should be caused by the host's cpu usage, the usage was very high at Feb 16 00:59:14 and some other time, and our check logs showed that the host hung during that time, then recovered after a while. But the guest may not be so lucky, it failed to be recovered.

------- Comment From shlyi.com 2020-03-16 21:50 EDT-------
> I did some investigations and this is what I found:
> I setup the following test enviroment (much more modest that you have :-) ):
> a host (my laptop) running iscsi target from a 1 GB file.
> Then I connected to that target twice using qemu's iscsi driver, with
> blkdebug instance running on top of each
> I hacked the blkdebug qemu driver such as it passes through the SG_IO and
> sometimes fails them, such
> as the two instances of blkdebug don't fail at the same time.
> Thus I have a guest with two paths to same disk and each of paths fails
> sometimes.
> In that guest I aggregated the two paths using the multipath device mapper
> and I passed
> the resulting multipath node to a nested guest running in it.
> Inside the nested guest I had run a fio job on the passed through disk.
> The results:
> Sadly the nested guest sees IO errors.
> I tried both direct and buffered IO in the guest, both reads
> and writes, and I tried pass the multipath node to the nested guest both as
> a raw LUN and
> as a regular block device.
> In all cases I see errors in the nested guest, however the multipath
> code does recover eventually and switches the paths.
> If I allow the fio to continue on IO errors,
> I see that multipath code switches patches in very timely manner with a
> bunch of IO errors in between.
> I even tried to fail only one path (the first one) while keeping the second
> one always online,
> and even then I have seen IO errors in the guest, suggesting
> that kernel's multipath code doesn't retry the IO requests on remaining
> paths when it encounters
> a failing path.
> I think that this means that in-kernel multipath code is just designed this
> way, that is geared towards
> once in a while disk failure and assumes that the client will retry failing
> requests
> (which is true for linux filesystem code from my experience with nvme-mdev
> driver I once developed).
> One thing for sure, that this bug is not related to virtualization in any
> way.
> in fact running fio in the outer guest (which just simulates the real
> hardware) produces the same
> results.

Thanks for the updates. I think your experiment had just reproduced my another defect: https://bugzilla.linux.ibm.com/show_bug.cgi?id=183930

The key difference between this issue and that issue is the behavior, rebooting the switch, which somehow caused the host hung, then caused the guest hung. And this "key difference" is what I suggest we should focus on.

Besides, could you give me some introduction for the "fio job", is it refer to blocking one of the two paths your iscsi lun has?

------- Comment From shlyi.com 2020-03-17 23:56 EDT-------
> fio just means is just running fio random read/write benchmark on the disk -
> anything else doing IO would work just fine, like dd for instance.
> OK so the issue here is that we know that guest is getting *lots* of IO
> errors but these shouldn't make it hung like that.
> I can in theory try to reproduce this but to be honest this could be caused
> by lots of different problems in the guest kernel or even guest userspace,
> and I don't yet have enough experience to suggest how you should debug this
> on your system since this issue most likely won't be reproducible
> (or at least reproducible in the same way) on anything else but your system.
> I guess you can try to install qemu-kvm's debug symbols, then reproduce this
> and then attach gdb to qemu process and try to capture where it is
> stuck, but most likely this won't produce much meaningful info.
> Qemu also supports built-in gdbstub which allows to debug the guest kernel,
> something I used for few times.
> The abrt packet you attached is unfortunately just from systemd-journald
> crashing so this doesn't really help.

I tried as you said, I am not sure if my config is correct/would work or not, it reported "Missing separate debuginfos, use: debuginfo-install qemu-kvm-1.5.3-173.el7.x86_64", but the rhel 7.8 repo seems not to contain "debuginfos" package. Please give me some comments for my trying. Thanks.

[root@ilx24s ~]# gdb program 7598
GNU gdb (GDB) Red Hat Enterprise Linux 7.6.1-119.el7
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-redhat-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
program: No such file or directory.
Attaching to process 7598
Reading symbols from /usr/libexec/qemu-kvm...Reading symbols from /usr/libexec/qemu-kvm...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Reading symbols from /lib64/libz.so.1...Reading symbols from /lib64/libz.so.1...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/libz.so.1
Reading symbols from /lib64/libaio.so.1...Reading symbols from /lib64/libaio.so.1...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/libaio.so.1
Reading symbols from /usr/lib64/iscsi/libiscsi.so.2...Reading symbols from /usr/lib64/iscsi/libiscsi.so.2...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /usr/lib64/iscsi/libiscsi.so.2
Reading symbols from /lib64/libcurl.so.4...Reading symbols from /lib64/libcurl.so.4...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/libcurl.so.4
Reading symbols from /lib64/libgfapi.so.0...Reading symbols from /lib64/libgfapi.so.0...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/libgfapi.so.0
Reading symbols from /lib64/libgfrpc.so.0...Reading symbols from /lib64/libgfrpc.so.0...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/libgfrpc.so.0
Reading symbols from /lib64/libgfxdr.so.0...Reading symbols from /lib64/libgfxdr.so.0...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/libgfxdr.so.0
Reading symbols from /lib64/libssh2.so.1...Reading symbols from /lib64/libssh2.so.1...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/libssh2.so.1
Reading symbols from /lib64/librt.so.1...(no debugging symbols found)...done.
Loaded symbols for /lib64/librt.so.1
Reading symbols from /lib64/libtcmalloc.so.4...Reading symbols from /lib64/libtcmalloc.so.4...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/libtcmalloc.so.4
Reading symbols from /lib64/libgthread-2.0.so.0...Reading symbols from /lib64/libgthread-2.0.so.0...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/libgthread-2.0.so.0
Reading symbols from /lib64/libglib-2.0.so.0...Reading symbols from /lib64/libglib-2.0.so.0...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/libglib-2.0.so.0
Reading symbols from /lib64/libssl3.so...Reading symbols from /lib64/libssl3.so...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/libssl3.so
Reading symbols from /lib64/libsmime3.so...Reading symbols from /lib64/libsmime3.so...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/libsmime3.so
Reading symbols from /lib64/libnss3.so...Reading symbols from /lib64/libnss3.so...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/libnss3.so
Reading symbols from /lib64/libnssutil3.so...Reading symbols from /lib64/libnssutil3.so...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/libnssutil3.so
Reading symbols from /lib64/libplds4.so...Reading symbols from /lib64/libplds4.so...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/libplds4.so
Reading symbols from /lib64/libplc4.so...Reading symbols from /lib64/libplc4.so...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/libplc4.so
Reading symbols from /lib64/libnspr4.so...Reading symbols from /lib64/libnspr4.so...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/libnspr4.so
Reading symbols from /lib64/libpthread.so.0...(no debugging symbols found)...done.
[New LWP 240551]
[New LWP 240550]
[New LWP 240549]
[New LWP 240548]
[New LWP 240547]
[New LWP 240546]
[New LWP 240545]
[New LWP 240544]
[New LWP 240543]
[New LWP 240542]
[New LWP 240541]
[New LWP 240540]
[New LWP 240539]
[New LWP 240538]
[New LWP 240537]
[New LWP 240536]
[New LWP 240535]
[New LWP 240534]
[New LWP 240533]
[New LWP 240532]
[New LWP 240531]
[New LWP 202053]
[New LWP 202050]
[New LWP 202048]
[New LWP 200709]
[New LWP 200707]
[New LWP 200706]
[New LWP 200705]
[New LWP 200704]
[New LWP 200703]
[New LWP 200702]
[New LWP 200699]
[New LWP 200698]
[New LWP 200697]
[New LWP 200694]
[New LWP 200693]
[New LWP 199809]
[New LWP 199807]
[New LWP 199806]
[New LWP 199805]
[New LWP 199800]
[New LWP 199796]
[New LWP 199795]
[New LWP 199794]
[New LWP 199793]
[New LWP 199791]
[New LWP 197317]
[New LWP 197315]
[New LWP 197312]
[New LWP 197310]
[New LWP 196327]
[New LWP 196325]
[New LWP 196321]
[New LWP 196307]
[New LWP 195116]
[New LWP 195110]
[New LWP 194521]
[New LWP 194516]
[New LWP 194514]
[New LWP 194503]
[New LWP 194047]
[New LWP 194029]
[New LWP 191956]
[New LWP 180103]
[New LWP 7635]
[New LWP 7634]
[New LWP 7633]
[New LWP 7632]
[New LWP 7631]
[New LWP 7630]
[New LWP 7629]
[New LWP 7628]
[New LWP 7627]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
Loaded symbols for /lib64/libpthread.so.0
Reading symbols from /lib64/libdl.so.2...(no debugging symbols found)...done.
Loaded symbols for /lib64/libdl.so.2
Reading symbols from /lib64/libutil.so.1...(no debugging symbols found)...done.
Loaded symbols for /lib64/libutil.so.1
Reading symbols from /lib64/librbd.so.1...Reading symbols from /lib64/librbd.so.1...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/librbd.so.1
Reading symbols from /lib64/librados.so.2...Reading symbols from /lib64/librados.so.2...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/librados.so.2
Reading symbols from /lib64/libasound.so.2...Reading symbols from /lib64/libasound.so.2...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/libasound.so.2
Reading symbols from /lib64/libpulse.so.0...Reading symbols from /lib64/libpulse.so.0...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/libpulse.so.0
Reading symbols from /lib64/libuuid.so.1...Reading symbols from /lib64/libuuid.so.1...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/libuuid.so.1
Reading symbols from /lib64/libpng15.so.15...Reading symbols from /lib64/libpng15.so.15...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/libpng15.so.15
Reading symbols from /lib64/libsasl2.so.3...Reading symbols from /lib64/libsasl2.so.3...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/libsasl2.so.3
Reading symbols from /lib64/libgnutls.so.28...Reading symbols from /lib64/libgnutls.so.28...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/libgnutls.so.28
Reading symbols from /lib64/liblzo2.so.2...Reading symbols from /lib64/liblzo2.so.2...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/liblzo2.so.2
Reading symbols from /lib64/libsnappy.so.1...Reading symbols from /lib64/libsnappy.so.1...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/libsnappy.so.1
Reading symbols from /lib64/libseccomp.so.2...Reading symbols from /lib64/libseccomp.so.2...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/libseccomp.so.2
Reading symbols from /lib64/librdmacm.so.1...Reading symbols from /lib64/librdmacm.so.1...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/librdmacm.so.1
Reading symbols from /lib64/libibverbs.so.1...Reading symbols from /lib64/libibverbs.so.1...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/libibverbs.so.1
Reading symbols from /lib64/libspice-server.so.1...Reading symbols from /lib64/libspice-server.so.1...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/libspice-server.so.1
Reading symbols from /lib64/libusb-1.0.so.0...Reading symbols from /lib64/libusb-1.0.so.0...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/libusb-1.0.so.0
Reading symbols from /lib64/libusbredirparser.so.1...Reading symbols from /lib64/libusbredirparser.so.1...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/libusbredirparser.so.1
Reading symbols from /lib64/libpixman-1.so.0...Reading symbols from /lib64/libpixman-1.so.0...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/libpixman-1.so.0
Reading symbols from /lib64/libm.so.6...(no debugging symbols found)...done.
Loaded symbols for /lib64/libm.so.6
Reading symbols from /lib64/libc.so.6...(no debugging symbols found)...done.
Loaded symbols for /lib64/libc.so.6
Reading symbols from /lib64/libgcrypt.so.11...Reading symbols from /lib64/libgcrypt.so.11...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/libgcrypt.so.11
Reading symbols from /lib64/libidn.so.11...Reading symbols from /lib64/libidn.so.11...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/libidn.so.11
Reading symbols from /lib64/libgssapi_krb5.so.2...Reading symbols from /lib64/libgssapi_krb5.so.2...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/libgssapi_krb5.so.2
Reading symbols from /lib64/libkrb5.so.3...Reading symbols from /lib64/libkrb5.so.3...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/libkrb5.so.3
Reading symbols from /lib64/libk5crypto.so.3...Reading symbols from /lib64/libk5crypto.so.3...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/libk5crypto.so.3
Reading symbols from /lib64/libcom_err.so.2...Reading symbols from /lib64/libcom_err.so.2...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/libcom_err.so.2
Reading symbols from /lib64/liblber-2.4.so.2...Reading symbols from /lib64/liblber-2.4.so.2...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/liblber-2.4.so.2
Reading symbols from /lib64/libldap-2.4.so.2...Reading symbols from /lib64/libldap-2.4.so.2...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/libldap-2.4.so.2
Reading symbols from /lib64/libacl.so.1...Reading symbols from /lib64/libacl.so.1...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/libacl.so.1
Reading symbols from /lib64/libglusterfs.so.0...Reading symbols from /lib64/libglusterfs.so.0...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/libglusterfs.so.0
Reading symbols from /lib64/libcrypto.so.10...Reading symbols from /lib64/libcrypto.so.10...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/libcrypto.so.10
Reading symbols from /lib64/libssl.so.10...Reading symbols from /lib64/libssl.so.10...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/libssl.so.10
Reading symbols from /lib64/libstdc++.so.6...(no debugging symbols found)...done.
Loaded symbols for /lib64/libstdc++.so.6
Reading symbols from /lib64/ld-linux-x86-64.so.2...(no debugging symbols found)...done.
Loaded symbols for /lib64/ld-linux-x86-64.so.2
Reading symbols from /lib64/libgcc_s.so.1...(no debugging symbols found)...done.
Loaded symbols for /lib64/libgcc_s.so.1
Reading symbols from /lib64/libpcre.so.1...Reading symbols from /lib64/libpcre.so.1...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/libpcre.so.1
Reading symbols from /lib64/libboost_thread-mt.so.1.53.0...Reading symbols from /lib64/libboost_thread-mt.so.1.53.0...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/libboost_thread-mt.so.1.53.0
Reading symbols from /lib64/libboost_system-mt.so.1.53.0...Reading symbols from /lib64/libboost_system-mt.so.1.53.0...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/libboost_system-mt.so.1.53.0
Reading symbols from /lib64/libboost_random-mt.so.1.53.0...Reading symbols from /lib64/libboost_random-mt.so.1.53.0...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/libboost_random-mt.so.1.53.0
Reading symbols from /lib64/libblkid.so.1...Reading symbols from /lib64/libblkid.so.1...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/libblkid.so.1
Reading symbols from /lib64/libboost_iostreams-mt.so.1.53.0...Reading symbols from /lib64/libboost_iostreams-mt.so.1.53.0...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/libboost_iostreams-mt.so.1.53.0
Reading symbols from /usr/lib64/pulseaudio/libpulsecommon-10.0.so...Reading symbols from /usr/lib64/pulseaudio/libpulsecommon-10.0.so...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /usr/lib64/pulseaudio/libpulsecommon-10.0.so
Reading symbols from /lib64/libdbus-1.so.3...Reading symbols from /lib64/libdbus-1.so.3...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/libdbus-1.so.3
Reading symbols from /lib64/libcap.so.2...Reading symbols from /lib64/libcap.so.2...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/libcap.so.2
Reading symbols from /lib64/libresolv.so.2...(no debugging symbols found)...done.
Loaded symbols for /lib64/libresolv.so.2
Reading symbols from /lib64/libcrypt.so.1...(no debugging symbols found)...done.
Loaded symbols for /lib64/libcrypt.so.1
Reading symbols from /lib64/libkrb5support.so.0...Reading symbols from /lib64/libkrb5support.so.0...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/libkrb5support.so.0
Reading symbols from /lib64/libp11-kit.so.0...Reading symbols from /lib64/libp11-kit.so.0...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/libp11-kit.so.0
Reading symbols from /lib64/libtasn1.so.6...Reading symbols from /lib64/libtasn1.so.6...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/libtasn1.so.6
Reading symbols from /lib64/libnettle.so.4...Reading symbols from /lib64/libnettle.so.4...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/libnettle.so.4
Reading symbols from /lib64/libhogweed.so.2...Reading symbols from /lib64/libhogweed.so.2...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/libhogweed.so.2
Reading symbols from /lib64/libgmp.so.10...Reading symbols from /lib64/libgmp.so.10...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/libgmp.so.10
Reading symbols from /lib64/libnl-route-3.so.200...Reading symbols from /lib64/libnl-route-3.so.200...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/libnl-route-3.so.200
Reading symbols from /lib64/libnl-3.so.200...Reading symbols from /lib64/libnl-3.so.200...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/libnl-3.so.200
Reading symbols from /lib64/libcelt051.so.0...Reading symbols from /lib64/libcelt051.so.0...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/libcelt051.so.0
Reading symbols from /lib64/libopus.so.0...Reading symbols from /lib64/libopus.so.0...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/libopus.so.0
Reading symbols from /lib64/libgio-2.0.so.0...Reading symbols from /lib64/libgio-2.0.so.0...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/libgio-2.0.so.0
Reading symbols from /lib64/libgobject-2.0.so.0...Reading symbols from /lib64/libgobject-2.0.so.0...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/libgobject-2.0.so.0
Reading symbols from /lib64/libjpeg.so.62...Reading symbols from /lib64/libjpeg.so.62...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/libjpeg.so.62
Reading symbols from /lib64/liblz4.so.1...Reading symbols from /lib64/liblz4.so.1...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/liblz4.so.1
Reading symbols from /lib64/libudev.so.1...Reading symbols from /lib64/libudev.so.1...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/libudev.so.1
Reading symbols from /lib64/libgpg-error.so.0...Reading symbols from /lib64/libgpg-error.so.0...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/libgpg-error.so.0
Reading symbols from /lib64/libkeyutils.so.1...Reading symbols from /lib64/libkeyutils.so.1...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/libkeyutils.so.1
Reading symbols from /lib64/libattr.so.1...Reading symbols from /lib64/libattr.so.1...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/libattr.so.1
Reading symbols from /lib64/libbz2.so.1...Reading symbols from /lib64/libbz2.so.1...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/libbz2.so.1
Reading symbols from /lib64/libX11-xcb.so.1...Reading symbols from /lib64/libX11-xcb.so.1...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/libX11-xcb.so.1
Reading symbols from /lib64/libX11.so.6...Reading symbols from /lib64/libX11.so.6...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/libX11.so.6
Reading symbols from /lib64/libxcb.so.1...Reading symbols from /lib64/libxcb.so.1...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/libxcb.so.1
Reading symbols from /lib64/libICE.so.6...Reading symbols from /lib64/libICE.so.6...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/libICE.so.6
Reading symbols from /lib64/libSM.so.6...Reading symbols from /lib64/libSM.so.6...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/libSM.so.6
Reading symbols from /lib64/libXtst.so.6...Reading symbols from /lib64/libXtst.so.6...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/libXtst.so.6
Reading symbols from /lib64/libsystemd.so.0...Reading symbols from /lib64/libsystemd.so.0...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/libsystemd.so.0
Reading symbols from /lib64/libwrap.so.0...Reading symbols from /lib64/libwrap.so.0...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/libwrap.so.0
Reading symbols from /lib64/libsndfile.so.1...Reading symbols from /lib64/libsndfile.so.1...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/libsndfile.so.1
Reading symbols from /lib64/libasyncns.so.0...Reading symbols from /lib64/libasyncns.so.0...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/libasyncns.so.0
Reading symbols from /lib64/libfreebl3.so...Reading symbols from /lib64/libfreebl3.so...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/libfreebl3.so
Reading symbols from /lib64/libselinux.so.1...Reading symbols from /lib64/libselinux.so.1...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/libselinux.so.1
Reading symbols from /lib64/libffi.so.6...Reading symbols from /lib64/libffi.so.6...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/libffi.so.6
Reading symbols from /lib64/libgmodule-2.0.so.0...Reading symbols from /lib64/libgmodule-2.0.so.0...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/libgmodule-2.0.so.0
Reading symbols from /lib64/libmount.so.1...Reading symbols from /lib64/libmount.so.1...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/libmount.so.1
Reading symbols from /lib64/libdw.so.1...Reading symbols from /lib64/libdw.so.1...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/libdw.so.1
Reading symbols from /lib64/libXau.so.6...Reading symbols from /lib64/libXau.so.6...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/libXau.so.6
Reading symbols from /lib64/libXext.so.6...Reading symbols from /lib64/libXext.so.6...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/libXext.so.6
Reading symbols from /lib64/libXi.so.6...Reading symbols from /lib64/libXi.so.6...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/libXi.so.6
Reading symbols from /lib64/liblzma.so.5...Reading symbols from /lib64/liblzma.so.5...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/liblzma.so.5
Reading symbols from /lib64/libnsl.so.1...(no debugging symbols found)...done.
Loaded symbols for /lib64/libnsl.so.1
Reading symbols from /lib64/libgsm.so.1...Reading symbols from /lib64/libgsm.so.1...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/libgsm.so.1
Reading symbols from /lib64/libFLAC.so.8...Reading symbols from /lib64/libFLAC.so.8...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/libFLAC.so.8
Reading symbols from /lib64/libvorbisenc.so.2...Reading symbols from /lib64/libvorbisenc.so.2...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/libvorbisenc.so.2
Reading symbols from /lib64/libvorbis.so.0...Reading symbols from /lib64/libvorbis.so.0...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/libvorbis.so.0
Reading symbols from /lib64/libogg.so.0...Reading symbols from /lib64/libogg.so.0...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/libogg.so.0
Reading symbols from /lib64/libelf.so.1...Reading symbols from /lib64/libelf.so.1...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/libelf.so.1
Reading symbols from /lib64/libnss_files.so.2...(no debugging symbols found)...done.
Loaded symbols for /lib64/libnss_files.so.2
Reading symbols from /usr/lib64/sasl2/libanonymous.so...Reading symbols from /usr/lib64/sasl2/libanonymous.so...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /usr/lib64/sasl2/libanonymous.so
Reading symbols from /usr/lib64/sasl2/libsasldb.so...Reading symbols from /usr/lib64/sasl2/libsasldb.so...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /usr/lib64/sasl2/libsasldb.so
Reading symbols from /lib64/libdb-5.3.so...Reading symbols from /lib64/libdb-5.3.so...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /lib64/libdb-5.3.so
Reading symbols from /usr/lib64/sasl2/libgssapiv2.so...Reading symbols from /usr/lib64/sasl2/libgssapiv2.so...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /usr/lib64/sasl2/libgssapiv2.so
Reading symbols from /usr/lib64/sasl2/libscram.so...Reading symbols from /usr/lib64/sasl2/libscram.so...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /usr/lib64/sasl2/libscram.so
Reading symbols from /usr/lib64/sasl2/liblogin.so...Reading symbols from /usr/lib64/sasl2/liblogin.so...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /usr/lib64/sasl2/liblogin.so
Reading symbols from /usr/lib64/sasl2/libplain.so...Reading symbols from /usr/lib64/sasl2/libplain.so...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /usr/lib64/sasl2/libplain.so
Reading symbols from /usr/lib64/sasl2/libcrammd5.so...Reading symbols from /usr/lib64/sasl2/libcrammd5.so...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /usr/lib64/sasl2/libcrammd5.so
Reading symbols from /usr/lib64/sasl2/libdigestmd5.so...Reading symbols from /usr/lib64/sasl2/libdigestmd5.so...(no debugging symbols found)...done.
(no debugging symbols found)...done.
Loaded symbols for /usr/lib64/sasl2/libdigestmd5.so
0x00007f03ea075c3d in poll () from /lib64/libc.so.6
Missing separate debuginfos, use: debuginfo-install qemu-kvm-1.5.3-173.el7.x86_64
(gdb) debuginfo-install qemu-kvm-1.5.3-173.el7.x86_64
Undefined command: "debuginfo-install".  Try "help".
(gdb) quit
A debugging session is active.

Inferior 1 [process 7598] will be detached.

Quit anyway? (y or n) y
Detaching from program: /usr/libexec/qemu-kvm, process 7598
[Inferior 1 (process 7598) detached]
[root@ilx24s ~]# debuginfo-install qemu-kvm-1.5.3-173.el7.x86_64
Loaded plugins: langpacks, product-id, subscription-manager

Could not find debuginfo for main pkg: 10:qemu-kvm-1.5.3-173.el7.x86_64
Could not find debuginfo pkg for dependency package libaio-0.3.109-13.el7.x86_64
Could not find debuginfo pkg for dependency package alsa-lib-1.1.8-1.el7.x86_64
Could not find debuginfo pkg for dependency package glibc-2.17-307.el7.1.x86_64
Could not find debuginfo pkg for dependency package libcurl-7.29.0-57.el7.x86_64
Could not find debuginfo pkg for dependency package glusterfs-api-6.0-29.el7.x86_64
Could not find debuginfo pkg for dependency package glusterfs-libs-6.0-29.el7.x86_64
Could not find debuginfo pkg for dependency package glib2-2.56.1-5.el7.x86_64
Could not find debuginfo pkg for dependency package gnutls-3.3.29-9.el7_6.x86_64
Could not find debuginfo pkg for dependency package libibverbs-22.4-1.el7.x86_64
Could not find debuginfo pkg for dependency package libiscsi-1.9.0-7.el7.x86_64
Could not find debuginfo pkg for dependency package lzo-2.06-8.el7.x86_64
Could not find debuginfo pkg for dependency package nspr-4.21.0-1.el7.x86_64
Could not find debuginfo pkg for dependency package nss-3.44.0-7.el7_7.x86_64
Could not find debuginfo pkg for dependency package nss-util-3.44.0-4.el7_7.x86_64
Could not find debuginfo pkg for dependency package pixman-0.34.0-1.el7.x86_64
Could not find debuginfo pkg for dependency package 2:libpng-1.5.13-7.el7_2.x86_64
Could not find debuginfo pkg for dependency package pulseaudio-libs-10.0-5.el7.x86_64
Could not find debuginfo pkg for dependency package 1:librados2-10.2.5-4.el7.x86_64
Could not find debuginfo pkg for dependency package 1:librbd1-10.2.5-4.el7.x86_64
Could not find debuginfo pkg for dependency package librdmacm-22.4-1.el7.x86_64
Could not find debuginfo pkg for dependency package cyrus-sasl-lib-2.1.26-23.el7.x86_64
Could not find debuginfo pkg for dependency package libseccomp-2.3.1-4.el7.x86_64
Could not find debuginfo pkg for dependency package snappy-1.1.0-3.el7.x86_64
Could not find debuginfo pkg for dependency package spice-server-0.14.0-9.el7.x86_64
Could not find debuginfo pkg for dependency package libssh2-1.8.0-3.el7.x86_64
Could not find debuginfo pkg for dependency package gperftools-libs-2.6.1-1.el7.x86_64
Could not find debuginfo pkg for dependency package libusbx-1.0.21-1.el7.x86_64
Could not find debuginfo pkg for dependency package usbredir-0.7.1-3.el7.x86_64
Could not find debuginfo pkg for dependency package libuuid-2.23.2-63.el7.x86_64
Could not find debuginfo pkg for dependency package zlib-1.2.7-18.el7.x86_64
No debuginfo packages available to install
[root@ilx24s ~]# yum install debuginfo-install qemu-kvm-1.5.3-173.el7.x86_64

No package debuginfo-install available.
Package 10:qemu-kvm-1.5.3-173.el7.x86_64 already installed and latest version
[root@ilx24s ~]# yum install kernel-debuginfo

No package kernel-debuginfo available.
[root@ilx24s ~]# yum list |grep kernel-debuginfo

------- Comment From shlyi.com 2020-03-17 23:57 EDT-------

[root@ilx24s ~]#

------- Comment From shlyi.com 2020-03-19 04:59 EDT-------
> Yep, the missing debuginfo messages is a very good way to install them.
> Its different in RHEL8/Fedora, here I use 'dnf debuginfo-install'
> Turns out that in RHEL7 you should just run this as is, like
> debuginfo-install qemu-kvm-1.5.3-173.el7.x86_64
> I don't hold high hopes though that a backtrace from the qemu would reveal
> anything interesting, however,
> does the issue reproduce (that is did the guest hung again when you had the
> gdb as you had shown)?
> If it does reproduce more or less consistently, I can try too, to setup
> something, maybe even connect to your disks
> using iscsi or something.
> Best regards,
> Maxim Levitsky

Hello, I still failed to use command "debuginfo-install", do you know which pkg should I use?

(no debugging symbols found)...done.
Loaded symbols for /usr/lib64/sasl2/libdigestmd5.so
0x00007f03ea075c3d in poll () from /lib64/libc.so.6
Missing separate debuginfos, use: debuginfo-install qemu-kvm-1.5.3-173.el7.x86_64
(gdb) debuginfo-install qemu-kvm-1.5.3-173.el7.x86_64
Undefined command: "debuginfo-install".  Try "help".

[root@ilx24s yum.repos.d]# debuginfo-install qemu-kvm-1.5.3-173.el7.x86_64
Loaded plugins: langpacks, product-id, subscription-manager

This system is not registered with an entitlement server. You can use subscription-manager to register.

Could not find debuginfo for main pkg: 10:qemu-kvm-1.5.3-173.el7.x86_64
Could not find debuginfo pkg for dependency package libaio-0.3.109-13.el7.x86_64
Could not find debuginfo pkg for dependency package alsa-lib-1.1.8-1.el7.x86_64
Could not find debuginfo pkg for dependency package glibc-2.17-307.el7.1.x86_64
Could not find debuginfo pkg for dependency package libcurl-7.29.0-57.el7.x86_64
Could not find debuginfo pkg for dependency package glusterfs-api-6.0-29.el7.x86_64
Could not find debuginfo pkg for dependency package glusterfs-libs-6.0-29.el7.x86_64
Could not find debuginfo pkg for dependency package glib2-2.56.1-5.el7.x86_64
Could not find debuginfo pkg for dependency package gnutls-3.3.29-9.el7_6.x86_64
Could not find debuginfo pkg for dependency package libibverbs-22.4-1.el7.x86_64
Could not find debuginfo pkg for dependency package libiscsi-1.9.0-7.el7.x86_64
Could not find debuginfo pkg for dependency package lzo-2.06-8.el7.x86_64
Could not find debuginfo pkg for dependency package nspr-4.21.0-1.el7.x86_64
Could not find debuginfo pkg for dependency package nss-3.44.0-7.el7_7.x86_64
Could not find debuginfo pkg for dependency package nss-util-3.44.0-4.el7_7.x86_64
Could not find debuginfo pkg for dependency package pixman-0.34.0-1.el7.x86_64
Could not find debuginfo pkg for dependency package 2:libpng-1.5.13-7.el7_2.x86_64
Could not find debuginfo pkg for dependency package pulseaudio-libs-10.0-5.el7.x86_64
Could not find debuginfo pkg for dependency package 1:librados2-10.2.5-4.el7.x86_64
Could not find debuginfo pkg for dependency package 1:librbd1-10.2.5-4.el7.x86_64
Could not find debuginfo pkg for dependency package librdmacm-22.4-1.el7.x86_64
Could not find debuginfo pkg for dependency package cyrus-sasl-lib-2.1.26-23.el7.x86_64
Could not find debuginfo pkg for dependency package libseccomp-2.3.1-4.el7.x86_64
Could not find debuginfo pkg for dependency package snappy-1.1.0-3.el7.x86_64
Could not find debuginfo pkg for dependency package spice-server-0.14.0-9.el7.x86_64
Could not find debuginfo pkg for dependency package libssh2-1.8.0-3.el7.x86_64
Could not find debuginfo pkg for dependency package gperftools-libs-2.6.1-1.el7.x86_64
Could not find debuginfo pkg for dependency package libusbx-1.0.21-1.el7.x86_64
Could not find debuginfo pkg for dependency package usbredir-0.7.1-3.el7.x86_64
Could not find debuginfo pkg for dependency package libuuid-2.23.2-63.el7.x86_64
Could not find debuginfo pkg for dependency package zlib-1.2.7-18.el7.x86_64
No debuginfo packages available to install
[root@ilx24s yum.repos.d]# yum install qemu-kvm-1.5.3-173.el7.x86_64

This system is not registered with an entitlement server. You can use subscription-manager to register.

Package 10:qemu-kvm-1.5.3-173.el7.x86_64 already installed and latest version
[root@ilx24s yum.repos.d]#

------- Comment From shlyi.com 2020-04-17 05:16 EDT-------
> Can I assume from responses shown in
> https://bugzilla.redhat.com/show_bug.cgi?id=1803716#c17 that perhaps the
> debuginfo pkgs have been successfully installed?
> There is also concern about the time spent chasing a needle in the haystack
> type problem on older software....
> It's not that RHEL7 problems aren't important, but there are a lot of
> variables to consider.
> Do you know whether the same problem exists using RHEL8?

Yes, similar problem do exist on RHEL8, but I have no access to view https://bugzilla.redhat.com/show_bug.cgi?id=1803716#c17

Comment 23 IBM Bug Proxy 2020-10-22 07:54:12 UTC
Created attachment 1723438 [details]
sosreport-ilx21r


------- Comment on attachment From shlyi.com 2019-12-30 21:45 EDT-------


re-upload sosreport-ilx21r

Comment 24 IBM Bug Proxy 2020-10-22 07:54:15 UTC
Created attachment 1723439 [details]
Connection TOPO of the host ilx21r


------- Comment on attachment From shlyi.com 2019-12-23 21:30 EDT-------


Connection TOPO of the host ilx21r

Comment 25 IBM Bug Proxy 2020-10-22 07:54:27 UTC
Created attachment 1723440 [details]
sosreport of ilx21r1r


------- Comment on attachment From shlyi.com 2019-12-31 01:53 EDT-------


re-upload sosreport of ilx21r1r

Comment 26 IBM Bug Proxy 2020-10-22 07:54:28 UTC
Created attachment 1723441 [details]
guest config file


------- Comment on attachment From shlyi.com 2019-12-24 02:04 EDT-------


Here is the guest config file used by domain in libvirt

Comment 27 IBM Bug Proxy 2020-10-22 07:54:47 UTC
Created attachment 1723442 [details]
/var/log/messages of ilx21r_Dec3

Comment 28 IBM Bug Proxy 2020-10-22 07:54:50 UTC
Created attachment 1723443 [details]
io logs containing error info

Comment 29 IBM Bug Proxy 2020-10-22 07:54:52 UTC
Created attachment 1723444 [details]
/var/log/messages of ilx21r

Comment 30 IBM Bug Proxy 2020-10-22 07:55:09 UTC
Created attachment 1723445 [details]
/var/log/messages of ilx21r

Comment 31 IBM Bug Proxy 2020-10-22 07:57:37 UTC
Created attachment 1723446 [details]
sosreport-ilx21r1r

Comment 32 IBM Bug Proxy 2020-10-22 08:06:47 UTC
Created attachment 1723447 [details]
updated system tap script with more output

Comment 33 IBM Bug Proxy 2020-10-22 08:06:54 UTC
Created attachment 1723448 [details]
messages-ilx24s-20200405

Comment 34 IBM Bug Proxy 2020-10-22 08:06:57 UTC
Created attachment 1723449 [details]
disktest, /var/log/messages of ilx24s and ilx24s1r

Comment 35 IBM Bug Proxy 2020-10-22 08:07:01 UTC
Created attachment 1723450 [details]
ilx24s1r.disktest.sda.20200402200029, guest lun of ilx24s

Comment 36 IBM Bug Proxy 2020-10-22 08:07:08 UTC
Created attachment 1723451 [details]
messages-ilx25s-20200405

Comment 37 IBM Bug Proxy 2020-10-22 08:09:54 UTC
Created attachment 1723452 [details]
io logs and system logs

Comment 38 IBM Bug Proxy 2020-10-22 08:09:56 UTC
Created attachment 1723453 [details]
systemtap script to print the error code on failed requests

Comment 39 IBM Bug Proxy 2020-10-22 08:16:38 UTC
------- Comment From shlyi.com 2020-04-08 04:25 EDT-------
(In reply to comment #15)
> Why is the storage target returning Aborted Command / IO Process Terminated
> errors ?
> It appears as if you are expecting that multipath will retry those errors,
> but this was not a path error, it was an error returned by the storage
> device.
> bug 1779758 refers to this bug, but 1779758 would be investigated as a
> kernel crash.
> Does the host or the guest OS crash here?

Yes, There was guest OS crash here, below is the comments from my original statements:
Actual results
For the guest ilx21r1r, there was io error on it starting from time 2020/03/23-15:01:32
For the guest ilx22r1s, it was rebooted by the host at 2020-03-23T14:39:53.

Could you be more specific for question "Why is the storage target returning Aborted Command / IO Process Terminated errors ?" For example, could you provide us the timeline of the "Aborted Command / IO Process Terminated errors".

------- Comment From shlyi.com 2020-04-29 23:41 EDT-------
> Please refer to the log files that were attached to this BZ to see
> when the Aborted Command / IO Process Terminated errors were received
> from the storage.

I think you refer to below logs when you were saying "Aborted Command / IO Process Terminated errors"
/var/log/messages of ilx21r1r:
Mar 23 14:38:05 ilx21r1r kernel: sd 1:0:0:6: [sdh] tag#21 Add. Sense: I/O process terminated

And I've checked with our storage dev, asked if the storage aborted any write request during that timeslot, and what storage had done during that time which may related to this issue.

Below is what he told me, in briefly speaking, the storage didn't abort any write request during that time.
Could you take a look at the mechanism of communication between the guest and its dependent host to see if the host could mislead the guest to that error by mishandling the partial failing path? Thanks a lot.

"The only commands I'm aware of that we are aborting are the ones I note above with the illegal unmap size, which is not a write command. There are plenty of other commands we aborth because they are optional and not supported, but again, not write commands. A quick look at the logs and I can find no reason we would abort the write commands. Furthermore, from the Linux logs, I have to presume the Sense Code is 0xB (for "Aborted Command") and the Additional Sense Code/Additional Sense Code Qualifier of 0x00/0x06 (for "I/O PROCESS TERMINATED"), as that seems to match closest to the report (since they don't supply the raw values). Well, just looked through our code, and we NEVER return that ASC/ASCQ value under any circumstance, and only issue an SC of Abort under a very specific overlapping command condition (which we would see in our logs. I can only presume that the "hypervisor" is generating this status to the guest OS, as I can say with near certainty that it's not the flash enclosure."

------- Comment From shlyi.com 2020-05-19 22:29 EDT-------
Hello emilne,

Do you have any updates for this issue?

We ran storage ei "Texan_ccl" yesterday, this case will cause half of the ports of the storage break and recover cyclically? and I get some new clue to share with you:

Summary: guest had io error and rebooted during the test. Below are the detailed trace:
EXT4-fs error detected on the guest during the test:, qemu-kvm crashed after path coming back on the host;

on the host ilx21r, /var/log/messages:
May 18 23:27:56 ilx21r abrt-hook-ccpp[390001]: Process 10020 (qemu-kvm) of user 107 killed by SIGABRT - dumping core

on the guest ilx21r1r, /var/log/messages:
May 18 21:28:52 ilx21r1r kernel: print_req_error: 459 callbacks suppressed
May 18 21:28:52 ilx21r1r kernel: print_req_error: I/O error, dev sdf, sector 53560 flags 801
May 18 21:28:52 ilx21r1r kernel: Aborting journal on device sdf-8.
May 18 21:28:52 ilx21r1r kernel: EXT4-fs error (device sdf) in ext4_reserve_inode_write:5894: Journal has aborted

I'll attach whole logs later.

------- Comment From mcneals.com 2020-06-03 10:41 EDT-------
This is a blocking defect and will prevent us from publishing support.

Comment 40 IBM Bug Proxy 2020-10-22 08:16:46 UTC
Created attachment 1723457 [details]
IO errors, /var/log/messages, and XML for RHEL8.2 guest

Comment 41 IBM Bug Proxy 2020-10-22 08:17:05 UTC
Created attachment 1723458 [details]
sosreport of ilx22r - part 2/2

Comment 42 IBM Bug Proxy 2020-10-22 08:21:12 UTC
Created attachment 1723459 [details]
abrt log of ilx24s1r

Comment 43 IBM Bug Proxy 2020-10-22 08:21:18 UTC
Created attachment 1723460 [details]
message logs and io log

Comment 44 IBM Bug Proxy 2020-10-22 08:29:04 UTC
Created attachment 1723468 [details]
collectlogs of ilx21r

Comment 45 IBM Bug Proxy 2020-10-22 08:29:41 UTC
Created attachment 1723469 [details]
sosreport of ilx21r

Comment 46 IBM Bug Proxy 2020-10-22 08:30:23 UTC
Created attachment 1723470 [details]
sosreport of ilx21r

Comment 47 IBM Bug Proxy 2020-10-22 08:30:58 UTC
Created attachment 1723471 [details]
sosreport of ilx21r1r

Comment 48 IBM Bug Proxy 2020-10-22 08:31:22 UTC
Created attachment 1723472 [details]
sosreport of ilx21r1r

Comment 49 IBM Bug Proxy 2020-10-22 08:49:44 UTC
Created attachment 1723476 [details]
sosreport of ilx21r  - part 2/2

Comment 50 IBM Bug Proxy 2020-10-22 08:50:03 UTC
Created attachment 1723477 [details]
sosreport of ilx22r - part 1/2

Comment 51 IBM Bug Proxy 2020-10-22 08:50:22 UTC
Created attachment 1723478 [details]
sosreport of ilx21r  - part 1/2

Comment 52 IBM Bug Proxy 2020-10-22 08:50:35 UTC
Created attachment 1723479 [details]
messages-ilx21r1r-May18

Comment 53 IBM Bug Proxy 2020-10-22 08:50:44 UTC
Created attachment 1723480 [details]
messages-ilx21r-May18

Comment 54 IBM Bug Proxy 2020-11-09 15:17:52 UTC
------- Comment From hannsj_uhl.com 2020-11-09 10:11 EDT-------
..

Comment 56 Ademar Reis 2020-11-10 16:32:05 UTC
This issue depends on the kernel/DM work being tracked in Bug 1855868.

Hanns-Joachim Uhl: I'll put you in contact with the IBM Partner Manager (via email) who can coordinate the escalation of this issue.

Comment 57 Hanns-Joachim Uhl 2020-11-10 16:53:37 UTC
(In reply to Ademar Reis from comment #56)
> This issue depends on the kernel/DM work being tracked in Bug 1855868.
> 
> Hanns-Joachim Uhl: I'll put you in contact with the IBM Partner Manager (via
> email) who can coordinate the escalation of this issue.
.
ah ok ... I just have seen that this bugzilla is tagged as 'FutureFeature' ...
and therefore I am resetting the severity to 'high' ... 
... let's see whether this bugzilla will make RHEL-AV 8.4.0 ...

Comment 58 Ademar Reis 2020-11-10 19:30:57 UTC
(In reply to Hanns-Joachim Uhl from comment #57)
> (In reply to Ademar Reis from comment #56)
> > This issue depends on the kernel/DM work being tracked in Bug 1855868.
> > 
> > Hanns-Joachim Uhl: I'll put you in contact with the IBM Partner Manager (via
> > email) who can coordinate the escalation of this issue.
> .
> ah ok ... I just have seen that this bugzilla is tagged as 'FutureFeature'
> ...
> and therefore I am resetting the severity to 'high' ... 
> ... let's see whether this bugzilla will make RHEL-AV 8.4.0 ...

I can't speak on behalf of the kernel/dm team, but given the complexity of what's involved and the activity in the BZ, I would say it's unlikely to be fixed in 8.4.0. If this is important to IBM, then I recommend escalating it with the IBM Partner Manager for it to receive proper attention and prioritization. Thanks.

Comment 59 qing.wang 2020-11-19 13:37:49 UTC
Guest hit io-error even if using virtio device

Red Hat Enterprise Linux release 8.2 (Ootpa)
4.18.0-193.el8.x86_64
qemu-kvm-common-4.2.0-29.module+el8.2.1+7297+a825794d.x86_64

1.Create multipath device

multipath -f /dev/mapper/mpathb;modprobe -r scsi_debug
modprobe scsi_debug dev_size_mb=5000 num_tgts=1 vpd_use_hostno=0 add_host=2 delay=1 max_luns=2 no_lun_0=1

root@dell-per440-10 /home/rworkdir/vbugs # multipath  -l
mpathb (333333330000007d1) dm-5 Linux,scsi_debug
size=4.9G features='0' hwhandler='1 alua' wp=rw
|-+- policy='service-time 0' prio=0 status=active
| `- 18:0:0:1 sde 8:64 active undef running
`-+- policy='service-time 0' prio=0 status=enabled
  `- 17:0:0:1 sdd 8:48 active undef running

2.Boot vm with passthrough dm device, the disk attached as virtio-blk-pci

/usr/libexec/qemu-kvm \
  -name src_vm1 \
  -machine q35 \
  -nodefaults \
  -vga qxl \
  -device pcie-root-port,id=pcie.0-root-port-2,slot=2,bus=pcie.0,multifunction=on \
  -device pcie-root-port,id=pcie.0-root-port-2-1,chassis=3,bus=pcie.0,addr=0x2.0x1 \
  -device pcie-root-port,id=pcie.0-root-port-2-2,chassis=4,bus=pcie.0,addr=0x2.0x2 \
  -device pcie-root-port,id=pcie.0-root-port-3,slot=3,bus=pcie.0 \
  -device pcie-root-port,id=pcie.0-root-port-4,slot=4,bus=pcie.0 \
  -device pcie-root-port,id=pcie.0-root-port-5,slot=5,bus=pcie.0 \
  -device pcie-root-port,id=pcie.0-root-port-7,slot=7,bus=pcie.0 \
  -device pcie-root-port,id=pcie.0-root-port-8,slot=8,bus=pcie.0 \
  -device pcie-root-port,id=pcie.0-root-port-9,slot=9,bus=pcie.0 \
  -device qemu-xhci,id=usb1,bus=pcie.0-root-port-2-1,addr=0x0 \
  -device usb-tablet,id=usb-tablet1,bus=usb1.0,port=1 \
  -object iothread,id=iothread0 \
  -device virtio-scsi-pci,id=scsi0,bus=pcie.0-root-port-2-2,addr=0x0,iothread=iothread0 \
  \
  -blockdev driver=qcow2,file.driver=file,cache.direct=off,cache.no-flush=on,file.filename=/home/kvm_autotest_root/images/rhel830-64-virtio-scsi.qcow2,node-name=drive_image1 \
  -device scsi-hd,id=os1,drive=drive_image1,bootindex=0 \
  \
  -device virtio-scsi-pci,id=scsi1,bus=pcie.0-root-port-8,addr=0x0 \
  -blockdev node-name=host_device_stg0,driver=host_device,filename=/dev/mapper/mpathb \
  -blockdev node-name=drive_stg0,driver=raw,file=host_device_stg0 \
  -device virtio-blk-pci,scsi=off,bus=pcie.0-root-port-4,addr=0,drive=drive_stg0,id=stg0,write-cache=on,rerror=stop,werror=stop,bootindex=2 \
  \
  -vnc :5 \
  -qmp tcp:0:5955,server,nowait \
  -monitor stdio \
  -m 8192 \
  -smp 8 \
  -device virtio-net-pci,mac=9a:b5:b6:b1:b2:b5,id=idMmq1jH,vectors=4,netdev=idxgXAlm,bus=pcie.0-root-port-5,addr=0x0 \
  -netdev tap,id=idxgXAlm \

3. do io on the disk in guest
while true;do dd if=/dev/zero of=/dev/vda;done

4.Alternately close a path every 10 seconds on host
offline ===== sde
mpathb (333333330000007d1) dm-5 Linux,scsi_debug
size=4.9G features='0' hwhandler='1 alua' wp=rw
|-+- policy='service-time 0' prio=0 status=active
| `- 18:0:0:1 sde 8:64 active faulty offline
`-+- policy='service-time 0' prio=0 status=enabled
  `- 17:0:0:1 sdd 8:48 active undef running
online ===== sde
mpathb (333333330000007d1) dm-5 Linux,scsi_debug
size=4.9G features='0' hwhandler='1 alua' wp=rw
|-+- policy='service-time 0' prio=0 status=active
| `- 18:0:0:1 sde 8:64 failed undef running
`-+- policy='service-time 0' prio=0 status=enabled
  `- 17:0:0:1 sdd 8:48 active undef running

offline ===== sdd
mpathb (333333330000007d1) dm-5 Linux,scsi_debug
size=4.9G features='0' hwhandler='1 alua' wp=rw
|-+- policy='service-time 0' prio=0 status=active
| `- 18:0:0:1 sde 8:64 active undef running
`-+- policy='service-time 0' prio=0 status=enabled
  `- 17:0:0:1 sdd 8:48 active faulty offline
online ===== sdd
mpathb (333333330000007d1) dm-5 Linux,scsi_debug
size=4.9G features='0' hwhandler='1 alua' wp=rw
|-+- policy='service-time 0' prio=0 status=active
| `- 18:0:0:1 sde 8:64 active undef running
`-+- policy='service-time 0' prio=0 status=enabled
  `- 17:0:0:1 sdd 8:48 active undef running

offline ===== sde
....

5.check status for guest 1 minute latet

(qemu) info status
VM status: paused (io-error)

Is is not expected?

Comment 60 Ademar Reis 2020-11-19 13:51:33 UTC
(In reply to qing.wang from comment #59)
> Guest hit io-error even if using virtio device
> 
> Red Hat Enterprise Linux release 8.2 (Ootpa)
> 4.18.0-193.el8.x86_64
> qemu-kvm-common-4.2.0-29.module+el8.2.1+7297+a825794d.x86_64
> 
> 1.Create multipath device
> 
> multipath -f /dev/mapper/mpathb;modprobe -r scsi_debug
> modprobe scsi_debug dev_size_mb=5000 num_tgts=1 vpd_use_hostno=0 add_host=2
> delay=1 max_luns=2 no_lun_0=1
> 
> root@dell-per440-10 /home/rworkdir/vbugs # multipath  -l
> mpathb (333333330000007d1) dm-5 Linux,scsi_debug
> size=4.9G features='0' hwhandler='1 alua' wp=rw
> |-+- policy='service-time 0' prio=0 status=active
> | `- 18:0:0:1 sde 8:64 active undef running
> `-+- policy='service-time 0' prio=0 status=enabled
>   `- 17:0:0:1 sdd 8:48 active undef running
> 
> 2.Boot vm with passthrough dm device, the disk attached as virtio-blk-pci
> 
> /usr/libexec/qemu-kvm \
>   -name src_vm1 \
>   -machine q35 \
>   -nodefaults \
>   -vga qxl \
>   -device
> pcie-root-port,id=pcie.0-root-port-2,slot=2,bus=pcie.0,multifunction=on \
>   -device
> pcie-root-port,id=pcie.0-root-port-2-1,chassis=3,bus=pcie.0,addr=0x2.0x1 \
>   -device
> pcie-root-port,id=pcie.0-root-port-2-2,chassis=4,bus=pcie.0,addr=0x2.0x2 \
>   -device pcie-root-port,id=pcie.0-root-port-3,slot=3,bus=pcie.0 \
>   -device pcie-root-port,id=pcie.0-root-port-4,slot=4,bus=pcie.0 \
>   -device pcie-root-port,id=pcie.0-root-port-5,slot=5,bus=pcie.0 \
>   -device pcie-root-port,id=pcie.0-root-port-7,slot=7,bus=pcie.0 \
>   -device pcie-root-port,id=pcie.0-root-port-8,slot=8,bus=pcie.0 \
>   -device pcie-root-port,id=pcie.0-root-port-9,slot=9,bus=pcie.0 \
>   -device qemu-xhci,id=usb1,bus=pcie.0-root-port-2-1,addr=0x0 \
>   -device usb-tablet,id=usb-tablet1,bus=usb1.0,port=1 \
>   -object iothread,id=iothread0 \
>   -device
> virtio-scsi-pci,id=scsi0,bus=pcie.0-root-port-2-2,addr=0x0,
> iothread=iothread0 \
>   \
>   -blockdev
> driver=qcow2,file.driver=file,cache.direct=off,cache.no-flush=on,file.
> filename=/home/kvm_autotest_root/images/rhel830-64-virtio-scsi.qcow2,node-
> name=drive_image1 \
>   -device scsi-hd,id=os1,drive=drive_image1,bootindex=0 \
>   \
>   -device virtio-scsi-pci,id=scsi1,bus=pcie.0-root-port-8,addr=0x0 \
>   -blockdev
> node-name=host_device_stg0,driver=host_device,filename=/dev/mapper/mpathb \
>   -blockdev node-name=drive_stg0,driver=raw,file=host_device_stg0 \
>   -device
> virtio-blk-pci,scsi=off,bus=pcie.0-root-port-4,addr=0,drive=drive_stg0,
> id=stg0,write-cache=on,rerror=stop,werror=stop,bootindex=2 \
>   \
>   -vnc :5 \
>   -qmp tcp:0:5955,server,nowait \
>   -monitor stdio \
>   -m 8192 \
>   -smp 8 \
>   -device
> virtio-net-pci,mac=9a:b5:b6:b1:b2:b5,id=idMmq1jH,vectors=4,netdev=idxgXAlm,
> bus=pcie.0-root-port-5,addr=0x0 \
>   -netdev tap,id=idxgXAlm \
> 
> 3. do io on the disk in guest
> while true;do dd if=/dev/zero of=/dev/vda;done
> 
> 4.Alternately close a path every 10 seconds on host
> offline ===== sde
> mpathb (333333330000007d1) dm-5 Linux,scsi_debug
> size=4.9G features='0' hwhandler='1 alua' wp=rw
> |-+- policy='service-time 0' prio=0 status=active
> | `- 18:0:0:1 sde 8:64 active faulty offline
> `-+- policy='service-time 0' prio=0 status=enabled
>   `- 17:0:0:1 sdd 8:48 active undef running
> online ===== sde
> mpathb (333333330000007d1) dm-5 Linux,scsi_debug
> size=4.9G features='0' hwhandler='1 alua' wp=rw
> |-+- policy='service-time 0' prio=0 status=active
> | `- 18:0:0:1 sde 8:64 failed undef running
> `-+- policy='service-time 0' prio=0 status=enabled
>   `- 17:0:0:1 sdd 8:48 active undef running
> 
> offline ===== sdd
> mpathb (333333330000007d1) dm-5 Linux,scsi_debug
> size=4.9G features='0' hwhandler='1 alua' wp=rw
> |-+- policy='service-time 0' prio=0 status=active
> | `- 18:0:0:1 sde 8:64 active undef running
> `-+- policy='service-time 0' prio=0 status=enabled
>   `- 17:0:0:1 sdd 8:48 active faulty offline
> online ===== sdd
> mpathb (333333330000007d1) dm-5 Linux,scsi_debug
> size=4.9G features='0' hwhandler='1 alua' wp=rw
> |-+- policy='service-time 0' prio=0 status=active
> | `- 18:0:0:1 sde 8:64 active undef running
> `-+- policy='service-time 0' prio=0 status=enabled
>   `- 17:0:0:1 sdd 8:48 active undef running
> 
> offline ===== sde
> ....
> 
> 5.check status for guest 1 minute latet
> 
> (qemu) info status
> VM status: paused (io-error)
> 
> Is is not expected?

Paolo?

Comment 61 qing.wang 2021-01-11 08:03:02 UTC
Please help to check test step, does it meet test requirement? What is expected result on https://bugzilla.redhat.com/show_bug.cgi?id=1854659#c59, it should not hit io-error as long as any path is valid ?

Comment 62 Paolo Bonzini 2021-01-11 10:00:26 UTC
> it should not hit io-error as long as any path is valid ?

It shouldn't.  In fact that scenario (or also scsi-hd) is not SCSI passthrough (SCSI passthrough is only with scsi-block/scsi-generic) so it seems to be a different bug?  Can you reproduce it just with "dd" on the host without involving virtualization at all?

Comment 63 qing.wang 2021-01-12 07:26:52 UTC
I tried dd on the host only

1. create multipath device
modprobe scsi_debug dev_size_mb=5000 num_tgts=1 vpd_use_hostno=0 add_host=2 delay=1 max_luns=2 no_lun_0=1

mpatha (333333330000007d1) dm-3 Linux,scsi_debug
size=4.9G features='0' hwhandler='1 alua' wp=rw
|-+- policy='service-time 0' prio=0 status=active
| `- 15:0:0:1 sdb 8:16 active undef running
`-+- policy='service-time 0' prio=0 status=enabled
  `- 16:0:0:1 sdc 8:32 active undef running

2.run dd on the DM-multipath device
 while true;do echo "dd..";dd if=/dev/urandom of=/dev/mapper/mpatha oflag=direct bs=4k count=100000;echo "dd end";sleep 1;done

3. Alternately close a path every 10 seconds on host
offline ===== sdc 02:16:44
mpatha (333333330000007d1) dm-3 Linux,scsi_debug
size=4.9G features='0' hwhandler='1 alua' wp=rw
|-+- policy='service-time 0' prio=0 status=active
| `- 15:0:0:1 sdb 8:16 active undef running
`-+- policy='service-time 0' prio=0 status=enabled
  `- 16:0:0:1 sdc 8:32 failed faulty offline
online ====== sdc 02:16:54
mpatha (333333330000007d1) dm-3 Linux,scsi_debug
size=4.9G features='0' hwhandler='1 alua' wp=rw
|-+- policy='service-time 0' prio=0 status=active
| `- 15:0:0:1 sdb 8:16 active undef running
`-+- policy='service-time 0' prio=0 status=enabled
  `- 16:0:0:1 sdc 8:32 failed undef running

offline ===== sdb 02:17:00
mpatha (333333330000007d1) dm-3 Linux,scsi_debug
size=4.9G features='0' hwhandler='1 alua' wp=rw
|-+- policy='service-time 0' prio=0 status=enabled
| `- 15:0:0:1 sdb 8:16 failed faulty offline
`-+- policy='service-time 0' prio=0 status=active
  `- 16:0:0:1 sdc 8:32 active undef running
online ====== sdb 02:17:10
mpatha (333333330000007d1) dm-3 Linux,scsi_debug
size=4.9G features='0' hwhandler='1 alua' wp=rw
|-+- policy='service-time 0' prio=0 status=enabled
| `- 15:0:0:1 sdb 8:16 failed undef running
`-+- policy='service-time 0' prio=0 status=active
  `- 16:0:0:1 sdc 8:32 active undef running

offline ===== sdc 02:17:15
mpatha (333333330000007d1) dm-3 Linux,scsi_debug
size=4.9G features='0' hwhandler='1 alua' wp=rw
|-+- policy='service-time 0' prio=0 status=active
| `- 15:0:0:1 sdb 8:16 active undef running
`-+- policy='service-time 0' prio=0 status=enabled
  `- 16:0:0:1 sdc 8:32 failed faulty offline
online ====== sdc 02:17:25
mpatha (333333330000007d1) dm-3 Linux,scsi_debug
size=4.9G features='0' hwhandler='1 alua' wp=rw
|-+- policy='service-time 0' prio=0 status=active
| `- 15:0:0:1 sdb 8:16 active undef running
`-+- policy='service-time 0' prio=0 status=enabled
  `- 16:0:0:1 sdc 8:32 failed undef running



Sometimes dd encounter io error
dd..
dd: error writing '/dev/mapper/mpatha': Input/output error
56305+0 records in
56304+0 records out
230621184 bytes (231 MB, 220 MiB) copied, 61.1572 s, 3.8 MB/s
dd end

/var/log/messages

Jan 12 02:23:02 dell-per440-10 kernel: sd 15:0:0:1: rejecting I/O to offline device
Jan 12 02:23:02 dell-per440-10 kernel: device-mapper: multipath: 253:3: Failing path 8:16.
Jan 12 02:23:02 dell-per440-10 multipathd[390972]: sdb: mark as failed
Jan 12 02:23:02 dell-per440-10 multipathd[390972]: mpatha: remaining active paths: 1
Jan 12 02:23:02 dell-per440-10 kernel: sd 16:0:0:1: alua: port group 1100 state N non-preferred supports tolUSNA
Jan 12 02:23:02 dell-per440-10 kernel: sd 16:0:0:1: alua: port group 1100 state N non-preferred supports tolUSNA
Jan 12 02:23:07 dell-per440-10 multipathd[390972]: mpatha: sdb - path offline
Jan 12 02:23:12 dell-per440-10 multipathd[390972]: mpatha: sdb - path offline
Jan 12 02:23:17 dell-per440-10 kernel: sd 16:0:0:1: rejecting I/O to offline device
Jan 12 02:23:17 dell-per440-10 kernel: device-mapper: multipath: 253:3: Failing path 8:32.
Jan 12 02:23:17 dell-per440-10 kernel: blk_update_request: I/O error, dev dm-3, sector 652864 op 0x1:(WRITE) flags 0x8800 phys_seg 1 prio class 0
Jan 12 02:23:17 dell-per440-10 multipathd[390972]: sdc: mark as failed
Jan 12 02:23:17 dell-per440-10 multipathd[390972]: mpatha: remaining active paths: 0
Jan 12 02:23:18 dell-per440-10 multipathd[390972]: mpatha: sdb - tur checker reports path is up
Jan 12 02:23:18 dell-per440-10 kernel: device-mapper: multipath: 253:3: Reinstating path 8:16.
Jan 12 02:23:18 dell-per440-10 multipathd[390972]: 8:16: reinstated
Jan 12 02:23:18 dell-per440-10 multipathd[390972]: mpatha: remaining active paths: 1
Jan 12 02:23:18 dell-per440-10 kernel: sd 15:0:0:1: alua: port group 1000 state A non-preferred supports tolUSNA
Jan 12 02:23:18 dell-per440-10 kernel: sd 15:0:0:1: alua: port group 1000 state A non-preferred supports tolUSNA
Jan 12 02:23:22 dell-per440-10 multipathd[390972]: mpatha: sdc - path offline
Jan 12 02:23:27 dell-per440-10 multipathd[390972]: mpatha: sdc - path offline
Jan 12 02:23:33 dell-per440-10 multipathd[390972]: mpatha: sdc - tur checker reports path is up
Jan 12 02:23:33 dell-per440-10 kernel: device-mapper: multipath: 253:3: Reinstating path 8:32.
Jan 12 02:23:33 dell-per440-10 multipathd[390972]: 8:32: reinstated
Jan 12 02:23:33 dell-per440-10 multipathd[390972]: mpatha: remaining active paths: 2
Jan 12 02:23:33 dell-per440-10 kernel: sd 15:0:0:1: rejecting I/O to offline device
Jan 12 02:23:33 dell-per440-10 kernel: device-mapper: multipath: 253:3: Failing path 8:16.
Jan 12 02:23:33 dell-per440-10 kernel: sd 16:0:0:1: alua: port group 1100 state N non-preferred supports tolUSNA
Jan 12 02:23:33 dell-per440-10 kernel: sd 16:0:0:1: alua: port group 1100 state N non-preferred supports tolUSNA
Jan 12 02:23:34 dell-per440-10 multipathd[390972]: mpatha: sdb - path offline
Jan 12 02:23:34 dell-per440-10 multipathd[390972]: checker failed path 8:16 in map mpatha
Jan 12 02:23:34 dell-per440-10 multipathd[390972]: mpatha: remaining active paths: 1
Jan 12 02:23:39 dell-per440-10 multipathd[390972]: mpatha: sdb - path offline
Jan 12 02:23:45 dell-per440-10 multipathd[390972]: mpatha: sdb - tur checker reports path is up
Jan 12 02:23:45 dell-per440-10 kernel: device-mapper: multipath: 253:3: Reinstating path 8:16.
Jan 12 02:23:45 dell-per440-10 multipathd[390972]: 8:16: reinstated
Jan 12 02:23:45 dell-per440-10 multipathd[390972]: mpatha: remaining active paths: 2
Jan 12 02:23:48 dell-per440-10 kernel: sd 16:0:0:1: rejecting I/O to offline device
Jan 12 02:23:48 dell-per440-10 kernel: device-mapper: multipath: 253:3: Failing path 8:32.
Jan 12 02:23:48 dell-per440-10 multipathd[390972]: sdc: mark as failed
Jan 12 02:23:48 dell-per440-10 multipathd[390972]: mpatha: remaining active paths: 1
Jan 12 02:23:48 dell-per440-10 kernel: sd 15:0:0:1: alua: port group 1000 state A non-preferred supports tolUSNA
Jan 12 02:23:48 dell-per440-10 kernel: sd 15:0:0:1: alua: port group 1000 state A non-preferred supports tolUSNA
Jan 12 02:23:49 dell-per440-10 multipathd[390972]: mpatha: sdc - path offline
Jan 12 02:23:54 dell-per440-10 multipathd[390972]: mpatha: sdc - path offline
Jan 12 02:23:59 dell-per440-10 multipathd[390972]: mpatha: sdc - tur checker reports path is up
Jan 12 02:23:59 dell-per440-10 kernel: device-mapper: multipath: 253:3: Reinstating path 8:32.
Jan 12 02:23:59 dell-per440-10 multipathd[390972]: 8:32: reinstated
Jan 12 02:23:59 dell-per440-10 multipathd[390972]: mpatha: remaining active paths: 2
Jan 12 02:24:04 dell-per440-10 kernel: sd 15:0:0:1: rejecting I/O to offline device
Jan 12 02:24:04 dell-per440-10 kernel: device-mapper: multipath: 253:3: Failing path 8:16.
Jan 12 02:24:04 dell-per440-10 multipathd[390972]: sdb: mark as failed
Jan 12 02:24:04 dell-per440-10 multipathd[390972]: mpatha: remaining active paths: 1
Jan 12 02:24:04 dell-per440-10 kernel: sd 16:0:0:1: alua: port group 1100 state N non-preferred supports tolUSNA
Jan 12 02:24:04 dell-per440-10 kernel: sd 16:0:0:1: alua: port group 1100 state N non-preferred supports tolUSNA
Jan 12 02:24:09 dell-per440-10 multipathd[390972]: mpatha: sdb - path offline
Jan 12 02:24:14 dell-per440-10 multipathd[390972]: mpatha: sdb - path offline
Jan 12 02:24:19 dell-per440-10 kernel: sd 16:0:0:1: rejecting I/O to offline device
Jan 12 02:24:19 dell-per440-10 kernel: device-mapper: multipath: 253:3: Failing path 8:32.
Jan 12 02:24:19 dell-per440-10 kernel: blk_update_request: I/O error, dev dm-3, sector 450432 op 0x1:(WRITE) flags 0x8800 phys_seg 1 prio class 0
Jan 12 02:24:19 dell-per440-10 multipathd[390972]: sdc: mark as failed
Jan 12 02:24:19 dell-per440-10 multipathd[390972]: mpatha: remaining active paths: 0
Jan 12 02:24:20 dell-per440-10 multipathd[390972]: mpatha: sdb - tur checker reports path is up
Jan 12 02:24:20 dell-per440-10 kernel: device-mapper: multipath: 253:3: Reinstating path 8:16.
Jan 12 02:24:20 dell-per440-10 multipathd[390972]: 8:16: reinstated
Jan 12 02:24:20 dell-per440-10 multipathd[390972]: mpatha: remaining active paths: 1
Jan 12 02:24:20 dell-per440-10 kernel: sd 15:0:0:1: alua: port group 1000 state A non-preferred supports tolUSNA
Jan 12 02:24:20 dell-per440-10 kernel: sd 15:0:0:1: alua: port group 1000 state A non-preferred supports tolUSNA
Jan 12 02:24:24 dell-per440-10 multipathd[390972]: mpatha: sdc - path offline
Jan 12 02:24:29 dell-per440-10 multipathd[390972]: mpatha: sdc - path offline
Jan 12 02:24:35 dell-per440-10 multipathd[390972]: mpatha: sdc - tur checker reports path is up
Jan 12 02:24:35 dell-per440-10 kernel: device-mapper: multipath: 253:3: Reinstating path 8:32.
Jan 12 02:24:35 dell-per440-10 multipathd[390972]: 8:32: reinstated
Jan 12 02:24:35 dell-per440-10 multipathd[390972]: mpatha: remaining active paths: 2
Jan 12 02:24:35 dell-per440-10 kernel: sd 15:0:0:1: rejecting I/O to offline device
Jan 12 02:24:35 dell-per440-10 kernel: device-mapper: multipath: 253:3: Failing path 8:16.
Jan 12 02:24:35 dell-per440-10 kernel: sd 16:0:0:1: alua: port group 1100 state N non-preferred supports tolUSNA
Jan 12 02:24:35 dell-per440-10 kernel: sd 16:0:0:1: alua: port group 1100 state N non-preferred supports tolUSNA
Jan 12 02:24:36 dell-per440-10 multipathd[390972]: sdb: mark as failed
Jan 12 02:24:36 dell-per440-10 multipathd[390972]: mpatha: remaining active paths: 1
Jan 12 02:24:41 dell-per440-10 multipathd[390972]: mpatha: sdb - path offline
Jan 12 02:24:47 dell-per440-10 multipathd[390972]: mpatha: sdb - tur checker reports path is up
Jan 12 02:24:47 dell-per440-10 kernel: device-mapper: multipath: 253:3: Reinstating path 8:16.
Jan 12 02:24:47 dell-per440-10 multipathd[390972]: 8:16: reinstated
Jan 12 02:24:47 dell-per440-10 multipathd[390972]: mpatha: remaining active paths: 2
Jan 12 02:24:50 dell-per440-10 kernel: sd 16:0:0:1: rejecting I/O to offline device
Jan 12 02:24:50 dell-per440-10 kernel: device-mapper: multipath: 253:3: Failing path 8:32.
Jan 12 02:24:50 dell-per440-10 multipathd[390972]: sdc: mark as failed
Jan 12 02:24:50 dell-per440-10 multipathd[390972]: mpatha: remaining active paths: 1
Jan 12 02:24:50 dell-per440-10 kernel: sd 15:0:0:1: alua: port group 1000 state A non-preferred supports tolUSNA
Jan 12 02:24:50 dell-per440-10 kernel: sd 15:0:0:1: alua: port group 1000 state A non-preferred supports tolUSNA
Jan 12 02:24:51 dell-per440-10 multipathd[390972]: mpatha: sdc - path offline

Comment 64 qing.wang 2021-01-12 07:35:10 UTC
(In reply to Paolo Bonzini from comment #62)
> > it should not hit io-error as long as any path is valid ?
> 
> It shouldn't.  In fact that scenario (or also scsi-hd) is not SCSI
> passthrough (SCSI passthrough is only with scsi-block/scsi-generic) so it
> seems to be a different bug?  Can you reproduce it just with "dd" on the
> host without involving virtualization at all?

https://bugzilla.redhat.com/show_bug.cgi?id=1854659#c3 is the SCSI passthrough device(scsi-block), 
Do you think we need to open a bug to track 
 virtio-blk-pci device  or scsi-hd device based on the DM-multipath device? like as:

-blockdev node-name=host_device_stg0,driver=host_device,filename=/dev/mapper/mpathb \
-blockdev node-name=drive_stg0,driver=raw,file=host_device_stg0 \
-device  virtio-blk-pci,scsi=off,bus=pcie.0-root-port-4,addr=0,drive=drive_stg0,
 id=stg0,write-cache=on,rerror=stop,werror=stop,bootindex=2 \

(dd on host result please check https://bugzilla.redhat.com/show_bug.cgi?id=1854659#c63)

Comment 65 Paolo Bonzini 2021-01-12 14:10:56 UTC
Based on the dd results this looks like a kernel bug that can be reproduced without virtualization, so I think it should be a separate bug.

Comment 66 qing.wang 2021-01-13 07:07:42 UTC
Hi bmarzins,could you pleaes help to check https://bugzilla.redhat.com/show_bug.cgi?id=1854659#c63 . hitting io-error is expected result or bug during the path switching?

Comment 67 Ben Marzinski 2021-01-13 18:13:33 UTC
No, you should clearly not be hitting IO errors as long as there are valid paths.  However, there aren't valid paths when you are hitting IO errors.

Here are the IO error cases:

Jan 12 02:23:12 dell-per440-10 multipathd[390972]: mpatha: sdb - path offline
Jan 12 02:23:17 dell-per440-10 kernel: sd 16:0:0:1: rejecting I/O to offline device
Jan 12 02:23:17 dell-per440-10 kernel: device-mapper: multipath: 253:3: Failing path 8:32.
Jan 12 02:23:17 dell-per440-10 kernel: blk_update_request: I/O error, dev dm-3, sector 652864 op 0x1:(WRITE) flags 0x8800 phys_seg 1 prio class 0
Jan 12 02:23:17 dell-per440-10 multipathd[390972]: sdc: mark as failed
Jan 12 02:23:17 dell-per440-10 multipathd[390972]: mpatha: remaining active paths: 0


Jan 12 02:24:14 dell-per440-10 multipathd[390972]: mpatha: sdb - path offline
Jan 12 02:24:19 dell-per440-10 kernel: sd 16:0:0:1: rejecting I/O to offline device
Jan 12 02:24:19 dell-per440-10 kernel: device-mapper: multipath: 253:3: Failing path 8:32.
Jan 12 02:24:19 dell-per440-10 kernel: blk_update_request: I/O error, dev dm-3, sector 450432 op 0x1:(WRITE) flags 0x8800 phys_seg 1 prio class 0
Jan 12 02:24:19 dell-per440-10 multipathd[390972]: sdc: mark as failed
Jan 12 02:24:19 dell-per440-10 multipathd[390972]: mpatha: remaining active paths: 0

So, it appears that sdc is not accepting IO when sdb is down.  These are scsi debug devices and they aren't really two separate paths to the device.  If you remove multipath, and set path sdb to offline
and try your dd directly to sdc, does it work?

Actually, trying this myself, you don't even need to set one of the devices to offline for the other to fail IO:

[root@ask-08 ~]# modprobe scsi_debug dev_size_mb=100 num_tgts=1 vpd_use_hostno=0 add_host=2 delay=1 max_luns=2 no_lun_0=1
[root@ask-08 ~]# cat /proc/partitions 
major minor  #blocks  name

  11        0    1048575 sr0
   8        0   78125000 sda
   8        1    1048576 sda1
   8        2   77074432 sda2
 253        0   15728640 dm-0
 253        1    4169728 dm-1
   8       16  244059136 sdb
   8       32  244060160 sdc
   8       48     102400 sdd
   8       64     102400 sde
[root@ask-08 ~]# dd if=/dev/sdd of=/dev/null iflag=direct bs=1M count=1
dd: error reading '/dev/sdd': Input/output error
0+0 records in
0+0 records out
0 bytes copied, 0.00122501 s, 0.0 kB/s
[root@ask-08 ~]# dd if=/dev/sde of=/dev/null iflag=direct bs=1M count=1
1+0 records in
1+0 records out
1048576 bytes (1.0 MB, 1.0 MiB) copied, 0.00332771 s, 315 MB/s

Multipathd would mark the device sdd as valid because the Test Unit Ready checks succeed, even though IO to the device appears to fail. If you change the path_checker to directio (which issues diretio reads to test if the device is usable), you will see that the device is never really usable.  This is probably a bug, but it would be a bug in the scsi_debug device driver which should, I assume, create multiple devices capable of accepting IO.

Comment 68 qing.wang 2021-01-15 08:31:03 UTC
Hi,bmarzins,thank for your quick reply, i still have questions on the issue.

This case come from customer test on FC multipath ,they  
do alternate switch port to check the path availbility.

The first question is how to trigger io error in your test.
In my test they truely located in multipath. if i offline the path of the device,
the io operation can not executed. 

root@dell-per440-10 ~ # multipath -l
mpatha (333333330000007d1) dm-3 Linux,scsi_debug
size=4.9G features='0' hwhandler='1 alua' wp=rw
|-+- policy='service-time 0' prio=0 status=active
| `- 15:0:0:1 sdb 8:16 active undef running
`-+- policy='service-time 0' prio=0 status=enabled
  `- 16:0:0:1 sdc 8:32 active undef running

root@dell-per440-10 ~ # cat /proc/partitions 
major minor  #blocks  name

   8        0  585498624 sda
   8        1     614400 sda1
   8        2    1048576 sda2
   8        3  583833600 sda3
 253        0   73400320 dm-0
 253        1   32849920 dm-1
 253        2  477581312 dm-2
   8       16    5120000 sdb
   8       32    5120000 sdc
 253        3    5120000 dm-3

root@dell-per440-10 ~ # echo offline >/sys/block/sdb/device/state
root@dell-per440-10 ~ #  dd if=/dev/sdb of=/dev/null iflag=direct bs=1M count=1
dd: failed to open '/dev/sdb': No such device or address

root@dell-per440-10 ~ # echo running >/sys/block/sdb/device/state
root@dell-per440-10 ~ #  dd if=/dev/sdb of=/dev/null iflag=direct bs=1M count=1
1+0 records in
1+0 records out
1048576 bytes (1.0 MB, 1.0 MiB) copied, 0.00189668 s, 553 MB/s


==================================================================
The second question is it looks like the kernel need time to detect the path back to available.
if there is not enough time to detect path availbility, the io error is expexted?

I tested 2 cases:
both paths are available in advance.

case 1 offline path A -> sleep 10s ->online path A ->sleep 10s,then same operation on path B
case 2 offline path A -> sleep 10s ->online path A ->sleep 1s,then same operation on path B 
the difference is the sleep time after online path.
case 1 passed test , case 2 failed due to io error


case 1 please check timestamp from 02:06:36 to 02:08:22
it looks like kernel spend 15s to check the active paths: 1 to active paths: 2 

Jan 15 02:06:29 dell-per440-10 multipathd[1192]: mpatha: remaining active paths: 2
Jan 15 02:06:36 dell-per440-10 kernel: sd 15:0:0:1: rejecting I/O to offline device
Jan 15 02:06:36 dell-per440-10 kernel: device-mapper: multipath: 253:3: Failing path 8:16.
Jan 15 02:06:36 dell-per440-10 multipathd[1192]: sdb: mark as failed
Jan 15 02:06:36 dell-per440-10 multipathd[1192]: mpatha: remaining active paths: 1
Jan 15 02:06:36 dell-per440-10 kernel: sd 16:0:0:1: alua: port group 1100 state N non-preferred supports tolUSNA
Jan 15 02:06:36 dell-per440-10 kernel: sd 16:0:0:1: alua: port group 1100 state N non-preferred supports tolUSNA
Jan 15 02:06:40 dell-per440-10 multipathd[1192]: mpatha: sdb - path offline
Jan 15 02:06:45 dell-per440-10 multipathd[1192]: mpatha: sdb - path offline
Jan 15 02:06:50 dell-per440-10 multipathd[1192]: mpatha: sdb - tur checker reports path is up
Jan 15 02:06:50 dell-per440-10 kernel: device-mapper: multipath: 253:3: Reinstating path 8:16.
Jan 15 02:06:50 dell-per440-10 multipathd[1192]: 8:16: reinstated
Jan 15 02:06:50 dell-per440-10 multipathd[1192]: mpatha: remaining active paths: 2
Jan 15 02:06:56 dell-per440-10 kernel: sd 16:0:0:1: rejecting I/O to offline device
Jan 15 02:06:56 dell-per440-10 kernel: device-mapper: multipath: 253:3: Failing path 8:32.
Jan 15 02:06:56 dell-per440-10 multipathd[1192]: sdc: mark as failed
Jan 15 02:06:56 dell-per440-10 multipathd[1192]: mpatha: remaining active paths: 1
Jan 15 02:06:56 dell-per440-10 kernel: sd 15:0:0:1: alua: port group 1000 state A non-preferred supports tolUSNA
Jan 15 02:06:56 dell-per440-10 kernel: sd 15:0:0:1: alua: port group 1000 state A non-preferred supports tolUSNA
Jan 15 02:07:00 dell-per440-10 multipathd[1192]: mpatha: sdc - path offline
Jan 15 02:07:05 dell-per440-10 multipathd[1192]: mpatha: sdc - path offline
Jan 15 02:07:10 dell-per440-10 multipathd[1192]: mpatha: sdc - tur checker reports path is up
Jan 15 02:07:10 dell-per440-10 kernel: device-mapper: multipath: 253:3: Reinstating path 8:32.
Jan 15 02:07:10 dell-per440-10 multipathd[1192]: 8:32: reinstated
Jan 15 02:07:10 dell-per440-10 multipathd[1192]: mpatha: remaining active paths: 2
Jan 15 02:07:17 dell-per440-10 kernel: sd 15:0:0:1: rejecting I/O to offline device
Jan 15 02:07:17 dell-per440-10 kernel: device-mapper: multipath: 253:3: Failing path 8:16.
Jan 15 02:07:17 dell-per440-10 multipathd[1192]: sdb: mark as failed
Jan 15 02:07:17 dell-per440-10 multipathd[1192]: mpatha: remaining active paths: 1
Jan 15 02:07:17 dell-per440-10 kernel: sd 16:0:0:1: alua: port group 1100 state N non-preferred supports tolUSNA
Jan 15 02:07:17 dell-per440-10 kernel: sd 16:0:0:1: alua: port group 1100 state N non-preferred supports tolUSNA
Jan 15 02:07:21 dell-per440-10 multipathd[1192]: mpatha: sdb - path offline
Jan 15 02:07:26 dell-per440-10 multipathd[1192]: mpatha: sdb - path offline
Jan 15 02:07:31 dell-per440-10 multipathd[1192]: mpatha: sdb - tur checker reports path is up
Jan 15 02:07:31 dell-per440-10 kernel: device-mapper: multipath: 253:3: Reinstating path 8:16.
Jan 15 02:07:31 dell-per440-10 multipathd[1192]: 8:16: reinstated
Jan 15 02:07:31 dell-per440-10 multipathd[1192]: mpatha: remaining active paths: 2
Jan 15 02:07:37 dell-per440-10 kernel: sd 16:0:0:1: rejecting I/O to offline device
Jan 15 02:07:37 dell-per440-10 kernel: device-mapper: multipath: 253:3: Failing path 8:32.
Jan 15 02:07:37 dell-per440-10 multipathd[1192]: sdc: mark as failed
Jan 15 02:07:37 dell-per440-10 multipathd[1192]: mpatha: remaining active paths: 1
Jan 15 02:07:37 dell-per440-10 kernel: sd 15:0:0:1: alua: port group 1000 state A non-preferred supports tolUSNA
Jan 15 02:07:37 dell-per440-10 kernel: sd 15:0:0:1: alua: port group 1000 state A non-preferred supports tolUSNA
Jan 15 02:07:41 dell-per440-10 multipathd[1192]: mpatha: sdc - path offline
Jan 15 02:07:46 dell-per440-10 multipathd[1192]: mpatha: sdc - path offline
Jan 15 02:07:52 dell-per440-10 multipathd[1192]: mpatha: sdc - tur checker reports path is up
Jan 15 02:07:52 dell-per440-10 kernel: device-mapper: multipath: 253:3: Reinstating path 8:32.
Jan 15 02:07:52 dell-per440-10 multipathd[1192]: 8:32: reinstated
Jan 15 02:07:52 dell-per440-10 multipathd[1192]: mpatha: remaining active paths: 2
Jan 15 02:07:58 dell-per440-10 kernel: sd 15:0:0:1: rejecting I/O to offline device
Jan 15 02:07:58 dell-per440-10 kernel: device-mapper: multipath: 253:3: Failing path 8:16.
Jan 15 02:07:58 dell-per440-10 multipathd[1192]: sdb: mark as failed
Jan 15 02:07:58 dell-per440-10 multipathd[1192]: mpatha: remaining active paths: 1
Jan 15 02:07:58 dell-per440-10 kernel: sd 16:0:0:1: alua: port group 1100 state N non-preferred supports tolUSNA
Jan 15 02:07:58 dell-per440-10 kernel: sd 16:0:0:1: alua: port group 1100 state N non-preferred supports tolUSNA
Jan 15 02:08:03 dell-per440-10 multipathd[1192]: mpatha: sdb - path offline
Jan 15 02:08:08 dell-per440-10 multipathd[1192]: mpatha: sdb - path offline
Jan 15 02:08:13 dell-per440-10 multipathd[1192]: mpatha: sdb - tur checker reports path is up
Jan 15 02:08:13 dell-per440-10 kernel: device-mapper: multipath: 253:3: Reinstating path 8:16.
Jan 15 02:08:13 dell-per440-10 multipathd[1192]: 8:16: reinstated
Jan 15 02:08:13 dell-per440-10 multipathd[1192]: mpatha: remaining active paths: 2
Jan 15 02:08:18 dell-per440-10 kernel: sd 16:0:0:1: rejecting I/O to offline device
Jan 15 02:08:18 dell-per440-10 kernel: device-mapper: multipath: 253:3: Failing path 8:32.
Jan 15 02:08:18 dell-per440-10 multipathd[1192]: sdc: mark as failed
Jan 15 02:08:18 dell-per440-10 multipathd[1192]: mpatha: remaining active paths: 1
Jan 15 02:08:18 dell-per440-10 kernel: sd 15:0:0:1: alua: port group 1000 state A non-preferred supports tolUSNA
Jan 15 02:08:18 dell-per440-10 kernel: sd 15:0:0:1: alua: port group 1000 state A non-preferred supports tolUSNA
Jan 15 02:08:23 dell-per440-10 multipathd[1192]: mpatha: sdc - path offline
Jan 15 02:08:28 dell-per440-10 multipathd[1192]: mpatha: sdc - path offline
Jan 15 02:08:33 dell-per440-10 multipathd[1192]: mpatha: sdc - tur checker reports path is up
Jan 15 02:08:33 dell-per440-10 kernel: device-mapper: multipath: 253:3: Reinstating path 8:32.
Jan 15 02:08:33 dell-per440-10 multipathd[1192]: 8:32: reinstated
Jan 15 02:08:33 dell-per440-10 multipathd[1192]: mpatha: remaining active paths: 2


#do dd 
dd .. 02:06:33
100000+0 records in
100000+0 records out
409600000 bytes (410 MB, 391 MiB) copied, 108.698 s, 3.8 MB/s
dd end 02:08:22

#do switch path
Back to running status for all paths
offline ===== sdb 02:06:36
mpatha (333333330000007d1) dm-3 Linux,scsi_debug
size=4.9G features='0' hwhandler='1 alua' wp=rw
|-+- policy='service-time 0' prio=0 status=enabled
| `- 15:0:0:1 sdb 8:16 failed faulty offline
`-+- policy='service-time 0' prio=0 status=active
  `- 16:0:0:1 sdc 8:32 active undef running
online ====== sdb 02:06:46
mpatha (333333330000007d1) dm-3 Linux,scsi_debug
size=4.9G features='0' hwhandler='1 alua' wp=rw
|-+- policy='service-time 0' prio=0 status=enabled
| `- 15:0:0:1 sdb 8:16 failed undef running
`-+- policy='service-time 0' prio=0 status=active
  `- 16:0:0:1 sdc 8:32 active undef running

offline ===== sdc 02:06:56
mpatha (333333330000007d1) dm-3 Linux,scsi_debug
size=4.9G features='0' hwhandler='1 alua' wp=rw
|-+- policy='service-time 0' prio=0 status=active
| `- 15:0:0:1 sdb 8:16 active undef running
`-+- policy='service-time 0' prio=0 status=enabled
  `- 16:0:0:1 sdc 8:32 failed faulty offline
online ====== sdc 02:07:06
mpatha (333333330000007d1) dm-3 Linux,scsi_debug
size=4.9G features='0' hwhandler='1 alua' wp=rw
|-+- policy='service-time 0' prio=0 status=active
| `- 15:0:0:1 sdb 8:16 active undef running
`-+- policy='service-time 0' prio=0 status=enabled
  `- 16:0:0:1 sdc 8:32 failed undef running

offline ===== sdb 02:07:17
mpatha (333333330000007d1) dm-3 Linux,scsi_debug
size=4.9G features='0' hwhandler='1 alua' wp=rw
|-+- policy='service-time 0' prio=0 status=enabled
| `- 15:0:0:1 sdb 8:16 failed faulty offline
`-+- policy='service-time 0' prio=0 status=active
  `- 16:0:0:1 sdc 8:32 active undef running
online ====== sdb 02:07:27
mpatha (333333330000007d1) dm-3 Linux,scsi_debug
size=4.9G features='0' hwhandler='1 alua' wp=rw
|-+- policy='service-time 0' prio=0 status=enabled
| `- 15:0:0:1 sdb 8:16 failed undef running
`-+- policy='service-time 0' prio=0 status=active
  `- 16:0:0:1 sdc 8:32 active undef running

offline ===== sdc 02:07:37
mpatha (333333330000007d1) dm-3 Linux,scsi_debug
size=4.9G features='0' hwhandler='1 alua' wp=rw
|-+- policy='service-time 0' prio=0 status=active
| `- 15:0:0:1 sdb 8:16 active undef running
`-+- policy='service-time 0' prio=0 status=enabled
  `- 16:0:0:1 sdc 8:32 failed faulty offline
online ====== sdc 02:07:47
mpatha (333333330000007d1) dm-3 Linux,scsi_debug
size=4.9G features='0' hwhandler='1 alua' wp=rw
|-+- policy='service-time 0' prio=0 status=active
| `- 15:0:0:1 sdb 8:16 active undef running
`-+- policy='service-time 0' prio=0 status=enabled
  `- 16:0:0:1 sdc 8:32 failed undef running

offline ===== sdb 02:07:58
mpatha (333333330000007d1) dm-3 Linux,scsi_debug
size=4.9G features='0' hwhandler='1 alua' wp=rw
|-+- policy='service-time 0' prio=0 status=enabled
| `- 15:0:0:1 sdb 8:16 failed faulty offline
`-+- policy='service-time 0' prio=0 status=active
  `- 16:0:0:1 sdc 8:32 active undef running
online ====== sdb 02:08:08
mpatha (333333330000007d1) dm-3 Linux,scsi_debug
size=4.9G features='0' hwhandler='1 alua' wp=rw
|-+- policy='service-time 0' prio=0 status=enabled
| `- 15:0:0:1 sdb 8:16 failed undef running
`-+- policy='service-time 0' prio=0 status=active
  `- 16:0:0:1 sdc 8:32 active undef running

offline ===== sdc 02:08:18
mpatha (333333330000007d1) dm-3 Linux,scsi_debug
size=4.9G features='0' hwhandler='1 alua' wp=rw
|-+- policy='service-time 0' prio=0 status=active
| `- 15:0:0:1 sdb 8:16 active undef running
`-+- policy='service-time 0' prio=0 status=enabled
  `- 16:0:0:1 sdc 8:32 failed faulty offline
online ====== sdc 02:08:28
mpatha (333333330000007d1) dm-3 Linux,scsi_debug
size=4.9G features='0' hwhandler='1 alua' wp=rw
|-+- policy='service-time 0' prio=0 status=active
| `- 15:0:0:1 sdb 8:16 active undef running
`-+- policy='service-time 0' prio=0 status=enabled
  `- 16:0:0:1 sdc 8:32 failed undef running



case 2 ,please check the timestamp from 21:17:40  to 21:18:03

Jan 14 21:17:40 dell-per440-10 kernel: sd 15:0:0:1: rejecting I/O to offline device
Jan 14 21:17:40 dell-per440-10 kernel: device-mapper: multipath: 253:3: Failing path 8:16.
Jan 14 21:17:40 dell-per440-10 multipathd[1192]: sdb: mark as failed
Jan 14 21:17:40 dell-per440-10 multipathd[1192]: mpatha: remaining active paths: 1
Jan 14 21:17:40 dell-per440-10 kernel: sd 16:0:0:1: alua: port group 1100 state N non-preferred supports tolUSNA
Jan 14 21:17:40 dell-per440-10 kernel: sd 16:0:0:1: alua: port group 1100 state N non-preferred supports tolUSNA
Jan 14 21:17:40 dell-per440-10 multipathd[1192]: mpatha: sdb - path offline
Jan 14 21:17:45 dell-per440-10 multipathd[1192]: mpatha: sdb - path offline
Jan 14 21:17:50 dell-per440-10 multipathd[1192]: mpatha: sdb - tur checker reports path is up
Jan 14 21:17:50 dell-per440-10 kernel: device-mapper: multipath: 253:3: Reinstating path 8:16.
Jan 14 21:17:50 dell-per440-10 multipathd[1192]: 8:16: reinstated
Jan 14 21:17:50 dell-per440-10 multipathd[1192]: mpatha: remaining active paths: 2
Jan 14 21:17:51 dell-per440-10 kernel: sd 16:0:0:1: rejecting I/O to offline device
Jan 14 21:17:51 dell-per440-10 kernel: device-mapper: multipath: 253:3: Failing path 8:32.
(offline sdc)
Jan 14 21:17:51 dell-per440-10 kernel: sd 15:0:0:1: alua: port group 1000 state A non-preferred supports tolUSNA
Jan 14 21:17:51 dell-per440-10 kernel: sd 15:0:0:1: alua: port group 1000 state A non-preferred supports tolUSNA
Jan 14 21:17:51 dell-per440-10 multipathd[1192]: sdc: mark as failed
Jan 14 21:17:51 dell-per440-10 multipathd[1192]: mpatha: remaining active paths: 1
Jan 14 21:17:55 dell-per440-10 multipathd[1192]: mpatha: sdc - path offline
Jan 14 21:18:00 dell-per440-10 multipathd[1192]: mpatha: sdc - path offline
Jan 14 21:18:03 dell-per440-10 kernel: sd 15:0:0:1: rejecting I/O to offline device
Jan 14 21:18:03 dell-per440-10 kernel: device-mapper: multipath: 253:3: Failing path 8:16.
Jan 14 21:18:03 dell-per440-10 kernel: blk_update_request: I/O error, dev dm-3, sector 206600 op 0x1:(WRITE) flags 0x8800 phys_seg 1 prio class 0
Jan 14 21:18:03 dell-per440-10 multipathd[1192]: sdb: mark as failed
Jan 14 21:18:03 dell-per440-10 multipathd[1192]: mpatha: remaining active paths: 0
Jan 14 21:18:04 dell-per440-10 kernel: blk_update_request: I/O error, dev dm-3, sector 0 op 0x1:(WRITE) flags 0x8800 phys_seg 1 prio class 0
Jan 14 21:18:05 dell-per440-10 kernel: blk_update_request: I/O error, dev dm-3, sector 0 op 0x1:(WRITE) flags 0x8800 phys_seg 1 prio class 0
Jan 14 21:18:05 dell-per440-10 multipathd[1192]: mpatha: sdb - path offline
Jan 14 21:18:05 dell-per440-10 multipathd[1192]: mpatha: sdc - tur checker reports path is up
Jan 14 21:18:05 dell-per440-10 kernel: device-mapper: multipath: 253:3: Reinstating path 8:32.
Jan 14 21:18:05 dell-per440-10 multipathd[1192]: 8:32: reinstated
Jan 14 21:18:05 dell-per440-10 multipathd[1192]: mpatha: remaining active paths: 1
Jan 14 21:18:05 dell-per440-10 kernel: sd 16:0:0:1: alua: port group 1100 state N non-preferred supports tolUSNA
Jan 14 21:18:05 dell-per440-10 kernel: sd 16:0:0:1: alua: port group 1100 state N non-preferred supports tolUSNA
Jan 14 21:18:10 dell-per440-10 multipathd[1192]: mpatha: sdb - path offline


dd .. 21:17:35
dd: error writing '/dev/mapper/mpatha': Input/output error
25826+0 records in
25825+0 records out
105779200 bytes (106 MB, 101 MiB) copied, 28.0871 s, 3.8 MB/s
dd end 21:18:03



Back to running status for all paths
offline ===== sdb 21:17:40
mpatha (333333330000007d1) dm-3 Linux,scsi_debug
size=4.9G features='0' hwhandler='1 alua' wp=rw
|-+- policy='service-time 0' prio=0 status=enabled
| `- 15:0:0:1 sdb 8:16 failed faulty offline
`-+- policy='service-time 0' prio=0 status=active
  `- 16:0:0:1 sdc 8:32 active undef running
online ====== sdb 21:17:50
mpatha (333333330000007d1) dm-3 Linux,scsi_debug
size=4.9G features='0' hwhandler='1 alua' wp=rw
|-+- policy='service-time 0' prio=0 status=enabled
| `- 15:0:0:1 sdb 8:16 failed undef running
`-+- policy='service-time 0' prio=0 status=active
  `- 16:0:0:1 sdc 8:32 active undef running

offline ===== sdc 21:17:51
mpatha (333333330000007d1) dm-3 Linux,scsi_debug
size=4.9G features='0' hwhandler='1 alua' wp=rw
|-+- policy='service-time 0' prio=0 status=active
| `- 15:0:0:1 sdb 8:16 active undef running
`-+- policy='service-time 0' prio=0 status=enabled
  `- 16:0:0:1 sdc 8:32 failed faulty offline
online ====== sdc 21:18:01
mpatha (333333330000007d1) dm-3 Linux,scsi_debug
size=4.9G features='0' hwhandler='1 alua' wp=rw
|-+- policy='service-time 0' prio=0 status=active
| `- 15:0:0:1 sdb 8:16 active undef running
`-+- policy='service-time 0' prio=0 status=enabled
  `- 16:0:0:1 sdc 8:32 failed undef running

Comment 70 Ben Marzinski 2021-01-18 18:42:51 UTC
(In reply to qing.wang from comment #68)
> Hi,bmarzins,thank for your quick reply, i still have questions on the issue.
> 
> This case come from customer test on FC multipath ,they  
> do alternate switch port to check the path availbility.
> 
> The first question is how to trigger io error in your test.
> In my test they truely located in multipath. if i offline the path of the
> device,
> the io operation can not executed. 
> 
> root@dell-per440-10 ~ # multipath -l
> mpatha (333333330000007d1) dm-3 Linux,scsi_debug
> size=4.9G features='0' hwhandler='1 alua' wp=rw
> |-+- policy='service-time 0' prio=0 status=active
> | `- 15:0:0:1 sdb 8:16 active undef running
> `-+- policy='service-time 0' prio=0 status=enabled
>   `- 16:0:0:1 sdc 8:32 active undef running
> 
> root@dell-per440-10 ~ # cat /proc/partitions 
> major minor  #blocks  name
> 
>    8        0  585498624 sda
>    8        1     614400 sda1
>    8        2    1048576 sda2
>    8        3  583833600 sda3
>  253        0   73400320 dm-0
>  253        1   32849920 dm-1
>  253        2  477581312 dm-2
>    8       16    5120000 sdb
>    8       32    5120000 sdc
>  253        3    5120000 dm-3
> 
> root@dell-per440-10 ~ # echo offline >/sys/block/sdb/device/state
> root@dell-per440-10 ~ #  dd if=/dev/sdb of=/dev/null iflag=direct bs=1M
> count=1
> dd: failed to open '/dev/sdb': No such device or address
> 
> root@dell-per440-10 ~ # echo running >/sys/block/sdb/device/state
> root@dell-per440-10 ~ #  dd if=/dev/sdb of=/dev/null iflag=direct bs=1M
> count=1
> 1+0 records in
> 1+0 records out
> 1048576 bytes (1.0 MB, 1.0 MiB) copied, 0.00189668 s, 553 MB/s

You clearly aren't seeing what I did.  When I tried to reproduce your issue on a random machine (with kernel 4.19.8-200), one of the scsi_debug devices was always failing IO,
even if the other one was in the running state. I didn't need to do anything for it to fail.

> ==================================================================
> The second question is it looks like the kernel need time to detect the path
> back to available.
> if there is not enough time to detect path availbility, the io error is
> expexted?

Yes. The kernel will only attempt to use a device if multipathd has marked it as usable. When devices have been marked as failed, multipathd will check their status every 5 seconds. If you have two devices, and where device A is down and device B is up, and you bring device A up and then bring device B down before 5 seconds have passed, there is a chance that multipathd will not notice that device A is up before the kernel tries to do IO on device B and discovers it is down. In this case the kernel will see that there are no valid paths. If the multipath device is not configured to queue IO (it is not in your tests), it will fail the IO.  If you add "no_path_retry 1" to multipath configuration, that would solve this issue, since it means that multipathd will queue IO for one round of path checking after seeing that all the paths are down. If no paths come back after one round of path checking, it will disable queueing and let the pending IOs fail.  Obviously, increasing the sleep time in the tests to something greater than 5 seconds will fix this as well.

Comment 71 qing.wang 2021-01-19 11:13:08 UTC
Passed host dd test https://bugzilla.redhat.com/show_bug.cgi?id=1854659#c68
and virtio-blk-pci device test https://bugzilla.redhat.com/show_bug.cgi?id=1854659#c59 
after add "no_path_retry  1" into /etc/multipath.conf

defaults {
	user_friendly_names yes
	find_multipaths yes
	enable_foreign "^$"
	no_path_retry 1  
}

Comment 72 qing.wang 2021-01-20 09:37:27 UTC
Hi pbonzini,
Test failed on scsi-block device, it should be expected result so far.

-device virtio-scsi-pci,id=scsi1,bus=pcie.0-root-port-8,addr=0x0 \
  -blockdev node-name=host_device_stg0,driver=host_device,filename=/dev/mapper/mpathb \
  -blockdev node-name=drive_stg0,driver=raw,file=host_device_stg0 \

-device scsi-block,id=stg0,rerror=stop,werror=stop,drive=drive_stg0,bus=scsi1.0,bootindex=2 \


If The bug is fixed, does it need to set "no_path_retry 1" in host  /etc/multipath.conf like as https://bugzilla.redhat.com/show_bug.cgi?id=1854659#c71 ?

This feature need to cover device scsi-generic?

-device scsi-generic,id=stg0,drive=drive_stg0,bus=scsi1.0,bootindex=2 \

There are two problem on it:
1,device scsi-generic can not work with DM-multipath device.
The vm boot failed due to qemu-kvm: -device scsi-generic,id=stg0,drive=drive_stg0,bus=scsi1.0,bootindex=2: SG_GET_SCSI_ID ioctl failed
2,device scsi-generic not support rerror=stop,werror=stop option, so it can not step in pause even if encount io-error?

Comment 73 qing.wang 2021-06-11 01:52:35 UTC
*** Bug 1970030 has been marked as a duplicate of this bug. ***

Comment 74 Paolo Bonzini 2021-06-11 21:02:57 UTC
Hi,

scsi-block is enough for testing.  Patches have been posted upstream with subject "dm: dm_blk_ioctl(): implement failover for SG_IO on dm-multipath​".

Comment 75 Nils Koenig 2021-06-16 08:41:31 UTC
Has anyone already a build to test the upstream patch?

Comment 76 CongLi 2021-06-16 08:53:24 UTC
(In reply to Nils Koenig from comment #75)
> Has anyone already a build to test the upstream patch?

Paolo, 

Can you share the upstream progress and is it possible to prepare a build?

Thanks.

Comment 77 Paolo Bonzini 2021-06-16 11:33:54 UTC
Mike Snitzer has given detailed review comments, so the final patches probably won't look very much like the latest posted version.  Still, early testing is useful so I have started a build at https://brewweb.engineering.redhat.com/brew/taskinfo?taskID=37518510

Comment 78 Nils Koenig 2021-06-17 10:17:17 UTC
@pbonzini

Thank you Paolo for providing the quick fix.
I installed that kernel on the hypervisor and after a reboot brought down a path.
VM still is being paused. Multipath config on the host is default as created by RHV:

blacklist {
    protocol "(scsi:adt|scsi:sbp)"
}

# Options defined here override device specific options embedded into
# multipathd.

overrides {
    # NOTE: see comments in default section how to compute this value.
    no_path_retry   16
}


dmesg 

[Thu Jun 17 12:07:42 2021] qla2xxx [0000:cf:00.1]-500b:16: LOOP DOWN detected (2 7 0 0).
[Thu Jun 17 12:07:47 2021] sd 16:0:0:11: rejecting I/O to offline device
[Thu Jun 17 12:07:47 2021] sd 16:0:1:14: rejecting I/O to offline device
[Thu Jun 17 12:07:47 2021] blk_update_request: I/O error, dev sdar, sector 264192 op 0x0:(READ) flags 0x4200 phys_seg 1 prio class 0
[Thu Jun 17 12:07:47 2021] sd 16:0:1:12: rejecting I/O to offline device
[Thu Jun 17 12:07:47 2021] sd 16:0:1:10: rejecting I/O to offline device
[Thu Jun 17 12:07:47 2021] device-mapper: multipath: 253:28: Failing path 66:176.
[Thu Jun 17 12:07:48 2021] device-mapper: multipath: 253:22: Failing path 65:224.
[Thu Jun 17 12:07:48 2021] device-mapper: multipath: 253:21: Failing path 65:208.
[Thu Jun 17 12:07:48 2021] device-mapper: multipath: 253:23: Failing path 65:240.
[Thu Jun 17 12:07:48 2021] device-mapper: multipath: 253:12: Failing path 65:192.
[Thu Jun 17 12:07:48 2021] device-mapper: multipath: 253:24: Failing path 66:0.
[Thu Jun 17 12:07:48 2021] device-mapper: multipath: 253:26: Failing path 66:32.
[Thu Jun 17 12:07:48 2021] device-mapper: multipath: 253:25: Failing path 66:16.
[Thu Jun 17 12:07:48 2021] device-mapper: multipath: 253:13: Failing path 66:48.
[Thu Jun 17 12:07:48 2021] device-mapper: multipath: 253:14: Failing path 66:64.
[Thu Jun 17 12:07:48 2021] device-mapper: multipath: 253:15: Failing path 66:80.
[Thu Jun 17 12:07:48 2021] device-mapper: multipath: 253:30: Failing path 66:112.
[Thu Jun 17 12:07:48 2021] device-mapper: multipath: 253:34: Failing path 66:128.
[Thu Jun 17 12:07:48 2021] device-mapper: multipath: 253:36: Failing path 66:160.
[Thu Jun 17 12:07:48 2021] device-mapper: multipath: 253:35: Failing path 66:144.
[Thu Jun 17 12:07:48 2021] device-mapper: multipath: 253:27: Failing path 66:96.
[Thu Jun 17 12:07:48 2021] device-mapper: multipath: 253:29: Failing path 66:192.
[Thu Jun 17 12:08:13 2021]  rport-16:0-3: blocked FC remote port time out: removing rport
[Thu Jun 17 12:08:22 2021] qla2xxx [0000:cf:00.1]-500a:16: LOOP UP detected (16 Gbps).
[Thu Jun 17 12:08:23 2021] device-mapper: multipath: 253:22: Reinstating path 65:224.
[Thu Jun 17 12:08:23 2021] device-mapper: multipath: 253:21: Reinstating path 65:208.
[Thu Jun 17 12:08:23 2021] device-mapper: multipath: 253:23: Reinstating path 65:240.
[Thu Jun 17 12:08:23 2021] device-mapper: multipath: 253:12: Reinstating path 65:192.
[Thu Jun 17 12:08:23 2021] device-mapper: multipath: 253:24: Reinstating path 66:0.
[Thu Jun 17 12:08:23 2021] device-mapper: multipath: 253:26: Reinstating path 66:32.
[Thu Jun 17 12:08:23 2021] device-mapper: multipath: 253:25: Reinstating path 66:16.
[Thu Jun 17 12:08:23 2021] device-mapper: multipath: 253:30: Reinstating path 66:112.
[Thu Jun 17 12:08:23 2021] device-mapper: multipath: 253:34: Reinstating path 66:128.
[Thu Jun 17 12:08:23 2021] device-mapper: multipath: 253:28: Reinstating path 66:176.
[Thu Jun 17 12:08:23 2021] device-mapper: multipath: 253:36: Reinstating path 66:160.
[Thu Jun 17 12:08:23 2021] device-mapper: multipath: 253:35: Reinstating path 66:144.
[Thu Jun 17 12:08:23 2021] device-mapper: multipath: 253:27: Reinstating path 66:96.
[Thu Jun 17 12:08:23 2021] device-mapper: multipath: 253:29: Reinstating path 66:192.
[Thu Jun 17 12:08:23 2021] sd 16:0:1:2: Power-on or device reset occurred
[Thu Jun 17 12:08:23 2021] sd 16:0:1:2: alua: rtpg retry
[Thu Jun 17 12:08:23 2021] sd 16:0:1:2: [alua] Sense Key : Unit Attention [current] 
[Thu Jun 17 12:08:23 2021] sd 16:0:1:2: [alua] Add. Sense: I_T nexus loss occurred
[Thu Jun 17 12:08:23 2021] sd 16:0:1:3: alua: port group f033 state A non-preferred supports toluSNA
[Thu Jun 17 12:08:23 2021] sd 16:0:1:8: alua: port group f033 state A non-preferred supports toluSNA
[Thu Jun 17 12:08:23 2021] sd 16:0:1:6: alua: port group f033 state A non-preferred supports toluSNA
[Thu Jun 17 12:08:23 2021] sd 16:0:1:4: alua: port group f033 state A non-preferred supports toluSNA
[Thu Jun 17 12:08:23 2021] sd 16:0:1:1: alua: port group f033 state A non-preferred supports toluSNA
[Thu Jun 17 12:08:23 2021] sd 16:0:0:11: Power-on or device reset occurred
[Thu Jun 17 12:08:23 2021] sd 16:0:0:11: alua: rtpg retry
[Thu Jun 17 12:08:23 2021] sd 16:0:0:11: [alua] Sense Key : Unit Attention [current] 
[Thu Jun 17 12:08:23 2021] sd 16:0:0:11: [alua] Add. Sense: I_T nexus loss occurred
[Thu Jun 17 12:08:23 2021] sd 16:0:0:4: alua: port group f032 state A non-preferred supports toluSNA
[Thu Jun 17 12:08:23 2021] sd 16:0:0:3: alua: port group f032 state A non-preferred supports toluSNA
[Thu Jun 17 12:08:23 2021] sd 16:0:1:7: alua: port group f033 state A non-preferred supports toluSNA
[Thu Jun 17 12:08:23 2021] sd 16:0:0:13: alua: port group f032 state A non-preferred supports toluSNA
[Thu Jun 17 12:08:23 2021] sd 16:0:0:1: alua: port group f032 state A non-preferred supports toluSNA
[Thu Jun 17 12:08:23 2021] sd 16:0:1:3: alua: port group f033 state A non-preferred supports toluSNA
[Thu Jun 17 12:08:23 2021] sd 16:0:0:9: alua: port group f032 state A non-preferred supports toluSNA
[Thu Jun 17 12:08:23 2021] sd 16:0:1:8: alua: port group f033 state A non-preferred supports toluSNA
[Thu Jun 17 12:08:23 2021] sd 16:0:1:4: alua: port group f033 state A non-preferred supports toluSNA
[Thu Jun 17 12:08:23 2021] sd 16:0:1:1: alua: port group f033 state A non-preferred supports toluSNA
[Thu Jun 17 12:08:23 2021] sd 16:0:0:5: alua: port group f032 state A non-preferred supports toluSNA
[Thu Jun 17 12:08:23 2021] sd 16:0:1:6: alua: port group f033 state A non-preferred supports toluSNA
[Thu Jun 17 12:08:23 2021] sd 16:0:1:7: alua: port group f033 state A non-preferred supports toluSNA
[Thu Jun 17 12:08:23 2021] sd 16:0:0:1: alua: port group f032 state A non-preferred supports toluSNA
[Thu Jun 17 12:08:23 2021] sd 16:0:0:13: alua: port group f032 state A non-preferred supports toluSNA
[Thu Jun 17 12:08:23 2021] sd 16:0:0:3: alua: port group f032 state A non-preferred supports toluSNA
[Thu Jun 17 12:08:23 2021] sd 16:0:0:9: alua: port group f032 state A non-preferred supports toluSNA
[Thu Jun 17 12:08:23 2021] sd 16:0:0:5: alua: port group f032 state A non-preferred supports toluSNA
[Thu Jun 17 12:08:23 2021] sd 16:0:0:4: alua: port group f032 state A non-preferred supports toluSNA
[Thu Jun 17 12:08:25 2021] sd 16:0:0:11: alua: port group f032 state A non-preferred supports toluSNA
[Thu Jun 17 12:08:25 2021] sd 16:0:1:2: alua: port group f033 state A non-preferred supports toluSNA
[Thu Jun 17 12:08:25 2021] sd 16:0:0:11: alua: port group f032 state A non-preferred supports toluSNA
[Thu Jun 17 12:08:25 2021] sd 16:0:1:2: alua: port group f033 state A non-preferred supports toluSNA
[Thu Jun 17 12:08:28 2021] device-mapper: multipath: 253:13: Reinstating path 66:48.
[Thu Jun 17 12:08:28 2021] device-mapper: multipath: 253:14: Reinstating path 66:64.
[Thu Jun 17 12:08:28 2021] device-mapper: multipath: 253:15: Reinstating path 66:80.
[Thu Jun 17 12:08:28 2021] sd 16:0:1:14: alua: port group f033 state A non-preferred supports toluSNA
[Thu Jun 17 12:08:28 2021] sd 16:0:1:12: alua: port group f033 state A non-preferred supports toluSNA
[Thu Jun 17 12:08:28 2021] sd 16:0:1:10: alua: port group f033 state A non-preferred supports toluSNA
[Thu Jun 17 12:08:28 2021] sd 16:0:1:14: alua: port group f033 state A non-preferred supports toluSNA
[Thu Jun 17 12:08:28 2021] sd 16:0:1:12: alua: port group f033 state A non-preferred supports toluSNA
[Thu Jun 17 12:08:28 2021] sd 16:0:1:10: alua: port group f033 state A non-preferred supports toluSNA


Did I oversee something and missed a setting?

The block device used is /dev/mapper/36000d31005771c000000000000000066

-blockdev {"driver":"host_device","filename":"/dev/mapper/36000d31005771c000000000000000066","aio":"native","node-name":"libvirt-1-storage","cache":{"direct":true,"no-flush":false},"auto-read-only":true,"discard":"unmap"} 
-blockdev {"node-name":"libvirt-1-format","read-only":false,"cache":{"direct":true,"no-flush":false},"driver":"raw","file":"libvirt-1-storage"} 
-device scsi-block,bus=ua-eff86ed8-d744-43d1-8f69-463c4974691f.0,channel=0,scsi-id=0,lun=0,drive=libvirt-1-format,id=ua-3686d9c0-d674-4ddd-b801-a69d7657ea47,bootindex=2,werror=stop,rerror=stop

I see werror=stop,rerror=stop, is this the culprit and should be werror=report,rerror=report?


Qemu command line

/usr/libexec/qemu-kvm -name guest=lu0565,debug-threads=on -S -object secret,id=masterKey0,format=raw,file=/var/lib/libvirt/qemu/domain-1-lu0565/master-key.aes -machine pc-q35-rhel8.2.0,accel=kvm,usb=off,dump-guest-core=off -cpu Cascadelake-Server-noTSX,rdtscp=on,x2apic=on,hypervisor=on,mpx=off,pku=on,arch-capabilities=on,rdctl-no=on,ibrs-all=on,skip-l1dfl-vmentry=on,mds-no=on,tsc-frequency=2194843000,l3-cache=on -m 65536 -overcommit mem-lock=off -smp 1,maxcpus=16,sockets=16,dies=1,cores=1,threads=1 -object iothread,id=iothread1 -mem-prealloc -mem-path /dev/hugepages/libvirt/qemu/1-lu0565 -numa node,nodeid=0,cpus=0-15,mem=65536 -uuid 2f168ccf-3415-4cd4-8ad7-2a9f2ed2c9a0 -smbios type=1,manufacturer=Red Hat,product=RHEL,version=8.4-0.6.el8,serial=24254ba2-332e-11eb-a02b-0a94efbb050f,uuid=2f168ccf-3415-4cd4-8ad7-2a9f2ed2c9a0,sku=8.2.0,family=RHV -smbios type=2,manufacturer=Red Hat,product=RHEL-AV -no-user-config -nodefaults -device sga -chardev socket,id=charmonitor,fd=38,server,nowait -mon chardev=charmonitor,id=monitor,mode=control -rtc base=utc -no-shutdown -global ICH9-LPC.disable_s3=1 -global ICH9-LPC.disable_s4=1 -boot strict=on -device pcie-root-port,port=0x10,chassis=1,id=pci.1,bus=pcie.0,multifunction=on,addr=0x2 -device pcie-root-port,port=0x11,chassis=2,id=pci.2,bus=pcie.0,addr=0x2.0x1 -device pcie-root-port,port=0x12,chassis=3,id=pci.3,bus=pcie.0,addr=0x2.0x2 -device pcie-root-port,port=0x13,chassis=4,id=pci.4,bus=pcie.0,addr=0x2.0x3 -device pcie-root-port,port=0x14,chassis=5,id=pci.5,bus=pcie.0,addr=0x2.0x4 -device pcie-root-port,port=0x15,chassis=6,id=pci.6,bus=pcie.0,addr=0x2.0x5 -device pcie-root-port,port=0x16,chassis=7,id=pci.7,bus=pcie.0,addr=0x2.0x6 -device pcie-root-port,port=0x17,chassis=8,id=pci.8,bus=pcie.0,addr=0x2.0x7 -device pcie-root-port,port=0x18,chassis=9,id=pci.9,bus=pcie.0,multifunction=on,addr=0x3 -device pcie-root-port,port=0x19,chassis=10,id=pci.10,bus=pcie.0,addr=0x3.0x1 -device pcie-root-port,port=0x1a,chassis=11,id=pci.11,bus=pcie.0,addr=0x3.0x2 -device pcie-root-port,port=0x1b,chassis=12,id=pci.12,bus=pcie.0,addr=0x3.0x3 -device pcie-root-port,port=0x1c,chassis=13,id=pci.13,bus=pcie.0,addr=0x3.0x4 -device pcie-root-port,port=0x1d,chassis=14,id=pci.14,bus=pcie.0,addr=0x3.0x5 -device pcie-root-port,port=0x1e,chassis=15,id=pci.15,bus=pcie.0,addr=0x3.0x6 -device pcie-root-port,port=0x1f,chassis=16,id=pci.16,bus=pcie.0,addr=0x3.0x7 -device qemu-xhci,p2=8,p3=8,id=ua-eb8be61b-c280-41d4-ade9-cae87820dc26,bus=pci.4,addr=0x0 -device virtio-scsi-pci,iothread=iothread1,id=ua-eff86ed8-d744-43d1-8f69-463c4974691f,bus=pci.2,addr=0x0 -device virtio-serial-pci,id=ua-59640c37-9490-4a52-9d19-618aa046f370,max_ports=16,bus=pci.3,addr=0x0 -device ide-cd,bus=ide.2,id=ua-60932971-6d22-4724-96aa-39e2a933e735,werror=report,rerror=report -blockdev {"driver":"host_device","filename":"/dev/mapper/36000d31005771c000000000000000066","aio":"native","node-name":"libvirt-1-storage","cache":{"direct":true,"no-flush":false},"auto-read-only":true,"discard":"unmap"} -blockdev {"node-name":"libvirt-1-format","read-only":false,"cache":{"direct":true,"no-flush":false},"driver":"raw","file":"libvirt-1-storage"} -device scsi-block,bus=ua-eff86ed8-d744-43d1-8f69-463c4974691f.0,channel=0,scsi-id=0,lun=0,drive=libvirt-1-format,id=ua-3686d9c0-d674-4ddd-b801-a69d7657ea47,bootindex=2,werror=stop,rerror=stop -netdev tap,fd=40,id=hostua-88832ca8-481e-41e5-8e0a-1b926be2b7d0,vhost=on,vhostfd=41 -device virtio-net-pci,host_mtu=1500,netdev=hostua-88832ca8-481e-41e5-8e0a-1b926be2b7d0,id=ua-88832ca8-481e-41e5-8e0a-1b926be2b7d0,mac=dc:10:00:00:00:65,bus=pci.1,addr=0x0,bootindex=1 -chardev socket,id=charserial0,fd=42,server,nowait -device isa-serial,chardev=charserial0,id=serial0 -chardev socket,id=charchannel0,fd=43,server,nowait -device virtserialport,bus=ua-59640c37-9490-4a52-9d19-618aa046f370.0,nr=1,chardev=charchannel0,id=channel0,name=ovirt-guest-agent.0 -chardev socket,id=charchannel1,fd=44,server,nowait -device virtserialport,bus=ua-59640c37-9490-4a52-9d19-618aa046f370.0,nr=2,chardev=charchannel1,id=channel1,name=org.qemu.guest_agent.0 -chardev spicevmc,id=charchannel2,name=vdagent -device virtserialport,bus=ua-59640c37-9490-4a52-9d19-618aa046f370.0,nr=3,chardev=charchannel2,id=channel2,name=com.redhat.spice.0 -spice port=5900,tls-port=5901,addr=10.76.35.60,x509-dir=/etc/pki/vdsm/libvirt-spice,tls-channel=main,tls-channel=display,tls-channel=inputs,tls-channel=cursor,tls-channel=playback,tls-channel=record,tls-channel=smartcard,tls-channel=usbredir,seamless-migration=on -device qxl-vga,id=ua-ad77dcb6-2cf0-42ad-be32-dc6eca1207f3,ram_size=67108864,vram_size=8388608,vram64_size_mb=0,vgamem_mb=16,max_outputs=1,bus=pcie.0,addr=0x1 -incoming defer -object rng-random,id=objua-ec8e1a1b-a035-4f75-8fb0-814a75d648fd,filename=/dev/urandom -device virtio-rng-pci,rng=objua-ec8e1a1b-a035-4f75-8fb0-814a75d648fd,id=ua-ec8e1a1b-a035-4f75-8fb0-814a75d648fd,bus=pci.5,addr=0x0 -sandbox off -msg timestamp=on

Comment 79 Paolo Bonzini 2021-06-17 11:42:18 UTC
> I see werror=stop,rerror=stop, is this the culprit and should be werror=report,rerror=report?

No it should be stop because the I/O should be retried on a different path.

Comment 80 Nils Koenig 2021-06-17 14:09:20 UTC
Paolo, is there a way to see why a VM is paused?

Comment 81 Paolo Bonzini 2021-06-17 15:36:17 UTC
> Paolo, is there a way to see why a VM is paused?

It's because I/O failed, i.e. the patches didn't work as advertised.

Maybe you can try "sg_dd blk_sgio=1 if=/dev/mpath/... bs=4096 count=100 of=/dev/null" to remove QEMU from the equation.  You can use strace to check that it's really using SG_IO, and use blk_sgio=0 vs. 1 to test both the traditional read/write I/O and SCSI passthrough.

Comment 82 Ewan D. Milne 2021-06-17 20:15:23 UTC
For what it's worth, I applied Martin Wilck's v3 patches to kernel-4.18.0-314.el8
and I do see a difference in behavior with the FC switch port toggle test of the
Initiator port (I am not able to test toggling the Target FC port at this time because
there are other tests running on this storage array we would have to quiesce first).

With -314.el8 I can readily reproduce I/O errors on the guest by disabling the FC
initiator port.  However, with the patches added, so far, I do not see errors.  So the
patches do seem to be doing something.  I will also review the code to see if it
looks like there are any cases that might not be covered.

I spoke with Mike and he and I have some concerns about how the functionality was
implemented, so this may need further refinement upstream.  But we may be getting somewhere.

Comment 83 loberman 2021-06-17 20:21:12 UTC
Let me know how you are testing. I assume without Qemu.
I will test here as I can interrupt the ports on my switch. 
Regards
Laurence

Comment 84 Ewan D. Milne 2021-06-17 20:29:49 UTC
See the Description in the BZ, I have a RHEL7 guest installed on a FC SAN LUN
that is multipathed on the hypervisor with the guest XML device configuration like:

    <disk type='block' device='lun'>
      <driver name='qemu' type='raw' cache='none' io='native'/>
      <source dev='/dev/mapper/mpathb'/>
      <backingStore/>
      <target dev='sda' bus='scsi'/>
      <alias name='scsi0-0-0-0'/>
      <address type='drive' controller='0' bus='0' target='0' unit='0'/>
    </disk>

Boot the guest, start I/O (e.g. writes) then disable/enable one of FC switch ports.
It may take several tries to induce the failure as it is timing dependent if the
path down is detected before the I/O is issued.  The basic problem is the lack of
path retry if the HBA returns the command.  If multipath *knows* the path is down
then it won't select it to begin with, but this isn't always the case e.g. if an
array controller is rebooted, or if a target side switch port is disabled and we
haven't seen the RSCN yet, etc... basically what we get with fault insertion testing.

With Martin Wilck's patches applied the behavior is different and the I/O errors
are not readily reproducible.  Note that Mike is working with Martin to further
refine the patch set so there will be more iterations of the code.

Comment 85 Nils Koenig 2021-06-25 06:07:53 UTC
Hi guys,

I did test and compare two machines, one with a stock kernel and one with a Kernel that contains Martin's patch.
The tests were pursued on bare metal, so qemu-kvm was out of the equation.
To me, they both behaved the same.
Maybe I have a misunderstanding of the issue or my testcase is not sufficient.
On both machines, IO did not block if only one path goes down.
Or is the impact of Martin's patch more subtle or the IO would never be entirely blocked?
Or, the Dell SC5200 (rebranded Compellant) storage behaves different?


This is the machine with Martin's patch (host: lu0584)

[root@lu0584 ~]# cat /sys/class/fc_host/host??/port_state
Online
Online
[root@lu0584 ~]# multipath -ll /dev/mapper/36000d31005771c000000000000000065
36000d31005771c000000000000000065 dm-29 COMPELNT,Compellent Vol
size=50G features='1 queue_if_no_path' hwhandler='1 alua' wp=rw
`-+- policy='service-time 0' prio=50 status=enabled
  |- 15:0:1:13 sdab 65:176 active ready running
  `- 16:0:0:13 sdas 66:192 active ready running

[root@lu0584 ~]# date
Fri Jun 25 07:42:18 CEST 2021

[root@lu0584 ~]# uname -a
Linux lu0584.wdf.sap.corp 4.18.0-314.el8.test.x86_64 #1 SMP Wed Jun 16 06:47:51 EDT 2021 x86_64 x86_64 x86_64 GNU/Linux


<------------------- now one path is disabled on FC switch --------------------------------------->

[root@lu0584 ~]# cat /sys/class/fc_host/host??/port_state
Linkdown
Online
[root@lu0584 ~]# multipath -ll /dev/mapper/36000d31005771c000000000000000065
36000d31005771c000000000000000065 dm-29 COMPELNT,Compellent Vol
size=50G features='1 queue_if_no_path' hwhandler='1 alua' wp=rw
`-+- policy='service-time 0' prio=50 status=enabled
  |- 15:0:1:13 sdab 65:176 active faulty running
  `- 16:0:0:13 sdas 66:192 active ready running

[root@lu0584 ~]# time sg_dd blk_sgio=1 if=/dev/mapper/36000d31005771c000000000000000065 of=/dev/null count=10000000
Assume default 'bs' (block size) of 512 bytes
10000000+0 records in
10000000+0 records out

real    0m8.640s
user    0m0.046s
sys    0m1.043s

[root@lu0584 ~]# multipath -ll /dev/mapper/36000d31005771c000000000000000065
36000d31005771c000000000000000065 dm-29 COMPELNT,Compellent Vol
size=50G features='1 queue_if_no_path' hwhandler='1 alua' wp=rw
`-+- policy='service-time 0' prio=50 status=active
  |- 15:0:1:13 sdab 65:176 failed faulty running
  `- 16:0:0:13 sdas 66:192 active ready running


<----------------------- second path is deactivated -------------------------------------------------------->

[root@lu0584 ~]# multipath -ll /dev/mapper/36000d31005771c000000000000000065
36000d31005771c000000000000000065 dm-29 COMPELNT,Compellent Vol
size=50G features='1 queue_if_no_path' hwhandler='1 alua' wp=rw
`-+- policy='service-time 0' prio=0 status=enabled
  `- 16:0:0:13 sdas 66:192 active faulty running


---> IO is blocked


##################################################################################

This is the machine with stock kernel (host lu0551)

[root@lu0551 ~]# cat /sys/class/fc_host/host??/port_state
Online
Online
[root@lu0551 ~]# date
Fri Jun 25 07:48:59 CEST 2021
[root@lu0551 ~]# uname -a
Linux lu0551.wdf.sap.corp 4.18.0-305.3.1.el8_4.x86_64 #1 SMP Mon May 17 10:08:25 EDT 2021 x86_64 x86_64 x86_64 GNU/Linux
[root@lu0551 ~]#
[root@lu0551 ~]# date
Fri Jun 25 07:49:34 CEST 2021


<--------------------------------------- First path is disabled on switch ------------------------------------------------>


[root@lu0551 ~]# cat /sys/class/fc_host/host??/port_state
Linkdown
Online
[root@lu0551 ~]# multipath -ll /dev/mapper/36000d31005771c000000000000000065
36000d31005771c000000000000000065 dm-17 COMPELNT,Compellent Vol
size=50G features='1 queue_if_no_path' hwhandler='1 alua' wp=rw
`-+- policy='service-time 0' prio=50 status=active
  |- 14:0:1:13 sdaj 66:48  active faulty running
  `- 15:0:1:13 sdai 66:32  active ready running

[root@lu0551 ~]# time sg_dd blk_sgio=1 if=/dev/mapper/36000d31005771c000000000000000065 of=/dev/null count=10000000
Assume default 'bs' (block size) of 512 bytes
10000000+0 records in
10000000+0 records out

real    0m6.912s
user    0m0.021s
sys    0m0.325s

<------------------------------------- IO works ------------------------------------------------->

[root@lu0551 ~]# date
Fri Jun 25 07:50:05 CEST 2021


[root@lu0551 ~]# multipath -ll /dev/mapper/36000d31005771c000000000000000065
36000d31005771c000000000000000065 dm-17 COMPELNT,Compellent Vol
size=50G features='1 queue_if_no_path' hwhandler='1 alua' wp=rw
`-+- policy='service-time 0' prio=50 status=active
  |- 14:0:1:13 sdaj 66:48  failed faulty running
  `- 15:0:1:13 sdai 66:32  active ready running



<-------------------------------- second path is disabled -------------------------------------->

[root@lu0551 ~]# date
Fri Jun 25 07:50:30 CEST 2021
[root@lu0551 ~]# multipath -ll /dev/mapper/36000d31005771c000000000000000065
36000d31005771c000000000000000065 dm-17 COMPELNT,Compellent Vol
size=50G features='1 queue_if_no_path' hwhandler='1 alua' wp=rw
`-+- policy='service-time 0' prio=0 status=active
  |- 14:0:1:13 sdaj 66:48  failed faulty running
  `- 15:0:1:13 sdai 66:32  failed faulty running
[root@lu0551 ~]# time sg_dd blk_sgio=1 if=/dev/mapper/36000d31005771c000000000000000065 of=/dev/null count=10000000
Assume default 'bs' (block size) of 512 bytes


INQUIRY failed on /dev/mapper/36000d31005771c000000000000000065

real    0m20.597s
user    0m0.000s
sys    0m0.014s
[root@lu0551 ~]#


<---------------------- IO was blocked until path(s) were reenabled ------------------------->


[root@lu0551 ~]# date
Fri Jun 25 07:51:01 CEST 2021






[root@lu0551 ~]# multipath -ll /dev/mapper/36000d31005771c000000000000000065
36000d31005771c000000000000000065 dm-17 COMPELNT,Compellent Vol
size=50G features='1 queue_if_no_path' hwhandler='1 alua' wp=rw
`-+- policy='service-time 0' prio=50 status=active
  |- 15:0:1:13 sdai 66:32  active ready running
  `- 14:0:1:13 sdaj 66:48  active ready running

Comment 86 John Ferlan 2021-09-08 19:11:41 UTC
Bulk update: Move RHEL-AV bugs to RHEL8

Comment 87 IBM Bug Proxy 2021-11-08 16:23:51 UTC
------- Comment From chavez.com 2021-11-08 11:10 EDT-------
*** Bug 183977 has been marked as a duplicate of this bug. ***

Comment 93 IBM Bug Proxy 2022-05-09 13:22:51 UTC
------- Comment From mainamdar.com 2022-05-09 09:13 EDT-------
*** Bug 183930 has been marked as a duplicate of this bug. ***

------- Comment From mainamdar.com 2022-05-09 09:15 EDT-------
*** Bug 182703 has been marked as a duplicate of this bug. ***

Comment 94 IBM Bug Proxy 2022-08-23 16:45:08 UTC
Created attachment 1907169 [details]
sosreport of ilx22r

Comment 95 IBM Bug Proxy 2022-08-23 16:45:11 UTC
Created attachment 1907170 [details]
sosreport of ilx21r

Comment 96 IBM Bug Proxy 2023-01-16 08:01:28 UTC
------- Comment From sthoufee.com 2023-01-16 02:55 EDT-------
Any update on this bug?


Note You need to log in before you can comment on or make changes to this bug.