From: Paul H. Hargrove (PHHargrove_at_lbl_dot_gov)
Date: Fri Jun 05 2009 - 17:39:37 PDT
Neal, Attached is a patch for BLCR-0.8.1 that have confirmed resolves the compilation issue you report and a related depmod failure on copy_fs_struct() that occurs once the compilation completes. However, I have *NOT* run the resulting kernel module because I don't have any suitable installations on which to test. So, I'd appreciate it if you could test this out and let me know the outcome. If this does work, then please consider this the "official work-around" until I have a 0.8.2 release (if any). The patch already has by signed-off-by line in it and you can trivially claim that this patch has been submitted "upstream". -Paul Neal Becker wrote: > On Friday 05 June 2009, Paul H. Hargrove wrote: > >> I didn't find a 2.6.29.3-140 but I've grabbed sources for >> 2.6.29.4-167.fc11.i686.PAE from Fedora's testing dir. >> I *can* reproduce the problem. The function put_fs_struct() is gone, >> and there is a new function free_fs_struct(). >> >> If I can confirm that these are a 1-for-1 replacement, I'll provide the >> necessary patch soon. However, if the change is deeper than that, I >> might not tackle until early next week. >> >> -Paul >> >> > > Thanks for looking into this. Fedora F11 will be release on 6/9, blcr will be > missing for now (I have no idea how many people are actually using it). I'll > provide the update whenever you're ready. > -- Paul H. Hargrove PHHargrove_at_lbl_dot_gov Future Technologies Group Tel: +1-510-495-2352 HPC Research Department Fax: +1-510-486-6900 Lawrence Berkeley National Laboratory This file is a patch against BLCR-0.8.1 to resolve the following error, reported by Neal Becker, that is seen with the 2.6.29.x kernels used in fc11: CC [M] /builddir/build/BUILD/blcr-0.8.1/_kmod_build_2.6.29.3-140.fc11.i686.PAE/cr_module/kbuild/cr_dest_file.o /builddir/build/BUILD/blcr-0.8.1/_kmod_build_2.6.29.3-140.fc11.i686.PAE/cr_module/kbuild/cr_dest_file.c: In function 'cr_loc_free': /builddir/build/BUILD/blcr-0.8.1/_kmod_build_2.6.29.3-140.fc11.i686.PAE/cr_module/kbuild/cr_dest_file.c:189: error: implicit declaration of function 'put_fs_struct' It is my intention that if a 0.8.2 release of BLCR is made, this fix will be included. However, it is possible that this may not appear in an official BLCR release until 0.9.0 in the Fall. - Paul H. Hargrove Signed-off-by: Paul H. Hargrove <PHHargrove_at_lbl_dot_gov> Index: acinclude.m4 =================================================================== RCS file: /var/local/cvs/lbnl_cr/acinclude.m4,v retrieving revision 1.177.14.1 diff -u -r1.177.14.1 acinclude.m4 --- acinclude.m4 14 Feb 2009 01:48:55 -0000 1.177.14.1 +++ acinclude.m4 5 Jun 2009 23:49:40 -0000 @@ -1116,7 +1116,7 @@ # If not found, leave CR_K${TYPE}_${symbol} undefined # If found to be exported, "#define CR_K${TYPE}_${symbol} 0" # If found not to be exported, "#define CR_K${TYPE}_${symbol} 0x<value>" -# On return, cr_addr is set (or undefined) the same way. +# On return, cr_addr is set (or empty) the same way. AC_DEFUN([CR_FIND_KSYM],[ AC_REQUIRE([CR_LINUX_SYMTAB]) AC_MSG_CHECKING([[kernel symbol table for $1]]) @@ -1135,6 +1135,7 @@ ],[int x = sizeof(&$1);],[cr_cvname="Y$cr_cvname"],[cr_cvname="N$cr_cvname"]) fi ]) + cr_addr='' if test -z "$cr_cvname"; then cr_result='not found' else Index: configure.ac =================================================================== RCS file: /var/local/cvs/lbnl_cr/configure.ac,v retrieving revision 1.410.2.6 diff -u -r1.410.2.6 configure.ac --- configure.ac 25 Mar 2009 21:44:17 -0000 1.410.2.6 +++ configure.ac 5 Jun 2009 23:49:40 -0000 @@ -1472,9 +1472,17 @@ CR_FIND_KSYM([sys_prctl],[CODE], [extern asmlinkage long sys_prctl(int option, unsigned long arg2, unsigned long arg3, unsigned long arg4, unsigned long arg5);]) +CR_FIND_KSYM([copy_fs_struct],[CODE]) +CR_FIND_KSYM([put_fs_struct],[CODE]) +if test -z "$cr_addr"; then + CR_FIND_KSYM([free_fs_struct],[CODE]) + if test -z "$cr_addr"; then + AC_MSG_ERROR([failed to find either symbol put_fs_struct or free_fs_struct]) + fi +fi + # For blcr CR_FIND_KSYM([set_fs_pwd],[CODE]) -CR_FIND_KSYM([put_fs_struct],[CODE]) # For vmadump4 CR_FIND_KSYM([sys_mremap],[CODE], [extern asmlinkage unsigned long sys_mremap(unsigned long addr, unsigned long old_len, unsigned long new_len, unsigned long flags, unsigned long new_addr);]) Index: cr_module/cr_dest_file.c =================================================================== RCS file: /var/local/cvs/lbnl_cr/cr_module/cr_dest_file.c,v retrieving revision 1.27 diff -u -r1.27 cr_dest_file.c --- cr_module/cr_dest_file.c 23 Nov 2008 20:29:14 -0000 1.27 +++ cr_module/cr_dest_file.c 5 Jun 2009 23:49:40 -0000 @@ -186,7 +186,7 @@ // For directory: if (loc->fs) { - put_fs_struct(loc->fs); + cr_free_fs_struct(loc->fs); } } Index: cr_module/cr_kcompat.h =================================================================== RCS file: /var/local/cvs/lbnl_cr/cr_module/cr_kcompat.h,v retrieving revision 1.247.8.1 diff -u -r1.247.8.1 cr_kcompat.h --- cr_module/cr_kcompat.h 7 Feb 2009 00:15:57 -0000 1.247.8.1 +++ cr_module/cr_kcompat.h 5 Jun 2009 23:49:40 -0000 @@ -556,4 +556,15 @@ #define cr_task_cred(_t) (_t) #endif +#if defined(CR_KCODE_put_fs_struct) + static __inline__ void cr_free_fs_struct(struct fs_struct *fs) { + CRI_ASSERT(atomic_read(&fs->count) == 1); + put_fs_struct(fs); + } +#elif defined(CR_KCODE_free_fs_struct) + #define cr_free_fs_struct free_fs_struct +#else + #error "no cr_free_fs_struct() definition" +#endif + #endif /* _CR_KCOMPAT_H */