I/O failure seen in KVM when using SCSI passthrough devices on RHEL 8

Solution Unverified - Updated -

Issue

  • I/O failure seen in KVM when using SCSI passthrough devices:

    kernel: sd 0:0:0:0: [sda] tag#54 FAILED Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE cmd_age=0s
    kernel: sd 0:0:0:0: [sda] tag#54 Sense Key : Illegal Request [current]
    kernel: sd 0:0:0:0: [sda] tag#54 Add. Sense: Invalid field in cdb
    kernel: sd 0:0:0:0: [sda] tag#54 CDB: Write(10) 2a 00 07 9b 08 00 00 0a 00 00
    kernel: blk_update_request: critical target error, dev sda, sector 127600640 op 0x1:(WRITE) flags 0x4000 phys_seg 20 prio class 0
    kernel: EXT4-fs warning (device dm-3): ext4_end_bio:323: I/O error 5 writing to inode 14 (offset 16777216 size 8388608 starting block 221184)
    ....
    kernel: sd 2:0:0:12: [sdn] tag#3214 Send: scmd 0x00000000f30af6e1
    kernel: sd 2:0:0:12: [sdn] tag#3214 CDB: Test Unit Ready 00 00 00 00 00 00
    kernel: sd 2:0:0:12: [sdn] tag#3214 Done: SUCCESS Result: hostbyte=DID_OK driverbyte=DRIVER_OK cmd_age=0s
    kernel: sd 2:0:0:12: [sdn] tag#3214 CDB: Test Unit Ready 00 00 00 00 00 00
    kernel: sd 2:0:0:12: [sdn] tag#3214 scsi host busy 2 failed 0
    kernel: sd 2:0:0:12: Notifying upper driver of completion (result 0)
    kernel: sd 2:0:0:12: [sdn] tag#3214 0 sectors total, 0 bytes done.
    
  • Devices showing a max_sectors_kb of 1280:

    [root@host]# cat sys/block/sdc/queue/max_sectors_kb
    1280
    

Environment

  • Red Hat Enterprise Linux 8
  • KVM config using SCSI passthrough. For example:

    <disk type='block' device='lun'>
       <driver name='qemu' type='raw'/>
       <source dev='/dev/mapper/test' index='1'>
         <reservations managed='yes'>
          <source type='unix' path='/var/lib/libvirt/qemu/domain-1-test/test0.sock' mode='client'/>
         </reservations>
         <privateData>
           <nodenames>
             <nodename type='storage' name='libvirt-1-storage'/>
             <nodename type='format' name='libvirt-1-format'/>
           </nodenames>
           <reservations mgralias='test0'/>
         </privateData>
       </source>
       <backingStore/>
       <target dev='sda' bus='scsi'/>
       <alias name='scsi0-0-0-0'/>
       <address type='drive' controller='0' bus='0' target='0' unit='0'/>
       <privateData>
         <qom name='scsi0-0-0-0'/>
       </privateData>
     </disk>
    

Subscriber exclusive content

A Red Hat subscription provides unlimited access to our knowledgebase, tools, and much more.

Current Customers and Partners

Log in for full access

Log In

New to Red Hat?

Learn more about Red Hat subscriptions

Using a Red Hat product through a public cloud?

How to access this content