OMSA says PERC 6/i driver version too old but current megaraid_sas module doesn't compile against kernel 2.6.26

Andreas Ntaflos daff at pseudoterminal.org
Sat Jun 6 16:14:31 CDT 2009


Hi list, 

this is my first post to this list and I am not entirely sure if I 
came to the right place regarding the problem I have observed.

We run a couple of PowerEdge 2950s (SAS PERC 6/i Integrated) with a 
64bit Debian Lenny and kernel 2.6.26 (2.6.26-2-amd64). We have put 
these servers into operation only recently and while I have been 
running Debian as a server OS for years now I haven't had any 
experience managing PowerEdge servers (running Linux or not) 
specifically until then. Naturally I am very thankful and happy that 
the guys at sara.nl provide the Debian OMSA packages which make life 
much easier.

I upgraded the OMSA packages to 6.0.1 release 8 I believe [1] and 
everything went fine as far as I can tell. However, "omreport storage 
controller" now tells me that the driver version of the controller is 
too old:

[...]
Driver Version                                : 00.00.03.20-rc1
Minimum Required Driver Version               : 00.00.03.21
[...]

After some googling and researching I found out how to install the new 
version of the driver module in question -- megaraid_sas 
v00.00.03.21-6 [2] -- using DKMS. I also found this thread [3], which 
explains how to build the megaraid_sas module without DKMS. Both work 
as expected up to the point where the actual compilation process 
starts (the complete make.log is attached to this message): 

make -C /lib/modules/2.6.26-2-amd64/build 
SUBDIRS=/usr/src/megaraid_sas-v00.00.03.21 modules
make[1]: Entering directory `/usr/src/linux-source-2.6.26'
  CC [M]  /usr/src/megaraid_sas-v00.00.03.21/megaraid_sas.o
/usr/src//megaraid_sas-v00.00.03.21/megaraid_sas.c: In 
function ‘megasas_make_sgl32’:
/usr/src//megaraid_sas-v00.00.03.21/megaraid_sas.c:489: error: ‘struct 
scsi_cmnd’ has no member named ‘request_buffer’
/usr/src//megaraid_sas-v00.00.03.21/megaraid_sas.c:489: error: ‘struct 
scsi_cmnd’ has no member named ‘request_bufflen’
/usr/src//megaraid_sas-v00.00.03.21/megaraid_sas.c:492: error: ‘struct 
scsi_cmnd’ has no member named ‘use_sg’
[...]
/usr/src//megaraid_sas-v00.00.03.21/megaraid_sas.c: In 
function ‘sysfs_max_sectors_read’:
/usr/src//megaraid_sas-v00.00.03.21/megaraid_sas.c:2499: error: 
dereferencing pointer to incomplete type
/usr/src//megaraid_sas-v00.00.03.21/megaraid_sas.c:2499: warning: type 
defaults to ‘int’ in declaration of ‘__mptr’
/usr/src//megaraid_sas-v00.00.03.21/megaraid_sas.c:2499: warning: 
initialization from incompatible pointer type
/usr/src//megaraid_sas-v00.00.03.21/megaraid_sas.c:2499: error: 
invalid use of undefined type ‘struct class_device’
[...]
/usr/src//megaraid_sas-v00.00.03.21/megaraid_sas.c: In 
function ‘megasas_io_attach’:
/usr/src//megaraid_sas-v00.00.03.21/megaraid_sas.c:2581: 
error: ‘struct Scsi_Host’ has no member named ‘shost_classdev’
/usr/src//megaraid_sas-v00.00.03.21/megaraid_sas.c: In 
function ‘megasas_detach_one’:
/usr/src//megaraid_sas-v00.00.03.21/megaraid_sas.c:3029: 
error: ‘struct Scsi_Host’ has no member named ‘shost_classdev’
make[2]: *** [/usr/src/megaraid_sas-v00.00.03.21/megaraid_sas.o] Error 
1
make[1]: *** [_module_/usr/src/megaraid_sas-v00.00.03.21] Error 2
make[1]: Leaving directory `/usr/src/linux-source-2.6.26'
make: *** [default] Error 2

The problem seems to be that the kernel's SCSI internals changed some 
time back and so the megaraid_sas driver modules doesn't compile 
against a recent 2.6.26 kernel anymore. 

Basically, from what I found out, calls like scp->request_buffer need 
to be changed to scsi_sglist(scp), with scp declared as "struct 
scsi_cmnd *scp", and so on. Obviously other changes are necessary as 
well, but I am in no way well-enough acquainted with the Linux kernel 
internals or APIs to be able to provide a patch.

Now, is this already a known problem or is there some place I can file 
a bug report? Does anyone have a solution or at least ideas? Can I 
perhaps obtain this driver module from another source? Or do we have 
to wait for Debian to include an updated megaraid_sas module in the 
Lenny kernel (don't know if that would ever happen)?

Or, another possibility: did I go completely wrong about this whole 
procedure and should have done something else entirely?

Is there any other information I can provide?

Any input will be much appreciated!

Thanks in advance!

Andreas

[1] 
http://lists.us.dell.com/pipermail/linux-poweredge/2009-June/039374.html
[2] 
http://ftp.us.dell.com/SAS-RAID/megaraid_sas-v00.00.03.21-6-R208840.tar.gz
[3] 
http://lists.us.dell.com/pipermail/linux-poweredge/2008-April/035871.html
-- 
Andreas Ntaflos 
Vienna, Austria 

GPG Fingerprint: 6234 2E8E 5C81 C6CB E5EC  7E65 397C E2A8 090C A9B4
-------------- next part --------------
A non-text attachment was scrubbed...
Name: make.log
Type: text/x-log
Size: 4690 bytes
Desc: not available
Url : http://lists.us.dell.com/pipermail/linux-poweredge/attachments/20090606/0c2530b3/attachment.log 


More information about the Linux-PowerEdge mailing list