IOSCSITape 0.2: 64-bit support

150 views
Skip to first unread message

Jesse Peterson

unread,
Apr 15, 2012, 9:05:22 PM4/15/12
to ioscsitap...@googlegroups.com
Just a quick note to say I've updated IOSCSITape to build 32/64 bit Universal version targeted at 10.6. This means Mac OS X 10.6 and 10.7 machines running 64 bit kernels will now run using the default install. There is a new version 0.2 Featured download on the project page:

Paulo Barcellos

unread,
Apr 22, 2012, 10:06:43 AM4/22/12
to ioscsitap...@googlegroups.com
Great news!

I'll install it shortly and will let you know

Regards,

Paulo

Paulo Barcellos

unread,
Apr 22, 2012, 1:25:18 PM4/22/12
to ioscsitap...@googlegroups.com
Hi Jesse,

I've installed the new version but still not working. I don't know if that's the problem The /mt is not recognized as a folder, I can browse to /usr/local/bin/ and the MT folder is there but I cannot open the MT folder. It says it's not a folder.

I'm using a HP SAS 3000 LTO-5 tape drive. It's working on OSX.

Here's the logs:

SnowFlake01:bin snowflake$ ioreg -r -c IOSCSIPeripheralDeviceNub
+-o IOSCSILogicalUnitNub@0  <class IOSCSILogicalUnitNub, id 0x100000621, regist$
  | {
  |   "IOCFPlugInTypes" = {"7D66678E-08A2-11D5-A1B8-0030657D052A"="IOSCSIArchit$
  |   "SCSITaskDeviceCategory" = "SCSITaskUserClientDevice"
  |   "IOUserClientClass" = "SCSITaskUserClient"
  |   "Peripheral Device Type" = 1
  |   "IOGeneralInterest" = "IOCommand is not serializable"
  |   "SCSI Logical Unit Number" = 0
  |   "IOMatchCategory" = "SCSITaskUserClientIniter"
  |   "Vendor Identification" = "HP"
  |   "INQUIRY Unit Serial Number" = "HU10129G7M"
  |   "INQUIRY Device Identification" = ({"Identifier Type"=3,"Code Set"=1,"Ide$
  |   "SCSITaskUserClient GUID" = <00c2661f80ffffff5531388922000000>
  |   "Product Identification" = "Ultrium 5-SCSI"
  |   "Protocol Characteristics" = {"Write Time Out Duration"=30000,"Read Time $
  |   "IOUnitLUN" = 0
  |   "Product Revision Level" = "Z5AD"
  | }
  | 
  +-o IOSCSITape  <class IOSCSITape, id 0x100000627, !registered, !matched, act$
  +-o SCSITaskUserClientIniter  <class SCSITaskUserClientIniter, id 0x100000628$

+-o IOSCSILogicalUnitNub@0  <class IOSCSILogicalUnitNub, id 0x10000050f, regist$
  | {
  |   "INQUIRY Device Identification" = ({"Identifier Type"=2,"Code Set"=1,"Ide$
  |   "Peripheral Device Type" = 0
  |   "Vendor Identification" = "Areca"
  |   "SCSI Logical Unit Number" = 0
  |   "IOMatchCategory" = "SCSITaskUserClientIniter"
  |   "IOGeneralInterest" = "IOCommand is not serializable"
  |   "Product Identification" = "ARC-1880-VOL#000"
  |   "INQUIRY Unit Serial Number" = "41242f3223588298"
  |   "Protocol Characteristics" = {"Write Time Out Duration"=30000,"Read Time $
  |   "IOUnitLUN" = 0
  |   "Product Revision Level" = "R001"
  | }
  | 
  +-o IOSCSIPeripheralDeviceType00  <class IOSCSIPeripheralDeviceType00, id 0x1$
    +-o IOBlockStorageServices  <class IOBlockStorageServices, id 0x100000515, $
      +-o IOBlockStorageDriver  <class IOBlockStorageDriver, id 0x100000516, re$
        +-o Areca ARC-1880-VOL#000 Media  <class IOMedia, id 0x100000521, regis$
          +-o IOMediaBSDClient  <class IOMediaBSDClient, id 0x100000522, regist$
          +-o IOGUIDPartitionScheme  <class IOGUIDPartitionScheme, id 0x1000005$
            +-o EFI System Partition@1  <class IOMedia, id 0x100000527, registe$
            | +-o IOMediaBSDClient  <class IOMediaBSDClient, id 0x100000529, re$
            +-o RAID@2  <class IOMedia, id 0x100000528, registered, matched, ac$
              +-o IOMediaBSDClient  <class IOMediaBSDClient, id 0x10000052a, re$

+-o IOSCSIPeripheralDeviceNub  <class IOSCSIPeripheralDeviceNub, id 0x1000002c9$
  | {
  |   "IOProbeScore" = 0
  |   "CFBundleIdentifier" = "com.apple.iokit.IOSCSIArchitectureModelFamily"
  |   "IOProviderClass" = "IOSCSIProtocolServices"
  |   "IOClass" = "IOSCSIPeripheralDeviceNub"
  |   "IOMatchCategory" = "SCSITaskUserClientIniter"
  |   "Peripheral Device Type" = 0
  |   "Vendor Identification" = "LaCie"
  |   "Product Identification" = "d2 quadra"
  |   "Protocol Characteristics" = {"Physical Interconnect"="FireWire","Preferr$
  |   "Product Revision Level" = ""
  | }
  | 
  +-o IOSCSIPeripheralDeviceType00  <class IOSCSIPeripheralDeviceType00, id 0x1$
    +-o IOBlockStorageServices  <class IOBlockStorageServices, id 0x1000002cd, $
      +-o IOBlockStorageDriver  <class IOBlockStorageDriver, id 0x1000002ce, re$
        +-o LaCie d2 quadra Media  <class IOMedia, id 0x1000002e2, registered, $
          +-o IOMediaBSDClient  <class IOMediaBSDClient, id 0x1000002e3, regist$
          +-o IOGUIDPartitionScheme  <class IOGUIDPartitionScheme, id 0x1000002$
            +-o EFI System Partition@1  <class IOMedia, id 0x1000002e8, registe$
            | +-o IOMediaBSDClient  <class IOMediaBSDClient, id 0x1000002ea, re$
            +-o HD_PRIMO_11@2  <class IOMedia, id 0x1000002e9, registered, matc$
              +-o IOMediaBSDClient  <class IOMediaBSDClient, id 0x1000002eb, re$

+-o IOSCSIPeripheralDeviceNub  <class IOSCSIPeripheralDeviceNub, id 0x1000002f3$
  | {
  |   "IOProbeScore" = 0
  |   "CFBundleIdentifier" = "com.apple.iokit.IOSCSIArchitectureModelFamily"
  |   "IOProviderClass" = "IOSCSIProtocolServices"
  |   "IOClass" = "IOSCSIPeripheralDeviceNub"
  |   "IOMatchCategory" = "SCSITaskUserClientIniter"
  |   "Peripheral Device Type" = 0
  |   "Vendor Identification" = "SanDisk"
  |   "Product Identification" = "Cruzer Edge"
  |   "Protocol Characteristics" = {"Physical Interconnect"="USB","Read Time Ou$
  |   "Product Revision Level" = "1.18"
  | }
  | 
  +-o IOSCSIPeripheralDeviceType00  <class IOSCSIPeripheralDeviceType00, id 0x1$
    +-o IOBlockStorageServices  <class IOBlockStorageServices, id 0x1000002f7, $
      +-o IOBlockStorageDriver  <class IOBlockStorageDriver, id 0x1000002f8, re$
        +-o SanDisk Cruzer Edge Media  <class IOMedia, id 0x100000326, register$
          +-o IOMediaBSDClient  <class IOMediaBSDClient, id 0x100000329, regist$
          +-o IOFDiskPartitionScheme  <class IOFDiskPartitionScheme, id 0x10000$
            +-o Untitled 1@1  <class IOMedia, id 0x10000032e, registered, match$
              +-o IOMediaBSDClient  <class IOMediaBSDClient, id 0x10000032f, re$

+-o IOSCSIPeripheralDeviceNub  <class IOSCSIPeripheralDeviceNub, id 0x100000340$
  | {
  |   "IOProbeScore" = 0
  |   "CFBundleIdentifier" = "com.apple.iokit.IOSCSIArchitectureModelFamily"
  |   "IOProviderClass" = "IOSCSIProtocolServices"
  |   "IOClass" = "IOSCSIPeripheralDeviceNub"
  |   "IOMatchCategory" = "SCSITaskUserClientIniter"
  |   "Peripheral Device Type" = 0
  |   "Vendor Identification" = "WD"
  |   "Product Identification" = "My Book"
  |   "Protocol Characteristics" = {"Physical Interconnect"="USB","Read Time Ou$
  |   "Product Revision Level" = "1028"
  | }
  | 
  +-o IOSCSIPeripheralDeviceType00  <class IOSCSIPeripheralDeviceType00, id 0x1$
    +-o IOBlockStorageServices  <class IOBlockStorageServices, id 0x10000037e, $
      +-o IOBlockStorageDriver  <class IOBlockStorageDriver, id 0x10000037f, re$
        +-o WD My Book Media  <class IOMedia, id 0x10000038f, registered, match$
          +-o IOMediaBSDClient  <class IOMediaBSDClient, id 0x100000390, regist$
          +-o IOApplePartitionScheme  <class IOApplePartitionScheme, id 0x10000$
            +-o Apple@1  <class IOMedia, id 0x100000397, registered, matched, a$
            | +-o IOMediaBSDClient  <class IOMediaBSDClient, id 0x10000039a, re$
            +-o Booter@2  <class IOMedia, id 0x100000398, registered, matched, $
            | +-o IOMediaBSDClient  <class IOMediaBSDClient, id 0x10000039b, re$
            +-o Untitled@3  <class IOMedia, id 0x100000399, registered, matched$
              +-o IOMediaBSDClient  <class IOMediaBSDClient, id 0x10000039d, re$



GREP:

SnowFlake01:bin snowflake$ kextstat | grep IOSCSITape
  135    0 0xffffff7f8092f000 0x4000     0x4000     com.googlecode.ioscsitape.IOSCSITape (0.1) <42 5 4 3 1>

Rst0 test:

SnowFlake01:bin snowflake$ ls -l /dev/rst0
crw-rw-r--  1 root  operator   19,   0 22 Abr 14:08 /dev/rst0

Kernel LOG:

Apr 22 14:08:42: --- last message repeated 1 time ---
Apr 22 14:08:42 SnowFlake01 kernel[0]: rst0: <HP, Ultrium 5-SCSI, Z5AD> tape
Apr 22 14:08:42 SnowFlake01 kernel[0]: rst0: density code: 88, 0-byte blocks, write-enabled, buffered
Apr 22 14:08:42 SnowFlake01 kernel[0]: rst0: min/max block size: 1/16777215


So it appears that everything is in place. I'm I missing something?

Thank you,

Regards,

Paulo

Jesse Peterson

unread,
Apr 29, 2012, 5:35:48 PM4/29/12
to Paulo Barcellos, ioscsitap...@googlegroups.com
Hello Paulo,

I would bet this is a blocking issue. My replies inline:

On Apr 22, 2012, at 10:25 AM, Paulo Barcellos wrote:

Hi Jesse,

I've installed the new version but still not working. I don't know if that's the problem The /mt is not recognized as a folder, I can browse to /usr/local/bin/ and the MT folder is there but I cannot open the MT folder. It says it's not a folder.

I'm using a HP SAS 3000 LTO-5 tape drive. It's working on OSX.

Here's the logs:

SnowFlake01:bin snowflake$ ioreg -r -c IOSCSIPeripheralDeviceNub
+-o IOSCSILogicalUnitNub@0  <class IOSCSILogicalUnitNub, id 0x100000621, regist$
  | {
  |   "IOCFPlugInTypes" = {"7D66678E-08A2-11D5-A1B8-0030657D052A"="IOSCSIArchit$
  |   "SCSITaskDeviceCategory" = "SCSITaskUserClientDevice"
  |   "IOUserClientClass" = "SCSITaskUserClient"
  |   "Peripheral Device Type" = 1
  |   "IOGeneralInterest" = "IOCommand is not serializable"
  |   "SCSI Logical Unit Number" = 0
  |   "IOMatchCategory" = "SCSITaskUserClientIniter"
  |   "Vendor Identification" = "HP"
  |   "INQUIRY Unit Serial Number" = "HU10129G7M"
  |   "INQUIRY Device Identification" = ({"Identifier Type"=3,"Code Set"=1,"Ide$
  |   "SCSITaskUserClient GUID" = <00c2661f80ffffff5531388922000000>
  |   "Product Identification" = "Ultrium 5-SCSI"
  |   "Protocol Characteristics" = {"Write Time Out Duration"=30000,"Read Time $
  |   "IOUnitLUN" = 0
  |   "Product Revision Level" = "Z5AD"
  | }
  | 
  +-o IOSCSITape  <class IOSCSITape, id 0x100000627, !registered, !matched, act$
  +-o SCSITaskUserClientIniter  <class SCSITaskUserClientIniter, id 0x100000628$

It sees the Peripheral Device TYpe =1 and IOSCSITape is attached. Good.

GREP:

SnowFlake01:bin snowflake$ kextstat | grep IOSCSITape
  135    0 0xffffff7f8092f000 0x4000     0x4000     com.googlecode.ioscsitape.IOSCSITape (0.1) <42 5 4 3 1>

THe driver (KEXT) is loaded, good.

Rst0 test:

SnowFlake01:bin snowflake$ ls -l /dev/rst0
crw-rw-r--  1 root  operator   19,   0 22 Abr 14:08 /dev/rst0

Driver file exsits, good.

Kernel LOG:

Apr 22 14:08:42: --- last message repeated 1 time ---
Apr 22 14:08:42 SnowFlake01 kernel[0]: rst0: <HP, Ultrium 5-SCSI, Z5AD> tape
Apr 22 14:08:42 SnowFlake01 kernel[0]: rst0: density code: 88, 0-byte blocks, write-enabled, buffered
Apr 22 14:08:42 SnowFlake01 kernel[0]: rst0: min/max block size: 1/16777215

It sees the drive, make, model, brand, and identifier. All good.

So it appears that everything is in place. I'm I missing something?

Well, in the above setting I see that it says 0-byte blocks. Which means it went into the "default" of automatic blocking size mode. This is the *least* tested mode as I actually do not possess any equipment that can do auto-blocking mode (only static sized blocks). So as a test I'd set the blocking mode. Say:

# mt -f /dev/rst0 rewind
# mt -f /dev/rst0 blocksize 131072
# tar cvf /dev/rst0 ~/Desktop

The above will rewind the tape, use 128k blocks and attempt to tar up the desktop folder and write it to the tape. I should add something about this to the troubleshooting guide.

Give that a go and let me know!

Thanks,
- Jesse

Paulo Barcellos Jr

unread,
Apr 29, 2012, 5:41:26 PM4/29/12
to ioscsitap...@googlegroups.com
Hi Jesse,

I've reinstalled everything and it worked.

I was going to ask you how to change block sizes, so to write 1024 block size, what command should I type?

Also, Id like you to know that I'm running your software everyday for more than a week, nd I've been backing up almost 700GB per day with no issues. I have 5 more weeks of intensive backup.

The only question is how to change block sizes, since the client wants the tapes in 1024 block size.

Please let me know if I can help you test this tool so it can leave the "non suitable for production use"

Thank you,

Regards,

Paulo

signature0.gif

Jesse Peterson

unread,
Apr 29, 2012, 5:52:33 PM4/29/12
to ioscsitap...@googlegroups.com
Paulo,

In my last email I mentioned the "mt" command. Take a look at "man mt". This can set the blocking size for the tape drive. Basically "mt -f /dev/rst0 blocksize XXX" then the block size. Note that a small block size like 1024 might make things a little slower rather than a big large multi-hundred-kilobyte block size. Less overhead. To check the current block size you can do a "mt -f /dev/rst0 status" and it should report it.

And secondly: thank you for diligent testing! As I think you may have seen in the "issues" section of the Google Code website there's a couple of major features that I'd to implement that would help. But the biggest problem I think is that "variable blocking" mode is not tested at all. If I had equipment (and time!) to test and implement better the variable blocking mode I'd feel a lot better. Perhaps we need a testimonials page where folks can talk about their experiences?

As an aside I'd like to also implement an "mtx" command so that auto changers could be used as well.

So again, thank you!
- Jesse

On Apr 29, 2012, at 2:41 PM, Paulo Barcellos Jr wrote:

Hi Jesse,

I've reinstalled everything and it worked.

I was going to ask you how to change block sizes, so to write 1024 block size, what command should I type?

Also, Id like you to know that I'm running your software everyday for more than a week, nd I've been backing up almost 700GB per day with no issues. I have 5 more weeks of intensive backup.

The only question is how to change block sizes, since the client wants the tapes in 1024 block size.

Please let me know if I can help you test this tool so it can leave the "non suitable for production use"

Thank you,

Regards,

Paulo

<signature0.gif>
Reply all
Reply to author
Forward
0 new messages