[mvapich-discuss] Limic2 on RHEL4 AS

Constantinos Evangelinos ce107 at MIT.EDU
Thu Jun 18 17:41:34 EDT 2009


Hi - I'm trying to build and test MVAPICH2 1.4rc1 on a small cluster of RHEL4 
boxes with Infiniband (using Intel compilers 10.1). Unfortunately it appears 
that Limic2 has been written assuming a kernel version > 2.6.9 or 2.6.10 when 
the transition from the old ioctl happened. 

[root at bowditch limic]# gmake
gmake -C /lib/modules/2.6.9-55.0.9.ELsmp/build 
SUBDIRS=/root/build/mvapich2-1.4rc1/limic modules
gmake[1]: Entering directory `/usr/src/kernels/2.6.9-55.0.9.EL-smp-x86_64'
  CC [M]  /root/build/mvapich2-1.4rc1/limic/limic.o
In file included from /root/build/mvapich2-1.4rc1/limic/limic.c:17:
include/linux/cdev.h:24: warning: "struct inode" declared inside parameter 
list
include/linux/cdev.h:24: warning: its scope is only this definition or 
declaration, which is probably not what you want
/root/build/mvapich2-1.4rc1/limic/limic.c:103: error: unknown field 
`unlocked_ioctl' specified in initializer
/root/build/mvapich2-1.4rc1/limic/limic.c:103: warning: initialization from 
incompatible pointer type
gmake[2]: *** [/root/build/mvapich2-1.4rc1/limic/limic.o] Error 1
gmake[1]: *** [_module_/root/build/mvapich2-1.4rc1/limic] Error 2
gmake[1]: Leaving directory `/usr/src/kernels/2.6.9-55.0.9.EL-smp-x86_64'
gmake: *** [all] Error 2

I was able to build the limic kernel module by making the following changes:

*** limic.c     2009-06-18 17:32:44.000000000 -0400
--- limic.c.new 2009-06-18 17:35:45.000000000 -0400
***************
*** 14,23 ****

  #include <linux/init.h>
  #include <linux/module.h>
  #include <linux/cdev.h>
  #include <linux/types.h>
  #include <linux/kdev_t.h>
- #include <linux/fs.h>
  #include "limic_internal.h"


--- 14,23 ----

  #include <linux/init.h>
  #include <linux/module.h>
+ #include <linux/fs.h>
  #include <linux/cdev.h>
  #include <linux/types.h>
  #include <linux/kdev_t.h>
  #include "limic_internal.h"


***************
*** 32,37 ****
--- 32,38 ----


  int limic_ioctl(
+                   struct inode *inode,
                    struct file *fp,
                    unsigned int op_code,
                    unsigned long arg)
***************
*** 100,106 ****


  static struct file_operations limic_fops={
!     unlocked_ioctl: limic_ioctl,
      open: limic_open,
      release: limic_release
  };
--- 101,107 ----


  static struct file_operations limic_fops={
!     ioctl: limic_ioctl,
      open: limic_open,
      release: limic_release
  };

The kernel module then builds fine but when I proceed to build the rest of the 
MVAPICH2 code I get in trouble with the instances of use of ioctl in 
limic_lib.h - the old ioctl has an extra inode argument.

So the question becomes - is Limic2 restricted to more recent kernel versions 
(despite the popularity of RHEL4) or can a fix be put in 1.4 in time for the 
final release?

Also - there is nothing that claims it cannot be done but maybe it's an 
oversight - can CR work in conjunction with Limic2?

Constantinos
-- 
Dr. Constantinos Evangelinos                    Room 54-1518, EAPS/MIT
Earth, Atmospheric and Planetary Sciences       77 Massachusetts Avenue
Massachusetts Institute of Technology           Cambridge, MA 02139
+1-617-324-3386/+1-617-253-4464 (fax)           USA



More information about the mvapich-discuss mailing list