On Tue, May 13, 2025 at 12:29:51PM -0400, Benjamin Marzinski wrote: > On Mon, May 12, 2025 at 11:49:19PM -0700, Christoph Hellwig wrote: > > On Tue, May 13, 2025 at 08:32:12AM +0200, Hannes Reinecke wrote: > > > Reservations and stuff. > > > > They should use the kernel persistent reservation API. > > Currently QEMU isn't sending Persistent Reservation requests to > multipath devices at all. It's sending those directly to the underlying > scsi devices. The issue here is with all the other SCSI commands that > users want to send to their SCSI passthrough device that is actually a > multipath device on top of a number of SCSI paths. They expect to > get back the actual sense and status information, so QEMU needs to > send them via SG_IOs.
And that's the problem. There is plenty of path (I_T_L) nexus specific information in SCSI, and just trying to glob it back together above means you'll get path specific information in something that doesn't claim to be multi-pathing and will get random and changing results depending on the underlying path selection. > Without reading that sense and status information in kernel, the > multipath target can't know if it needs to fail a path and retry the > ioctl down a different path. The blk_status_t has the information to fail over. But the whole idea of implementing SG_IO in dm-mpath or any other stacking layer is just really, really dangerous.