Graham wrote:
> Yargh, I hate that I'm sending a third reply so soon.  It appears the
> arcmsr and kernel-xen-devel packages conflict.
> 
> make -C /lib/modules/2.6.32.43-0.4.1.xs1.6.06.734.170748xen/build
> SUBDIRS=/root/arcmsr.1.20.0X.15-111012 BUILD_INI=m
> make[1]: Entering directory
> `/usr/src/kernels/2.6.32.43-0.4.1.xs1.6.06.734.170748xen-i686'
>   CC [M]  /root/arcmsr.1.20.0X.15-111012/arcmsr.o
> In file included from /root/arcmsr.1.20.0X.15-111012/arcmsr.c:243:
> /root/arcmsr.1.20.0X.15-111012/arcmsr.h:252: error: redeclaration of
> enumerator ‘SCSI_QDEPTH_DEFAULT’
> include/scsi/scsi_host.h:47: error: previous definition of
> ‘SCSI_QDEPTH_DEFAULT’ was here
> /root/arcmsr.1.20.0X.15-111012/arcmsr.h:253: error: redeclaration of
> enumerator ‘SCSI_QDEPTH_QFULL’
> include/scsi/scsi_host.h:48: error: previous definition of
> ‘SCSI_QDEPTH_QFULL’ was here
> /root/arcmsr.1.20.0X.15-111012/arcmsr.h:254: error: redeclaration of
> enumerator ‘SCSI_QDEPTH_RAMP_UP’
> include/scsi/scsi_host.h:49: error: previous definition of
> ‘SCSI_QDEPTH_RAMP_UP’ was here
> /root/arcmsr.1.20.0X.15-111012/arcmsr.h:5269: warning: initialization
> from incompatible pointer type
> make[2]: *** [/root/arcmsr.1.20.0X.15-111012/arcmsr.o] Error 1
> make[1]: *** [_module_/root/arcmsr.1.20.0X.15-111012] Error 2
> make[1]: Leaving directory
> `/usr/src/kernels/2.6.32.43-0.4.1.xs1.6.06.734.170748xen-i686'
> make: *** [all] Error 2
> 
> Is this an XCP bug or an Areca bug?

It comes from some backported stuff in the 2.6.32.12-0.7.1 SLES kernel that the 
XCP kernel is based on. The Areca driver expects that this enum needs defining 
for 2.6.32 and earlier kernels whereas the SLES and XCP kernels (and RHEL 
probably based on the "!defined(RHEL_RELEASE_CODE)" bit) already have it 
defined hence the redefinition error. FWIW this would happen on SLES with 
2.6.32 as well.

#if !defined(RHEL_RELEASE_CODE) && LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 33)
        enum {
                SCSI_QDEPTH_DEFAULT,    /* default requested change, e.g. from 
sysfs */
                SCSI_QDEPTH_QFULL,      /* scsi-ml requested due to queue full 
*/
                SCSI_QDEPTH_RAMP_UP,    /* scsi-ml requested due to threshhold 
event */
        };
#endif

You can simply remove this or cause the #if to always give false, e.g.:

[root@localhost arcmsr.1.20.0X.15-111012]# diff -up arcmsr.h.orig arcmsr.h
--- arcmsr.h.orig       2012-11-06 06:51:07.000000000 -0500
+++ arcmsr.h    2012-11-06 06:51:31.000000000 -0500
@@ -247,7 +247,7 @@
        #define roundup(x, y)   ((((x)+((y)-1))/(y))*(y))
 #endif

-#if !defined(RHEL_RELEASE_CODE) && LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 
33)
+#if !defined(RHEL_RELEASE_CODE) && LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 
33) && 0
        enum {
                SCSI_QDEPTH_DEFAULT,    /* default requested change, e.g. from 
sysfs */
                SCSI_QDEPTH_QFULL,      /* scsi-ml requested due to queue full 
*/

Regards,
James


_______________________________________________
Xen-api mailing list
[email protected]
http://lists.xen.org/cgi-bin/mailman/listinfo/xen-api

Reply via email to