From b3bc4cc21e593a7476888290ad6624ceff953a95 Mon Sep 17 00:00:00 2001 From: Russ Allbery Date: Thu, 1 May 2008 15:14:52 +0000 Subject: [PATCH] Merge upstream 1.4.7 release. --- acinclude.m4 | 1 + configure | 221 +++++++++++++++++++++++++- configure-libafs | 221 +++++++++++++++++++++++++- configure-libafs.in | 11 +- configure.in | 11 +- debian/changelog | 7 + debian/patches/dfsg | 2 +- debian/rules | 6 +- src/afs/LINUX/osi_groups.c | 36 +++-- src/afs/LINUX/osi_vnodeops.c | 12 +- src/afs/VNOPS/afs_vnop_lookup.c | 10 +- src/afs/VNOPS/afs_vnop_read.c | 3 +- src/afs/afs_call.c | 35 ++-- src/afs/afs_pioctl.c | 8 +- src/afs/afs_prototypes.h | 1 + src/aklog/klog.c | 64 ++++---- src/bucoord/dump.c | 4 +- src/butc/lwps.c | 6 +- src/butc/tcudbprocs.c | 6 +- src/cf/kerberos.m4 | 18 ++- src/cf/linux-test4.m4 | 13 ++ src/config/afsconfig.h.in | 9 ++ src/packaging/RedHat/makesrpm.pl | 42 +++-- src/packaging/RedHat/mockbuild.pl | 120 ++++++++++---- src/packaging/RedHat/openafs-kmodtool | 15 +- src/packaging/RedHat/openafs.spec.in | 47 ++++-- src/rx/rx_kcommon.c | 4 +- src/tbutc/Makefile.in | 5 +- src/ubik/beacon.c | 3 +- src/ubik/phys.c | 21 ++- src/ubik/recovery.c | 5 +- src/ubik/remote.c | 4 +- src/ubik/ubik.c | 4 +- src/ubik/ubik.p.h | 3 +- src/venus/Makefile.in | 17 +- src/viced/viced.h | 2 +- src/vol/ihandle.h | 2 +- 37 files changed, 821 insertions(+), 178 deletions(-) diff --git a/acinclude.m4 b/acinclude.m4 index b50b4b1f3..231ca5a3f 100644 --- a/acinclude.m4 +++ b/acinclude.m4 @@ -677,6 +677,7 @@ case $AFS_SYSNAME in *_linux* | *_umlinux*) LINUX_EXPORTS_SYS_CLOSE LINUX_EXPORTS_SYS_OPEN LINUX_EXPORTS_SYS_WAIT4 + LINUX_EXPORTS_RCU_READ_LOCK LINUX_WHICH_MODULES if test "x$ac_cv_linux_config_modversions" = "xno" -o $AFS_SYSKVERS -ge 26; then AC_MSG_WARN([Cannot determine sys_call_table status. assuming it isn't exported]) diff --git a/configure b/configure index 9c3a64688..0fb0ac4cb 100755 --- a/configure +++ b/configure @@ -657,6 +657,8 @@ AMTAR am__tar am__untar MACOS_VERSION +LINUX_PKGVER +LINUX_PKGREL CC CFLAGS LDFLAGS @@ -2174,7 +2176,7 @@ fi # Define the identity of the package. PACKAGE=openafs - VERSION=1.4.7pre1 + VERSION=1.4.7 cat >>confdefs.h <<_ACEOF @@ -2322,7 +2324,11 @@ am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -' ac_config_headers="$ac_config_headers src/config/afsconfig.h" -MACOS_VERSION=1.4.7fc1 +MACOS_VERSION=1.4.7 +LINUX_PKGVER=1.4.7 +#LINUX_PKGREL=0.pre0 +LINUX_PKGREL=1.1 + @@ -15902,6 +15908,130 @@ fi { echo "$as_me:$LINENO: result: $ac_cv_linux_exports_sys_wait4" >&5 echo "${ECHO_T}$ac_cv_linux_exports_sys_wait4" >&6; } + { echo "$as_me:$LINENO: checking if rcu_read_lock is usable" >&5 +echo $ECHO_N "checking if rcu_read_lock is usable... $ECHO_C" >&6; } + if test "${ac_cv_linux_exports_rcu_read_lock+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + + if test $AFS_SYSKVERS -ge 26 ; then + rm -fr conftest.dir + if test "x$ac_linux_kbuild_requires_extra_cflags" = "xyes" ; then + CFLAGS_PREFIX='EXTRA_' + fi + if mkdir conftest.dir && + cat >conftest.dir/Makefile <<_ACEOF && +${CFLAGS_PREFIX}CFLAGS += $CPPFLAGS + +obj-m += conftest.o +_ACEOF + cat >conftest.dir/conftest.c <<\_ACEOF && +/* confdefs.h */ +_ACEOF + cat confdefs.h >>conftest.dir/conftest.c && + cat >>conftest.dir/conftest.c <<\_ACEOF && +/* end confdefs.h */ +#include +#include + +void conftest(void) +{ +rcu_read_lock(); +} + +MODULE_LICENSE("http://www.openafs.org/dl/license10.html"); +_ACEOF + echo make -C $LINUX_KERNEL_PATH M=$SRCDIR_PARENT/conftest.dir modules KBUILD_VERBOSE=1 >&5 && + make -C $LINUX_KERNEL_PATH M=$SRCDIR_PARENT/conftest.dir modules KBUILD_VERBOSE=1 >&5 2>conftest.err && + ! grep -i "^WARNING: .* undefined!$" conftest.err >/dev/null 2>&1 + then ac_cv_linux_exports_rcu_read_lock=yes + else + sed '/^ *+/d' conftest.err >&5 + echo "$as_me: failed using Makefile:" >&5 + sed 's/^/| /' conftest.dir/Makefile >&5 + echo "$as_me: and program was:" >&5 + sed 's/^/| /' conftest.dir/conftest.c >&5 + ac_cv_linux_exports_rcu_read_lock=no + fi; rm -fr conftest.err conftest.dir + else + + ac_save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="-I$LINUX_KERNEL_PATH/include -D__KERNEL__ -Werror-implicit-function-declaration $CPPFLAGS" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +#include +#include +int +main () +{ +rcu_read_lock(); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_linux_exports_rcu_read_lock=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_linux_exports_rcu_read_lock=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + CPPFLAGS="$ac_save_CPPFLAGS" + fi +fi + + { echo "$as_me:$LINENO: result: $ac_cv_linux_exports_rcu_read_lock" >&5 +echo "${ECHO_T}$ac_cv_linux_exports_rcu_read_lock" >&6; } + if test "x$ac_cv_linux_exports_rcu_read_lock" = "xyes"; then + +cat >>confdefs.h <<\_ACEOF +#define EXPORTED_RCU_READ_LOCK 1 +_ACEOF + + fi + if test "x$enable_redhat_buildsys" = "xyes"; then MPS=Default else @@ -23791,7 +23921,8 @@ echo "${ECHO_T}Configuring support for Kerberos 5 utilities" >&6; } -for ac_func in add_to_error_table add_error_table krb5_princ_size krb5_principal_get_comp_string encode_krb5_enc_tkt_part encode_krb5_ticket krb5_c_encrypt krb5_c_encrypt_length krb5_cc_register krb5_decode_ticket + +for ac_func in add_to_error_table add_error_table krb5_princ_size krb5_principal_get_comp_string encode_krb5_enc_tkt_part encode_krb5_ticket krb5_c_encrypt krb5_c_encrypt_length krb5_cc_register krb5_decode_ticket krb5_get_prompt_types do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` { echo "$as_me:$LINENO: checking for $ac_func" >&5 @@ -24678,6 +24809,76 @@ fi { echo "$as_me:$LINENO: result: $ac_cv_krb5_creds_session_exists" >&5 echo "${ECHO_T}$ac_cv_krb5_creds_session_exists" >&6; } +{ echo "$as_me:$LINENO: checking for krb5_prompt.type existence" >&5 +echo $ECHO_N "checking for krb5_prompt.type existence... $ECHO_C" >&6; } +if test "${ac_cv_krb5_prompt_type_exists+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +int +main () +{ +krb5_prompt _p; +printf("%x\n", _p.type); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_krb5_prompt_type_exists=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_krb5_prompt_type_exists=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +{ echo "$as_me:$LINENO: result: $ac_cv_krb5_prompt_type_exists" >&5 +echo "${ECHO_T}$ac_cv_krb5_prompt_type_exists" >&6; } + if test "x$ac_cv_krb5_creds_keyblock_exists" = "xyes"; then cat >>confdefs.h <<\_ACEOF @@ -24691,6 +24892,13 @@ cat >>confdefs.h <<\_ACEOF #define HAVE_KRB5_CREDS_SESSION 1 _ACEOF +fi +if test "x$ac_cv_krb5_prompt_type_exists" = "xyes"; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_KRB5_PROMPT_TYPE 1 +_ACEOF + fi CPPFLAGS="$save_CPPFLAGS" @@ -25550,6 +25758,8 @@ AMTAR!$AMTAR$ac_delim am__tar!$am__tar$ac_delim am__untar!$am__untar$ac_delim MACOS_VERSION!$MACOS_VERSION$ac_delim +LINUX_PKGVER!$LINUX_PKGVER$ac_delim +LINUX_PKGREL!$LINUX_PKGREL$ac_delim CC!$CC$ac_delim CFLAGS!$CFLAGS$ac_delim LDFLAGS!$LDFLAGS$ac_delim @@ -25586,7 +25796,6 @@ LEXLIB!$LEXLIB$ac_delim LEX_OUTPUT_ROOT!$LEX_OUTPUT_ROOT$ac_delim HEADER_RT!$HEADER_RT$ac_delim P5PLUS_KOPTS!$P5PLUS_KOPTS$ac_delim -LINUX_GCC_KOPTS!$LINUX_GCC_KOPTS$ac_delim RHCONFIG_SP!$RHCONFIG_SP$ac_delim _ACEOF @@ -25629,6 +25838,8 @@ _ACEOF ac_delim='%!_!# ' for ac_last_try in false false false false false :; do cat >conf$$subs.sed <<_ACEOF +LINUX_GCC_KOPTS!$LINUX_GCC_KOPTS$ac_delim +RHCONFIG_SP!$RHCONFIG_SP$ac_delim RHCONFIG_MP!$RHCONFIG_MP$ac_delim MPS!$MPS$ac_delim PTHREAD_LIBS!$PTHREAD_LIBS$ac_delim @@ -25724,7 +25935,7 @@ LIBOBJS!$LIBOBJS$ac_delim LTLIBOBJS!$LTLIBOBJS$ac_delim _ACEOF - if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 93; then + if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 95; then break elif $ac_last_try; then { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 diff --git a/configure-libafs b/configure-libafs index 0575b1c91..16295477c 100755 --- a/configure-libafs +++ b/configure-libafs @@ -657,6 +657,8 @@ AMTAR am__tar am__untar MACOS_VERSION +LINUX_PKGVER +LINUX_PKGREL CC CFLAGS LDFLAGS @@ -2174,7 +2176,7 @@ fi # Define the identity of the package. PACKAGE=openafs-libafs - VERSION=1.4.7pre1 + VERSION=1.4.7 cat >>confdefs.h <<_ACEOF @@ -2322,7 +2324,11 @@ am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -' ac_config_headers="$ac_config_headers src/config/afsconfig.h" -MACOS_VERSION=1.4.7fc1 +MACOS_VERSION=1.4.7 +LINUX_PKGVER=1.4.7 +#LINUX_PKGREL=0.pre0 +LINUX_PKGREL=1.1 + @@ -15859,6 +15865,130 @@ fi { echo "$as_me:$LINENO: result: $ac_cv_linux_exports_sys_wait4" >&5 echo "${ECHO_T}$ac_cv_linux_exports_sys_wait4" >&6; } + { echo "$as_me:$LINENO: checking if rcu_read_lock is usable" >&5 +echo $ECHO_N "checking if rcu_read_lock is usable... $ECHO_C" >&6; } + if test "${ac_cv_linux_exports_rcu_read_lock+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + + if test $AFS_SYSKVERS -ge 26 ; then + rm -fr conftest.dir + if test "x$ac_linux_kbuild_requires_extra_cflags" = "xyes" ; then + CFLAGS_PREFIX='EXTRA_' + fi + if mkdir conftest.dir && + cat >conftest.dir/Makefile <<_ACEOF && +${CFLAGS_PREFIX}CFLAGS += $CPPFLAGS + +obj-m += conftest.o +_ACEOF + cat >conftest.dir/conftest.c <<\_ACEOF && +/* confdefs.h */ +_ACEOF + cat confdefs.h >>conftest.dir/conftest.c && + cat >>conftest.dir/conftest.c <<\_ACEOF && +/* end confdefs.h */ +#include +#include + +void conftest(void) +{ +rcu_read_lock(); +} + +MODULE_LICENSE("http://www.openafs.org/dl/license10.html"); +_ACEOF + echo make -C $LINUX_KERNEL_PATH M=$SRCDIR_PARENT/conftest.dir modules KBUILD_VERBOSE=1 >&5 && + make -C $LINUX_KERNEL_PATH M=$SRCDIR_PARENT/conftest.dir modules KBUILD_VERBOSE=1 >&5 2>conftest.err && + ! grep -i "^WARNING: .* undefined!$" conftest.err >/dev/null 2>&1 + then ac_cv_linux_exports_rcu_read_lock=yes + else + sed '/^ *+/d' conftest.err >&5 + echo "$as_me: failed using Makefile:" >&5 + sed 's/^/| /' conftest.dir/Makefile >&5 + echo "$as_me: and program was:" >&5 + sed 's/^/| /' conftest.dir/conftest.c >&5 + ac_cv_linux_exports_rcu_read_lock=no + fi; rm -fr conftest.err conftest.dir + else + + ac_save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="-I$LINUX_KERNEL_PATH/include -D__KERNEL__ -Werror-implicit-function-declaration $CPPFLAGS" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +#include +#include +int +main () +{ +rcu_read_lock(); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_linux_exports_rcu_read_lock=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_linux_exports_rcu_read_lock=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + CPPFLAGS="$ac_save_CPPFLAGS" + fi +fi + + { echo "$as_me:$LINENO: result: $ac_cv_linux_exports_rcu_read_lock" >&5 +echo "${ECHO_T}$ac_cv_linux_exports_rcu_read_lock" >&6; } + if test "x$ac_cv_linux_exports_rcu_read_lock" = "xyes"; then + +cat >>confdefs.h <<\_ACEOF +#define EXPORTED_RCU_READ_LOCK 1 +_ACEOF + + fi + if test "x$enable_redhat_buildsys" = "xyes"; then MPS=Default else @@ -23748,7 +23878,8 @@ echo "${ECHO_T}Configuring support for Kerberos 5 utilities" >&6; } -for ac_func in add_to_error_table add_error_table krb5_princ_size krb5_principal_get_comp_string encode_krb5_enc_tkt_part encode_krb5_ticket krb5_c_encrypt krb5_c_encrypt_length krb5_cc_register krb5_decode_ticket + +for ac_func in add_to_error_table add_error_table krb5_princ_size krb5_principal_get_comp_string encode_krb5_enc_tkt_part encode_krb5_ticket krb5_c_encrypt krb5_c_encrypt_length krb5_cc_register krb5_decode_ticket krb5_get_prompt_types do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` { echo "$as_me:$LINENO: checking for $ac_func" >&5 @@ -24635,6 +24766,76 @@ fi { echo "$as_me:$LINENO: result: $ac_cv_krb5_creds_session_exists" >&5 echo "${ECHO_T}$ac_cv_krb5_creds_session_exists" >&6; } +{ echo "$as_me:$LINENO: checking for krb5_prompt.type existence" >&5 +echo $ECHO_N "checking for krb5_prompt.type existence... $ECHO_C" >&6; } +if test "${ac_cv_krb5_prompt_type_exists+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +int +main () +{ +krb5_prompt _p; +printf("%x\n", _p.type); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_krb5_prompt_type_exists=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_krb5_prompt_type_exists=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +{ echo "$as_me:$LINENO: result: $ac_cv_krb5_prompt_type_exists" >&5 +echo "${ECHO_T}$ac_cv_krb5_prompt_type_exists" >&6; } + if test "x$ac_cv_krb5_creds_keyblock_exists" = "xyes"; then cat >>confdefs.h <<\_ACEOF @@ -24648,6 +24849,13 @@ cat >>confdefs.h <<\_ACEOF #define HAVE_KRB5_CREDS_SESSION 1 _ACEOF +fi +if test "x$ac_cv_krb5_prompt_type_exists" = "xyes"; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_KRB5_PROMPT_TYPE 1 +_ACEOF + fi CPPFLAGS="$save_CPPFLAGS" @@ -25386,6 +25594,8 @@ AMTAR!$AMTAR$ac_delim am__tar!$am__tar$ac_delim am__untar!$am__untar$ac_delim MACOS_VERSION!$MACOS_VERSION$ac_delim +LINUX_PKGVER!$LINUX_PKGVER$ac_delim +LINUX_PKGREL!$LINUX_PKGREL$ac_delim CC!$CC$ac_delim CFLAGS!$CFLAGS$ac_delim LDFLAGS!$LDFLAGS$ac_delim @@ -25422,7 +25632,6 @@ LEXLIB!$LEXLIB$ac_delim LEX_OUTPUT_ROOT!$LEX_OUTPUT_ROOT$ac_delim HEADER_RT!$HEADER_RT$ac_delim P5PLUS_KOPTS!$P5PLUS_KOPTS$ac_delim -LINUX_GCC_KOPTS!$LINUX_GCC_KOPTS$ac_delim RHCONFIG_SP!$RHCONFIG_SP$ac_delim _ACEOF @@ -25465,6 +25674,8 @@ _ACEOF ac_delim='%!_!# ' for ac_last_try in false false false false false :; do cat >conf$$subs.sed <<_ACEOF +LINUX_GCC_KOPTS!$LINUX_GCC_KOPTS$ac_delim +RHCONFIG_SP!$RHCONFIG_SP$ac_delim RHCONFIG_MP!$RHCONFIG_MP$ac_delim MPS!$MPS$ac_delim PTHREAD_LIBS!$PTHREAD_LIBS$ac_delim @@ -25560,7 +25771,7 @@ LIBOBJS!$LIBOBJS$ac_delim LTLIBOBJS!$LTLIBOBJS$ac_delim _ACEOF - if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 93; then + if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 95; then break elif $ac_last_try; then { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 diff --git a/configure-libafs.in b/configure-libafs.in index 041346c68..b8b8ae984 100644 --- a/configure-libafs.in +++ b/configure-libafs.in @@ -1,11 +1,14 @@ AC_INIT(src/libafs/Makefile.common.in) -AM_INIT_AUTOMAKE(openafs-libafs,1.4.7pre3) +AM_INIT_AUTOMAKE(openafs-libafs,1.4.7) AC_CONFIG_HEADER(src/config/afsconfig.h) -MACOS_VERSION=1.4.7fc3 -LINUX_VERSION=0.pre3 +MACOS_VERSION=1.4.7 +LINUX_PKGVER=1.4.7 +#LINUX_PKGREL=0.pre0 +LINUX_PKGREL=1.1 AC_SUBST(MACOS_VERSION) -AC_SUBST(LINUX_VERSION) +AC_SUBST(LINUX_PKGVER) +AC_SUBST(LINUX_PKGREL) define(OPENAFS_CONFIGURE_LIBAFS) AC_PROG_CC diff --git a/configure.in b/configure.in index 039c1686f..06c0c3691 100644 --- a/configure.in +++ b/configure.in @@ -1,11 +1,14 @@ AC_INIT(src/config/stds.h) -AM_INIT_AUTOMAKE(openafs,1.4.7pre3) +AM_INIT_AUTOMAKE(openafs,1.4.7) AC_CONFIG_HEADER(src/config/afsconfig.h) -MACOS_VERSION=1.4.7fc3 -LINUX_VERSION=0.pre3 +MACOS_VERSION=1.4.7 +LINUX_PKGVER=1.4.7 +#LINUX_PKGREL=0.pre0 +LINUX_PKGREL=1.1 AC_SUBST(MACOS_VERSION) -AC_SUBST(LINUX_VERSION) +AC_SUBST(LINUX_PKGVER) +AC_SUBST(LINUX_PKGREL) AC_PROG_CC AC_CHECK_PROGS(CPP,[/lib/cpp /usr/bin/cpp /usr/ccs/lib/cpp cpp],,[$PATH:/]) diff --git a/debian/changelog b/debian/changelog index db617b7b3..dda19c1be 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +openafs (1.4.7.dfsg1-1) unstable; urgency=low + + * New upstream release. + - Work around GPLing of RCU locks. (Closes: #476628) + + -- Russ Allbery Thu, 01 May 2008 08:13:56 -0700 + openafs (1.4.7~pre3.dfsg1-1) unstable; urgency=low * New upstream release candidate: diff --git a/debian/patches/dfsg b/debian/patches/dfsg index 3450fc74f..c7e73b2ba 100644 --- a/debian/patches/dfsg +++ b/debian/patches/dfsg @@ -62,7 +62,7 @@ upstream for obvious reasons. + afs_atomlist.c afs_lhash.c snprintf.c --- openafs.orig/configure.in +++ openafs/configure.in -@@ -85,9 +85,6 @@ +@@ -88,9 +88,6 @@ src/mpp/Makefile \ src/null/Makefile \ src/package/Makefile \ diff --git a/debian/rules b/debian/rules index 72bb68498..c6e64aee0 100755 --- a/debian/rules +++ b/debian/rules @@ -46,9 +46,9 @@ DOC_PACKAGES = libpam-openafs-kaserver openafs-dbserver openafs-fileserver \ # These variable is used only by get-orig-source, which will normally only be # run by maintainers. -VERSION = 1.4.7pre3 -DEBVERS = 1.4.7~pre3.dfsg1 -UPSTREAM = /afs/grand.central.org/software/openafs/candidate/$(VERSION) +VERSION = 1.4.7 +DEBVERS = 1.4.7.dfsg1 +UPSTREAM = /afs/grand.central.org/software/openafs/$(VERSION) # Download the upstream source, merge in the doc tarball, and do the # repackaging that we have to do for DFSG reasons. This assumes AFS is diff --git a/src/afs/LINUX/osi_groups.c b/src/afs/LINUX/osi_groups.c index bd8f2502f..cd8fb5035 100644 --- a/src/afs/LINUX/osi_groups.c +++ b/src/afs/LINUX/osi_groups.c @@ -20,7 +20,7 @@ #endif RCSID - ("$Header: /cvs/openafs/src/afs/LINUX/osi_groups.c,v 1.25.2.14 2008/03/10 16:48:56 shadow Exp $"); + ("$Header: /cvs/openafs/src/afs/LINUX/osi_groups.c,v 1.25.2.15 2008/04/19 21:56:11 shadow Exp $"); #include "afs/sysincludes.h" #include "afsincludes.h" @@ -50,12 +50,14 @@ afs_setgroups(cred_t **cr, struct group_info *group_info, int change_parent) crset(*cr); +#ifdef STRUCT_TASK_STRUCT_HAS_PARENT if (change_parent) { old_info = current->parent->group_info; get_group_info(group_info); current->parent->group_info = group_info; put_group_info(old_info); } +#endif return (0); } @@ -625,32 +627,40 @@ extern rwlock_t tasklist_lock __attribute__((weak)); void osi_keyring_init(void) { struct task_struct *p; + + /* If we can't lock the tasklist, either with its explicit lock, + * or by using the RCU lock, then we can't safely work out the + * type of a keyring. So, we have to rely on the weak reference. + * If that's not available, then keyring based PAGs won't work. + */ +#if defined(EXPORTED_TASKLIST_LOCK) || (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16) && defined(EXPORTED_RCU_READ_LOCK)) if (__key_type_keyring == NULL) { -#ifdef EXPORTED_TASKLIST_LOCK +# ifdef EXPORTED_TASKLIST_LOCK if (&tasklist_lock) read_lock(&tasklist_lock); -#endif -#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16) -# ifdef EXPORTED_TASKLIST_LOCK - else # endif +# if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16) && defined(EXPORTED_RCU_READ_LOCK)) +# ifdef EXPORTED_TASKLIST_LOCK + else +# endif rcu_read_lock(); -#endif +# endif p = find_task_by_pid(1); if (p && p->user->session_keyring) __key_type_keyring = p->user->session_keyring->type; -#ifdef EXPORTED_TASKLIST_LOCK +# ifdef EXPORTED_TASKLIST_LOCK if (&tasklist_lock) read_unlock(&tasklist_lock); -#endif -#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16) -# ifdef EXPORTED_TASKLIST_LOCK - else # endif +# if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16) && defined(EXPORTED_RCU_READ_LOCK)) +# ifdef EXPORTED_TASKLIST_LOCK + else +# endif rcu_read_unlock(); -#endif +# endif } +#endif register_key_type(&key_type_afs_pag); } diff --git a/src/afs/LINUX/osi_vnodeops.c b/src/afs/LINUX/osi_vnodeops.c index f8d576b77..8cc52cdd5 100644 --- a/src/afs/LINUX/osi_vnodeops.c +++ b/src/afs/LINUX/osi_vnodeops.c @@ -22,7 +22,7 @@ #include "afs/param.h" RCSID - ("$Header: /cvs/openafs/src/afs/LINUX/osi_vnodeops.c,v 1.81.2.63 2008/04/02 18:27:13 shadow Exp $"); + ("$Header: /cvs/openafs/src/afs/LINUX/osi_vnodeops.c,v 1.81.2.64 2008/04/15 12:29:54 shadow Exp $"); #include "afs/sysincludes.h" #include "afsincludes.h" @@ -803,8 +803,14 @@ afs_linux_dentry_revalidate(struct dentry *dp) if (vcp == afs_globalVp) goto good_dentry; - if (*dp->d_name.name != '/' && vcp->mvstat == 2) /* root vnode */ - check_bad_parent(dp); /* check and correct mvid */ + if (vcp->mvstat == 1) { /* mount point */ + if (vcp->mvid && (vcp->states & CMValid)) { + /* a mount point, not yet replaced by its directory */ + goto bad_dentry; + } + } else + if (*dp->d_name.name != '/' && vcp->mvstat == 2) /* root vnode */ + check_bad_parent(dp); /* check and correct mvid */ #ifdef notdef /* If the last looker changes, we should make sure the current diff --git a/src/afs/VNOPS/afs_vnop_lookup.c b/src/afs/VNOPS/afs_vnop_lookup.c index ce295031e..f1cfa1a50 100644 --- a/src/afs/VNOPS/afs_vnop_lookup.c +++ b/src/afs/VNOPS/afs_vnop_lookup.c @@ -18,7 +18,7 @@ #include "afs/param.h" RCSID - ("$Header: /cvs/openafs/src/afs/VNOPS/afs_vnop_lookup.c,v 1.50.2.20 2008/03/07 17:34:08 shadow Exp $"); + ("$Header: /cvs/openafs/src/afs/VNOPS/afs_vnop_lookup.c,v 1.50.2.21 2008/04/15 12:29:56 shadow Exp $"); #include "afs/sysincludes.h" /* Standard vendor system headers */ #include "afsincludes.h" /* Afs-based standard headers */ @@ -1120,6 +1120,7 @@ afs_lookup(OSI_VC_DECL(adp), char *aname, struct vcache **avcp, struct AFS_UCRED register afs_int32 code; register afs_int32 bulkcode = 0; int pass = 0, hit = 0; + int force_eval = afs_fakestat_enable ? 0 : 1; long dirCookie; extern afs_int32 afs_mariner; /*Writing activity to log? */ afs_hyper_t versionNo; @@ -1442,8 +1443,6 @@ afs_lookup(OSI_VC_DECL(adp), char *aname, struct vcache **avcp, struct AFS_UCRED } /* sub-block just to reduce stack usage */ if (tvc) { - int force_eval = afs_fakestat_enable ? 0 : 1; - if (adp->states & CForeign) tvc->states |= CForeign; tvc->parentVnode = adp->fid.Fid.Vnode; @@ -1464,6 +1463,9 @@ afs_lookup(OSI_VC_DECL(adp), char *aname, struct vcache **avcp, struct AFS_UCRED force_eval = 1; ReleaseReadLock(&tvc->lock); } + if (tvc->mvstat == 1 && (tvc->states & CMValid) && tvc->mvid != NULL) + force_eval = 1; /* This is now almost for free, get it correct */ + #if defined(UKERNEL) && defined(AFS_WEB_ENHANCEMENTS) if (!(flags & AFS_LOOKUP_NOEVAL)) /* don't eval mount points */ @@ -1589,7 +1591,7 @@ afs_lookup(OSI_VC_DECL(adp), char *aname, struct vcache **avcp, struct AFS_UCRED * rather than the vc of the mount point itself. we can still find the * mount point's vc in the vcache by its fid. */ #endif /* UKERNEL && AFS_WEB_ENHANCEMENTS */ - if (!hit) { + if (!hit && force_eval) { osi_dnlc_enter(adp, aname, tvc, &versionNo); } else { #ifdef AFS_LINUX20_ENV diff --git a/src/afs/VNOPS/afs_vnop_read.c b/src/afs/VNOPS/afs_vnop_read.c index 536ee4a76..f48ab3ae3 100644 --- a/src/afs/VNOPS/afs_vnop_read.c +++ b/src/afs/VNOPS/afs_vnop_read.c @@ -19,7 +19,7 @@ #include "afs/param.h" RCSID - ("$Header: /cvs/openafs/src/afs/VNOPS/afs_vnop_read.c,v 1.26.2.5 2007/11/29 18:36:12 shadow Exp $"); + ("$Header: /cvs/openafs/src/afs/VNOPS/afs_vnop_read.c,v 1.26.2.6 2008/04/27 03:54:27 shadow Exp $"); #include "afs/sysincludes.h" /* Standard vendor system headers */ #include "afsincludes.h" /* Afs-based standard headers */ @@ -120,6 +120,7 @@ afs_MemRead(register struct vcache *avc, struct uio *auio, if (filePos >= avc->m.Length) { if (len > AFS_ZEROS) len = sizeof(afs_zeros); /* and in 0 buffer */ + len = 0; #ifdef AFS_DARWIN80_ENV trimlen = len; tuiop = afsio_darwin_partialcopy(auio, trimlen); diff --git a/src/afs/afs_call.c b/src/afs/afs_call.c index d8e51a2e2..d43508659 100644 --- a/src/afs/afs_call.c +++ b/src/afs/afs_call.c @@ -11,7 +11,7 @@ #include "afs/param.h" RCSID - ("$Header: /cvs/openafs/src/afs/afs_call.c,v 1.74.2.26 2008/01/30 21:18:29 shadow Exp $"); + ("$Header: /cvs/openafs/src/afs/afs_call.c,v 1.74.2.30 2008/04/18 14:06:50 shadow Exp $"); #include "afs/sysincludes.h" /* Standard vendor system headers */ #include "afsincludes.h" /* Afs-based standard headers */ @@ -1415,7 +1415,11 @@ copyin_iparam(caddr_t cmarg, struct iparam *dst) if (current->thread.flags & THREAD_IA32) #elif defined(AFS_PPC64_LINUX26_ENV) +#if defined(STRUCT_TASK_STRUCT_HAS_THREAD_INFO) if (current->thread_info->flags & _TIF_32BIT) +#else + if (task_thread_info(current)->flags & _TIF_32BIT) +#endif #elif defined(AFS_PPC64_LINUX20_ENV) if (current->thread.flags & PPC_FLAG_32BIT) @@ -1871,12 +1875,10 @@ afs_shutdown(void) #endif afs_warn("\n"); - /* Close file only after daemons which can write to it are stopped. */ - if (afs_cacheInodep) { /* memcache won't set this */ - osi_UFSClose(afs_cacheInodep); /* Since we always leave it open */ - afs_cacheInodep = 0; - } - return; /* Just kill daemons for now */ +#ifdef AFS_AIX51_ENV + shutdown_daemons(); +#endif + #ifdef notdef shutdown_CB(); shutdown_AFS(); @@ -1884,21 +1886,16 @@ afs_shutdown(void) shutdown_rxevent(); shutdown_rx(); afs_shutdown_BKG(); - shutdown_bufferpackage(); -#endif -#ifdef AFS_AIX51_ENV - shutdown_daemons(); #endif -#ifdef notdef + shutdown_bufferpackage(); shutdown_cache(); shutdown_osi(); shutdown_osinet(); shutdown_osifile(); shutdown_vnodeops(); - shutdown_vfsops(); - shutdown_exporter(); shutdown_memcache(); #if (!defined(AFS_NONFSTRANS) || defined(AFS_AIX_IAUTH_ENV)) && !defined(AFS_OSF_ENV) + shutdown_exporter(); shutdown_nfsclnt(); #endif shutdown_afstest(); @@ -1909,8 +1906,16 @@ afs_shutdown(void) memset(&afs_stats_cmfullperf, 0, sizeof(struct afs_stats_CMFullPerf)); */ afs_warn(" ALL allocated tables\n"); + + /* Close file only after daemons which can write to it are stopped. */ + if (afs_cacheInodep) { /* memcache won't set this */ + osi_UFSClose(afs_cacheInodep); /* Since we always leave it open */ + afs_cacheInodep = 0; + } + afs_shuttingdown = 0; -#endif + + return; /* Just kill daemons for now */ } void diff --git a/src/afs/afs_pioctl.c b/src/afs/afs_pioctl.c index 8f1a52454..d39f9b77b 100644 --- a/src/afs/afs_pioctl.c +++ b/src/afs/afs_pioctl.c @@ -11,7 +11,7 @@ #include "afs/param.h" RCSID - ("$Header: /cvs/openafs/src/afs/afs_pioctl.c,v 1.81.2.32 2008/03/22 04:17:33 jaltman Exp $"); + ("$Header: /cvs/openafs/src/afs/afs_pioctl.c,v 1.81.2.33 2008/04/18 20:13:32 shadow Exp $"); #include "afs/sysincludes.h" /* Standard vendor system headers */ #ifdef AFS_OBSD_ENV @@ -284,7 +284,11 @@ copyin_afs_ioctl(caddr_t cmarg, struct afs_ioctl *dst) if (current->thread.flags & THREAD_IA32) #elif defined(AFS_PPC64_LINUX26_ENV) - if (current->thread_info->flags & _TIF_32BIT) +#if defined(STRUCT_TASK_STRUCT_HAS_THREAD_INFO) + if (current->thread_info->flags & _TIF_32BIT) +#else + if (task_thread_info(current)->flags & _TIF_32BIT) +#endif #elif defined(AFS_PPC64_LINUX20_ENV) if (current->thread.flags & PPC_FLAG_32BIT) diff --git a/src/afs/afs_prototypes.h b/src/afs/afs_prototypes.h index 7920b1184..ac2c2fe75 100644 --- a/src/afs/afs_prototypes.h +++ b/src/afs/afs_prototypes.h @@ -533,6 +533,7 @@ extern void osi_FreeLargeSpace(void *adata); extern void osi_FreeSmallSpace(void *adata); extern void *osi_AllocLargeSpace(size_t size); extern void *osi_AllocSmallSpace(size_t size); +extern void shutdown_osinet(void); /* afs_osi_uio.c */ extern int afsio_copy(struct uio *ainuio, struct uio *aoutuio, diff --git a/src/aklog/klog.c b/src/aklog/klog.c index c8890d414..dc0b817a3 100644 --- a/src/aklog/klog.c +++ b/src/aklog/klog.c @@ -309,26 +309,32 @@ klog_prompter(krb5_context context, { krb5_error_code code; int i, type; -#ifndef USING_HEIMDAL +#if !defined(USING_HEIMDAL) && defined(HAVE_KRB5_GET_PROMPT_TYPES) krb5_prompt_type *types; #endif struct kp_arg *kparg = (struct kp_arg *) a; code = krb5_prompter_posix(context, a, name, banner, num_prompts, prompts); if (code) return code; -#ifndef USING_HEIMDAL +#if !defined(USING_HEIMDAL) && defined(HAVE_KRB5_GET_PROMPT_TYPES) if ((types = krb5_get_prompt_types(context))) #endif for (i = 0; i < num_prompts; ++i) { -#ifdef USING_HEIMDAL +#if !defined(USING_HEIMDAL) +#if defined(HAVE_KRB5_GET_PROMPT_TYPES) + type = types[i]; +#elif defined(HAVE_KRB5_PROMPT_TYPE) type = prompts[i].type; #else - type = types[i]; + /* AIX 5.3 krb5_get_prompt_types is missing. Um... */ + type = ((i == 1)&&(num_prompts == 2)) ? + KRB5_PROMPT_TYPE_NEW_PASSWORD_AGAIN : KRB5_PROMPT_TYPE_PASSWORD; +#endif +#else + type = prompts[i].type; #endif #if 0 - printf ("i%d t%d <%.*s>\n", i, -type, -prompts[i].reply->length, -prompts[i].reply->data); + printf ("i%d t%d <%.*s>\n", i, type, prompts[i].reply->length, + prompts[i].reply->data); #endif switch(type) { case KRB5_PROMPT_TYPE_PASSWORD: @@ -385,15 +391,15 @@ CommandProc(struct cmd_syndesc *as, char *arock) Silent = (as->parms[aSILENT].items ? 1 : 0); if (Silent) { - set_com_err_hook(silent_errors); + afs_set_com_err_hook(silent_errors); } if ((code = krb5_init_context(&k5context))) { - com_err(rn, code, "while initializing Kerberos 5 library"); + afs_com_err(rn, code, "while initializing Kerberos 5 library"); KLOGEXIT(code); } if ((code = rx_Init(0))) { - com_err(rn, code, "while initializing rx"); + afs_com_err(rn, code, "while initializing rx"); KLOGEXIT(code); } initialize_U_error_table(); @@ -403,7 +409,7 @@ CommandProc(struct cmd_syndesc *as, char *arock) initialize_ACFG_error_table(); /* initialize_rx_error_table(); */ if (!(tdir = afsconf_Open(AFSDIR_CLIENT_ETC_DIRPATH))) { - com_err(rn, 0, "can't get afs configuration (afsconf_Open(%s))", + afs_com_err(rn, 0, "can't get afs configuration (afsconf_Open(%s))", rn, AFSDIR_CLIENT_ETC_DIRPATH); KLOGEXIT(1); } @@ -429,9 +435,9 @@ CommandProc(struct cmd_syndesc *as, char *arock) cell = as->parms[aCELL].items ? as->parms[aCELL].items->data : 0; if ((code = afsconf_GetCellInfo(tdir, cell, "afsprot", cellconfig))) { if (cell) - com_err(rn, code, "Can't get cell information for '%s'", cell); + afs_com_err(rn, code, "Can't get cell information for '%s'", cell); else - com_err(rn, code, "Can't get determine local cell!"); + afs_com_err(rn, code, "Can't get determine local cell!"); KLOGEXIT(code); } @@ -439,13 +445,13 @@ CommandProc(struct cmd_syndesc *as, char *arock) code = krb5_set_default_realm(k5context, (const char *) as->parms[aKRBREALM].items); if (code) { - com_err(rn, code, "Can't make <%s> the default realm", + afs_com_err(rn, code, "Can't make <%s> the default realm", as->parms[aKRBREALM].items); KLOGEXIT(code); } } else if ((code = krb5_get_host_realm(k5context, cellconfig->hostName[0], &hrealms))) { - com_err(rn, code, "Can't get realm for host <%s> in cell <%s>\n", + afs_com_err(rn, code, "Can't get realm for host <%s> in cell <%s>\n", cellconfig->hostName[0], cellconfig->name); KLOGEXIT(code); } else { @@ -453,7 +459,7 @@ CommandProc(struct cmd_syndesc *as, char *arock) code = krb5_set_default_realm(k5context, *hrealms); if (code) { - com_err(rn, code, "Can't make <%s> the default realm", + afs_com_err(rn, code, "Can't make <%s> the default realm", *hrealms); KLOGEXIT(code); } @@ -469,7 +475,7 @@ CommandProc(struct cmd_syndesc *as, char *arock) struct passwd *pw; pw = getpwuid(id); if (pw == 0) { - com_err(rn, 0, + afs_com_err(rn, 0, "Can't figure out your name from your user id (%d).", id); if (!Silent) fprintf(stderr, "%s: Try providing the user name.\n", rn); @@ -479,7 +485,7 @@ CommandProc(struct cmd_syndesc *as, char *arock) } code = krb5_parse_name(k5context, pname, &princ); if (code) { - com_err(rn, code, "Can't parse principal <%s>", pname); + afs_com_err(rn, code, "Can't parse principal <%s>", pname); KLOGEXIT(code); } @@ -575,11 +581,11 @@ CommandProc(struct cmd_syndesc *as, char *arock) if (krb5_get_default_realm(k5context, &r)) r = 0; if (service) - com_err(rn, code, "Unable to authenticate to use %s", service); + afs_com_err(rn, code, "Unable to authenticate to use %s", service); else if (r) - com_err(rn, code, "Unable to authenticate in realm %s", r); + afs_com_err(rn, code, "Unable to authenticate in realm %s", r); else - com_err(rn, code, "Unable to authenticate to use cell %s", + afs_com_err(rn, code, "Unable to authenticate to use cell %s", cellconfig->name); if (r) free(r); KLOGEXIT(code); @@ -610,7 +616,7 @@ CommandProc(struct cmd_syndesc *as, char *arock) break; Failed: if (code) - com_err(rn, code, what); + afs_com_err(rn, code, what); if (writeTicketFile) { if (cc) { krb5_cc_close(k5context, cc); @@ -626,7 +632,7 @@ CommandProc(struct cmd_syndesc *as, char *arock) mcred->client = princ; code = krb5_parse_name(k5context, service, &mcred->server); if (code) { - com_err(rn, code, "Unable to parse service <%s>\n", service); + afs_com_err(rn, code, "Unable to parse service <%s>\n", service); KLOGEXIT(code); } if (tofree) { free(tofree); tofree = 0; } @@ -643,7 +649,7 @@ CommandProc(struct cmd_syndesc *as, char *arock) afscred = outcred; } if (code) { - com_err(rn, code, "Unable to get credentials to use %s", outname); + afs_com_err(rn, code, "Unable to get credentials to use %s", outname); KLOGEXIT(code); } @@ -656,7 +662,7 @@ CommandProc(struct cmd_syndesc *as, char *arock) strncpy(aserver->cell, cellconfig->name, MAXKTCREALMLEN-1); code = ktc_SetK5Token(k5context, aserver, afscred, viceid, dosetpag); if (code) { - com_err(rn, code, "Unable to store tokens for cell %s\n", + afs_com_err(rn, code, "Unable to store tokens for cell %s\n", cellconfig->name); KLOGEXIT(1); } @@ -672,7 +678,7 @@ CommandProc(struct cmd_syndesc *as, char *arock) if (afs_krb5_skip_ticket_wrapper(afscred->ticket.data, afscred->ticket.length, &enc_part->data, &enc_part->length)) { - com_err(rn, 0, "Can't unwrap %s AFS credential", + afs_com_err(rn, 0, "Can't unwrap %s AFS credential", cellconfig->name); KLOGEXIT(1); } @@ -698,7 +704,7 @@ CommandProc(struct cmd_syndesc *as, char *arock) k5_to_k4_name(k5context, afscred->client, aclient); code = whoami(atoken, cellconfig, aclient, &viceid); if (code) { - com_err(rn, code, "Can't get your viceid", cellconfig->name); + afs_com_err(rn, code, "Can't get your viceid", cellconfig->name); *aclient->name = 0; } else snprintf(aclient->name, MAXKTCNAMELEN-1, "AFS ID %d", viceid); @@ -707,7 +713,7 @@ CommandProc(struct cmd_syndesc *as, char *arock) k5_to_k4_name(k5context, afscred->client, aclient); code = ktc_SetToken(aserver, atoken, aclient, dosetpag); if (code) { - com_err(rn, code, "Unable to store tokens for cell %s\n", + afs_com_err(rn, code, "Unable to store tokens for cell %s\n", cellconfig->name); KLOGEXIT(1); } diff --git a/src/bucoord/dump.c b/src/bucoord/dump.c index ecd67421b..4a020ee36 100644 --- a/src/bucoord/dump.c +++ b/src/bucoord/dump.c @@ -15,7 +15,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/bucoord/dump.c,v 1.12.2.5 2008/03/10 22:35:34 shadow Exp $"); + ("$Header: /cvs/openafs/src/bucoord/dump.c,v 1.12.2.6 2008/04/09 16:40:16 shadow Exp $"); #include #include @@ -225,7 +225,7 @@ bc_DmpRstStart(void *param) free(tdump->portOffset); tdump->flags &= ~BC_DI_INUSE; - return code; + return (void *)code; } /* bc_StartDmpRst diff --git a/src/butc/lwps.c b/src/butc/lwps.c index 1b4a1260b..0a292508d 100644 --- a/src/butc/lwps.c +++ b/src/butc/lwps.c @@ -11,7 +11,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/butc/lwps.c,v 1.12.2.6 2008/03/10 22:35:34 shadow Exp $"); + ("$Header: /cvs/openafs/src/butc/lwps.c,v 1.12.2.7 2008/04/09 16:40:17 shadow Exp $"); #include #include @@ -1920,7 +1920,7 @@ Restorer(void *param) { FreeNode(taskId); LeaveDeviceQueue(deviceLatch); - return (code); + return (void *)(code); } /* this is just scaffolding, creates new tape label with name */ @@ -2282,7 +2282,7 @@ Labeller(void *param) free(labelIfPtr); LeaveDeviceQueue(deviceLatch); - return (code); + return (void *)(code); } /* PrintTapeLabel diff --git a/src/butc/tcudbprocs.c b/src/butc/tcudbprocs.c index d6f3d1271..1d37e6298 100644 --- a/src/butc/tcudbprocs.c +++ b/src/butc/tcudbprocs.c @@ -11,7 +11,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/butc/tcudbprocs.c,v 1.14.2.5 2008/03/10 22:35:34 shadow Exp $"); + ("$Header: /cvs/openafs/src/butc/tcudbprocs.c,v 1.14.2.7 2008/04/18 13:57:31 shadow Exp $"); #include #ifdef AFS_NT40_ENV @@ -745,7 +745,7 @@ saveDbToTape(void *param) free(saveDbIfPtr); LeaveDeviceQueue(deviceLatch); - return (code); + return (void *)(code); } struct rstTapeInfo { @@ -1021,7 +1021,7 @@ restoreDbEntries(tapeInfoPtr, rstTapeInfoPtr) void * restoreDbFromTape(void *param) { - afs_uint32 taskId = (void *)param; + afs_uint32 taskId = (afs_uint32) param; afs_int32 code = 0; afs_int32 i; struct butm_tapeInfo tapeInfo; diff --git a/src/cf/kerberos.m4 b/src/cf/kerberos.m4 index da3281ea9..b67b32042 100644 --- a/src/cf/kerberos.m4 +++ b/src/cf/kerberos.m4 @@ -1,5 +1,5 @@ dnl -dnl $Id: kerberos.m4,v 1.1.2.14 2008/01/05 04:48:41 shadow Exp $ +dnl $Id: kerberos.m4,v 1.1.2.16 2008/04/18 20:50:28 shadow Exp $ dnl dnl Kerberos autoconf glue dnl @@ -58,7 +58,7 @@ if test X$conf_krb5 = XYES; then CPPFLAGS="$CPPFLAGS $KRB5CFLAGS" save_LIBS="$LIBS" LIBS="$LIBS $KRB5LIBS" - AC_CHECK_FUNCS([add_to_error_table add_error_table krb5_princ_size krb5_principal_get_comp_string encode_krb5_enc_tkt_part encode_krb5_ticket krb5_c_encrypt krb5_c_encrypt_length krb5_cc_register krb5_decode_ticket]) + AC_CHECK_FUNCS([add_to_error_table add_error_table krb5_princ_size krb5_principal_get_comp_string encode_krb5_enc_tkt_part encode_krb5_ticket krb5_c_encrypt krb5_c_encrypt_length krb5_cc_register krb5_decode_ticket krb5_get_prompt_types]) AC_CHECK_FUNCS([krb5_524_convert_creds], , [AC_CHECK_FUNCS([krb524_convert_creds_kdc], , [AC_CHECK_LIB([krb524], [krb524_convert_creds_kdc], @@ -91,12 +91,26 @@ ac_cv_krb5_creds_session_exists=yes, ac_cv_krb5_creds_session_exists=no)]) AC_MSG_RESULT($ac_cv_krb5_creds_session_exists) +AC_MSG_CHECKING(for krb5_prompt.type existence) +AC_CACHE_VAL(ac_cv_krb5_prompt_type_exists, +[ +AC_TRY_COMPILE( +[#include ], +[krb5_prompt _p; +printf("%x\n", _p.type);], +ac_cv_krb5_prompt_type_exists=yes, +ac_cv_krb5_prompt_type_exists=no)]) +AC_MSG_RESULT($ac_cv_krb5_prompt_type_exists) + if test "x$ac_cv_krb5_creds_keyblock_exists" = "xyes"; then AC_DEFINE(HAVE_KRB5_CREDS_KEYBLOCK, 1, [define if krb5_creds has keyblock]) fi if test "x$ac_cv_krb5_creds_session_exists" = "xyes"; then AC_DEFINE(HAVE_KRB5_CREDS_SESSION, 1, [define if krb5_creds has session]) fi +if test "x$ac_cv_krb5_prompt_type_exists" = "xyes"; then + AC_DEFINE(HAVE_KRB5_PROMPT_TYPE, 1, [define if krb5_prompt has type]) +fi dnl AC_CHECK_MEMBERS([krb5_creds.keyblock, krb5_creds.session],,, [#include ]) CPPFLAGS="$save_CPPFLAGS" diff --git a/src/cf/linux-test4.m4 b/src/cf/linux-test4.m4 index 76c51bbc4..3c131cd0e 100644 --- a/src/cf/linux-test4.m4 +++ b/src/cf/linux-test4.m4 @@ -980,3 +980,16 @@ printk("%x\n", _nd.path);], ac_cv_linux_struct_nameidata_has_path=no)]) AC_MSG_RESULT($ac_cv_linux_struct_nameidata_has_path)]) +AC_DEFUN([LINUX_EXPORTS_RCU_READ_LOCK], [ + AC_MSG_CHECKING([if rcu_read_lock is usable]) + AC_CACHE_VAL([ac_cv_linux_exports_rcu_read_lock], [ + AC_TRY_KBUILD( +[#include ], +[rcu_read_lock();], + ac_cv_linux_exports_rcu_read_lock=yes, + ac_cv_linux_exports_rcu_read_lock=no)]) + AC_MSG_RESULT($ac_cv_linux_exports_rcu_read_lock) + if test "x$ac_cv_linux_exports_rcu_read_lock" = "xyes"; then + AC_DEFINE([EXPORTED_RCU_READ_LOCK], 1, [define if rcu_read_lock() is usable]) + fi]) + diff --git a/src/config/afsconfig.h.in b/src/config/afsconfig.h.in index 31b5a6260..241d8bee2 100644 --- a/src/config/afsconfig.h.in +++ b/src/config/afsconfig.h.in @@ -52,6 +52,9 @@ /* define if your kernel exports init_mm */ #undef EXPORTED_INIT_MM +/* define if rcu_read_lock() is usable */ +#undef EXPORTED_RCU_READ_LOCK + /* define if your linux kernel exports sys_chdir */ #undef EXPORTED_SYS_CHDIR @@ -185,12 +188,18 @@ /* Define to 1 if you have the `krb5_decode_ticket' function. */ #undef HAVE_KRB5_DECODE_TICKET +/* Define to 1 if you have the `krb5_get_prompt_types' function. */ +#undef HAVE_KRB5_GET_PROMPT_TYPES + /* Define to 1 if you have the `krb5_principal_get_comp_string' function. */ #undef HAVE_KRB5_PRINCIPAL_GET_COMP_STRING /* Define to 1 if you have the `krb5_princ_size' function. */ #undef HAVE_KRB5_PRINC_SIZE +/* define if krb5_prompt has type */ +#undef HAVE_KRB5_PROMPT_TYPE + /* Define to 1 if you have the header file. */ #undef HAVE_MALLOC_H diff --git a/src/packaging/RedHat/makesrpm.pl b/src/packaging/RedHat/makesrpm.pl index 8dc5e5c2c..406d7d085 100755 --- a/src/packaging/RedHat/makesrpm.pl +++ b/src/packaging/RedHat/makesrpm.pl @@ -19,7 +19,7 @@ my $changelog = shift; my $cellservdb = shift; if (!$srcball && !$docball) { - printf "Usage: [ [ []]]\n"; + printf "Usage: makesrpm [ [ []]]\n"; exit(1); } @@ -42,30 +42,40 @@ die "Unable to find unpacked source code\n" if !$vdir; my $srcdir = $tmpdir."/".$vdir; # Work out which version we're dealing with from the configure.in file -my $version; +my $afsversion; +my $linuxver; +my $linuxrel; my $fh = new IO::File $srcdir."/configure.in" or die "Unable to find unpacked configure.in file"; while(<$fh>) { if (/AM_INIT_AUTOMAKE\(openafs,(.*)\)/) { - $version = $1; - last; + $afsversion = $1; + next; + } + if (/LINUX_PKGVER=(.*)/) { + $linuxver = $1; + next; + } + if (/LINUX_PKGREL=(.*)/) { + $linuxrel = $1; + next; } } undef $fh; # Build the RPM root -print "Building version $version\n"; +print "Building version $afsversion\n"; File::Path::mkpath([ $tmpdir."/rpmdir/SPECS", $tmpdir."/rpmdir/SRPMS", $tmpdir."/rpmdir/SOURCES"], 0, 0755); File::Copy::copy($srcball, - $tmpdir."/rpmdir/SOURCES/openafs-$version-src.tar.bz2") + $tmpdir."/rpmdir/SOURCES/openafs-$afsversion-src.tar.bz2") or die "Unable to copy $srcball into position\n"; File::Copy::copy($docball, - $tmpdir."/rpmdir/SOURCES/openafs-$version-doc.tar.bz2") + $tmpdir."/rpmdir/SOURCES/openafs-$afsversion-doc.tar.bz2") or die "Unable to copy $docball into position\n"; # Populate it with all the stuff in the packaging directory, except the @@ -90,9 +100,11 @@ chmod 0755, $tmpdir."/rpmdir/SOURCES/openafs-kvers-is.sh"; # Create the specfile. Use sed for this, cos its easier system("cat ".$srcdir."/src/packaging/RedHat/openafs.spec.in | ". - "sed -e 's/\@VERSION\@/$version/g' ". - " -e 's/\%define afsvers.*/%define afsvers $version/g' ". - " -e 's/\%define pkgvers.*/%define pkgvers $version/g' > ". + "sed -e 's/\@VERSION\@/$afsversion/g' ". + " -e 's/\@LINUX_PKGVER\@/$linuxver/g' ". + " -e 's/\@LINUX_PKGREL\@/$linuxrel/g' ". + " -e 's/\%define afsvers.*/%define afsvers $afsversion/g' ". + " -e 's/\%define pkgvers.*/%define pkgvers $linuxver/g' > ". $tmpdir."/rpmdir/SPECS/openafs.spec") == 0 or die "sed failed : $!\n"; @@ -106,11 +118,11 @@ if ($cellservdb) { if ($relnotes) { File::Copy::copy($relnotes, - $tmpdir."/rpmdir/SOURCES/RELNOTES-$version") + $tmpdir."/rpmdir/SOURCES/RELNOTES-$afsversion") or die "Unable to copy $relnotes into position\n"; } else { print "WARNING: No release notes provided. Using empty file\n"; - system("touch $tmpdir/rpmdir/SOURCES/RELNOTES-$version"); + system("touch $tmpdir/rpmdir/SOURCES/RELNOTES-$afsversion"); } if ($changelog) { @@ -128,9 +140,9 @@ system("rpmbuild -bs --define \"_topdir $tmpdir/rpmdir\" ". or die "rpmbuild failed : $!\n"; # Copy it out to somewhere useful -File::Copy::copy("$tmpdir/rpmdir/SRPMS/openafs-$version-1.1.src.rpm", - "openafs-$version-1.1.src.rpm") +File::Copy::copy("$tmpdir/rpmdir/SRPMS/openafs-$linuxver-1.$linuxrel.src.rpm", + "openafs-$linuxver-1.$linuxrel.src.rpm") or die "Unable to copy output RPM : $!\n"; -print "SRPM is openafs-$version-1.1.src.rpm\n"; +print "SRPM is openafs-$linuxver-1.$linuxrel.src.rpm\n"; diff --git a/src/packaging/RedHat/mockbuild.pl b/src/packaging/RedHat/mockbuild.pl index 77c19ddde..d632acc97 100755 --- a/src/packaging/RedHat/mockbuild.pl +++ b/src/packaging/RedHat/mockbuild.pl @@ -17,9 +17,53 @@ my $resultbase="/tmp/result/"; my $stashbase="/disk/scratch/repository/"; my $mockcommand = "/usr/bin/mock"; my $buildall = 0; - +my $ignorerelease = 1; my @newrpms; +# Words cannot describe how gross this is. Yum no longer provides usable +# output, so we need to call the python interface. At some point this +# probably means this script should be entirely rewritten in python, +# but this is not that point. + +sub findKernelModules { + my ($root, $uname, @modules) = @_; + + my $modlist = join(",",map { "'".$_."'" } @modules); + my $python = < { osver => "fc5", kmod => '1', basearch => 'i386', @@ -80,28 +124,35 @@ my %platconf = ( "fedora-5-i386" => { osver => "fc5", basearch => 'x86_64', updaterepo => 'update', results => "el5/x86_64" }, -# "fedora-development-i386" => { osver => "fcd", -# kmod => '1', -# basearch => 'i386', -# results => 'fedora-devel/i386'}, -# "fedora-development-x86_64" => { osver => "fcd", -# kmod => '1', -# basearch => 'x86_64', -# results => 'fedora-devel/x86_64'} + "fedora-development-i386" => { osver => "fcd", + kmod => '1', + basearch => 'i386', + results => 'fedora-devel/i386'}, + "fedora-development-x86_64" => { osver => "fcd", + kmod => '1', + basearch => 'x86_64', + results => 'fedora-devel/x86_64'} ); # The following are kernels that we can't successfully build modules against # due to issues in the packaged kernel-devel RPM. my %badkernels = ( - "2.6.21-2950.fc8" => { "xen" => 1} # Missing build ID + "2.6.21-2950.fc8" => { "xen" => 1}, # Missing build ID ); +my $help; +my $ok = GetOptions("resultdir=s" => \$resultbase, + "help" => \$help); + my @platforms = @ARGV; my $srpm = pop @platforms; -if (!$srpm || $#platforms==-1) { - print "Usage: $0 [ [ ...] ] \n"; +if (!$ok || $help || !$srpm || $#platforms==-1) { + print "Usage: $0 [options] [ [...]] \n"; + print " Options are : \n"; + print " --resultdir Location to place output RPMS\n"; + print "\n"; print " Platform may be:\n"; foreach ("all", sort(keys(%platconf))) { print " ".$_."\n"; }; exit(1); @@ -148,21 +199,19 @@ foreach my $platform (@platforms) { print "Finding available kernel modules\n"; my $arbitraryversion = ""; - my $modules=`$suser -c 'yum --installroot $root provides kernel-devel'`; - if ($modules eq "") { - $modules=`$suser -c 'yum -d 2 --installroot $root provides kernel-devel'`; - my $modulen; - my %modulel; - foreach $modulen (split(/\n/, $modules)) { - my ($pk, $colon, $comment)=split(/\s+/, $modulen); - if ($pk =~ /^kernel/) { - $modulel{$pk} = "$pk"; - } - } - $modulen=join(" ", keys(%modulel)); - $modules=`$suser -c 'yum --installroot $root list $modulen'`; + + my $modules; + if ($platform=~/fedora-development/) { + $modules = findKernelModules($root, 0, "kernel-devel"); + } elsif ($platform=~/centos-4/) { + $modules = findKernelModules($root, 0, "kernel-devel", "kernel-smp-devel", + "kernel-hugemem-devel", "kernel-xenU-devel"); + } else { + $modules = findKernelModules($root, 0, 'kernel-devel'); } + foreach my $module (split(/\n/, $modules)) { + chomp $module; my ($package, $version, $repo)=split(/\s+/, $module); my ($arch) = ($package=~/\.(.*)$/); my ($variant) = ($package=~/kernel-(.*)-devel/); @@ -175,6 +224,9 @@ foreach my $platform (@platforms) { next if ($variant eq "xen0"); # Fedora 5 has some bad xen0 kernel-devels next if ($variant eq "smp"); } + if ($platform=~/fedora-8/ || $platform=~/fedora-9/ || $platform=~/fedora-development/) { + next if ($variant =~/debug$/); # Fedora 8 debug kernels are bad + } print "$arch : $variant : $version\n"; $modulelist{$arch} ={} if !$modulelist{$arch}; $modulelist{$arch}{$version} = {} if !$modulelist{$arch}{$version}; @@ -241,10 +293,18 @@ foreach my $platform (@platforms) { if (!-f $resultdir."/kmod-openafs-".$dvariant. $oafsversion."-".$oafsrelease.".".$kversion.".". $arch.".rpm") { - push @tobuild, $variant; - print $resultdir."/kmod-openafs-".$dvariant. - $oafsversion."-".$oafsrelease.".".$kversion.".". - $arch.".rpm is missing\n"; + my @done = glob ($resultdir."/kmod-openafs-".$dvariant. + $oafsversion."-*.".$kversion.".".$arch.".rpm"); + + if ($ignorerelease && $#done>=0) { + print "Kernel module for $kversion already exists for an". + "older release. Skipping building it this time.\n"; + } else { + push @tobuild, $variant; + print $resultdir."/kmod-openafs-".$dvariant. + $oafsversion."-".$oafsrelease.".".$kversion.".". + $arch.".rpm is missing\n"; + } } } } @@ -289,7 +349,7 @@ foreach my $platform (@platforms) { if (defined($dirh)) { my $file; while (defined($file = $dirh->read)) { - if ( $file=~/^kernel-devel/ && + if ( $file=~/^kernel.*devel/ && -f $yumcachedir.$file && ! -f $rpmstashdir.$file) { print "Stashing $file for later use\n"; system("cp ".$yumcachedir.$file." ".$rpmstashdir.$file) == 0 diff --git a/src/packaging/RedHat/openafs-kmodtool b/src/packaging/RedHat/openafs-kmodtool index 5487547a0..ac887d2ff 100644 --- a/src/packaging/RedHat/openafs-kmodtool +++ b/src/packaging/RedHat/openafs-kmodtool @@ -70,11 +70,16 @@ get_rpmtemplate () *.EL*) kdep="kernel${dashvariant}-%{_target_cpu} = ${verrel}" ;; *) kdep="kernel-%{_target_cpu} = ${verrel}${variant}" ;; esac + case "$verrel" in + *.fc9*) kname="${verrel}.%{_target_cpu}${variant:+.${variant}}" ;; + *) kname="${verrel}${variant}" ;; + esac + cat < /dev/null || : +/sbin/depmod -aeF /boot/System.map-${kname} ${kname} > /dev/null || : %postun -n kmod-${kmod_name}${dashvariant} -/sbin/depmod -aF /boot/System.map-${verrel}${variant} ${verrel}${variant} &> /dev/null || : +/sbin/depmod -aF /boot/System.map-${kname} ${kname} &> /dev/null || : %files -n kmod-${kmod_name}${dashvariant} %defattr(644,root,root,755) -/lib/modules/${verrel}${variant}/extra/${kmod_name}/ +/lib/modules/${kname}/extra/${kmod_name}/ EOF } diff --git a/src/packaging/RedHat/openafs.spec.in b/src/packaging/RedHat/openafs.spec.in index 8f0a2a051..b0c3c7e71 100644 --- a/src/packaging/RedHat/openafs.spec.in +++ b/src/packaging/RedHat/openafs.spec.in @@ -1,11 +1,11 @@ -# Openafs Spec $Revision: 1.1.2.19 $ +# Openafs Spec $Revision: 1.1.2.22 $ %define afsvers @VERSION@ -%define pkgvers @VERSION@ +%define pkgvers @LINUX_PKGVER@ # for beta/rc releases make pkgrel 0.X. # for real releases make pkgrel 1 (or more for extra releases) #%define pkgrel 0.1.rc1 -%define pkgrel @LINUX_VERSION@ +%define pkgrel @LINUX_PKGREL@ %if %{?osvers:0}%{!?osvers:1} %define osvers 1 @@ -37,7 +37,13 @@ %define upvar "" %{!?kvariants: %define kvariants %{?upvar}} -%{!?ksrcdir: %define ksrcdir %{_usrsrc}/kernels/%{kverrel}-%{_target_cpu}} +%if %{?ksrcdir:1}%{!?ksrcdir:0} + if ( -d %{_usrsrc}/kernels/%{kverrel}-%{_target_cpu}) ; then + %define ksrcdir %{_usrsrc}/kernels/%{kverrel}-%{_target_cpu}} + else + %define ksrcdir %{_usrsrc}/kernels/%{kverrel}.%{_target_cpu}} + fi +%endif %else # Legacy kernel build stuff @@ -242,7 +248,7 @@ Source1: http://www.openafs.org/dl/openafs/%{afsvers}/openafs-%{afsvers}-doc.tar Source10: http://www.openafs.org/dl/openafs/%{afsvers}/RELNOTES-%{afsvers} Source11: http://www.openafs.org/dl/openafs/%{afsvers}/ChangeLog -Source20: http://dl.central.org/dl/cellservdb/CellServDB.2007-10-25 +Source20: http://dl.central.org/dl/cellservdb/CellServDB.2008-04-23 Source30: openafs-kernel-version.sh Source996: openafs-kvers-is.sh @@ -821,7 +827,11 @@ ksrc="" %if %{fedorakmod} for kvariant in %{kvariants} ; do if [ -z "${kvariant}" -o -z "$ksrc" ] ; then - ksrc=%{_usrsrc}/kernels/%{kverrel}${kvariant:+-$kvariant}-%{_target_cpu} + if [ -d %{_usrsrc}/kernels/%{kverrel}${kvariant:+-$kvariant}-%{_target_cpu} ] ; then + ksrc=%{_usrsrc}/kernels/%{kverrel}${kvariant:+-$kvariant}-%{_target_cpu} + else + ksrc=%{_usrsrc}/kernels/%{kverrel}.%{_target_cpu}${kvariant:+.$kvariant} + fi fi done %endif @@ -854,6 +864,12 @@ make only_libafs_tree || exit 1 %if %{fedorakmod} && %{build_modules} for kvariant in %{kvariants} ; do if [ -n "${kvariant}" ] ; then + if [ -d %{_usrsrc}/kernels/%{kverrel}${kvariant:+-$kvariant}-%{_target_cpu} ] ; then + ksrc=%{_usrsrc}/kernels/%{kverrel}${kvariant:+-$kvariant}-%{_target_cpu} + else + ksrc=%{_usrsrc}/kernels/%{kverrel}.%{_target_cpu}${kvariant:+.$kvariant} + fi + cp -R libafs_tree _kmod_build_${kvariant} pushd _kmod_build_${kvariant} ./configure --with-afs-sysname=${sysname} \ @@ -861,7 +877,7 @@ for kvariant in %{kvariants} ; do --libdir=%{_libdir} \ --bindir=%{_bindir} \ --sbindir=%{_sbindir} \ - --with-linux-kernel-headers=%{_usrsrc}/kernels/%{kverrel}${kvariant:+-$kvariant}-%{_target_cpu} \ + --with-linux-kernel-headers=${ksrc} \ %if %{krb5support} --with-krb5-conf=/usr/kerberos/bin/krb5-config \ %endif @@ -1196,14 +1212,25 @@ rm -f $RPM_BUILD_ROOT%{_libdir}/libafsrpc.so.* for kvariant in %{kvariants} do if [ -n "$kvariant" ] ; then - srcdir=_kmod_build_$kvariant/src/libafs/MODLOAD-%{kverrel}${kvariant}-SP + if [ -d _kmod_build_$kvariant/src/libafs/MODLOAD-%{kverrel}${kvariant}-SP ] ; then + srcdir=_kmod_build_$kvariant/src/libafs/MODLOAD-%{kverrel}${kvariant}-SP + else + srcdir=_kmod_build_$kvariant/src/libafs/MODLOAD-%{kverrel}.%{_target_cpu}.${kvariant}-SP + fi else srcdir=${sysname}/dest/root.client%{_prefix}/vice/etc/modload fi - dstdir=$RPM_BUILD_ROOT/lib/modules/%{kverrel}${kvariant}/extra/openafs + if [ -f ${srcdir}/libafs-%{kverrel}${kvariant}.ko ] ; then + srcmod=${srcdir}/libafs-%{kverrel}${kvariant}.ko + dstdir=$RPM_BUILD_ROOT/lib/modules/%{kverrel}${kvariant}/extra/openafs + else + srcmod=${srcdir}/libafs-%{kverrel}.%{_target_cpu}${kvariant:+.$kvariant}.ko + dstdir=$RPM_BUILD_ROOT/lib/modules/%{kverrel}.%{_target_cpu}${kvariant:+.$kvariant}/extra/openafs + fi + mkdir -p ${dstdir} - install -m 755 ${srcdir}/libafs-%{kverrel}${kvariant}.ko $dstdir/openafs.ko + install -m 755 ${srcmod} ${dstdir}/openafs.ko done %else # Install the kernel modules diff --git a/src/rx/rx_kcommon.c b/src/rx/rx_kcommon.c index 2c97f6d1b..920011e34 100644 --- a/src/rx/rx_kcommon.c +++ b/src/rx/rx_kcommon.c @@ -15,7 +15,7 @@ #include "afs/param.h" RCSID - ("$Header: /cvs/openafs/src/rx/rx_kcommon.c,v 1.44.2.18 2008/03/10 22:35:36 shadow Exp $"); + ("$Header: /cvs/openafs/src/rx/rx_kcommon.c,v 1.44.2.19 2008/04/09 16:40:19 shadow Exp $"); #include "rx/rx_kcommon.h" @@ -291,6 +291,8 @@ rx_ServerProc(void *unused) #ifdef RX_ENABLE_LOCKS AFS_GLOCK(); #endif /* RX_ENABLE_LOCKS */ + + return NULL; } #endif /* !UKERNEL */ diff --git a/src/tbutc/Makefile.in b/src/tbutc/Makefile.in index 60e8ab1e6..8a4c6c807 100644 --- a/src/tbutc/Makefile.in +++ b/src/tbutc/Makefile.in @@ -24,7 +24,7 @@ VOLSER = ${srcdir}/../volser BUCOORDOBJS=ubik_db_if.o ../bucoord/volstub.o ../bucoord/dlq.o \ status.o ../bucoord/bucoord_errs.o -VOLSEROBJS=vsprocs.o vsutils.o +VOLSEROBJS=vsprocs.o vsutils.o lockprocs.o VOLSERLIBS=${TOP_LIBDIR}/libvosadmin.a ${TOP_LIBDIR}/libafsadminutil.a LWPOBJS =lock.o @@ -115,6 +115,9 @@ vsutils.o: ${VOLSER}/vsutils.c vsprocs.o: ${VOLSER}/vsprocs.c ${CC} ${CFLAGS} -c ${VOLSER}/vsprocs.c +lockprocs.o: ${VOLSER}/lockprocs.c + ${CC} ${CFLAGS} -c ${VOLSER}/lockprocs.c + lock.o: ${LWP}/lock.c ${CC} ${CFLAGS} -c ${LWP}/lock.c diff --git a/src/ubik/beacon.c b/src/ubik/beacon.c index 78ce29bc9..9e6834d70 100644 --- a/src/ubik/beacon.c +++ b/src/ubik/beacon.c @@ -11,7 +11,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/ubik/beacon.c,v 1.19.2.6 2008/03/10 22:35:36 shadow Exp $"); + ("$Header: /cvs/openafs/src/ubik/beacon.c,v 1.19.2.7 2008/04/09 16:40:20 shadow Exp $"); #include #ifdef AFS_NT40_ENV @@ -455,6 +455,7 @@ ubeacon_Interact(void *dummy) } } /* while loop */ + return NULL; } /* diff --git a/src/ubik/phys.c b/src/ubik/phys.c index 7fc440f75..ba40e5b02 100644 --- a/src/ubik/phys.c +++ b/src/ubik/phys.c @@ -11,7 +11,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/ubik/phys.c,v 1.8.2.3 2007/12/10 22:46:07 shadow Exp $"); + ("$Header: /cvs/openafs/src/ubik/phys.c,v 1.8.2.4 2008/04/28 21:48:25 shadow Exp $"); #include #ifdef AFS_NT40_ENV @@ -130,7 +130,7 @@ uphys_close(register int afd) return EBADF; tfd = fdcache; for (i = 0; i < MAXFDCACHE; i++, tfd++) { - if (tfd->fd == afd) { + if (tfd->fd == afd && tfd->fileID != -10000) { tfd->refCount--; return 0; } @@ -282,3 +282,20 @@ uphys_sync(register struct ubik_dbase *adbase, afs_int32 afile) uphys_close(fd); return code; } + +void +uphys_invalidate(register struct ubik_dbase *adbase, afs_int32 afid) +{ + register int i; + register struct fdcache *tfd; + + /* scan file descr cache */ + for (tfd = fdcache, i = 0; i < MAXFDCACHE; i++, tfd++) { + if (afid == tfd->fileID) { + tfd->fileID = -10000; + if (tfd->fd >= 0 && tfd->refCount == 0) + close(tfd->fd); + return; + } + } +} diff --git a/src/ubik/recovery.c b/src/ubik/recovery.c index 84d5578ff..364c7235a 100644 --- a/src/ubik/recovery.c +++ b/src/ubik/recovery.c @@ -11,7 +11,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/ubik/recovery.c,v 1.13.2.4 2008/03/10 22:35:36 shadow Exp $"); + ("$Header: /cvs/openafs/src/ubik/recovery.c,v 1.13.2.6 2008/04/28 21:48:25 shadow Exp $"); #include #ifdef AFS_NT40_ENV @@ -648,6 +648,8 @@ urecovery_Interact(void *dummy) #endif if (!code) code = rename(pbuffer, tbuffer); + if (!code) + code = (*ubik_dbase->open) (ubik_dbase, 0); if (!code) #endif /* after data is good, sync disk with correct label */ @@ -806,6 +808,7 @@ urecovery_Interact(void *dummy) urecovery_state |= UBIK_RECSENTDB; } } + return NULL; } /* diff --git a/src/ubik/remote.c b/src/ubik/remote.c index 34ee230b7..2d3d6eec9 100644 --- a/src/ubik/remote.c +++ b/src/ubik/remote.c @@ -11,7 +11,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/ubik/remote.c,v 1.12.2.6 2008/02/20 20:10:39 shadow Exp $"); + ("$Header: /cvs/openafs/src/ubik/remote.c,v 1.12.2.7 2008/04/28 21:48:25 shadow Exp $"); #include #ifdef AFS_NT40_ENV @@ -615,6 +615,8 @@ SDISK_SendFile(rxcall, file, length, avers) #endif if (!code) code = rename(pbuffer, tbuffer); + if (!code) + code = (*ubik_dbase->open) (ubik_dbase, 0); if (!code) #endif code = (*ubik_dbase->setlabel) (dbase, file, avers); diff --git a/src/ubik/ubik.c b/src/ubik/ubik.c index f881fdd84..56f2131c0 100644 --- a/src/ubik/ubik.c +++ b/src/ubik/ubik.c @@ -11,7 +11,7 @@ #include RCSID - ("$Header: /cvs/openafs/src/ubik/ubik.c,v 1.15.2.3 2008/03/10 22:35:36 shadow Exp $"); + ("$Header: /cvs/openafs/src/ubik/ubik.c,v 1.15.2.4 2008/04/28 21:48:25 shadow Exp $"); #include #ifdef AFS_NT40_ENV @@ -208,7 +208,7 @@ ubik_ServerInitCommon(afs_int32 myHost, short myPort, tdb->read = uphys_read; tdb->write = uphys_write; tdb->truncate = uphys_truncate; - tdb->open = 0; /* this function isn't used any more */ + tdb->open = uphys_invalidate; /* this function isn't used any more */ tdb->sync = uphys_sync; tdb->stat = uphys_stat; tdb->getlabel = uphys_getlabel; diff --git a/src/ubik/ubik.p.h b/src/ubik/ubik.p.h index a6febe1dd..547babc4f 100644 --- a/src/ubik/ubik.p.h +++ b/src/ubik/ubik.p.h @@ -303,7 +303,8 @@ extern int uphys_getlabel(register struct ubik_dbase *adbase, afs_int32 afile, extern int uphys_setlabel(register struct ubik_dbase *adbase, afs_int32 afile, struct ubik_version *aversion); extern int uphys_sync(register struct ubik_dbase *adbase, afs_int32 afile); - +extern void uphys_invalidate(register struct ubik_dbase *adbase, + afs_int32 afid); /* recovery.c */ extern int urecovery_ResetState(void); diff --git a/src/venus/Makefile.in b/src/venus/Makefile.in index c07689a0f..8b5412e5e 100644 --- a/src/venus/Makefile.in +++ b/src/venus/Makefile.in @@ -283,13 +283,13 @@ ${DEST}/etc/kdump: kdump-build ${INSTALL} -f ${srcdir}/kdump ${DEST}/etc/kdump32;; \ *alpha_linux* ) \ ${INSTALLex} -f ${srcdir}/kdump.sh.linux ${DEST}/etc/kdump; \ - ${INSTALL} kdump-alpha_linux-${LINUX_VERSION} $@ ;; \ + ${INSTALL} kdump-alpha_linux-${LINUX_VERSION} $@-${LINUX_VERSION} ;; \ *linux* ) \ ${INSTALLex} -f ${srcdir}/kdump.sh.linux ${DEST}/etc/kdump; \ ${INSTALL} kdump-linux-${LINUX_VERSION} $@-${LINUX_VERSION} ;; \ hp_ux11* ) \ ${INSTALLex} -f ${srcdir}/kdump.sh.hp_ux11 ${DEST}/etc/kdump; \ - ${INSTALL} -f $? $@;; \ + ${INSTALL} -f $? ${DEST}/etc/kdump32;; \ *bsd*) \ ;; \ *) \ @@ -357,16 +357,19 @@ ${DESTDIR}${sbindir}/kdump: kdump-build do ${INSTALL} $$f ${DESTDIR}${sbindir}/$$f || exit $$? ; \ done ;; \ sun*_5[789] | sun*_510 ) \ - ${INSTALLex} -f kdump.sh.solaris7 ${DESTDIR}${sbindir}/kdump32; \ - ${INSTALL} -f $? $@;; \ + ${INSTALLex} -f kdump.sh.solaris7 ${DESTDIR}${sbindir}/kdump; \ + ${INSTALL} -f kdump ${DESTDIR}${sbindir}/kdump32;; \ + *alpha_linux* ) \ + ${INSTALLex} -f kdump.sh.linux ${DESTDIR}${sbindir}/kdump; \ + ${INSTALL} kdump-alpha_linux-${LINUX_VERSION} $@-${LINUX_VERSION} ;; \ *linux* ) \ ${INSTALLex} -f kdump.sh.linux ${DESTDIR}${sbindir}/kdump; \ - ${INSTALL} $? $@ ;; \ + ${INSTALL} kdump-linux-${LINUX_VERSION} $@-${LINUX_VERSION} ;; \ hp_ux11* ) \ ${INSTALLex} -f kdump.sh.hp_ux11 ${DESTDIR}${sbindir}/kdump; \ - ${INSTALL} -f $? $@;; \ + ${INSTALL} -f kdump ${DESTDIR}${sbindir}/kdump32;; \ *) \ - ${INSTALL} $? $@ ;; \ + ${INSTALL} kdump $@ ;; \ esac ${DESTDIR}${sbindir}/kdump64: kdump-build diff --git a/src/viced/viced.h b/src/viced/viced.h index 3b230e531..0b38c2ac1 100644 --- a/src/viced/viced.h +++ b/src/viced/viced.h @@ -196,7 +196,7 @@ extern int busyonrst; #define DONTPANIC 0 #define PANIC 1 -#define MAX_FILESERVER_THREAD 128 /* max number of threads in fileserver, subject to system limits */ +#define MAX_FILESERVER_THREAD 128 /* max number of threads in fileserver, subject to system limits. match to FD_HANDLE_SETASIDE */ #define FILESERVER_HELPER_THREADS 7 /* Listner, IOMGR, FiveMinute, * HostCheck, Signal, min 2 for RXSTATS */ diff --git a/src/vol/ihandle.h b/src/vol/ihandle.h index 5b918f8a7..b0bb3b238 100644 --- a/src/vol/ihandle.h +++ b/src/vol/ihandle.h @@ -193,7 +193,7 @@ typedef struct StreamHandle_s { #define STREAM_HANDLE_MALLOCSIZE 1 /* Number of file descriptors needed for non-cached I/O */ -#define FD_HANDLE_SETASIDE 64 +#define FD_HANDLE_SETASIDE 128 /* Match to MAX_FILESERVER_THREAD */ /* Don't try to have more than 256 files open at once if you are planning * to use fopen or fdopen. The FILE structure has an eight bit field for -- 2.39.5