On Mon, Feb 25, 2008 at 10:52:34PM +0530, aakash berde wrote:

> I am creating an application which should communicate with the different
> HBAs.

Yes, but what does this actually mean?  Are you trying to tell the HBA
to do something (e.g., create a RAID0 array), or are you trying to
tell some target attached to the HBA to do something (e.g., move a
tape around)?  HBA internals tend to be heavily vendor-specific and
are usually proprietary.

> I am getting problem with the adaptec HBA. I tried today to use uscsi for
> communicating with adaptec HBA but not succeeded.

That's not surprising; an HBA is not a SCSI target.  It is usually a
SCSI initiator.

> 1. which directory/file is being used for scsi devices list. I tried
> /dev/cfg, dev/dsk, dev/rdsk but getting error as " No such file or
> directory".

SCSI devices may be found, depending on which driver is attached, in
/dev/rdsk/*, /dev/rmt/*, /dev/scsi/*/*, and other driver-specific
directories.  You need to read the man page for the driver attached to
the targets of interest.  scsi(4) has some general information of
interest.

> 2. I am getting an error "inappropriate ioctl for device" or "Inappropriate
> argument" when trying to communicate with HBA. can I get the root cause
> behind this?

HBAs are not SCSI targets and therefore do not support uscsi(7I).

> 3. In Linux there is sg driver resonsible for SCSI ioctls. On solaris is
> there any kind of driver is available?

sgen(7D) serves the same purpose.  sd(7D), st(7D), and ses(7D) among
others also support uscsi(7I) although ses(7D) in particular provides
no value beyond that provided by sgen(7D).

> 4. Is there any congiguration to be doe before using uscsi  functionality.

Other than ensuring that the appropriate drivers are attached to the
targets of interest, no.  You open(2) the device and then you may
ioctl(fd, USCSICMD, &ucmd) thereafter.

> 5. Besides uscsi is there any different way to communicate with HBAs on SCSI
> ioctls.

Again, HBAs are not targets.  I still do not know whether you are
trying to communicate with an HBA or a target.  The two are COMPLETELY
different.

> As these might be question to be raised by new persons next to me, kindly
> give solution if anyone have, as it will be useful to all solaris system
> Learners otherwise I might have to stuck with the Windows OS.

I do not see how using a different OS will help you; talking to HBAs
is always vendor-specific and usually proprietary.  For that reason,
it should be abstracted into thin drivers that provide nothing more
than transport and attachement points.  Talking to targets works just
fine on Solaris, as I'm sure it does on Windows as well.  You still
have to know which you want to do, though.  You seem to be confusing
the two, which may be an unfortunate side effect of an extremely
broken Windows-centric paradigm in which all non-I/O operations are
approached in an HBA-centric way, even though the operations
themselves apply to SCSI targets or SAS, FC, etc. targets of other
types out in the fabric.  That is the approach taken by t11's SM-HBA;
I consider it to be a byproduct of a "we're stuck with the frameworks
Windows provides so let's just make the lowest common denominator
available on all systems" approach that denies the reality that OS
innovation is both possible and necessary.

Don't buy into that.  Targets are targets and all manipulation of
targets should be done through a device node representing that target.
HBAs just provide attachment points for those target nodes, and
transport data to and from them.  The need to talk explicitly to or
even be aware of HBAs should be minimal or nonexistent for any sane
application.

Hope this helps.

-- 
Keith M Wesolowski              "Sir, we're surrounded!" 
Fishworks                       "Excellent; we can attack in any direction!" 
_______________________________________________
opensolaris-code mailing list
[email protected]
http://mail.opensolaris.org/mailman/listinfo/opensolaris-code

Reply via email to