[Pvfs2-users] compiling kernel module of pvfs2.7.1pre and RHEL4 kernel 2.6.9-55 - red hat

Rob Ross rross at mcs.anl.gov
Wed Jan 30 10:12:37 EST 2008


Good to know that after all these years RedHat is still up to the same  
inconvenient tricks. I have nothing constructive to say :). -- Rob

On Jan 30, 2008, at 9:02 AM, Phil Carns wrote:

> Michael Will wrote:
>> modprobe pvfs2 fails since class_device_destroy is not defined
>> FATAL: Error inserting pvfs2 (/lib/modules/2.6.9-55.ELsmp/kernel/fs/ 
>> pvfs2/pvfs2.ko): Unknown symbol in module, or unknown parameter  
>> (see dmesg)
>> Note that doing a ./configure --with-kernel=/usr/src/kernels/ 
>> linux-2.6/ --disable-kernel-aio --disable-aio-threaded-callbacks  
>> does not change that,
>> the issues is that pvfs2-config.h defines #define  
>> HAVE_KERNEL_DEVICE_CLASSES 1 but since redhats 2.6.9-55 kernel does  
>> not have that, I have to undefine
>> it. After recompiling without it, the only warnings I see seem to be:
>
> Here is a little more information on this problem.
>
> - PVFS's kernel.m4 is checking for "class_create()".
>
> - PVFS's devpvfs2-req.c file is using "class_device_destroy()"
>
> - on the stock kernel.org kernel, both of these functions appeared  
> first appeared at the same time in 2.6.13, so our kernel.m4 check  
> would seem to be making a reasonable assumption: http://lxr.linux.no/linux+v2.6.13/drivers/base/class.c
>
> - in RedHat's 2.6.9 kernel, they have a patch that introduce  
> "class_create()", but _not_ "class_device_destroy()" (patch attached)
>
> So the issue here seems to be that RedHat has backported some of  
> this stuff piecemeal into their 2.6.9 kernel, so we can't trust that  
> all of the new device class stuff is there based just on the  
> existence of "class_create()".
>
> Some of the other RedHat 2.6.9 device driver patches (too big to  
> attach) do things along these lines:
>
> +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,12)
> +       class_device_unregister(class_dev);
> +#else
> +       class_device_destroy(ipath_class, dev);
> +#endif
>
> I'm not sure what the proper thing is for our code to do.  If these  
> functions aren't critical maybe we just undefine  
> HAVE_KERNEL_DEVICE_CLASSES when class_device_destroy() is missing,  
> but I have a feeling those fns are there for a reason :)
>
> -Phil
> <linux-2.6.9- 
> i2c.patch.gz>_______________________________________________
> Pvfs2-users mailing list
> Pvfs2-users at beowulf-underground.org
> http://www.beowulf-underground.org/mailman/listinfo/pvfs2-users



More information about the Pvfs2-users mailing list