#
625dc38a |
|
22-Mar-2020 |
Augustin Cavalier <waddlesplash@gmail.com> |
libnvme: Rework qpairs to lock themselves. They were theoretically guarded by the controller lock, but it appears nvme_ns bypassed that, meaning that if ns_read was executed at the same time as qpair_poll, unpredictable races could occur. This solves that by making the qpairs guarded by their own mutex, which also has the advantage of poll() being executable on more than one qpair at a time. Seems to fix the KDLs in #15123 (and maybe other NVMe tickets), though the I/O corruptions remain.
|