Red Hat Bugzilla – Bug 180195
aic7xxx and aic79xx Drivers Don't Support 16-byte CDBs
Last modified: 2007-11-30 17:07:23 EST
From Bugzilla Helper:
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.12) Gecko/20060202 Fedora/1.0.7-1.2.fc4 Firefox/1.0.7
Description of problem:
The aic7xxx and aic79xx drivers shipping with AS4 are very old and do not contain recent enhancements found in Adaptec's released driver versions. My specific problem with the RH-shipped drivers is that they don't support 16-byte commands to SCSI devices. This is a problem with the latest version of TSM (IBM's Tivoli Systems Manager Backup) in combination with SDLT600 drives. Various SCSI commands (such as ICE and WORM commands) fail in TSM, rendering the devices unusable by TSM. The 16-byte CDB support being the issue was revealed by an IBM test tool for TSM.
Inspection of the drivers contained in the kernel show that the latest AS4 kernel has releases 6.2.36 (for aic7xxx) and 1.3.11 (for aic79xx). Adaptec has released subsequent versions of their drivers that contain various fixes as well as 16-byte CDB support. The latest versions are 6.3.11 for aic7xxx and 2.0.15 for aic79xx. 16-byte CDB support was added in June 2004. Please update the driver for the next kernel release.
I tried to compile the Adaptec-provided driver but it appears to rely on the SCSI subsystem as it existed in older kernels before the SCSI subsystem was reorganized in later 2.6 kernels (scsi.h vs scsi/scsi_host.h, etc.) and won't compile properly. I tried hand-fixing it, but it became too complex for me to solve.
Version-Release number of selected component (if applicable):
kernel-2.6.9-22.0.2.EL (and smp)
Steps to Reproduce:
1. Execute a SCSI command that uses a 16-byte CDB
Actual Results: Error in TSM
Expected Results: Tape drive should be detected and work.
I've found this bug in kernel.org ->
http://bugzilla.kernel.org/show_bug.cgi?id=5755 that seems like it would fix the
problem. I tried installing the Source RPM, getting the code out of
drivers/scsi/aic7xxx and building it as an external module:
make -C /usr/src/2.6.9-22.0.2.ELsmp M=$PWD modules
and there are many compile errors. I guess I don't see why code that is in the
source RPM doesn't compile against the module doing a kbuild. In any case, I've
created a patch that should provide 16-byte CDB support. I've inserted this
patch into the specfile for the latest kernel source rpm, change the release
string and rebuilt the kernel. This appears to work fine (e.g. initial hardware
tests with 16-byte CDBs seem promising). I'm not sure where my failure in
building the module out-of-tree is. (Advice on this side topic would be
In any event it seems likely this patch is all that's necessary to solve this
Created attachment 124649 [details]
Add 16-byte CDB support to the aic7xxx and aic79xx drivers
Our TSM admin ran this setup (patched kernel, drives, TSM) through all of its
diagnostics and his performance tests and everything worked fine. It seems like
this does in fact work. Let me know if there's anything further I/we can do to
get this fix into U3.
It is too late for U3. That's been frozen for weeks. This does look like
something we can do for U4. We will be asking you to test a U4 beta, to confirm
that it works as expected.
Too bad. Guess I'll have to rebuild kernels for another release cycle. Please
let me know when you need some testing.
I submitted a patch for the kernel.org bugzilla (5755). The only risks
I can see are that there might be Adaptec HBAs supported by the driver
that don't support 16-byte CDBs. If the patch gets accepted upstream
there should be no trouble putting it in U4.
This issue is on Red Hat Engineering's list of planned work items
for the upcoming Red Hat Enterprise Linux 4.4 release. Engineering
resources have been assigned and barring unforeseen circumstances, Red
Hat intends to include this item in the 4.4 release.
Terrific. Do you know if it's going to be an intergration of the latest Adaptec
code or just a patch? I'm just curious. Thanks.
committed in stream U4 build 35. A test kernel with this patch is available from
An advisory has been issued which should help the problem
described in this bug report. This report is therefore being
closed with a resolution of ERRATA. For more information
on the solution and/or where to find the updated files,
please follow the link below. You may reopen this bug report
if the solution does not work for you.