Date: Jul 2008
Product & Version: All NVBU
OS Version: All Windows
Module & Version: N/A
Application version: N/A
When configuring a tape drive for a block size larger than 64 KB, attempts to write to this drive fail with an error "Command Failed - Reinitializing Driver".
Most SCSI adapters on Windows observe an Operating System registry setting that affects the size of the scatter/gather list, and consequently the maximum block size applications can use to communicate on the SCSI bus. Therefore, if this scatter/gather list size is too small, larger block sizes will generate the aforementioned error.
Please note that the symptom is a generic one - there are lots of other reasons as to why this error might be logged, so please verify the block size and operating system you are using to see whether this solution might apply to you.
Before applying these settings, ensure that you are only using tape devices on your SCSI bus. If there are other devices present, this registry change might prevent them from working. If you would like to apply these changes only to a specific channel on the HBA, please ask your hardware vendor for advice.
For most HBAs, the necessary value is held in a registry setting called "MaximumSGList". This value has to be set on the machine controlling the device. You can find (and adjust if necessary) as follows:
- Run regedit from Start -> Run.
- Identify the tree [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ \Parameters
where is specific to your SCSI card (e.g. QL2200 for a Qlogic 2200 card).
- If not already present create a new "Device" key
- If not already present, create a new DWORD under the Device Key with the name "MaximumSGList" and a hex-value as calculated below
- The system must be rebooted for the new registry setting to take effect.
If you can't find they key for your HBA, or it doesn't look like you would expect, please ask your hardware vendor where the value is held.
Calculation of the value for MaximumSGList on 32-Bit systems:
MaximumSGList = ((Maximum Block Size) / 4 KB) +1
For example, in order to be able to use a maximum block size of 256 KB in NetVault, the following would apply: 256 KB / 4 KB = 64. Adding 1 gives a value of 65 (decimal) or 0x41 (hexadecimal).
You can configure any block size between 64 KB and 1 MB. The maximum value is 255 or 0xFF, for a 1 MB block size.
On 64-Bit systems, the OS page size is 8 KB by default, not 4 KB. Therefore, the maximum transfer size is 2 MB.
Calculation of the value for MaximumSGList on 64-Bit systems:
MaximumSGList = ((Maximum Block Size) / 8 KB) +1