For people who are lost between all these data storage layers and connectors, from SCSI, to iSCSI, to SAS, to ATA, to PATA, SAT, ATAPI, how it links to the VFS, file systems, and the device mapping, etc. I’ve written an article, a while back, summarizing simply the link between all of these layers. It might not be as deep and precise as the link posted here but I think it does a good job giving a simple overview.
Added a link. Cheers.
I’ve made it about a third of the way through, but this looks like a very good all-round introduction which goes into enough depth for answering concrete questions you might encounter when implementing anything SCSI based.
I wrote a macOS driver for the virtio SCSI Controller a few years ago, and more recently prototyped a mass storage USB device implementation on an Arduino Due, and I think I would have had less trouble had I found this article at the time.