HomeFreeBSD

nvmf: Always use xpt_done instead of xpt_done_direct

Description

nvmf: Always use xpt_done instead of xpt_done_direct

The last reference on a pending I/O request might be held by an mbuf
in the socket buffer. When this mbuf is freed, the I/O request is
completed which triggers completion of the CCB. However, this can
occur with locks held (e.g. with so_snd locked when the mbuf is freed
by sbdrop()) raising a LOR between so_snd and the CAM device lock.
Instead, defer CCB completion processing to a thread where locks are
not held.

Sponsored by: Chelsio Communications

Details

Provenance
jhbAuthored on Thu, Sep 26, 1:10 AM
Parents
rG6a4f0c063718: pci_iov: Add a device_printf if out of bus numbers
Branches
Unknown
Tags
Unknown