Liking it so far. I may look into assisting with getting additional 
controllers added to this (aacraid/adaptec, 3ware, etc), as this is 
something I've been needing for awhile. I just need to freshen up a bit on 
the direct scsi interactions and similar.

On Saturday, May 13, 2017 at 10:01:26 PM UTC-4, Daniel Swarbrick wrote:
>
> I realise this is a very old thread, but I am in the early stages of 
> writing a pure Go library for reading SMART attributes from HDDs / SSDs. So 
> far it works for simple SCSI block devices (i.e., those that have a sd* 
> device name) via SCSI pass-through, and I am in the process of adding 
> support for devices attached to MegaRAID controllers.
>
> You can find the code at https://github.com/dswarbrick/smart
>
> On Friday, March 23, 2012 at 12:15:16 PM UTC+1, Jeff R. Allen wrote:
>>
>>
>>
>> On Thursday, March 22, 2012 4:59:09 PM UTC+1, minux wrote:
>>>
>>> you can strace(1) the command line app and find out how to read these 
>>> data. 
>>>
>>
>> Out of curiosity, I did just that, and I found that smartctl is using 
>> ioctl SG_IO to do SCSI Generic commands on the device:
>>
>> 4602  ioctl(3, SG_IO, {'S', SG_DXFER_FROM_DEV, cmd[6]=[*12, 00, 00, 00, 
>> 24, 00*], mx_sb_len=32, iovec_count=0, dxfer_len=36, timeout=20000, 
>> flags=0, data[36]=["*\0\0\5\2[\0\0\0ATA     TOSHIBA THNSNC12*"...], 
>> status=00, masked_status=00, sb[0]=[], host_status=0, driver_status=0, 
>> resid=0, duration=0, info=0}) = 0
>>
>> (The request and reply are emboldened.)
>>
>> You can see an example of how to access ioctl from Go in the exp/terminal 
>> package: 
>> http://code.google.com/p/go/source/browse/src/pkg/exp/terminal/util.go
>>
>> If you want to make this portable, you'll need to think about making a 
>> package in Go that can do SCSI Generic commands, hiding the 
>> platform-dependent parts inside of it. Take a look at the source to the net 
>> package to see how to make one Go package that's got OS-dependent 
>> implementations of the same external API.
>>
>> Then you can use your new package to talk S.M.A.R.T. with your device.
>>
>> I think that project would be a very good fit for Go; at the low levels, 
>> you need control of the bits to do the ioctl, and once you get the data, 
>> you have all the niceities of Go to transform it, store it in a database, 
>> graph it, etc. Go for it!
>>
>>  -jeff
>>
>

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to