SCSI commands goes to blk_verify_command() like SG v3
(block/scsi_ioctl.c and drivers/scsi/sg.c).
Except for SCSI commands, only SAS Management Protocol (SMP) is
supported now. Sending management requests needs CAP_SYS_RAWIO, that's
a reasonable policy, I guess.
Not the latest, but Doug's RFC:
http://lwn.net/Articles/208082/
gives pretty good information.
The SAS transport class use bsg to handle SAS Management
Protocol. Every SAS object (host, device, expander, etc) has the own
bsg device. They call bsg_register_queue() for the own request
queue. Users can send SMP requests to any object via its bsg device.
http://marc.info/?l=linux-scsi&m=118395317724148&w=2
I guess that James plan to put SMP patches in the second SCSI merge
for 2.6.22.
-