This interface uses a syfs attribute file to write a SMP request
and then read back the response. The attribute file name is
usually 'smp_portal' and it has read write permissions with only
the root user being able to write. The 'smp_portal' file can
be thought of as representing a SMP target device residing in
a SAS expander. Hence both the target SAS address and the
SAS initiator (host) that it is routed through is implicit
(i.e. therefore the '--sa=<sas_addr>' option does _not_ need
to be given.

Since writing to storage devices can be dangerous (e.g.
'sg_rep_general /dev/sda' would damage the first block of the
disk corresponding to /dev/sda ) there is a chk_smp_portal_file()
function which checks that the given <smp_device> argument does
_not_ react like a normal file or a block device.

One of the variants of the adaptec aic94xx SAS driver in the
linux 2.6 series uses this interface. The driver comes with
an example user space program to use this SMP interface
and it is called 'expander_conf.c'. That file is included
and the Makefile in this directory builds it.

Douglas Gilbert
29th May 2006
