Hi James I very well know the book. But the chapter on block devices is targeted at, what I believe, are called 'target devices' in the overall topology, isn't it? I am specifically looking at drivers for HBAs, the host bus adapters. As you said, it is highly manufacturer dependent, which is why perhaps there isn't a generic guide to it. But I am looking at understanding the broader concepts associated with writing HBA drivers. As far as I understand up until now, they talk "scsi" to the target device (or its firmware to be more specific", who then translates the scsi commands into actions to be taken on the actual blocks (LBA/CHS). Am I right? So I believe I need some familiarity with the SCSI "command set" as it is. Could you shed some light on this? On Mon, Apr 27, 2020 at 5:34 AM James Bottomley <James.Bottomley@xxxxxxxxxxxxxxxxxxxxx> wrote: > > On Mon, 2020-04-27 at 05:24 +0530, Aijaz Baig wrote: > > I'm a mid level developer with acceptable knowledge of OS internals > > and some driver development but up until now, I've worked mostly on > > the networking side of things > > > > most searches online are leading me to open solaris which seems to be > > the only guide available online for writing HBA drivers > > > > Is there anything else (Besides reading the source), like a guide or > > something, that I can read to help me get up to speed with it. > > This is a pretty good one > > https://lwn.net/Kernel/LDD3/ > > And if you like it, you could buy the book. > > > Do I really need to know SAN to become acceptably good. How much SCSI > > (and other protocol(s)) knowledge is needed? > > It depends *what* driver you want to write. Obviously you have to > understand the protocol of both the host bus adapter and usually also > any devices attached to it, but the HBA protocol is usually highly > manufacturer dependent, it's only the device protocol that you'll find > in standards. > > James > -- Best Regards, Aijaz Baig