[Pvfs2-developers] pvfs2 2.6.3 fixes

slang slang at mcs.anl.gov
Fri Apr 27 10:42:30 EDT 2007


Hi Marc,

Thanks for the fixes!  I've made some comments inline.

On Apr 27, 2007, at 9:01 AM, Marc Aurele La France wrote:

> Hi,
>
> I recently finished an exercise of building PVFS2 from source for a  
> few
> different kernels.  The following are changes I ended up with.  A copy
> of this note is included as a compressed attachment should it be
> mangled in transit.
>
> ==
>
> 1) Recent kernels store UTS_RELEASE in <linux/utsrelease.h>, not
>    <linux/version.h>.  The following works for both cases.
>
>
> diff -aNpru pvfs-2.6.3/Makefile.in devel/Makefile.in
> --- pvfs-2.6.3/Makefile.in	2007-04-09 08:54:37.000000000 -0600
> +++ devel/Makefile.in	2007-04-26 07:36:24.000000000 -0600
> @@ -873,9 +873,9 @@ endif
>
>  ifneq (,$(LINUX_KERNEL_SRC))
>
> -NUM_UTS_LINES := $(shell grep -c UTS_RELEASE $(LINUX_KERNEL_SRC)/ 
> include/linux/version.h)
> -ifeq ($(NUM_UTS_LINES),1)
> -    KERNEL_VERS := $(shell grep UTS_RELEASE $(LINUX_KERNEL_SRC)/ 
> include/linux/version.h | cut -d\" -f2)
> +UTS_LINE := $(shell grep UTS_RELEASE $(LINUX_KERNEL_SRC)/include/ 
> linux/*.h | grep define)
> +ifneq (,$(UTS_LINE))
> +    KERNEL_VERS := $(shell grep UTS_RELEASE $(LINUX_KERNEL_SRC)/ 
> include/linux/*.h | grep define | cut -d\" -f2)
>  else
>      KERNEL_VERS := $(shell uname -r)
>  endif
>
> ==
>
> 2) As currently coded, the check for whether or not the kernel  
> declares a
>    struct kmem_cache, can never fail.  This replaces that check with
>    one that works for older kernels that don't declare a struct
>    kmem_cache.
>
>
> diff -aNpru pvfs-2.6.3/maint/config/kernel.m4 devel/maint/config/ 
> kernel.m4
> --- pvfs-2.6.3/maint/config/kernel.m4	2007-04-09 08:54:37.000000000  
> -0600
> +++ devel/maint/config/kernel.m4	2007-04-26 08:30:29.000000000 -0600
> @@ -114,15 +114,12 @@ AC_DEFUN([AX_KERNEL_FEATURES],
>
>  	dnl 2.6.20 deprecated kmem_cache_t
>  	AC_MSG_CHECKING(for struct kmem_cache in kernel)
> -	AC_TRY_COMPILE([
> -		#define __KERNEL__
> -		#include <linux/slab.h>
> -		static struct kmem_cache;
> -	], [],
> +	if test "`grep 'struct kmem_cache ' $lk_src/include/linux/ 
> slab.h`"; then
>  		AC_MSG_RESULT(yes)
> -		AC_DEFINE(HAVE_STRUCT_KMEM_CACHE, 1, Define if struct kmem_cache  
> is defined in kernel),
> +		AC_DEFINE(HAVE_STRUCT_KMEM_CACHE, 1, Define if struct kmem_cache  
> is defined in kernel)
> +	else
>  		AC_MSG_RESULT(no)
> -	)
> +	fi

I'd prefer to fix the check for kmem_cache in TRY_COMPILE, rather  
than grep.  We should be able to add some bits to the second  
parameter to TRY_COMPILE.  Probably something like:

AC_TRY_COMPILE([
		#define __KERNEL__
		#include <linux/slab.h>
		static struct kmem_cache;
	],
	[
		struct kmem_cache *c;
		c = kmem_cache_create(NULL, 0, 0, 0, NULL, NULL);
	],
	...


>
>  	dnl 2.6.20 removed SLAB_KERNEL.  Need to use GFP_KERNEL instead
>  	AC_MSG_CHECKING(for SLAB_KERNEL flag in kernel)
>
> ==
>
> 3) statecomp should unlink its output file before attempting to
>    overwrite it.  This allows for building PVFS2 in a shadow tree and
>    leave the base tree it points to untouched.
>

Seems fine.  I do out of tree builds all the time though, so I'm  
curious how this broke for you.  Are you creating symlinks of the  
pvfs tree or something?

Thanks again!

-sam

>
> diff -aNpru pvfs-2.6.3/src/common/statecomp/statecomp.c devel/src/ 
> common/statecomp/statecomp.c
> --- pvfs-2.6.3/src/common/statecomp/statecomp.c	2007-04-09  
> 08:54:37.000000000 -0600
> +++ devel/src/common/statecomp/statecomp.c	2007-04-26  
> 08:20:08.000000000 -0600
> @@ -139,6 +139,7 @@ static void parse_args(int argc, char **
>  	strcpy (file_name, argv[optind]);
>  	file_name[file_name_size-3] = 'c';
>  	file_name[file_name_size-2] = 0;
> +	unlink(file_name);
>  	/* open output file */
>  	if (!(out_file = fopen(file_name, "w")))
>  	{
> @@ -149,6 +150,7 @@ static void parse_args(int argc, char **
>  	free(file_name);
>      }
>      else {
> +	unlink(argv[optind+1]);
>  	if (!(out_file = fopen(argv[optind+1], "w")))
>  	{
>  	    /* error opening output file */
>
> ==
>
> Thanks.
>
> Marc.
>
> +---------------------------------- 
> +----------------------------------+
> |  Marc Aurele La France           |  work:    
> 1-780-492-9310          |
> |  Academic Information and        |  fax:     
> 1-780-492-1729          |
> |    Communications Technologies   |  email:   
> tsi at ualberta.ca         |
> |  352 General Services Building    
> +----------------------------------+
> |  University of Alberta            
> |                                  |
> |  Edmonton, Alberta               |    Standard disclaimers  
> apply    |
> |  T6G 2H1                          
> |                                  |
> |  CANADA                           
> |                                  |
> +---------------------------------- 
> +----------------------------------+
> XFree86 developer and VP.  ATI driver and X server internals.
> <pvfs-2.6.3.udiff.gz>
> _______________________________________________
> Pvfs2-developers mailing list
> Pvfs2-developers at beowulf-underground.org
> http://www.beowulf-underground.org/mailman/listinfo/pvfs2-developers



More information about the Pvfs2-developers mailing list