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
