From: adilger Date: Fri, 23 Apr 2004 19:33:55 +0000 (+0000) Subject: Land b1_2_26 onto b1_2 (20040423_1204) - 2.6 build fixes X-Git-Tag: v1_8_0_110~486^5~246 X-Git-Url: https://git.whamcloud.com/?a=commitdiff_plain;h=5d0887e3d0724416e172460c340aa78c491f3cbc;p=fs%2Flustre-release.git Land b1_2_26 onto b1_2 (20040423_1204) - 2.6 build fixes b=3118, b=3116, b=3064, b=3219, b=2410, b=3258 --- diff --git a/ldiskfs/kernel_patches/series/ldiskfs-2.6-suse.series b/ldiskfs/kernel_patches/series/ldiskfs-2.6-suse.series index 65e8dcd..cff99dd 100644 --- a/ldiskfs/kernel_patches/series/ldiskfs-2.6-suse.series +++ b/ldiskfs/kernel_patches/series/ldiskfs-2.6-suse.series @@ -1,4 +1,3 @@ -header-guards-2.6-suse.patch ext3-wantedi-2.6-suse.patch ext3-san-jdike-2.6-suse.patch iopen-2.6-suse.patch @@ -8,4 +7,3 @@ ext3-init-generation-2.6-suse.patch ext3-ea-in-inode-2.6-suse.patch export-ext3-2.6-suse.patch ext3-include-fixes-2.6-suse.patch -ext3-xattr-header-move-2.6.suse.patch diff --git a/lnet/.cvsignore b/lnet/.cvsignore index c1a9bdf..f30d862 100644 --- a/lnet/.cvsignore +++ b/lnet/.cvsignore @@ -1,9 +1,11 @@ Kernelenv Makefile -Makefile.in +autoMakefile +autoMakefile.in aclocal.m4 autom4te.cache config.log config.status configure -.*.o.cmd +.*.cmd +.depend diff --git a/lnet/Makefile.am b/lnet/Makefile.am deleted file mode 100644 index 1a223f2..0000000 --- a/lnet/Makefile.am +++ /dev/null @@ -1,12 +0,0 @@ -# Copyright (C) 2001 Cluster File Systems, Inc. -# -# This code is issued under the GNU General Public License. -# See the file COPYING in this distribution - -EXTRA_DIST = Rules.linux archdep.m4 include -DIST_SUBDIRS = libcfs portals knals unals utils tests doc router -if LIBLUSTRE -SUBDIRS = portals unals utils -else -SUBDIRS = libcfs portals knals unals utils tests doc router -endif diff --git a/lnet/Rules.linux b/lnet/Rules.linux deleted file mode 100644 index 232a248..0000000 --- a/lnet/Rules.linux +++ /dev/null @@ -1,29 +0,0 @@ -# included in Linux kernel directories -# Rules for module building - -if LINUX25 - -basename=$(shell echo $< | sed -e 's/\.c//g' | sed -e 's/-//g' | sed -e 's/\.o//g' | sed -e 's/^.*\///g') -AM_CPPFLAGS= -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -pipe -mpreferred-stack-boundary=2 -DKBUILD_MODNAME=$(MODULE) -DKBUILD_BASENAME=$(basename) - -$(MODULE).o: $($(MODULE)_OBJECTS) $($(MODULE)_DEPENDENCIES) - $(LD) -m $(MOD_LINK) -r -o $(MODULE)_tmp.o $($(MODULE)_OBJECTS) - rm -f $(MODULE)_tmp.c - $(LINUX)/scripts/modpost $(LINUX)/vmlinux $(MODULE)_tmp.o - $(COMPILE) -UKBUILD_BASENAME -DKBUILD_BASENAME=$(MODULE) -c $(MODULE)_tmp.mod.c - $(LD) -m $(MOD_LINK) -r -o $(MODULE).o $(MODULE)_tmp.o $(MODULE)_tmp.mod.o - -else - -$(MODULE).o: $($(MODULE)_OBJECTS) - $(LD) -m $(MOD_LINK) -r -o $(MODULE).o $($(MODULE)_OBJECTS) - -endif - -tags: - rm -f $(top_srcdir)/TAGS - rm -f $(top_srcdir)/tags - find $(top_srcdir)/../portals/ -name '*.[hc]' | xargs etags -a - find $(top_srcdir) -name '*.[hc]' | grep -v ".orig" | xargs etags -a - find $(top_srcdir)/../portals/ -name '*.[hc]' | xargs ctags -a - find $(top_srcdir) -name '*.[hc]' | grep -v ".orig" | xargs ctags -a diff --git a/lnet/archdep.m4 b/lnet/archdep.m4 index e9eef5e..95c9b4a 100644 --- a/lnet/archdep.m4 +++ b/lnet/archdep.m4 @@ -1,15 +1,46 @@ +# -------- we can't build modules unless srcdir = builddir +if test x$enable_modules != xno ; then +AC_CHECK_FILE([autoMakefile.am],[], + [AC_MSG_ERROR([At this time, Lustre does not support building kernel modules with srcdir != buildir.])]) +fi # -------- in kernel compilation? (2.5 only) ------------- -AC_ARG_ENABLE(inkernel, [ --enable-inkernel set up 2.5 kernel makefiles]) +AC_MSG_CHECKING([if inkernel build support is requested]) +AC_ARG_ENABLE([inkernel], + AC_HELP_STRING([--enable-inkernel], + [set up 2.5 kernel makefiles]), + [],[enable_inkernel=no]) +AC_MSG_RESULT([$enable_inkernel]) AM_CONDITIONAL(INKERNEL, test x$enable_inkernel = xyes) -echo "Makefile for in kernel build: $INKERNEL" -# -------- liblustre compilation -------------- -AC_ARG_WITH(lib, [ --with-lib compile lustre library], host_cpu="lib") +# -------- are we building against an external portals? ------- +AC_MSG_CHECKING([if Cray portals should be used]) +AC_ARG_WITH([cray-portals], + AC_HELP_STRING([--with-cray-portals=path], + [path to cray portals]), + [ + CRAY_PORTALS_INCLUDE="-I$with_cray_portals" + AC_DEFINE(CRAY_PORTALS, 1, [Building with Cray Portals]) + ],[with_cray_portals=no]) +AC_MSG_RESULT([$with_cray_portals]) +AM_CONDITIONAL(CRAY_PORTALS, test x$with_cray_portals != xno) +if test x$enable_tests = xno ; then + AC_MSG_NOTICE([disabling tests]) + enable_tests=no +fi +if test x$enable_utils = xno ; then + AC_MSG_NOTICE([disabling utilities]) + enable_utils=no +fi # -------- set linuxdir ------------ - -AC_ARG_WITH(linux, [ --with-linux=[path] set path to Linux source (default=/usr/src/linux)],LINUX=$with_linux,LINUX=/usr/src/linux) +AC_MSG_CHECKING([for Linux sources]) +AC_ARG_WITH([linux], + AC_HELP_STRING([--with-linux=path], + [set path to Linux source (default=/usr/src/linux)]), + [LINUX=$with_linux], + [LINUX=/usr/src/linux]) +AC_MSG_RESULT([$LINUX]) AC_SUBST(LINUX) if test x$enable_inkernel = xyes ; then echo ln -s `pwd` $LINUX/fs/lustre @@ -17,200 +48,196 @@ if test x$enable_inkernel = xyes ; then ln -s `pwd` $LINUX/fs/lustre fi -# -------------------- -AC_MSG_CHECKING(if you are running user mode linux for $host_cpu ...) -if test $host_cpu = "lib" ; then - host_cpu="lib" - AC_MSG_RESULT(no building Lustre library) -else - if test -e $LINUX/include/asm-um ; then - if test X`ls -id $LINUX/include/asm/ | awk '{print $1}'` = X`ls -id $LINUX/include/asm-um | awk '{print $1}'` ; then - host_cpu="um"; - AC_MSG_RESULT(yes) - else - AC_MSG_RESULT(no (asm doesn't point at asm-um)) - fi +# -------- check for .confg -------- +AC_ARG_WITH([linux-config], + [AC_HELP_STRING([--with-linux-config=path], + [set path to Linux .conf (default=\$LINUX/.config)])], + [LINUX_CONFIG=$with_linux_config], + [LINUX_CONFIG=$LINUX/.config]) +AC_SUBST(LINUX_CONFIG) - else - AC_MSG_RESULT(no (asm-um missing)) - fi -fi +AC_CHECK_FILE([/boot/kernel.h], + [KERNEL_SOURCE_HEADER='/boot/kernel.h'], + [AC_CHECK_FILE([/var/adm/running-kernel.h]), + [KERNEL_SOURCE_HEADER='/var/adm/running-kernel.h']]) -# --------- Linux 25 ------------------ +AC_ARG_WITH([kernel-source-header], + AC_HELP_STRING([--with-kernel-source-header=path], + [Use a different kernel version header. Consult README.kernel-source for details.]), + [KERNEL_SOURCE_HEADER=$with_kernel_source_header]) -AC_MSG_CHECKING(if you are running linux 2.5) -if test -e $LINUX/include/linux/namei.h ; then - linux25="yes" - AC_MSG_RESULT(yes) -else - linux25="no" - AC_MSG_RESULT(no) +# -------------------- +ARCH_UM= +UML_CFLAGS= +if test x$enable_modules != xno ; then + AC_MSG_CHECKING([if you are running user mode linux for $host_cpu]) + if test -e $LINUX/include/asm-um ; then + if test X`ls -id $LINUX/include/asm/ | awk '{print $1}'` = X`ls -id $LINUX/include/asm-um | awk '{print $1}'` ; then + ARCH_UM='ARCH=um' + # see notes in Rules.in + UML_CFLAGS='-O0' + AC_MSG_RESULT(yes) + else + AC_MSG_RESULT([no (asm doesn't point at asm-um)]) + fi + else + AC_MSG_RESULT([no (asm-um missing)]) + fi fi +AC_SUBST(ARCH_UM) +AC_SUBST(UML_CFLAGS) +# --------- Linux 25 ------------------ + +AC_CHECK_FILE([$LINUX/include/linux/namei.h], + [ + linux25="yes" + KMODEXT=".ko" + ],[ + KMODEXT=".o" + linux25="no" + ]) +AC_MSG_CHECKING([if you are using Linux 2.6]) +AC_MSG_RESULT([$linux25]) AM_CONDITIONAL(LINUX25, test x$linux25 = xyes) -echo "Makefiles for in linux 2.5 build: $LINUX25" +AC_SUBST(KMODEXT) # ------- Makeflags ------------------ -AC_MSG_CHECKING(setting make flags system architecture: ) -case ${host_cpu} in - lib ) - AC_MSG_RESULT($host_cpu) - KCFLAGS='-g -Wall ' - KCPPFLAGS='-D__arch_lib__ ' - libdir='${exec_prefix}/lib/lustre' - MOD_LINK=elf_i386 -;; - um ) - AC_MSG_RESULT($host_cpu) - KCFLAGS='-g -Wall -pipe -Wno-trigraphs -Wstrict-prototypes -fno-strict-aliasing -fno-common ' - case ${linux25} in - yes ) - KCPPFLAGS='-D__KERNEL__ -U__i386__ -Ui386 -DUM_FASTCALL -D__arch_um__ -DSUBARCH="i386" -DNESTING=0 -D_LARGEFILE64_SOURCE -Derrno=kernel_errno -DPATCHLEVEL=4 -DMODULE -I$(LINUX)/arch/um/include -I$(LINUX)/arch/um/kernel/tt/include -I$(LINUX)/arch/um/kernel/skas/include -O2 -nostdinc -iwithprefix include' - ;; - * ) - KCPPFLAGS='-D__KERNEL__ -U__i386__ -Ui386 -DUM_FASTCALL -D__arch_um__ -DSUBARCH="i386" -DNESTING=0 -D_LARGEFILE64_SOURCE -Derrno=kernel_errno -DPATCHLEVEL=4 -DMODULE -I$(LINUX)/arch/um/kernel/tt/include -I$(LINUX)/arch/um/include ' - ;; - esac - - MOD_LINK=elf_i386 -;; - i*86 ) - AC_MSG_RESULT($host_cpu) - KCFLAGS='-g -O2 -Wall -Wstrict-prototypes -pipe' - case ${linux25} in - yes ) - KCPPFLAGS='-D__KERNEL__ -DMODULE -march=i686 -I$(LINUX)/include/asm-i386/mach-default -nostdinc -iwithprefix include ' - ;; - * ) - KCPPFLAGS='-D__KERNEL__ -DMODULE ' - ;; - esac - MOD_LINK=elf_i386 -;; - - alphaev6 ) - AC_MSG_RESULT($host_cpu) - KCFLAGS='-g -O2 -Wall -Wstrict-prototypes -Wno-trigraphs -fomit-frame-pointer -fno-strict-aliasing -fno-common -pipe -mno-fp-regs -ffixed-8 -mcpu=ev5 -Wa,-mev6' - KCPPFLAGS='-D__KERNEL__ -DMODULE ' - MOD_LINK=elf64alpha -;; - - alphaev67 ) - AC_MSG_RESULT($host_cpu) - KCFLAGS='-g -O2 -Wall -Wstrict-prototypes -Wno-trigraphs -fomit-frame-pointer -fno-strict-aliasing -fno-common -pipe -mno-fp-regs -ffixed-8 -mcpu=ev5 -Wa,-mev6' - KCPPFLAGS='-D__KERNEL__ -DMODULE ' - MOD_LINK=elf64alpha -;; - - alpha* ) - AC_MSG_RESULT($host_cpu) - KCFLAGS='-g -O2 -Wall -Wstrict-prototypes -Wno-trigraphs -fomit-frame-pointer -fno-strict-aliasing -fno-common -pipe -mno-fp-regs -ffixed-8 -mcpu=ev5 -Wa,-mev5' - KCPPFLAGS='-D__KERNEL__ -DMODULE ' - MOD_LINK=elf64alpha -;; - - ia64 ) - AC_MSG_RESULT($host_cpu) - KCFLAGS='-g -O2 -Wall -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -pipe -ffixed-r13 -mfixed-range=f10-f15,f32-f127 -falign-functions=32 -mb-step' - KCPPFLAGS='-D__KERNEL__ -DMODULE' - MOD_LINK=elf64_ia64 -;; - - x86_64 ) - AC_MSG_RESULT($host_cpu) - KCFLAGS='-g -O2 -Wall -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -fomit-frame-pointer -mno-red-zone -mcmodel=kernel -pipe -fno-reorder-blocks -finline-limit=2000 -fno-strength-reduce -fno-asynchronous-unwind-tables' - KCPPFLAGS='-D__KERNEL__ -DMODULE' - MOD_LINK=elf_x86_64 -;; - - sparc64 ) - AC_MSG_RESULT($host_cpu) - KCFLAGS='-O2 -Wall -Wstrict-prototypes -Wno-trigraphs -fomit-frame-pointer -fno-strict-aliasing -fno-common -Wno-unused -m64 -pipe -mno-fpu -mcpu=ultrasparc -mcmodel=medlow -ffixed-g4 -fcall-used-g5 -fcall-used-g7 -Wno-sign-compare -Wa,--undeclared-regs' - KCPPFLAGS='-D__KERNEL__' - MOD_LINK=elf64_sparc - -;; - - powerpc ) - AC_MSG_RESULT($host_cpu) - KCFLAGS='-O2 -g -Wall -Wstrict-prototypes -Wno-trigraphs -fomit-frame-pointer -fno-strict-aliasing -fno-common -D__powerpc__ -fsigned-char -msoft-float -pipe -ffixed-r2 -Wno-uninitialized -mmultiple -mstring' - KCPPFLAGS='-D__KERNEL__ -DMODULE' - MOD_LINK=elf32ppclinux -;; - - *) - AC_ERROR("Unknown Linux Platform: $host_cpu") -;; -esac - -# ----------- make dep run? ------------------ - -if test $host_cpu != "lib" ; then - AC_MSG_CHECKING(if make dep has been run in kernel source (host $host_cpu) ) - if test -f $LINUX/include/linux/config.h ; then - AC_MSG_RESULT(yes) - else - AC_MSG_ERROR(** cannot find $LINUX/include/linux/config.h. Run make dep in $LINUX.) - fi +CPPFLAGS="$CRAY_PORTALS_INCLUDE $CRAY_PORTALS_COMMANDLINE -I\$(top_srcdir)/include -I\$(top_srcdir)/portals/include" + +# liblustre are all the same +LLCPPFLAGS="-D__arch_lib__ -D_LARGEFILE64_SOURCE=1" +AC_SUBST(LLCPPFLAGS) + +LLCFLAGS="-g -Wall -fPIC" +AC_SUBST(LLCFLAGS) + +# everyone builds against portals and lustre + +if test x$enable_ldiskfs = xyes ; then + AC_DEFINE(CONFIG_LDISKFS_FS_MODULE, 1, [build ldiskfs as a module]) + AC_DEFINE(CONFIG_LDISKFS_FS_XATTR, 1, [enable extended attributes for ldiskfs]) + AC_DEFINE(CONFIG_LDISKFS_FS_POSIX_ACL, 1, [enable posix acls]) + AC_DEFINE(CONFIG_LDISKFS_FS_SECURITY, 1, [enable fs security]) fi +EXTRA_KCFLAGS="-g $CRAY_PORTALS_INCLUDE $CRAY_PORTALS_COMMANDLINE -I$PWD/portals/include -I$PWD/include" + +# these are like AC_TRY_COMPILE, but try to build modules against the +# kernel, inside the kernel-tests directory + +AC_DEFUN([LUSTRE_MODULE_CONFTEST], +[cat >conftest.c <<_ACEOF +$1 +_ACEOF +]) + +AC_DEFUN([LUSTRE_MODULE_COMPILE_IFELSE], +[m4_ifvaln([$1], [LUSTRE_MODULE_CONFTEST([$1])])dnl +rm -f kernel-tests/conftest.o kernel-tests/conftest.mod.c kernel-tests/conftest.ko +AS_IF([AC_TRY_COMMAND(cp conftest.c kernel-tests && make [$2] -f $PWD/kernel-tests/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX EXTRA_CFLAGS="$EXTRA_KCFLAGS" $ARCH_UM SUBDIRS=$PWD/kernel-tests) >/dev/null && AC_TRY_COMMAND([$3])], + [$4], + [_AC_MSG_LOG_CONFTEST +m4_ifvaln([$5],[$5])dnl])dnl +rm -f kernel-tests/conftest.o kernel-tests/conftest.mod.c kernel-tests/conftest.mod.o kernel-tests/conftest.ko m4_ifval([$1], [kernel-tests/conftest.c conftest.c])[]dnl +]) + +AC_DEFUN([LUSTRE_MODULE_TRY_COMPILE], +[LUSTRE_MODULE_COMPILE_IFELSE( + [AC_LANG_PROGRAM([[$1]], [[$2]])], + [modules], + [test -s kernel-tests/conftest.o], + [$3], [$4])]) + +AC_DEFUN([LUSTRE_MODULE_TRY_MAKE], +[LUSTRE_MODULE_COMPILE_IFELSE([AC_LANG_PROGRAM([[$1]], [[$2]])], [$3], [$4], [$5], [$6])]) + # ------------ include paths ------------------ -if test $host_cpu != "lib" ; then - KINCFLAGS="-I\$(top_srcdir)/include -I\$(top_srcdir)/portals/include -I$LINUX/include" -else - KINCFLAGS='-I$(top_srcdir)/include -I$(top_srcdir)/portals/include' -fi -CPPFLAGS="$KINCFLAGS $ARCHCPPFLAGS" - -if test $host_cpu != "lib" ; then -# ------------ autoconf.h ------------------ - AC_MSG_CHECKING(if autoconf.h is in kernel source) - if test -f $LINUX/include/linux/autoconf.h ; then - AC_MSG_RESULT(yes) - else - AC_MSG_ERROR(** cannot find $LINUX/include/linux/autoconf.h. Run make config in $LINUX.) - fi - -# ------------ LINUXRELEASE and moduledir ------------------ - AC_MSG_CHECKING(for Linux release) - - dnl We need to rid ourselves of the nasty [ ] quotes. - changequote(, ) - dnl Get release from version.h - LINUXRELEASE="`sed -ne 's/.*UTS_RELEASE[ \"]*\([0-9.a-zA-Z_-]*\).*/\1/p' $LINUX/include/linux/version.h`" - changequote([, ]) - - moduledir='$(libdir)/modules/'$LINUXRELEASE/kernel - AC_SUBST(moduledir) - - modulefsdir='$(moduledir)/fs/$(PACKAGE)' - AC_SUBST(modulefsdir) - - AC_MSG_RESULT($LINUXRELEASE) - AC_SUBST(LINUXRELEASE) - -# ------------ RELEASE -------------------------------- - AC_MSG_CHECKING(lustre release) - - dnl We need to rid ourselves of the nasty [ ] quotes. - changequote(, ) - dnl Get release from version.h - RELEASE="`sed -ne 's/-/_/g' -e 's/.*UTS_RELEASE[ \"]*\([0-9.a-zA-Z_]*\).*/\1/p' $LINUX/include/linux/version.h`_`date +%Y%m%d%H%M`" - changequote([, ]) - - AC_MSG_RESULT($RELEASE) - AC_SUBST(RELEASE) - -# ---------- modversions? -------------------- - AC_MSG_CHECKING(for MODVERSIONS) - if egrep -e 'MODVERSIONS.*1' $LINUX/include/linux/autoconf.h >/dev/null 2>&1; - then - if test $linux25 != "yes"; then - MFLAGS="-DMODULE -DMODVERSIONS -include $LINUX/include/linux/modversions.h -DEXPORT_SYMTAB" - AC_MSG_RESULT(yes) - fi - fi +if test x$enable_modules != xno ; then + # ------------ .config exists ---------------- + AC_CHECK_FILE([$LINUX_CONFIG],[], + [AC_MSG_ERROR([Kernel config could not be found. If you are building from a kernel-source rpm consult README.kernel-source])]) + + # ----------- make dep run? ------------------ + AC_CHECK_FILES([$LINUX/include/linux/autoconf.h + $LINUX/include/linux/version.h + $LINUX/include/linux/config.h],[], + [AC_MSG_ERROR([Run make config in $LINUX.])]) + + # ------------ rhconfig.h includes runtime-generated bits -- + # red hat kernel-source checks + + # we know this exists after the check above. if the user + # tarred up the tree and ran make dep etc. in it, then + # version.h gets overwritten with a standard linux one. + + if grep rhconfig $LINUX/include/linux/version.h >/dev/null ; then + # This is a clean kernel-source tree, we need to + # enable extensive workarounds to get this to build + # modules + AC_CHECK_FILE([$KERNEL_SOURCE_HEADER], + [if test $KERNEL_SOURCE_HEADER = '/boot/kernel.h' ; then + AC_MSG_WARN([Using /boot/kernel.h from RUNNING kernel.]) + AC_MSG_WARN([If this is not what you want, use --with-kernel-source-header.]) + AC_MSG_WARN([Consult README.kernel-source for details.]) + fi], + [AC_MSG_ERROR([$KERNEL_SOURCE_HEADER not found. Consult README.kernel-source for details.])]) + EXTRA_KCFLAGS="-include $KERNEL_SOURCE_HEADER $EXTRA_KCFLAGS" + fi + + # --- check that we can build modules at all + AC_MSG_CHECKING([that modules can be built]) + LUSTRE_MODULE_TRY_COMPILE([],[], + [ + AC_MSG_RESULT([yes]) + ],[ + AC_MSG_RESULT([no]) + AC_MSG_WARN([Consult config.log for details.]) + AC_MSG_WARN([If you are trying to build with a kernel-source rpm, consult README.kernel-source]) + AC_MSG_ERROR([Kernel modules could not be built.]) + ]) + + # ------------ LINUXRELEASE and moduledir ------------------ + AC_MSG_CHECKING([for Linux release]) + rm -f kernel-tests/conftest.i + LINUXRELEASE= + if test $linux25 = 'yes' ; then + makerule="$PWD/kernel-tests" + else + makerule="_dir_$PWD/kernel-tests" + fi + LUSTRE_MODULE_TRY_MAKE( + [#include ], + [LINUXRELEASE=UTS_RELEASE], + [$makerule LUSTRE_KERNEL_TEST=conftest.i], + [test -s kernel-tests/conftest.i], + [ + # LINUXRELEASE="UTS_RELEASE" + eval $(grep LINUXRELEASE kernel-tests/conftest.i) + ],[ + AC_MSG_RESULT([unknown]) + AC_MSG_ERROR([Could not preprocess test program. Consult config.log for details.]) + ]) + rm -f kernel-tests/conftest.i + if test x$LINUXRELEASE = x ; then + AC_MSG_RESULT([unknown]) + AC_MSG_ERROR([Could not determine Linux release version from linux/version.h.]) + fi + AC_MSG_RESULT([$LINUXRELEASE]) + AC_SUBST(LINUXRELEASE) + + moduledir='$(libdir)/modules/'$LINUXRELEASE/kernel + AC_SUBST(moduledir) + + modulefsdir='$(moduledir)/fs/$(PACKAGE)' + AC_SUBST(modulefsdir) + + # ------------ RELEASE -------------------------------- + AC_MSG_CHECKING([for Lustre release]) + RELEASE="`echo ${LINUXRELEASE} | tr '-' '_'`_`date +%Y%m%d%H%M`" + AC_MSG_RESULT($RELEASE) + AC_SUBST(RELEASE) fi # ---------- Portals flags -------------------- @@ -223,204 +250,328 @@ fi #fi #AC_SUBST(usrprefix) -AC_MSG_CHECKING(if kernel has CPU affinity support) -SET_CPUS_ALLOW="`grep -c set_cpus_allowed $LINUX/kernel/softirq.c`" -if test "$SET_CPUS_ALLOW" != 0 ; then - enable_affinity_temp="-DCPU_AFFINITY=1" - AC_MSG_RESULT(yes) +AC_MSG_CHECKING([for zero-copy TCP support]) +AC_ARG_ENABLE([zerocopy], + AC_HELP_STRING([--disable-zerocopy], + [disable socknal zerocopy]), + [],[enable_zerocopy='yes']) +if test x$enable_zerocopy = xno ; then + AC_MSG_RESULT([no (by request)]) else - enable_affinity_temp="" - AC_MSG_RESULT(no) + ZCCD="`grep -c zccd $LINUX/include/linux/skbuff.h`" + if test "$ZCCD" != 0 ; then + AC_DEFINE(SOCKNAL_ZC, 1, [use zero-copy TCP]) + AC_MSG_RESULT(yes) + else + AC_MSG_RESULT([no (no kernel support)]) + fi fi -AC_MSG_CHECKING(if kernel has zero-copy TCP support) -ZCCD="`grep -c zccd $LINUX/include/linux/skbuff.h`" -if test "$ZCCD" != 0 ; then - enable_zerocopy_temp="-DSOCKNAL_ZC=1" - AC_MSG_RESULT(yes) +AC_MSG_CHECKING([for CPU affinity support]) +AC_ARG_ENABLE([affinity], + AC_HELP_STRING([--disable-affinity], + [disable process/irq affinity]), + [],[enable_affinity='yes']) +if test x$enable_affinity = xno ; then + AC_MSG_RESULT([no (by request)]) else - enable_zerocopy_temp="" - AC_MSG_RESULT(no) + SET_CPUS_ALLOW="`grep -c set_cpus_allowed $LINUX/kernel/softirq.c`" + if test "$SET_CPUS_ALLOW" != 0 ; then + AC_DEFINE(CPU_AFFINITY, 1, [kernel has cpu affinity support]) + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no (no kernel support)]) + fi fi -AC_ARG_ENABLE(zerocopy, [ --disable-zerocopy disable socknal zerocopy],enable_zerocopy="", enable_zerocopy=$enable_zerocopy_temp) -AC_ARG_ENABLE(affinity, [ --disable-affinity disable process/irq affinity],enable_affinity="", enable_affinity=$enable_affinity_temp) ##################################### -AC_MSG_CHECKING(if quadrics kernel headers are present) +AC_MSG_CHECKING([if quadrics kernel headers are present]) if test -d $LINUX/drivers/net/qsnet ; then - AC_MSG_RESULT(yes) - QSWNAL="qswnal" - AC_MSG_CHECKING(for multirail EKC) - if test -f $LINUX/include/elan/epcomms.h; then - AC_MSG_RESULT(supported) - with_quadrics="-DMULTIRAIL_EKC=1" - else - AC_MSG_RESULT(not supported) - with_quadrics="-I$LINUX/drivers/net/qsnet/include" - fi - : + AC_MSG_RESULT([yes]) + QSWNAL="qswnal" + AC_MSG_CHECKING([for multirail EKC]) + if test -f $LINUX/include/elan/epcomms.h; then + AC_MSG_RESULT([supported]) + QSWCPPFLAGS="-DMULTIRAIL_EKC=1" + else + AC_MSG_RESULT([not supported]) + QSWCPPFLAGS="-I$LINUX/drivers/net/qsnet/include" + fi else - AC_MSG_RESULT(no) - QSWNAL="" - with_quadrics="" - : + AC_MSG_RESULT([no]) + QSWNAL="" + QSWCPPFLAGS="" fi -AC_SUBST(with_quadrics) +AC_SUBST(QSWCPPFLAGS) AC_SUBST(QSWNAL) - -# R. Read 5/02 -GMNAL="" -echo "checking with-gm=" ${with_gm} -if test "${with_gm+set}" = set; then - if test "${with_gm}" = yes; then - with_gm="-I/usr/local/gm/include" - else - with_gm="-I$with_gm/include -I$with_gm/drivers -I$with_gm/drivers/linux/gm" - fi - GMNAL="gmnal" -else -# default case - no GM - with_gm="" -fi -AC_SUBST(with_gm) +AM_CONDITIONAL(BUILD_QSWNAL, test x$QSWNAL = "xqswnal") + +AC_MSG_CHECKING([if gm support was requested]) +AC_ARG_WITH([gm], + AC_HELP_STRING([--with-gm=path], + [build gmnal against path]), + [ + case $with_gm in + yes) + AC_MSG_RESULT([yes]) + GMCPPFLAGS="-I/usr/local/gm/include" + GMNAL="gmnal" + ;; + no) + AC_MSG_RESULT([no]) + GMCPPFLAGS="" + GMNAL="" + ;; + *) + AC_MSG_RESULT([yes]) + GMCPPFLAGS="-I$with_gm/include -I$with_gm/drivers -I$with_gm/drivers/linux/gm" + GMNAL="gmnal" + ;; + esac + ],[ + AC_MSG_RESULT([no]) + GMCPPFLAGS="" + GMNAL="" + ]) +AC_SUBST(GMCPPFLAGS) AC_SUBST(GMNAL) - +AM_CONDITIONAL(BUILD_GMNAL, test x$GMNAL = "xgmnal") #fixme: where are the default IB includes? default_ib_include_dir=/usr/local/ib/include an_ib_include_file=vapi.h -AC_ARG_WITH(ib, [ --with-ib=[yes/no/path] Path to IB includes], with_ib=$withval, with_ib=$default_ib) -AC_MSG_CHECKING(if IB headers are present) -if test "$with_ib" = yes; then - with_ib=$default_ib_include_dir -fi -if test "$with_ib" != no -a -f ${with_ib}/${an_ib_include_file}; then - AC_MSG_RESULT(yes) - IBNAL="ibnal" - with_ib="-I${with_ib}" -else - AC_MSG_RESULT(no) - IBNAL="" - with_ib="" -fi +AC_MSG_CHECKING([if ib nal support was requested]) +AC_ARG_WITH([ib], + AC_HELP_STRING([--with-ib=yes/no/path], + [Path to IB includes]), + [ + case $with_ib in + yes) + AC_MSG_RESULT([yes]) + IBCPPFLAGS="-I/usr/local/ib/include" + IBNAL="ibnal" + ;; + no) + AC_MSG_RESULT([no]) + IBCPPFLAGS="" + IBNAL="" + ;; + *) + AC_MSG_RESULT([yes]) + IBCPPFLAGS="-I$with_ib" + IBNAL="" + ;; + esac + ],[ + AC_MSG_RESULT([no]) + IBFLAGS="" + IBNAL="" + ]) AC_SUBST(IBNAL) -AC_SUBST(with_ib) - +AC_SUBST(IBCPPFLAGS) +AM_CONDITIONAL(BUILD_IBNAL, test x$IBNAL = "xibnal") def_scamac=/opt/scali/include -AC_ARG_WITH(scamac, [ --with-scamac=[yes/no/path] Path to ScaMAC includes (default=/opt/scali/include)], with_scamac=$withval, with_scamac=$def_scamac) -AC_MSG_CHECKING(if ScaMAC headers are present) -if test "$with_scamac" = yes; then - with_scamac=$def_scamac -fi -if test "$with_scamac" != no -a -f ${with_scamac}/scamac.h; then - AC_MSG_RESULT(yes) - SCIMACNAL="scimacnal" - with_scamac="-I${with_scamac} -I${with_scamac}/icm" -else - AC_MSG_RESULT(no) - SCIMACNAL="" - with_scamac="" -fi - -AC_SUBST(with_scamac) +AC_MSG_CHECKING([if ScaMAC support was requested]) +AC_ARG_WITH([scamac], + AC_HELP_STRING([--with-scamac=yes/no/path], + [Path to ScaMAC includes (default=/opt/scali/include)]), + [ + case $with_scamac in + yes) + AC_MSG_RESULT([yes]) + SCIMACCPPFLAGS="-I/opt/scali/include" + SCIMACNAL="scimacnal" + ;; + no) + AC_MSG_RESULT([no]) + SCIMACCPPFLAGS="" + SCIMACNAL="" + ;; + *) + AC_MSG_RESULT([yes]) + SCIMACCPPFLAGS="-I$with_scamac -I$with_scamac/icm" + SCIMACNAL="scimacnal" + ;; + esac + ],[ + AC_MSG_RESULT([no]) + SCIMACCPPFLAGS="" + SCIMACNAL="" + ]) +AC_SUBST(SCIMACCPPFLAGS) AC_SUBST(SCIMACNAL) +AM_CONDITIONAL(BUILD_SCIMACNAL, test x$SCIMACNAL = "xscimacnal") +# if test "$with_scamac" != no -a -f ${with_scamac}/scamac.h; then -CFLAGS="$KCFLAGS" -CPPFLAGS="$KINCFLAGS $KCPPFLAGS $MFLAGS $enable_zerocopy $enable_affinity $with_quadrics $with_gm $with_scamac $with_ib" -if test $host_cpu == "lib" ; then -CPPFLAGS="$CPPFLAGS -fPIC -D_LARGEFILE64_SOURCE=1 -g" -fi - -AM_CONDITIONAL(LIBLUSTRE, test x$host_cpu = xlib) AC_SUBST(MOD_LINK) AC_SUBST(LINUX25) -AM_CONDITIONAL(LIBLUSTRE, test x$host_cpu = xlib) # ---------- Red Hat 2.4.18 has iobuf->dovary -------------- # But other kernels don't AC_MSG_CHECKING([if struct kiobuf has a dovary field]) -AC_TRY_COMPILE([#define __KERNEL__ - #include ], - [struct kiobuf iobuf; - iobuf.dovary = 1;], - [AC_MSG_RESULT([yes]) - CPPFLAGS="$CPPFLAGS -DHAVE_KIOBUF_DOVARY"], - [AC_MSG_RESULT([no])]) +LUSTRE_MODULE_TRY_COMPILE( + [ + #include + ],[ + struct kiobuf iobuf; + iobuf.dovary = 1; + ],[ + AC_MSG_RESULT([yes]) + AC_DEFINE(HAVE_KIOBUF_DOVARY, 1, [struct kiobuf has a dovary field]) + ],[ + AC_MSG_RESULT([no]) + ]) + +# ----------- 2.6.4 no longer has page->list --------------- +AC_MSG_CHECKING([if struct page has a list field]) +LUSTRE_MODULE_TRY_COMPILE( + [ + #include + ],[ + struct page page; + &page.list; + ],[ + AC_MSG_RESULT([yes]) + AC_DEFINE(HAVE_PAGE_LIST, 1, [struct page has a list field]) + ],[ + AC_MSG_RESULT([no]) + ]) # ---------- Red Hat 2.4.20 backports some 2.5 bits -------- # This needs to run after we've defined the KCPPFLAGS -AC_MSG_CHECKING(for kernel version) -AC_TRY_COMPILE([#define __KERNEL__ - #include ], - [struct task_struct p; - p.sighand = NULL;], - [RH_2_4_20=1], - [RH_2_4_20=0]) - -if test $RH_2_4_20 = 1; then - AC_MSG_RESULT(redhat-2.4.20) - CPPFLAGS="$CPPFLAGS -DCONFIG_RH_2_4_20" -else - AC_MSG_RESULT($LINUXRELEASE) -fi +AC_MSG_CHECKING([for kernel version]) +LUSTRE_MODULE_TRY_COMPILE( + [ + #include + ],[ + struct task_struct p; + p.sighand = NULL; + ],[ + AC_DEFINE(CONFIG_RH_2_4_20, 1, [this kernel contains Red Hat 2.4.20 patches]) + AC_MSG_RESULT([redhat-2.4.20]) + ],[ + AC_MSG_RESULT([$LINUXRELEASE]) + ]) # ---------- Red Hat 2.4.21 backports some more 2.5 bits -------- -AC_MSG_CHECKING(if kernel defines PDE) +AC_MSG_CHECKING([if kernel defines PDE]) HAVE_PDE="`grep -c 'proc_dir_entry..PDE' $LINUX/include/linux/proc_fs.h`" if test "$HAVE_PDE" != 0 ; then - CPPFLAGS="$CPPFLAGS -DHAVE_PDE" - AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_PDE, 1, [the kernel defines PDE]) + AC_MSG_RESULT([yes]) else - AC_MSG_RESULT(no) + AC_MSG_RESULT([no]) fi -AC_MSG_CHECKING(if kernel passes struct file to direct_IO) +AC_MSG_CHECKING([if kernel passes struct file to direct_IO]) HAVE_DIO_FILE="`grep -c 'direct_IO.*struct file' $LINUX/include/linux/fs.h`" if test "$HAVE_DIO_FILE" != 0 ; then - CPPFLAGS="$CPPFLAGS -DHAVE_DIO_FILE" - AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_DIO_FILE, 1, [the kernel passes struct file to direct_IO]) + AC_MSG_RESULT(yes) else - AC_MSG_RESULT(no) + AC_MSG_RESULT(no) fi -# --- Check that ext3 and ext3 xattr are enabled in the kernel -if test "$host_cpu" != "lib" ; then - AC_MSG_CHECKING([that ext3 is enabled in the kernel]) - AC_TRY_COMPILE([ -#define __KERNEL__ -#include - ], +if test x$enable_modules != xno ; then + # ---------- modules? ------------------------ + AC_MSG_CHECKING([for module support]) + LUSTRE_MODULE_TRY_COMPILE( [ -#ifdef CONFIG_EXT3_FS - return 0; -#else -#error CONFIG_EXT3_FS not #defined -#endif - ],[AC_MSG_RESULT([yes])], - [AC_MSG_RESULT([no]) - AC_MSG_ERROR([Lustre requires that ext3 is enabled in the kernel (CONFIG_EXT3_FS)]) + #include + ],[ + #ifndef CONFIG_MODULES + #error CONFIG_MODULES not #defined + #endif + ],[ + AC_MSG_RESULT([yes]) + ],[ + AC_MSG_RESULT([no]) + AC_MSG_ERROR([module support is required to build Lustre kernel modules.]) + ]) + + # ---------- modversions? -------------------- + AC_MSG_CHECKING([for MODVERSIONS]) + LUSTRE_MODULE_TRY_COMPILE( + [ + #include + ],[ + #ifndef CONFIG_MODVERSIONS + #error CONFIG_MODVERSIONS not #defined + #endif + ],[ + AC_MSG_RESULT([yes]) + ],[ + AC_MSG_RESULT([no]) + ]) + + # ------------ preempt ----------------------- + AC_MSG_CHECKING([if preempt is enabled]) + LUSTRE_MODULE_TRY_COMPILE( + [ + #include + ],[ + #ifndef CONFIG_PREEMPT + #error CONFIG_PREEMPT is not #defined + #endif + ],[ + AC_MSG_RESULT([yes]) + AC_MSG_ERROR([Lustre does not support kernels with preempt enabled.]) + ],[ + AC_MSG_RESULT([no]) ]) -# disable this check until our xattr patches define it! -# AC_MSG_CHECKING([that extended attributes for ext3 are enabled in the kernel]) -# AC_TRY_COMPILE([ -##define __KERNEL__ -##include -# ], -# [ -##ifdef CONFIG_EXT3_FS_XATTR -# return 0; -##else -##error CONFIG_EXT3_FS_XATTR not #defined -##endif -# ],[AC_MSG_RESULT([yes])], -# [AC_MSG_RESULT([no]) -# AC_MSG_ERROR([Lustre requires that extended attributes for ext3 are enabled in the kernel (CONFIG_EXT3_FS_XATTR)]) -# ]) + + if test $BACKINGFS = 'ext3' ; then + # --- Check that ext3 and ext3 xattr are enabled in the kernel + AC_MSG_CHECKING([that ext3 is enabled in the kernel]) + LUSTRE_MODULE_TRY_COMPILE( + [ + #include + ],[ + #ifndef CONFIG_EXT3_FS + #ifndef CONFIG_EXT3_FS_MODULE + #error CONFIG_EXT3_FS not #defined + #endif + #endif + ],[ + AC_MSG_RESULT([yes]) + ],[ + AC_MSG_RESULT([no]) + AC_MSG_ERROR([Lustre requires that ext3 is enabled in the kernel (CONFIG_EXT3_FS)]) + ]) + + AC_MSG_CHECKING([that extended attributes for ext3 are enabled in the kernel]) + LUSTRE_MODULE_TRY_COMPILE( + [ + #include + ],[ + #ifndef CONFIG_EXT3_FS_XATTR + #error CONFIG_EXT3_FS_XATTR not #defined + #endif + ],[ + AC_MSG_RESULT([yes]) + ],[ + AC_MSG_RESULT([no]) + AC_MSG_WARN([Lustre requires that extended attributes for ext3 are enabled in the kernel (CONFIG_EXT3_FS_XATTR.)]) + AC_MSG_WARN([This build may fail.]) + ]) + fi # BACKINGFS = ext3 fi + +CPPFLAGS="-include \$(top_builddir)/include/config.h $CPPFLAGS" +EXTRA_KCFLAGS="-include $PWD/include/config.h $EXTRA_KCFLAGS" +AC_SUBST(EXTRA_KCFLAGS) + +#echo "KCPPFLAGS: $KCPPFLAGS" +#echo "KCFLAGS: $KCFLAGS" +#echo "LLCPPFLAGS: $LLCPPFLAGS" +#echo "LLCFLAGS: $LLCFLAGS" +#echo "MOD_LINK: $MOD_LINK" +#echo "CFLAGS: $CFLAGS" +#echo "CPPFLAGS: $CPPFLAGS" diff --git a/lnet/build.m4 b/lnet/build.m4 index 8c55b20..93a370f 100644 --- a/lnet/build.m4 +++ b/lnet/build.m4 @@ -1,5 +1,9 @@ # ---------- other tests and settings --------- +AC_CHECK_TYPE([spinlock_t], + [AC_DEFINE(HAVE_SPINLOCK_T, 1, [spinlock_t is defined])], + [], + [#include ]) # --------- unsigned long long sane? ------- @@ -28,6 +32,9 @@ pkgexampledir='${prefix}/usr/lib/$(PACKAGE)/examples' AC_SUBST(pkgexampledir) pymoddir='${prefix}/usr/lib/${PACKAGE}/python/Lustre' AC_SUBST(pymoddir) +# for substitution in lconf +PYMOD_DIR="/usr/lib/$PACKAGE/python" +AC_SUBST(PYMOD_DIR) modulenetdir='$(moduledir)/net/$(PACKAGE)' AC_SUBST(modulenetdir) @@ -35,14 +42,15 @@ AC_SUBST(modulenetdir) # ---------- BAD gcc? ------------ AC_PROG_RANLIB AC_PROG_CC -AC_MSG_CHECKING(for buggy compiler) +AC_MSG_CHECKING([for buggy compiler]) CC_VERSION=`$CC -v 2>&1 | grep "^gcc version"` bad_cc() { + AC_MSG_RESULT([buggy compiler found!]) echo echo " '$CC_VERSION'" echo " has been known to generate bad code, " echo " please get an updated compiler." - AC_MSG_ERROR(sorry) + AC_MSG_ERROR([sorry]) } TMP_VERSION=`echo $CC_VERSION | cut -c 1-16` if test "$TMP_VERSION" = "gcc version 2.95"; then @@ -61,7 +69,7 @@ case "$CC_VERSION" in bad_cc ;; *) - AC_MSG_RESULT(no known problems) + AC_MSG_RESULT([no known problems]) ;; esac # end ------ BAD gcc? ------------ @@ -70,29 +78,30 @@ esac # this doesn't seem to work on older autoconf # AC_CHECK_LIB(readline, readline,,) -AC_ARG_ENABLE(readline, [ --enable-readline use readline library],, - enable_readline="yes") - -if test "$enable_readline" = "yes" ; then - LIBREADLINE="-lreadline -lncurses" - HAVE_LIBREADLINE="-DHAVE_LIBREADLINE=1" +AC_MSG_CHECKING([for readline support]) +AC_ARG_ENABLE(readline, + AC_HELP_STRING([--disable-readline], + [do not use readline library]), + [],[enable_readline='yes']) +AC_MSG_RESULT([$enable_readline]) +if test x$enable_readline = xyes ; then + LIBREADLINE="-lreadline -lncurses" + AC_DEFINE(HAVE_LIBREADLINE, 1, [readline library is available]) else - LIBREADLINE="" - HAVE_LIBREADLINE="" + LIBREADLINE="" fi AC_SUBST(LIBREADLINE) -AC_SUBST(HAVE_LIBREADLINE) -AC_ARG_ENABLE(efence, [ --enable-efence use efence library],, - enable_efence="no") - +AC_MSG_CHECKING([if efence debugging support is requested]) +AC_ARG_ENABLE(efence, + AC_HELP_STRING([--enable-efence], + [use efence library]), + [],[enable_efence='no']) +AC_MSG_RESULT([$enable_efence]) if test "$enable_efence" = "yes" ; then - LIBEFENCE="-lefence" - HAVE_LIBEFENCE="-DHAVE_LIBEFENCE=1" + LIBEFENCE="-lefence" + AC_DEFINE(HAVE_LIBEFENCE, 1, [libefence support is requested]) else - LIBEFENCE="" - HAVE_LIBEFENCE="" + LIBEFENCE="" fi AC_SUBST(LIBEFENCE) -AC_SUBST(HAVE_LIBEFENCE) - diff --git a/lnet/configure.in b/lnet/configure.in deleted file mode 100644 index bacf532..0000000 --- a/lnet/configure.in +++ /dev/null @@ -1,34 +0,0 @@ -# This version is here to make autoconf happy; the name is a file which is -# "unique" to this directory so that configure knows where it should run. -AC_INIT(knals/Makefile.am, 3.0) -AC_CANONICAL_SYSTEM -# Copyright (C) 2001 Cluster File Systems, Inc. -# -# This code is issued under the GNU General Public License. -# See the file COPYING in this distribution - -# Automake variables. Steal the version number from packaging/intersync.spec -AM_INIT_AUTOMAKE(portals, builtin([esyscmd], [sed -ne '/.*define IVERSION /{ s/.*IVERSION //; p; }' libcfs/module.c])) -# AM_MAINTAINER_MODE - -sinclude(build.m4) -sinclude(archdep.m4) - -if test x$enable_inkernel = xyes ; then -cp Kernelenv.mk Kernelenv.in -cp Makefile.mk Makefile.in -cp libcfs/Makefile.mk libcfs/Makefile.in -cp portals/Makefile.mk portals/Makefile.in -cp knals/Makefile.mk knals/Makefile.in -cp knals/socknal/Makefile.mk knals/socknal/Makefile.in -cp router/Makefile.mk router/Makefile.in -fi - -AM_CONFIG_HEADER(include/config.h) - -AC_OUTPUT([Makefile Kernelenv libcfs/Makefile portals/Makefile \ - unals/Makefile knals/Makefile router/Makefile \ - knals/socknal/Makefile knals/gmnal/Makefile knals/qswnal/Makefile \ - knals/scimacnal/Makefile knals/ibnal/Makefile\ - utils/Makefile tests/Makefile doc/Makefile ]) - diff --git a/lnet/include/Makefile.am b/lnet/include/Makefile.am deleted file mode 100644 index 2cf7f99..0000000 --- a/lnet/include/Makefile.am +++ /dev/null @@ -1,8 +0,0 @@ -# Copyright (C) 2001 Cluster File Systems, Inc. -# -# This code is issued under the GNU General Public License. -# See the file COPYING in this distribution - -SUBDIRS = portals linux -EXTRA_DIST = config.h.in -include $(top_srcdir)/Rules diff --git a/lnet/include/config.h.in b/lnet/include/config.h.in deleted file mode 100644 index f295154..0000000 --- a/lnet/include/config.h.in +++ /dev/null @@ -1,61 +0,0 @@ -/* portals/include/config.h.in. Generated from configure.in by autoheader. */ - -/* Use the Pinger */ -#undef ENABLE_PINGER - -/* Define to 1 if you have the header file. */ -#undef HAVE_INTTYPES_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_MEMORY_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_STDINT_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_STDLIB_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_STRINGS_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_STRING_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_SYS_STAT_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_SYS_TYPES_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_UNISTD_H - -/* IOCTL Buffer Size */ -#undef OBD_MAX_IOCTL_BUFFER - -/* Name of package */ -#undef PACKAGE - -/* Define to the address where bug reports for this package should be sent. */ -#undef PACKAGE_BUGREPORT - -/* Define to the full name of this package. */ -#undef PACKAGE_NAME - -/* Define to the full name and version of this package. */ -#undef PACKAGE_STRING - -/* Define to the one symbol short name of this package. */ -#undef PACKAGE_TARNAME - -/* Define to the version of this package. */ -#undef PACKAGE_VERSION - -/* The size of a `unsigned long long', as computed by sizeof. */ -#undef SIZEOF_UNSIGNED_LONG_LONG - -/* Define to 1 if you have the ANSI C header files. */ -#undef STDC_HEADERS - -/* Version number of package */ -#undef VERSION diff --git a/lnet/include/linux/Makefile.am b/lnet/include/linux/Makefile.am deleted file mode 100644 index 6a65cb5..0000000 --- a/lnet/include/linux/Makefile.am +++ /dev/null @@ -1,10 +0,0 @@ -# Copyright (C) 2001 Cluster File Systems, Inc. -# -# This code is issued under the GNU General Public License. -# See the file COPYING in this distribution - -include $(top_srcdir)/Rules - -linuxincludedir = $(includedir)/linux - -linuxinclude_HEADERS=kp30.h portals_lib.h diff --git a/lnet/include/linux/kp30.h b/lnet/include/linux/kp30.h index 4c3e85f..b27eaa0 100644 --- a/lnet/include/linux/kp30.h +++ b/lnet/include/linux/kp30.h @@ -4,6 +4,7 @@ #ifndef _KP30_INCLUDED #define _KP30_INCLUDED +#include #define PORTAL_DEBUG #ifndef offsetof @@ -12,158 +13,6 @@ #define LOWEST_BIT_SET(x) ((x) & ~((x) - 1)) -/* - * Debugging - */ -extern unsigned int portal_subsystem_debug; -extern unsigned int portal_stack; -extern unsigned int portal_debug; -extern unsigned int portal_printk; -extern unsigned int portal_cerror; -/* Debugging subsystems (32 bits, non-overlapping) */ -#define S_UNDEFINED 0x00000001 -#define S_MDC 0x00000002 -#define S_MDS 0x00000004 -#define S_OSC 0x00000008 -#define S_OST 0x00000010 -#define S_CLASS 0x00000020 -#define S_LOG 0x00000040 -#define S_LLITE 0x00000080 -#define S_RPC 0x00000100 -#define S_MGMT 0x00000200 -#define S_PORTALS 0x00000400 -#define S_SOCKNAL 0x00000800 -#define S_QSWNAL 0x00001000 -#define S_PINGER 0x00002000 -#define S_FILTER 0x00004000 -#define S_PTLBD 0x00008000 -#define S_ECHO 0x00010000 -#define S_LDLM 0x00020000 -#define S_LOV 0x00040000 -#define S_GMNAL 0x00080000 -#define S_PTLROUTER 0x00100000 -#define S_COBD 0x00200000 -#define S_IBNAL 0x00400000 - -/* If you change these values, please keep portals/utils/debug.c - * up to date! */ - -/* Debugging masks (32 bits, non-overlapping) */ -#define D_TRACE 0x00000001 /* ENTRY/EXIT markers */ -#define D_INODE 0x00000002 -#define D_SUPER 0x00000004 -#define D_EXT2 0x00000008 /* anything from ext2_debug */ -#define D_MALLOC 0x00000010 /* print malloc, free information */ -#define D_CACHE 0x00000020 /* cache-related items */ -#define D_INFO 0x00000040 /* general information */ -#define D_IOCTL 0x00000080 /* ioctl related information */ -#define D_BLOCKS 0x00000100 /* ext2 block allocation */ -#define D_NET 0x00000200 /* network communications */ -#define D_WARNING 0x00000400 /* CWARN(...) == CDEBUG (D_WARNING, ...) */ -#define D_BUFFS 0x00000800 -#define D_OTHER 0x00001000 -#define D_DENTRY 0x00002000 -#define D_PORTALS 0x00004000 /* ENTRY/EXIT markers */ -#define D_PAGE 0x00008000 /* bulk page handling */ -#define D_DLMTRACE 0x00010000 -#define D_ERROR 0x00020000 /* CERROR(...) == CDEBUG (D_ERROR, ...) */ -#define D_EMERG 0x00040000 /* CEMERG(...) == CDEBUG (D_EMERG, ...) */ -#define D_HA 0x00080000 /* recovery and failover */ -#define D_RPCTRACE 0x00100000 /* for distributed debugging */ -#define D_VFSTRACE 0x00200000 -#define D_READA 0x00400000 /* read-ahead */ - -#ifdef __KERNEL__ -# include /* THREAD_SIZE */ -#else -# ifndef THREAD_SIZE /* x86_64 has THREAD_SIZE in userspace */ -# define THREAD_SIZE 8192 -# endif -#endif - -#define LUSTRE_TRACE_SIZE (THREAD_SIZE >> 5) - -#ifdef __KERNEL__ -# ifdef __ia64__ -# define CDEBUG_STACK (THREAD_SIZE - \ - ((unsigned long)__builtin_dwarf_cfa() & \ - (THREAD_SIZE - 1))) -# else -# define CDEBUG_STACK (THREAD_SIZE - \ - ((unsigned long)__builtin_frame_address(0) & \ - (THREAD_SIZE - 1))) -# endif - -#define CHECK_STACK(stack) \ - do { \ - if ((stack) > 3*THREAD_SIZE/4 && (stack) > portal_stack) { \ - portals_debug_msg(DEBUG_SUBSYSTEM, D_WARNING, \ - __FILE__, __FUNCTION__, __LINE__, \ - (stack),"maximum lustre stack %u\n",\ - portal_stack = (stack)); \ - /*panic("LBUG");*/ \ - } \ - } while (0) -#else /* __KERNEL__ */ -#define CHECK_STACK(stack) do { } while(0) -#define CDEBUG_STACK (0L) -#endif /* __KERNEL__ */ - -#if 1 -#define CDEBUG(mask, format, a...) \ -do { \ - if (portal_cerror == 0) \ - break; \ - CHECK_STACK(CDEBUG_STACK); \ - if (((mask) & (D_ERROR | D_EMERG | D_WARNING)) || \ - (portal_debug & (mask) && \ - portal_subsystem_debug & DEBUG_SUBSYSTEM)) \ - portals_debug_msg(DEBUG_SUBSYSTEM, mask, \ - __FILE__, __FUNCTION__, __LINE__, \ - CDEBUG_STACK, format, ## a); \ -} while (0) - -#define CWARN(format, a...) CDEBUG(D_WARNING, format, ## a) -#define CERROR(format, a...) CDEBUG(D_ERROR, format, ## a) -#define CEMERG(format, a...) CDEBUG(D_EMERG, format, ## a) - -#define GOTO(label, rc) \ -do { \ - long GOTO__ret = (long)(rc); \ - CDEBUG(D_TRACE,"Process leaving via %s (rc=%lu : %ld : %lx)\n", \ - #label, (unsigned long)GOTO__ret, (signed long)GOTO__ret,\ - (signed long)GOTO__ret); \ - goto label; \ -} while (0) - -#define RETURN(rc) \ -do { \ - typeof(rc) RETURN__ret = (rc); \ - CDEBUG(D_TRACE, "Process leaving (rc=%lu : %ld : %lx)\n", \ - (long)RETURN__ret, (long)RETURN__ret, (long)RETURN__ret);\ - return RETURN__ret; \ -} while (0) - -#define ENTRY \ -do { \ - CDEBUG(D_TRACE, "Process entered\n"); \ -} while (0) - -#define EXIT \ -do { \ - CDEBUG(D_TRACE, "Process leaving\n"); \ -} while(0) -#else -#define CDEBUG(mask, format, a...) do { } while (0) -#define CWARN(format, a...) do { } while (0) -#define CERROR(format, a...) printk("<3>" format, ## a) -#define CEMERG(format, a...) printk("<0>" format, ## a) -#define GOTO(label, rc) do { (void)(rc); goto label; } while (0) -#define RETURN(rc) return (rc) -#define ENTRY do { } while (0) -#define EXIT do { } while (0) -#endif - #ifdef __KERNEL__ # include # include @@ -172,7 +21,7 @@ do { \ # include # include # include -# include +# include # include # include @@ -353,188 +202,6 @@ do { \ #endif /******************************************************************************/ -/* Kernel Portals Router interface */ - -typedef void (*kpr_fwd_callback_t)(void *arg, int error); // completion callback - -/* space for routing targets to stash "stuff" in a forwarded packet */ -typedef union { - long long _alignment; - void *_space[16]; /* scale with CPU arch */ -} kprfd_scratch_t; - -/* Kernel Portals Routing Forwarded message Descriptor */ -typedef struct { - struct list_head kprfd_list; /* stash in queues (routing target can use) */ - ptl_nid_t kprfd_target_nid; /* final destination NID */ - ptl_nid_t kprfd_gateway_nid; /* gateway NID */ - ptl_hdr_t *kprfd_hdr; /* header in wire byte order */ - int kprfd_nob; /* # payload bytes */ - int kprfd_niov; /* # payload frags */ - ptl_kiov_t *kprfd_kiov; /* payload fragments */ - void *kprfd_router_arg; /* originating NAL's router arg */ - kpr_fwd_callback_t kprfd_callback; /* completion callback */ - void *kprfd_callback_arg; /* completion callback arg */ - kprfd_scratch_t kprfd_scratch; /* scratchpad for routing targets */ -} kpr_fwd_desc_t; - -typedef void (*kpr_fwd_t)(void *arg, kpr_fwd_desc_t *fwd); -typedef void (*kpr_notify_t)(void *arg, ptl_nid_t peer, int alive); - -/* NAL's routing interface (Kernel Portals Routing Nal Interface) */ -typedef const struct { - int kprni_nalid; /* NAL's id */ - void *kprni_arg; /* Arg to pass when calling into NAL */ - kpr_fwd_t kprni_fwd; /* NAL's forwarding entrypoint */ - kpr_notify_t kprni_notify; /* NAL's notification entrypoint */ -} kpr_nal_interface_t; - -/* Router's routing interface (Kernel Portals Routing Router Interface) */ -typedef const struct { - /* register the calling NAL with the router and get back the handle for - * subsequent calls */ - int (*kprri_register) (kpr_nal_interface_t *nal_interface, - void **router_arg); - - /* ask the router to find a gateway that forwards to 'nid' and is a - * peer of the calling NAL; assume caller will send 'nob' bytes of - * payload there */ - int (*kprri_lookup) (void *router_arg, ptl_nid_t nid, int nob, - ptl_nid_t *gateway_nid); - - /* hand a packet over to the router for forwarding */ - kpr_fwd_t kprri_fwd_start; - - /* hand a packet back to the router for completion */ - void (*kprri_fwd_done) (void *router_arg, kpr_fwd_desc_t *fwd, - int error); - - /* notify the router about peer state */ - void (*kprri_notify) (void *router_arg, ptl_nid_t peer, - int alive, time_t when); - - /* the calling NAL is shutting down */ - void (*kprri_shutdown) (void *router_arg); - - /* deregister the calling NAL with the router */ - void (*kprri_deregister) (void *router_arg); - -} kpr_router_interface_t; - -/* Convenient struct for NAL to stash router interface/args */ -typedef struct { - kpr_router_interface_t *kpr_interface; - void *kpr_arg; -} kpr_router_t; - -/* Router's control interface (Kernel Portals Routing Control Interface) */ -typedef const struct { - int (*kprci_add_route)(int gateway_nal, ptl_nid_t gateway_nid, - ptl_nid_t lo_nid, ptl_nid_t hi_nid); - int (*kprci_del_route)(int gateway_nal, ptl_nid_t gateway_nid, - ptl_nid_t lo_nid, ptl_nid_t hi_nid); - int (*kprci_get_route)(int index, int *gateway_nal, - ptl_nid_t *gateway, - ptl_nid_t *lo_nid, ptl_nid_t *hi_nid, - int *alive); - int (*kprci_notify)(int gateway_nal, ptl_nid_t gateway_nid, - int alive, time_t when); -} kpr_control_interface_t; - -extern kpr_control_interface_t kpr_control_interface; -extern kpr_router_interface_t kpr_router_interface; - -static inline int -kpr_register (kpr_router_t *router, kpr_nal_interface_t *nalif) -{ - int rc; - - router->kpr_interface = PORTAL_SYMBOL_GET (kpr_router_interface); - if (router->kpr_interface == NULL) - return (-ENOENT); - - rc = (router->kpr_interface)->kprri_register (nalif, &router->kpr_arg); - if (rc != 0) - router->kpr_interface = NULL; - - PORTAL_SYMBOL_PUT (kpr_router_interface); - return (rc); -} - -static inline int -kpr_routing (kpr_router_t *router) -{ - return (router->kpr_interface != NULL); -} - -static inline int -kpr_lookup (kpr_router_t *router, ptl_nid_t nid, int nob, ptl_nid_t *gateway_nid) -{ - if (!kpr_routing (router)) - return (-ENETUNREACH); - - return (router->kpr_interface->kprri_lookup(router->kpr_arg, nid, nob, - gateway_nid)); -} - -static inline void -kpr_fwd_init (kpr_fwd_desc_t *fwd, ptl_nid_t nid, ptl_hdr_t *hdr, - int nob, int niov, ptl_kiov_t *kiov, - kpr_fwd_callback_t callback, void *callback_arg) -{ - fwd->kprfd_target_nid = nid; - fwd->kprfd_gateway_nid = nid; - fwd->kprfd_hdr = hdr; - fwd->kprfd_nob = nob; - fwd->kprfd_niov = niov; - fwd->kprfd_kiov = kiov; - fwd->kprfd_callback = callback; - fwd->kprfd_callback_arg = callback_arg; -} - -static inline void -kpr_fwd_start (kpr_router_t *router, kpr_fwd_desc_t *fwd) -{ - if (!kpr_routing (router)) - fwd->kprfd_callback (fwd->kprfd_callback_arg, -ENETUNREACH); - else - router->kpr_interface->kprri_fwd_start (router->kpr_arg, fwd); -} - -static inline void -kpr_fwd_done (kpr_router_t *router, kpr_fwd_desc_t *fwd, int error) -{ - LASSERT (kpr_routing (router)); - router->kpr_interface->kprri_fwd_done (router->kpr_arg, fwd, error); -} - -static inline void -kpr_notify (kpr_router_t *router, - ptl_nid_t peer, int alive, time_t when) -{ - if (!kpr_routing (router)) - return; - - router->kpr_interface->kprri_notify(router->kpr_arg, peer, alive, when); -} - -static inline void -kpr_shutdown (kpr_router_t *router) -{ - if (kpr_routing (router)) - router->kpr_interface->kprri_shutdown (router->kpr_arg); -} - -static inline void -kpr_deregister (kpr_router_t *router) -{ - if (!kpr_routing (router)) - return; - router->kpr_interface->kprri_deregister (router->kpr_arg); - router->kpr_interface = NULL; -} - -/******************************************************************************/ #ifdef PORTALS_PROFILING #define prof_enum(FOO) PROF__##FOO @@ -634,6 +301,7 @@ extern void kportal_blockallsigs (void); #endif # include # include +# include # include # ifndef DEBUG_SUBSYSTEM # define DEBUG_SUBSYSTEM S_UNDEFINED @@ -650,6 +318,7 @@ extern void kportal_blockallsigs (void); # define printk(format, args...) printf (format, ## args) # define PORTAL_ALLOC(ptr, size) do { (ptr) = malloc(size); } while (0); # define PORTAL_FREE(a, b) do { free(a); } while (0); +void portals_debug_dumplog(void); # define portals_debug_msg(subsys, mask, file, fn, line, stack, format, a...) \ printf("%02x:%06x (@%lu %s:%s,l. %d %d %lu): " format, \ (subsys), (mask), (long)time(0), file, fn, line, \ @@ -766,76 +435,10 @@ struct portals_device_userstate * USER LEVEL STUFF BELOW */ -#define PORTALS_CFG_VERSION 0x00010001; - -struct portals_cfg { - __u32 pcfg_version; - __u32 pcfg_command; - - __u32 pcfg_nal; - __u32 pcfg_flags; - - __u32 pcfg_gw_nal; - __u64 pcfg_nid; - __u64 pcfg_nid2; - __u64 pcfg_nid3; - __u32 pcfg_id; - __u32 pcfg_misc; - __u32 pcfg_fd; - __u32 pcfg_count; - __u32 pcfg_size; - __u32 pcfg_wait; - - __u32 pcfg_plen1; /* buffers in userspace */ - char *pcfg_pbuf1; - __u32 pcfg_plen2; /* buffers in userspace */ - char *pcfg_pbuf2; -}; - -#define PCFG_INIT(pcfg, cmd) \ -do { \ - memset(&pcfg, 0, sizeof(pcfg)); \ - pcfg.pcfg_version = PORTALS_CFG_VERSION; \ - pcfg.pcfg_command = (cmd); \ - \ -} while (0) - #define PORTAL_IOCTL_VERSION 0x00010007 #define PING_SYNC 0 #define PING_ASYNC 1 -struct portal_ioctl_data { - __u32 ioc_len; - __u32 ioc_version; - __u64 ioc_nid; - __u64 ioc_nid2; - __u64 ioc_nid3; - __u32 ioc_count; - __u32 ioc_nal; - __u32 ioc_nal_cmd; - __u32 ioc_fd; - __u32 ioc_id; - - __u32 ioc_flags; - __u32 ioc_size; - - __u32 ioc_wait; - __u32 ioc_timeout; - __u32 ioc_misc; - - __u32 ioc_inllen1; - char *ioc_inlbuf1; - __u32 ioc_inllen2; - char *ioc_inlbuf2; - - __u32 ioc_plen1; /* buffers in userspace */ - char *ioc_pbuf1; - __u32 ioc_plen2; /* buffers in userspace */ - char *ioc_pbuf2; - - char ioc_bulk[0]; -}; - struct portal_ioctl_hdr { __u32 ioc_len; __u32 ioc_version; @@ -1051,7 +654,7 @@ extern ptl_handle_ni_t kibnal_ni; extern ptl_handle_ni_t kscimacnal_ni; #endif -#define PTL_NALFMT_SIZE 16 +#define PTL_NALFMT_SIZE 26 /* %u:%u.%u.%u.%u (10+4+4+4+3+1) */ #define NAL_MAX_NR (NAL_ENUM_END_MARKER - 1) @@ -1082,7 +685,6 @@ struct lustre_peer { ptl_handle_ni_t peer_ni; }; - /* module.c */ typedef int (*nal_cmd_handler_t)(struct portals_cfg *, void * private); int kportal_nal_register(int nal, nal_cmd_handler_t handler, void * private); diff --git a/lnet/include/linux/kpr.h b/lnet/include/linux/kpr.h index 51d2d2f..ee50b59 100644 --- a/lnet/include/linux/kpr.h +++ b/lnet/include/linux/kpr.h @@ -1,6 +1,6 @@ /* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*- - * vim:expandtab:shiftwidth=8:tabstop=8: - */ + * * vim:expandtab:shiftwidth=8:tabstop=8: + * */ #ifndef _KPR_H #define _KPR_H @@ -81,6 +81,21 @@ typedef struct { void *kpr_arg; } kpr_router_t; +/* Router's control interface (Kernel Portals Routing Control Interface) */ +typedef const struct { + int (*kprci_add_route)(int gateway_nal, ptl_nid_t gateway_nid, + ptl_nid_t lo_nid, ptl_nid_t hi_nid); + int (*kprci_del_route)(int gateway_nal, ptl_nid_t gateway_nid, + ptl_nid_t lo_nid, ptl_nid_t hi_nid); + int (*kprci_get_route)(int index, int *gateway_nal, + ptl_nid_t *gateway, + ptl_nid_t *lo_nid, ptl_nid_t *hi_nid, + int *alive); + int (*kprci_notify)(int gateway_nal, ptl_nid_t gateway_nid, + int alive, time_t when); +} kpr_control_interface_t; + +extern kpr_control_interface_t kpr_control_interface; extern kpr_router_interface_t kpr_router_interface; static inline int diff --git a/lnet/include/linux/libcfs.h b/lnet/include/linux/libcfs.h index 99d3877..efdc8fe 100644 --- a/lnet/include/linux/libcfs.h +++ b/lnet/include/linux/libcfs.h @@ -6,28 +6,6 @@ #define PORTAL_DEBUG -#ifdef __linux__ -# include -# if defined(__powerpc__) && !defined(__KERNEL__) -# define __KERNEL__ -# include -# undef __KERNEL__ -# else -# include -# endif -#else -# include -typedef u_int32_t __u32; -typedef u_int64_t __u64; -#endif - -#ifdef __KERNEL__ -# include -#else -# include -# define do_gettimeofday(tv) gettimeofday(tv, NULL); -#endif - #ifndef offsetof # define offsetof(typ,memb) ((int)((char *)&(((typ *)0)->memb))) #endif @@ -220,11 +198,6 @@ do { \ \ } while (0) -typedef int (nal_cmd_handler_fn)(struct portals_cfg *, void *); -int libcfs_nal_cmd_register(int nal, nal_cmd_handler_fn *handler, void *arg); -int libcfs_nal_cmd(struct portals_cfg *pcfg); -void libcfs_nal_cmd_unregister(int nal); - struct portal_ioctl_data { __u32 ioc_len; __u32 ioc_version; @@ -257,7 +230,6 @@ struct portal_ioctl_data { char ioc_bulk[0]; }; - #ifdef __KERNEL__ #include diff --git a/lnet/include/linux/portals_compat25.h b/lnet/include/linux/portals_compat25.h index 43618589..9ab4020 100644 --- a/lnet/include/linux/portals_compat25.h +++ b/lnet/include/linux/portals_compat25.h @@ -40,6 +40,9 @@ # define RECALC_SIGPENDING recalc_sigpending() # define CURRENT_SECONDS CURRENT_TIME +# define kernel_text_address(addr) is_kernel_text_address(addr) +extern int is_kernel_text_address(unsigned long addr); + #else /* 2.4.x */ # define SIGNAL_MASK_LOCK(task, flags) \ @@ -51,17 +54,30 @@ # define RECALC_SIGPENDING recalc_sigpending(current) # define CURRENT_SECONDS CURRENT_TIME +# define kernel_text_address(addr) is_kernel_text_address(addr) +extern int is_kernel_text_address(unsigned long addr); + #endif #if defined(__arch_um__) && (LINUX_VERSION_CODE < KERNEL_VERSION(2,4,20)) -# define THREAD_NAME(comm, fmt, a...) \ - sprintf(comm, fmt "|%d", ## a, current->thread.extern_pid) +# define THREAD_NAME(comm, len, fmt, a...) \ + snprintf(comm, len, fmt "|%d", ## a, current->thread.extern_pid) #elif defined(__arch_um__) && (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)) -# define THREAD_NAME(comm, fmt, a...) \ - sprintf(comm, fmt "|%d", ## a, current->thread.mode.tt.extern_pid) +# define THREAD_NAME(comm, len, fmt, a...) \ + snprintf(comm, len,fmt"|%d", ## a,current->thread.mode.tt.extern_pid) +#else +# define THREAD_NAME(comm, len, fmt, a...) \ + snprintf(comm, len, fmt, ## a) +#endif + +#ifdef HAVE_PAGE_LIST +/* 2.4 alloc_page users can use page->list */ +#define PAGE_LIST_ENTRY list +#define PAGE_LIST(page) ((page)->list) #else -# define THREAD_NAME(comm, fmt, a...) \ - sprintf(comm, fmt, ## a) +/* 2.6 alloc_page users can use page->lru */ +#define PAGE_LIST_ENTRY lru +#define PAGE_LIST(page) ((page)->lru) #endif #endif /* _PORTALS_COMPAT_H */ diff --git a/lnet/include/lnet/Makefile.am b/lnet/include/lnet/Makefile.am deleted file mode 100644 index c61b084..0000000 --- a/lnet/include/lnet/Makefile.am +++ /dev/null @@ -1,10 +0,0 @@ -# Copyright (C) 2001 Cluster File Systems, Inc. -# -# This code is issued under the GNU General Public License. -# See the file COPYING in this distribution - -SUBDIRS = base -include $(top_srcdir)/Rules - -pkginclude_HEADERS=api-support.h api.h arg-blocks.h defines.h errno.h internal.h lib-dispatch.h lib-nal.h lib-p30.h lib-types.h myrnal.h nal.h p30.h ppid.h ptlctl.h stringtab.h types.h nalids.h list.h bridge.h ipmap.h procbridge.h lltrace.h - diff --git a/lnet/include/lnet/lib-lnet.h b/lnet/include/lnet/lib-lnet.h index e9e4635..b1a6e04 100644 --- a/lnet/include/lnet/lib-lnet.h +++ b/lnet/include/lnet/lib-lnet.h @@ -245,10 +245,14 @@ lib_me_free(nal_cb_t *nal, lib_me_t *me) static inline lib_msg_t * lib_msg_alloc(nal_cb_t *nal) { - /* NEVER called with statelock held */ + /* NEVER called with statelock held; may be in interrupt... */ lib_msg_t *msg; - PORTAL_ALLOC(msg, sizeof(*msg)); + if (in_interrupt()) + PORTAL_ALLOC_ATOMIC(msg, sizeof(*msg)); + else + PORTAL_ALLOC(msg, sizeof(*msg)); + if (msg != NULL) { /* NULL pointers, clear flags etc */ memset (msg, 0, sizeof (*msg)); diff --git a/lnet/include/lnet/lib-p30.h b/lnet/include/lnet/lib-p30.h index e9e4635..b1a6e04 100644 --- a/lnet/include/lnet/lib-p30.h +++ b/lnet/include/lnet/lib-p30.h @@ -245,10 +245,14 @@ lib_me_free(nal_cb_t *nal, lib_me_t *me) static inline lib_msg_t * lib_msg_alloc(nal_cb_t *nal) { - /* NEVER called with statelock held */ + /* NEVER called with statelock held; may be in interrupt... */ lib_msg_t *msg; - PORTAL_ALLOC(msg, sizeof(*msg)); + if (in_interrupt()) + PORTAL_ALLOC_ATOMIC(msg, sizeof(*msg)); + else + PORTAL_ALLOC(msg, sizeof(*msg)); + if (msg != NULL) { /* NULL pointers, clear flags etc */ memset (msg, 0, sizeof (*msg)); diff --git a/lnet/klnds/.cvsignore b/lnet/klnds/.cvsignore index 89a4aa6..f5fd0b0 100644 --- a/lnet/klnds/.cvsignore +++ b/lnet/klnds/.cvsignore @@ -1,3 +1,5 @@ Makefile -Makefile.in -.*.o.cmd +autoMakefile +autoMakefile.in +.*.cmd +.depend diff --git a/lnet/klnds/Makefile.am b/lnet/klnds/Makefile.am deleted file mode 100644 index df6ee5c..0000000 --- a/lnet/klnds/Makefile.am +++ /dev/null @@ -1,7 +0,0 @@ -# Copyright (C) 2001 Cluster File Systems, Inc. -# -# This code is issued under the GNU General Public License. -# See the file COPYING in this distribution - -DIST_SUBDIRS= socknal qswnal gmnal scimacnal ibnal -SUBDIRS= socknal @QSWNAL@ @GMNAL@ @SCIMACNAL@ @IBNAL@ diff --git a/lnet/klnds/gmlnd/.cvsignore b/lnet/klnds/gmlnd/.cvsignore index e995588..642e2e6 100644 --- a/lnet/klnds/gmlnd/.cvsignore +++ b/lnet/klnds/gmlnd/.cvsignore @@ -1,3 +1,10 @@ .deps Makefile -Makefile.in +autoMakefile.in +autoMakefile +*.ko +*.mod.c +.*.cmd +.*.flags +.tmp_versions +.depend diff --git a/lnet/klnds/gmlnd/Makefile.am b/lnet/klnds/gmlnd/Makefile.am deleted file mode 100644 index bac4680..0000000 --- a/lnet/klnds/gmlnd/Makefile.am +++ /dev/null @@ -1,13 +0,0 @@ -# Copyright (C) 2001 Cluster File Systems, Inc. -# -# This code is issued under the GNU General Public License. -# See the file COPYING in this distribution - -include ../../Rules.linux - -MODULE = kgmnal -modulenet_DATA = kgmnal.o -EXTRA_PROGRAMS = kgmnal - -DEFS = -DGM_KERNEL -kgmnal_SOURCES = gmnal.h gmnal_api.c gmnal_cb.c gmnal_comm.c gmnal_utils.c gmnal_module.c diff --git a/lnet/klnds/iblnd/.cvsignore b/lnet/klnds/iblnd/.cvsignore index e995588..48b17e9 100644 --- a/lnet/klnds/iblnd/.cvsignore +++ b/lnet/klnds/iblnd/.cvsignore @@ -1,3 +1,10 @@ .deps Makefile -Makefile.in +autoMakefile.in +autoMakefile +*.ko +*.mod.c +.*.flags +.*.cmd +.tmp_versions +.depend diff --git a/lnet/klnds/iblnd/Makefile.am b/lnet/klnds/iblnd/Makefile.am deleted file mode 100644 index 84818dc..0000000 --- a/lnet/klnds/iblnd/Makefile.am +++ /dev/null @@ -1,10 +0,0 @@ -include ../../Rules.linux - -MODULE = kibnal -modulenet_DATA = kibnal.o -EXTRA_PROGRAMS = kibnal - - -DEFS = -CPPFLAGS=@CPPFLAGS@ @with_ib@ -kibnal_SOURCES = ibnal.h ibnal.c ibnal_cb.c diff --git a/lnet/klnds/iblnd/ibnal.h b/lnet/klnds/iblnd/ibnal.h index ff5aeb3..4a1f0d7 100644 --- a/lnet/klnds/iblnd/ibnal.h +++ b/lnet/klnds/iblnd/ibnal.h @@ -29,6 +29,7 @@ #include #include #include +#include // Infiniband VAPI/EVAPI header files // Mellanox MT23108 VAPI diff --git a/lnet/klnds/qswlnd/.cvsignore b/lnet/klnds/qswlnd/.cvsignore index e995588..48b17e9 100644 --- a/lnet/klnds/qswlnd/.cvsignore +++ b/lnet/klnds/qswlnd/.cvsignore @@ -1,3 +1,10 @@ .deps Makefile -Makefile.in +autoMakefile.in +autoMakefile +*.ko +*.mod.c +.*.flags +.*.cmd +.tmp_versions +.depend diff --git a/lnet/klnds/qswlnd/Makefile.am b/lnet/klnds/qswlnd/Makefile.am deleted file mode 100644 index 3eb4dd5..0000000 --- a/lnet/klnds/qswlnd/Makefile.am +++ /dev/null @@ -1,17 +0,0 @@ -# Copyright (C) 2001 Cluster File Systems, Inc. -# -# This code is issued under the GNU General Public License. -# See the file COPYING in this distribution - -include ../../Rules.linux - -MODULE = kqswnal -modulenet_DATA = kqswnal.o -EXTRA_PROGRAMS = kqswnal - - -#CFLAGS:= @KCFLAGS@ -#CPPFLAGS:=@KCPPFLAGS@ -DEFS = -CPPFLAGS=@CPPFLAGS@ @with_quadrics@ -kqswnal_SOURCES = qswnal.c qswnal_cb.c qswnal.h diff --git a/lnet/klnds/qswlnd/qswlnd.h b/lnet/klnds/qswlnd/qswlnd.h index 5ebf30a..bedc6e0 100644 --- a/lnet/klnds/qswlnd/qswlnd.h +++ b/lnet/klnds/qswlnd/qswlnd.h @@ -71,8 +71,10 @@ #define DEBUG_SUBSYSTEM S_QSWNAL #include +#include #include #include +#include #define KQSW_CHECKSUM 0 #if KQSW_CHECKSUM diff --git a/lnet/klnds/qswlnd/qswlnd_cb.c b/lnet/klnds/qswlnd/qswlnd_cb.c index 157dc70..731357e 100644 --- a/lnet/klnds/qswlnd/qswlnd_cb.c +++ b/lnet/klnds/qswlnd/qswlnd_cb.c @@ -85,6 +85,9 @@ kqswnal_printf (nal_cb_t * nal, const char *fmt, ...) CDEBUG (D_NET, "%s", msg); } +#if (defined(CONFIG_SPARC32) || defined(CONFIG_SPARC64)) +# error "Can't save/restore irq contexts in different procedures" +#endif static void kqswnal_cli(nal_cb_t *nal, unsigned long *flags) diff --git a/lnet/klnds/scimaclnd/.cvsignore b/lnet/klnds/scimaclnd/.cvsignore index e995588..48b17e9 100644 --- a/lnet/klnds/scimaclnd/.cvsignore +++ b/lnet/klnds/scimaclnd/.cvsignore @@ -1,3 +1,10 @@ .deps Makefile -Makefile.in +autoMakefile.in +autoMakefile +*.ko +*.mod.c +.*.flags +.*.cmd +.tmp_versions +.depend diff --git a/lnet/klnds/scimaclnd/Makefile.am b/lnet/klnds/scimaclnd/Makefile.am deleted file mode 100644 index 6da31f0..0000000 --- a/lnet/klnds/scimaclnd/Makefile.am +++ /dev/null @@ -1,11 +0,0 @@ -# This code is issued under the GNU General Public License. -# See the file COPYING in this distribution - -include ../../Rules.linux - -MODULE = kscimacnal -modulenet_DATA = kscimacnal.o -EXTRA_PROGRAMS = kscimacnal - -DEFS = -kscimacnal_SOURCES = scimacnal.c scimacnal_cb.c scimacnal.h diff --git a/lnet/klnds/scimaclnd/scimacnal.h b/lnet/klnds/scimaclnd/scimacnal.h index 6949557..f132769 100644 --- a/lnet/klnds/scimaclnd/scimacnal.h +++ b/lnet/klnds/scimaclnd/scimacnal.h @@ -34,6 +34,7 @@ #define DEBUG_SUBSYSTEM S_UNDEFINED #include +#include #include #include diff --git a/lnet/klnds/socklnd/.cvsignore b/lnet/klnds/socklnd/.cvsignore index 95973d6..5ed596b 100644 --- a/lnet/klnds/socklnd/.cvsignore +++ b/lnet/klnds/socklnd/.cvsignore @@ -1,4 +1,10 @@ .deps Makefile -Makefile.in -.*.o.cmd +.*.cmd +autoMakefile.in +autoMakefile +*.ko +*.mod.c +.*.flags +.tmp_versions +.depend diff --git a/lnet/klnds/socklnd/Makefile.am b/lnet/klnds/socklnd/Makefile.am deleted file mode 100644 index acdba5e..0000000 --- a/lnet/klnds/socklnd/Makefile.am +++ /dev/null @@ -1,17 +0,0 @@ -# Copyright (C) 2001 Cluster File Systems, Inc. -# -# This code is issued under the GNU General Public License. -# See the file COPYING in this distribution - -include ../../Rules.linux - -MODULE = ksocknal -modulenet_DATA = ksocknal.o -EXTRA_PROGRAMS = ksocknal - -# If you don't build with -O2, your modules won't insert, becahse htonl is -# just special that way. -AM_CFLAGS = -O2 - -DEFS = -ksocknal_SOURCES = socknal.c socknal_cb.c socknal.h diff --git a/lnet/klnds/socklnd/socklnd.h b/lnet/klnds/socklnd/socklnd.h index a768ae5..194ac98 100644 --- a/lnet/klnds/socklnd/socklnd.h +++ b/lnet/klnds/socklnd/socklnd.h @@ -61,8 +61,10 @@ #include #include +#include #include #include +#include #include #if CONFIG_SMP @@ -105,6 +107,9 @@ # define sk_prot prot # define sk_sndbuf sndbuf # define sk_socket socket +#endif + +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0)) # define sk_wmem_queued wmem_queued #endif diff --git a/lnet/klnds/socklnd/socklnd_cb.c b/lnet/klnds/socklnd/socklnd_cb.c index c89e20e..f02cbda 100644 --- a/lnet/klnds/socklnd/socklnd_cb.c +++ b/lnet/klnds/socklnd/socklnd_cb.c @@ -24,6 +24,9 @@ */ #include "socknal.h" +#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,5,0)) +# include +#endif /* * LIB functions follow @@ -90,6 +93,8 @@ ksocknal_cli(nal_cb_t *nal, unsigned long *flags) { ksock_nal_data_t *data = nal->nal_data; + /* OK to ignore 'flags'; we're only ever serialise threads and + * never need to lock out interrupts */ spin_lock(&data->ksnd_nal_cb_lock); } diff --git a/lnet/libcfs/.cvsignore b/lnet/libcfs/.cvsignore index 7fa686f..df12db6 100644 --- a/lnet/libcfs/.cvsignore +++ b/lnet/libcfs/.cvsignore @@ -1,5 +1,12 @@ .deps Makefile -Makefile.in link-stamp -.*.o.cmd +.*.cmd +autoMakefile.in +autoMakefile +sources +*.ko +*.mod.c +.*.flags +.tmp_versions +.depend diff --git a/lnet/libcfs/Makefile.am b/lnet/libcfs/Makefile.am deleted file mode 100644 index cf9220b..0000000 --- a/lnet/libcfs/Makefile.am +++ /dev/null @@ -1,29 +0,0 @@ -# Copyright (C) 2001, 2002 Cluster File Systems, Inc. -# -# This code is issued under the GNU General Public License. -# See the file COPYING in this distribution - - -MODULE = portals -modulenet_DATA = portals.o -EXTRA_PROGRAMS = portals - -LIBLINKS := lib-dispatch.c lib-eq.c lib-init.c lib-md.c lib-me.c lib-move.c lib-msg.c lib-ni.c lib-pid.c -APILINKS := api-eq.c api-errno.c api-init.c api-me.c api-ni.c api-wrap.c -LINKS = $(APILINKS) $(LIBLINKS) -DISTCLEANFILES = $(LINKS) link-stamp *.orig *.rej - -$(LINKS): link-stamp -link-stamp: - -list='$(LIBLINKS)'; for f in $$list; do echo $$f ; ln -sf $(srcdir)/../portals/$$f .; done - -list='$(APILINKS)'; for f in $$list; do echo $$f ; ln -sf $(srcdir)/../portals/$$f .; done - echo timestamp > link-stamp - -DEFS = -portals_SOURCES = $(LINKS) module.c proc.c debug.c lwt.c - -# Don't distribute any patched files. -dist-hook: - list='$(EXT2C)'; for f in $$list; do rm -f $(distdir)/$$f; done - -include ../Rules.linux diff --git a/lnet/libcfs/Makefile.in b/lnet/libcfs/Makefile.in index 6f9c981..5d2688e 100644 --- a/lnet/libcfs/Makefile.in +++ b/lnet/libcfs/Makefile.in @@ -1,4 +1,9 @@ -MODULES = libcfs +MODULES = portals libcfs-objs := debug.o lwt.o module.o proc.o +api-sources := $(wildcard @LUSTRE@/portals/portals/api-*.c) +lib-sources := $(wildcard @LUSTRE@/portals/portals/lib-*.c) + +portals-objs += $(libcfs-objs) $(patsubst %.c,%.o,$(notdir $(api-sources) $(lib-sources))) + @INCLUDE_RULES@ diff --git a/lnet/libcfs/autoMakefile.am b/lnet/libcfs/autoMakefile.am index 192c3ef..50adb3f 100644 --- a/lnet/libcfs/autoMakefile.am +++ b/lnet/libcfs/autoMakefile.am @@ -4,8 +4,17 @@ # See the file COPYING in this distribution if MODULES -modulenet_DATA := libcfs$(KMODEXT) +modulenet_DATA := portals$(KMODEXT) endif +sources: + rm -f sources + @for i in $(api-sources) $(lib-sources) ; do \ + echo ln -sf $$i . ; \ + ln -sf $$i . || exit 1 ; \ + done + touch sources + MOSTLYCLEANFILES = *.o *.ko *.mod.c -DIST_SOURCES = $(libcfs-objs:%.o=%.c) +CLEANFILES = sources lib-*.c api-*.c +DIST_SOURCES = $(portals-objs:%.o=%.c) diff --git a/lnet/libcfs/debug.c b/lnet/libcfs/debug.c index 538b7a2..a9c1adc 100644 --- a/lnet/libcfs/debug.c +++ b/lnet/libcfs/debug.c @@ -45,11 +45,39 @@ #include #include #include +#include # define DEBUG_SUBSYSTEM S_PORTALS #include #include +#include + +#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,5,0)) +#include +#endif + +unsigned int portal_subsystem_debug = ~0 - (S_PORTALS | S_QSWNAL | S_SOCKNAL | + S_GMNAL | S_IBNAL); +EXPORT_SYMBOL(portal_subsystem_debug); + +unsigned int portal_debug = (D_WARNING | D_DLMTRACE | D_ERROR | D_EMERG | D_HA | + D_RPCTRACE | D_VFSTRACE); +EXPORT_SYMBOL(portal_debug); + +unsigned int portal_cerror = 1; +EXPORT_SYMBOL(portal_cerror); + +unsigned int portal_printk; +EXPORT_SYMBOL(portal_printk); + +unsigned int portal_stack; +EXPORT_SYMBOL(portal_stack); + +#ifdef __KERNEL__ +atomic_t portal_kmemory = ATOMIC_INIT(0); +EXPORT_SYMBOL(portal_kmemory); +#endif #define DEBUG_OVERFLOW 1024 static char *debug_buf = NULL; @@ -671,7 +699,7 @@ __s32 portals_debug_copy_to_user(char *buf, unsigned long len) rc = -ENOMEM; goto cleanup; } - list_add(&page->list, &my_pages); + list_add(&PAGE_LIST(page), &my_pages); } spin_lock_irqsave(&portals_debug_lock, flags); @@ -696,7 +724,7 @@ __s32 portals_debug_copy_to_user(char *buf, unsigned long len) unsigned long to_copy; void *addr; - page = list_entry(pos, struct page, list); + page = list_entry(pos, struct page, PAGE_LIST_ENTRY); to_copy = min(total - off, PAGE_SIZE); if (to_copy == 0) { off = 0; @@ -725,7 +753,7 @@ finish_partial: off = 0; list_for_each(pos, &my_pages) { unsigned long to_copy; - page = list_entry(pos, struct page, list); + page = list_entry(pos, struct page, PAGE_LIST_ENTRY); to_copy = min(copied - off, PAGE_SIZE); rc = copy_to_user(buf + off, kmap(page), to_copy); @@ -742,8 +770,8 @@ finish_partial: cleanup: list_for_each_safe(pos, n, &my_pages) { - page = list_entry(pos, struct page, list); - list_del(&page->list); + page = list_entry(pos, struct page, PAGE_LIST_ENTRY); + list_del(&PAGE_LIST(page)); __free_page(page); } return rc; @@ -934,20 +962,26 @@ void portals_run_lbug_upcall(char *file, const char *fn, const int line) char *portals_nid2str(int nal, ptl_nid_t nid, char *str) { switch(nal){ +/* XXX this could be a nal method of some sort, 'cept it's config + * dependent whether (say) socknal NIDs are actually IP addresses... */ +#ifndef CRAY_PORTALS case TCPNAL: /* userspace NAL */ case SOCKNAL: - sprintf(str, "%u:%d.%d.%d.%d", (__u32)(nid >> 32), - HIPQUAD(nid)); + snprintf(str, PTL_NALFMT_SIZE - 1, "%u:%u.%u.%u.%u", + (__u32)(nid >> 32), HIPQUAD(nid)); break; case QSWNAL: case GMNAL: case IBNAL: case SCIMACNAL: - sprintf(str, "%u:%u", (__u32)(nid >> 32), (__u32)nid); + snprintf(str, PTL_NALFMT_SIZE - 1, "%u:%u", + (__u32)(nid >> 32), (__u32)nid); break; +#endif default: - return NULL; + snprintf(str, PTL_NALFMT_SIZE - 1, "?%d? %llx", + nal, (long long)nid); } return str; } @@ -958,8 +992,6 @@ spinlock_t stack_backtrace_lock = SPIN_LOCK_UNLOCKED; #if defined(__arch_um__) -extern int is_kernel_text_address(unsigned long addr); - char *portals_debug_dumpstack(void) { asm("int $3"); @@ -968,33 +1000,45 @@ char *portals_debug_dumpstack(void) #elif defined(__i386__) -extern int is_kernel_text_address(unsigned long addr); +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)) extern int lookup_symbol(unsigned long address, char *buf, int buflen); +const char *kallsyms_lookup(unsigned long addr, + unsigned long *symbolsize, + unsigned long *offset, + char **modname, char *namebuf) +{ + int rc = lookup_symbol(addr, namebuf, 128); + if (rc == -ENOSYS) + return NULL; + return namebuf; +} +#endif char *portals_debug_dumpstack(void) { - unsigned long esp = current->thread.esp; + unsigned long esp = current->thread.esp, addr; unsigned long *stack = (unsigned long *)&esp; + char *buf = stack_backtrace, *pbuf = buf; int size; - unsigned long addr; - char *buf = stack_backtrace; - char *pbuf = buf; - static char buffer[512]; - int rc = 0; /* User space on another CPU? */ - if ((esp ^ (unsigned long)current) & (PAGE_MASK<<1)){ + if ((esp ^ (unsigned long)current) & (PAGE_MASK << 1)){ buf[0] = '\0'; goto out; } size = sprintf(pbuf, " Call Trace: "); pbuf += size; - while (((long) stack & (THREAD_SIZE-1)) != 0) { + while (((long) stack & (THREAD_SIZE - 1)) != 0) { addr = *stack++; - if (is_kernel_text_address(addr)) { - rc = lookup_symbol(addr, buffer, 512); - if (rc == -ENOSYS) { + if (kernel_text_address(addr)) { + const char *sym_name; + char *modname, buffer[128]; + unsigned long junk, offset; + + sym_name = kallsyms_lookup(addr, &junk, &offset, + &modname, buffer); + if (sym_name == NULL) { if (buf + LUSTRE_TRACE_SIZE <= pbuf + 12) break; size = sprintf(pbuf, "[<%08lx>] ", addr); @@ -1004,7 +1048,7 @@ char *portals_debug_dumpstack(void) <= pbuf + strlen(buffer) + 28 + 1) break; size = sprintf(pbuf, "([<%08lx>] %s (0x%p)) ", - addr, buffer, stack-1); + addr, buffer, stack - 1); } pbuf += size; } diff --git a/lnet/libcfs/module.c b/lnet/libcfs/module.c index 2f5a852..f46c855 100644 --- a/lnet/libcfs/module.c +++ b/lnet/libcfs/module.c @@ -47,6 +47,7 @@ #include #include #include +#include #include #define PORTAL_MINOR 240 @@ -59,7 +60,7 @@ struct nal_cmd_handler { }; static struct nal_cmd_handler nal_cmd[NAL_MAX_NR + 1]; -struct semaphore nal_cmd_sem; +static DECLARE_MUTEX(nal_cmd_sem); #ifdef PORTAL_DEBUG void kportal_assertion_failed(char *expr, char *file, const char *func, @@ -799,11 +800,6 @@ EXPORT_SYMBOL(PtlFini); EXPORT_SYMBOL(PtlPut); EXPORT_SYMBOL(PtlGet); EXPORT_SYMBOL(ptl_err_str); -EXPORT_SYMBOL(portal_subsystem_debug); -EXPORT_SYMBOL(portal_debug); -EXPORT_SYMBOL(portal_stack); -EXPORT_SYMBOL(portal_printk); -EXPORT_SYMBOL(portal_cerror); EXPORT_SYMBOL(PtlEQWait); EXPORT_SYMBOL(PtlEQFree); EXPORT_SYMBOL(PtlEQGet); @@ -822,13 +818,12 @@ EXPORT_SYMBOL(lib_parse); EXPORT_SYMBOL(lib_fake_reply_msg); EXPORT_SYMBOL(lib_init); EXPORT_SYMBOL(lib_fini); -EXPORT_SYMBOL(portal_kmemory); +EXPORT_SYMBOL(dispatch_name); EXPORT_SYMBOL(kportal_daemonize); EXPORT_SYMBOL(kportal_blockallsigs); EXPORT_SYMBOL(kportal_nal_register); EXPORT_SYMBOL(kportal_nal_unregister); EXPORT_SYMBOL(kportal_assertion_failed); -EXPORT_SYMBOL(dispatch_name); EXPORT_SYMBOL(kportal_get_ni); EXPORT_SYMBOL(kportal_put_ni); EXPORT_SYMBOL(kportal_nal_cmd); diff --git a/lnet/lnet/.cvsignore b/lnet/lnet/.cvsignore index 95973d6..5ed596b 100644 --- a/lnet/lnet/.cvsignore +++ b/lnet/lnet/.cvsignore @@ -1,4 +1,10 @@ .deps Makefile -Makefile.in -.*.o.cmd +.*.cmd +autoMakefile.in +autoMakefile +*.ko +*.mod.c +.*.flags +.tmp_versions +.depend diff --git a/lnet/lnet/Makefile.am b/lnet/lnet/Makefile.am deleted file mode 100644 index d17db61..0000000 --- a/lnet/lnet/Makefile.am +++ /dev/null @@ -1,14 +0,0 @@ -# Copyright (C) 2002 Cluster File Systems, Inc. -# -# This code is issued under the GNU General Public License. -# See the file COPYING in this distribution - - -CPPFLAGS= -INCLUDES=-I$(top_srcdir)/portals/include -I$(top_srcdir)/include -noinst_LIBRARIES= libportals.a -libportals_a_SOURCES= api-eq.c api-init.c api-me.c api-errno.c api-ni.c api-wrap.c lib-dispatch.c lib-init.c lib-me.c lib-msg.c lib-eq.c lib-md.c lib-move.c lib-ni.c lib-pid.c - -if LIBLUSTRE -libportals_a_CFLAGS= -fPIC -endif diff --git a/lnet/lnet/Makefile.in b/lnet/lnet/Makefile.in index 6ce334b..71067ac 100644 --- a/lnet/lnet/Makefile.in +++ b/lnet/lnet/Makefile.in @@ -1,6 +1,6 @@ -MODULES := portals -portals-objs := api-eq.o api-init.o api-me.o api-errno.o api-ni.o api-wrap.o -portals-objs += lib-dispatch.o lib-init.o lib-me.o lib-msg.o lib-eq.o lib-md.o -portals-objs += lib-move.o lib-ni.o lib-pid.o module.o +#MODULES := portals +#portals-objs := api-eq.o api-init.o api-me.o api-errno.o api-ni.o api-wrap.o +#portals-objs += lib-dispatch.o lib-init.o lib-me.o lib-msg.o lib-eq.o lib-md.o +#portals-objs += lib-move.o lib-ni.o lib-pid.o @INCLUDE_RULES@ diff --git a/lnet/lnet/Makefile.mk b/lnet/lnet/Makefile.mk index 7822846..de01765 100644 --- a/lnet/lnet/Makefile.mk +++ b/lnet/lnet/Makefile.mk @@ -9,4 +9,4 @@ obj-y += portals.o portals-objs := lib-dispatch.o lib-eq.o lib-init.o lib-md.o lib-me.o \ lib-move.o lib-msg.o lib-ni.o lib-pid.o \ api-eq.o api-errno.o api-init.o api-me.o api-ni.o \ - api-wrap.o + api-wrap.o module.o diff --git a/lnet/lnet/api-init.c b/lnet/lnet/api-init.c index b811391..0a64864 100644 --- a/lnet/lnet/api-init.c +++ b/lnet/lnet/api-init.c @@ -26,17 +26,6 @@ #include int ptl_init; -unsigned int portal_subsystem_debug = ~0 - (S_PORTALS | S_QSWNAL | S_SOCKNAL | - S_GMNAL | S_IBNAL); -unsigned int portal_debug = (D_WARNING | D_DLMTRACE | D_ERROR | D_EMERG | D_HA | - D_RPCTRACE | D_VFSTRACE); -unsigned int portal_cerror = 1; -unsigned int portal_printk; -unsigned int portal_stack; - -#ifdef __KERNEL__ -atomic_t portal_kmemory = ATOMIC_INIT(0); -#endif int __p30_initialized; int __p30_myr_initialized; diff --git a/lnet/lnet/autoMakefile.am b/lnet/lnet/autoMakefile.am index bf7a107..22565dd 100644 --- a/lnet/lnet/autoMakefile.am +++ b/lnet/lnet/autoMakefile.am @@ -16,11 +16,11 @@ libportals_a_CPPFLAGS = $(LLCPPFLAGS) libportals_a_CFLAGS = $(LLCFLAGS) endif -if MODULES -modulenet_DATA = portals$(KMODEXT) -endif # MODULES +#if MODULES +#modulenet_DATA = portals$(KMODEXT) +#endif # MODULES endif # CRAY_PORTALS MOSTLYCLEANFILES = *.o *.ko *.mod.c -DIST_SOURCES = $(portals-objs:%.o=%.c) +#DIST_SOURCES = $(portals-objs:%.o=%.c) diff --git a/lnet/router/.cvsignore b/lnet/router/.cvsignore index 95973d6..5ed596b 100644 --- a/lnet/router/.cvsignore +++ b/lnet/router/.cvsignore @@ -1,4 +1,10 @@ .deps Makefile -Makefile.in -.*.o.cmd +.*.cmd +autoMakefile.in +autoMakefile +*.ko +*.mod.c +.*.flags +.tmp_versions +.depend diff --git a/lnet/router/Makefile.am b/lnet/router/Makefile.am deleted file mode 100644 index 1c8087b..0000000 --- a/lnet/router/Makefile.am +++ /dev/null @@ -1,16 +0,0 @@ -# Copyright (C) 2001 Cluster File Systems, Inc. -# -# This code is issued under the GNU General Public License. -# See the file COPYING in this distribution - -include ../Rules.linux - -MODULE = kptlrouter -modulenet_DATA = kptlrouter.o -EXTRA_PROGRAMS = kptlrouter - - -#CFLAGS:= @KCFLAGS@ -#CPPFLAGS:=@KCPPFLAGS@ -DEFS = -kptlrouter_SOURCES = router.c proc.c router.h diff --git a/lnet/router/router.h b/lnet/router/router.h index ea25439..309025b3 100644 --- a/lnet/router/router.h +++ b/lnet/router/router.h @@ -39,6 +39,7 @@ #define DEBUG_SUBSYSTEM S_PTLROUTER #include +#include #include #include diff --git a/lnet/tests/.cvsignore b/lnet/tests/.cvsignore index d0c4c88..e034130 100644 --- a/lnet/tests/.cvsignore +++ b/lnet/tests/.cvsignore @@ -1,4 +1,10 @@ Makefile -Makefile.in .deps -.*.o.cmd +.*.cmd +autoMakefile.in +autoMakefile +*.ko +*.mod.c +.*.flags +.tmp_versions +.depend diff --git a/lnet/tests/Makefile.am b/lnet/tests/Makefile.am deleted file mode 100644 index 7b47ae0..0000000 --- a/lnet/tests/Makefile.am +++ /dev/null @@ -1,23 +0,0 @@ -# Copyright (C) 2001 Cluster File Systems, Inc. -# -# This code is issued under the GNU General Public License. -# See the file COPYING in this distribution - -include ../Rules.linux - -LDFLAGS = -m "`$(LD) --help | awk '/supported emulations/ {print $$4}'`" -r -LINK = $(LD) $(LDFLAGS) -o $@ -DEFS = -LIBS = -MODULE = $(basename) -EXTRA_DIST = startserver.sh startclient.sh stopserver.sh stopclient.sh - -noinst_PROGRAMS = pingsrv.o pingcli.o spingsrv.o spingcli.o - -pingsrv_o_SOURCES = ping_srv.c ping.h - -pingcli_o_SOURCES = ping_cli.c ping.h - -spingsrv_o_SOURCES = sping_srv.c ping.h - -spingcli_o_SOURCES = sping_cli.c ping.h diff --git a/lnet/ulnds/Makefile.am b/lnet/ulnds/Makefile.am index 6035ca1..4c842a1 100644 --- a/lnet/ulnds/Makefile.am +++ b/lnet/ulnds/Makefile.am @@ -1,9 +1,8 @@ -CPPFLAGS= -INCLUDES=-I$(top_srcdir)/portals/include -I$(top_srcdir)/include -I$(srcdir) +if LIBLUSTRE noinst_LIBRARIES = libtcpnal.a +endif + pkginclude_HEADERS = pqtimer.h dispatch.h table.h timer.h connection.h ipmap.h bridge.h procbridge.h libtcpnal_a_SOURCES = debug.c pqtimer.c select.c table.c pqtimer.h dispatch.h table.h timer.h address.c procapi.c proclib.c connection.c tcpnal.c connection.h - -if LIBLUSTRE -libtcpnal_a_CFLAGS = -fPIC -endif +libtcpnal_a_CPPFLAGS = $(LLCPPFLAGS) +libtcpnal_a_CFLAGS = $(LLCFLAGS) diff --git a/lnet/ulnds/socklnd/Makefile.am b/lnet/ulnds/socklnd/Makefile.am index 6035ca1..4c842a1 100644 --- a/lnet/ulnds/socklnd/Makefile.am +++ b/lnet/ulnds/socklnd/Makefile.am @@ -1,9 +1,8 @@ -CPPFLAGS= -INCLUDES=-I$(top_srcdir)/portals/include -I$(top_srcdir)/include -I$(srcdir) +if LIBLUSTRE noinst_LIBRARIES = libtcpnal.a +endif + pkginclude_HEADERS = pqtimer.h dispatch.h table.h timer.h connection.h ipmap.h bridge.h procbridge.h libtcpnal_a_SOURCES = debug.c pqtimer.c select.c table.c pqtimer.h dispatch.h table.h timer.h address.c procapi.c proclib.c connection.c tcpnal.c connection.h - -if LIBLUSTRE -libtcpnal_a_CFLAGS = -fPIC -endif +libtcpnal_a_CPPFLAGS = $(LLCPPFLAGS) +libtcpnal_a_CFLAGS = $(LLCFLAGS) diff --git a/lnet/utils/Makefile.am b/lnet/utils/Makefile.am index 925406f..15c1774 100644 --- a/lnet/utils/Makefile.am +++ b/lnet/utils/Makefile.am @@ -3,21 +3,21 @@ # This code is issued under the GNU General Public License. # See the file COPYING in this distribution -COMPILE = $(CC) -Wall -g -I$(srcdir)/../include -LINK = $(CC) -o $@ +## $(srcdir)/../ for , ../../ for generated +#COMPILE = $(CC) -Wall -g -I$(srcdir)/../include -I../../include +#LINK = $(CC) -o $@ if LIBLUSTRE - noinst_LIBRARIES = libuptlctl.a libuptlctl_a_SOURCES = portals.c debug.c l_ioctl.c parser.c parser.h -libuptlctl_a_CFLAGS = -fPIC - -else +libuptlctl_a_CPPFLAGS = $(LLCPPFLAGS) +libuptlctl_a_CFLAGS = $(LLCFLAGS) +endif sbin_PROGRAMS = acceptor ptlctl debugctl routerstat wirecheck gmnalnid lib_LIBRARIES = libptlctl.a -acceptor_SOURCES = acceptor.c # -lefence +acceptor_SOURCES = acceptor.c wirecheck_SOURCES = wirecheck.c @@ -34,4 +34,3 @@ debugctl_LDADD = -L. -lptlctl $(LIBREADLINE) $(LIBEFENCE) debugctl_DEPENDENCIES = libptlctl.a routerstat_SOURCES = routerstat.c -endif diff --git a/lnet/utils/acceptor.c b/lnet/utils/acceptor.c index 29b8d1e..f6367d4 100644 --- a/lnet/utils/acceptor.c +++ b/lnet/utils/acceptor.c @@ -11,9 +11,7 @@ #include #include #include -#include #include - #include #include diff --git a/lnet/utils/gmlndnid.c b/lnet/utils/gmlndnid.c index ff6631c..e45fae4 100644 --- a/lnet/utils/gmlndnid.c +++ b/lnet/utils/gmlndnid.c @@ -29,9 +29,7 @@ #include #include #include -#include #include - #include #include diff --git a/lnet/utils/parser.c b/lnet/utils/parser.c index db5292d..82b4022 100644 --- a/lnet/utils/parser.c +++ b/lnet/utils/parser.c @@ -28,12 +28,16 @@ #include #include -#include #ifdef HAVE_LIBREADLINE #define READLINE_LIBRARY #include + +/* completion_matches() is #if 0-ed out in modern glibc */ +#ifndef completion_matches +# define completion_matches rl_completion_matches +#endif #endif -//extern char **completion_matches __P((char *, rl_compentry_func_t *)); + extern void using_history(void); extern void stifle_history(int); extern void add_history(char *); @@ -221,14 +225,15 @@ static char **command_completion(char * text, int start, int end) char * pos; match_tbl = top_level; + for (table = find_cmd(rl_line_buffer, match_tbl, &pos); - table; - table = find_cmd(pos, match_tbl, &pos)) { + table; table = find_cmd(pos, match_tbl, &pos)) + { if (*(pos - 1) == ' ') match_tbl = table->pc_sub_cmd; } - return(completion_matches(text, command_generator)); + return completion_matches(text, command_generator); } #endif diff --git a/lnet/utils/portals.c b/lnet/utils/portals.c index fb031ae..f078099 100644 --- a/lnet/utils/portals.c +++ b/lnet/utils/portals.c @@ -34,7 +34,7 @@ #include #include #include -#include +#include #ifdef __CYGWIN__ @@ -61,7 +61,7 @@ unsigned int portal_debug; unsigned int portal_printk; unsigned int portal_stack; -unsigned int portal_cerror; +unsigned int portal_cerror = 1; static unsigned int g_nal = 0; diff --git a/lustre/.cvsignore b/lustre/.cvsignore index f37e59b..07a5c92 100644 --- a/lustre/.cvsignore +++ b/lustre/.cvsignore @@ -4,9 +4,12 @@ aclocal.m4 config.log config.status config.cache +config.guess +config.sub configure Makefile -Makefile.in +autoMakefile +autoMakefile.in .deps tags TAGS @@ -15,5 +18,13 @@ cscope.files cscope.out autom4te-2.53.cache autom4te.cache -.*.o.cmd +depcomp +compile +.*.cmd .mergeinfo-* +Rules +missing +mkinstalldirs +install-sh +.depend +.tmp_versions diff --git a/lustre/ChangeLog b/lustre/ChangeLog index 6567930..41d8357 100644 --- a/lustre/ChangeLog +++ b/lustre/ChangeLog @@ -15,9 +15,15 @@ tbd Cluster File Systems, Inc. - fix thread race in portals_debug_dumplog() (3122) - create lprocfs device entries at setup instead of at attach (1519) - common AST error handler, don't evict client on completion race (3145) - - check for NULL reply in mdc_close (2410) - * miscellania + - zero nameidata in detach_mnt in 2.6 (3118) + - verify d_inode after revalidate_special is valid in 2.6 (3116) + - use lustre_put_super() to handle zconf unmounts in 2.6 (3064) + - initialize RPC timeout timer earlier for 2.6 (3219) + - don't dereference NULL reply buffer if mdc_close was never sent (2410) + - print nal/nid for unknown nid (3258) + * miscellania - allow default OST striping configuration per directory (1414) + - increase maximum number of MDS request buffers for large systems 2004-03-22 Cluster File Systems, Inc. * version 1.2.1 diff --git a/lustre/Makefile.am b/lustre/Makefile.am deleted file mode 100644 index 045bace5..0000000 --- a/lustre/Makefile.am +++ /dev/null @@ -1,58 +0,0 @@ -# Copyright (C) 2001 Cluster File Systems, Inc. -# -# This code is issued under the GNU General Public License. -# See the file COPYING in this distribution - -AUTOMAKE_OPTIONS = foreign - -if LINUX25 -DIRS24 = -else -DIRS24 = ptlbd -endif - -if LIBLUSTRE -SUBDIRS = portals obdclass lov ptlrpc obdecho osc utils mdc lvfs liblustre -else -SUBDIRS = lvfs portals obdclass include $(DIRS24) mds utils obdfilter mdc osc ost -SUBDIRS+= llite obdecho lov cobd tests doc scripts conf ptlrpc -endif - -if SNAPFS -SUBDIRS+= snapfs -endif - -if SMFS -SUBDIRS += smfs -endif -DIST_SUBDIRS = $(SUBDIRS) liblustre snapfs smfs -EXTRA_DIST = BUGS FDL Rules kernel_patches - -# We get the version from the spec file. -CONFIGURE_DEPENDENCIES = scripts/lustre.spec.in - -dist-hook: - find $(distdir) -name .deps | xargs rm -rf - find $(distdir) -name CVS | xargs rm -rf - -include $(top_srcdir)/Rules - -rpms: dist Makefile - rpmbuild -ta $(distdir).tar.gz - -CSTK=/tmp/checkstack -CSTKO=/tmp/checkstack.orig - -checkstack: - [ -f ${CSTK} -a ! -s ${CSTKO} ] && mv ${CSTK} ${CSTKO} || true - for i in ${SUBDIRS} portals/knals/*; do \ - MOD=$$i/`basename $$i`.o; \ - [ -f $$MOD ] && objdump -d $$MOD | perl tests/checkstack.pl; \ - done | sort -nr > ${CSTK} - [ -f ${CSTKO} ] && ! diff -u ${CSTKO} ${CSTK} || head -30 ${CSTK} - -checkstack-update: - [ -f ${CSTK} ] && mv ${CSTK} ${CSTKO} - -checkstack-clean: - rm -f ${CSTK} ${CSTKO} diff --git a/lustre/Rules b/lustre/Rules deleted file mode 100644 index 8846e3b..0000000 --- a/lustre/Rules +++ /dev/null @@ -1,49 +0,0 @@ -# Copyright (C) 2001 Cluster File Systems, Inc. -# -# This code is issued under the GNU General Public License. -# See the file COPYING in this distribution - -# Build a kernel module, name.o, and install it in $(moduledir) by: -# MODULE = name -# module_DATA = name.o -# EXTRA_PROGRAMS = name -# name_SOURCES = my.c files.c -# include $(top_srcdir)/Rules - -if LINUX25 - -# FIXME -# need to be rewritten: -# - bad hacking in lvfs/Makefile.am obdclass/Makefile.am -# - .o -> .ko -# -basename=$(shell echo $< | sed -e 's/\.c//g' | sed -e 's/-//g' | sed -e 's/\.o//g' | sed -e 's/^.*\///g') -AM_CPPFLAGS=-I$(top_builddir)/include -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -pipe -mpreferred-stack-boundary=2 -DKBUILD_MODNAME=$(MODULE) -DKBUILD_BASENAME=$(basename) - -$(MODULE).o: $($(MODULE)_OBJECTS) $($(MODULE)_DEPENDENCIES) - $(LD) -m $(MOD_LINK) -r -o $(MODULE)_tmp.o $($(MODULE)_OBJECTS) - rm -f $(MODULE)_tmp.c - $(LINUX)/scripts/modpost $(LINUX)/vmlinux $(MODULE)_tmp.o - $(COMPILE) -UKBUILD_BASENAME -DKBUILD_BASENAME=$(MODULE) -c $(MODULE)_tmp.mod.c - $(LD) -m $(MOD_LINK) -r -o $(MODULE).o $(MODULE)_tmp.o $(MODULE)_tmp.mod.o - -else - -AM_CPPFLAGS=-I$(top_builddir)/include -$(MODULE).o: $($(MODULE)_OBJECTS) $($(MODULE)_DEPENDENCIES) - $(LD) -m "`$(LD) --help | awk '/supported emulations/ {print $$4}'`" -r -o $(MODULE).o $($(MODULE)_OBJECTS) - -endif - - -tags: - rm -f $(top_srcdir)/TAGS - ETAGSF=`etags --version | grep -iq exuberant && \ - echo "-I __initdata,__exitdata,EXPORT_SYMBOL"`; \ - find $(top_srcdir) -name '*.[hc]' | xargs etags $$ETAGSF -a - - rm -f $(top_srcdir)/tags - CTAGSF=`ctags --version | grep -iq exuberant && \ - echo "-I __initdata,__exitdata,EXPORT_SYMBOL"`; \ - find $(top_srcdir) -name '*.[hc]' | xargs ctags $$CTAGSF -a - diff --git a/lustre/autoMakefile.am b/lustre/autoMakefile.am index 9b829bf..eedfa39 100644 --- a/lustre/autoMakefile.am +++ b/lustre/autoMakefile.am @@ -32,7 +32,10 @@ endif lvfs-sources: $(MAKE) sources -C lvfs -modules: lustre_build_version $(DEP) $(LDISKFS) lvfs-sources +libcfs-sources: + $(MAKE) sources -C portals/libcfs + +modules: lustre_build_version $(DEP) $(LDISKFS) lvfs-sources libcfs-sources $(MAKE) $(ARCH_UM) -C $(LINUX) -f $(PWD)/kernel-tests/Makefile LUSTRE_LINUX_CONFIG=$(LINUX_CONFIG) SUBDIRS=$(PWD) -o tmp_include_depends -o scripts -o include/config/MARKER $@ lustre_build_version: diff --git a/lustre/autogen.sh b/lustre/autogen.sh index be0d42d..c7588e4 100644 --- a/lustre/autogen.sh +++ b/lustre/autogen.sh @@ -1,5 +1,76 @@ -#!/bin/sh +#!/bin/bash + +# taken from gnome-common/macros2/autogen.sh +compare_versions() { + ch_min_version=$1 + ch_actual_version=$2 + ch_status=0 + IFS="${IFS= }"; ch_save_IFS="$IFS"; IFS="." + set $ch_actual_version + for ch_min in $ch_min_version; do + ch_cur=`echo $1 | sed 's/[^0-9].*$//'`; shift # remove letter suffixes + if [ -z "$ch_min" ]; then break; fi + if [ -z "$ch_cur" ]; then ch_status=1; break; fi + if [ $ch_cur -gt $ch_min ]; then break; fi + if [ $ch_cur -lt $ch_min ]; then ch_status=1; break; fi + done + IFS="$ch_save_IFS" + return $ch_status +} + +error_msg() { + cat >&2 <&2 <&2 </dev/null ; then + error_msg "missing" + fi + version=$($cmd --version | awk "BEGIN { IGNORECASE=1 } /$cmd \(GNU $cmd\)/ { print \$4 }") + echo "found $version" + if ! compare_versions "$required" "$version" ; then + error_msg "too old" + fi +} + +check_version automake "1.7.8" +check_version autoconf "2.57" +echo "Running aclocal..." +aclocal +echo "Running autoheader..." +autoheader +echo "Running automake..." +automake -a -c +echo "Running autoconf..." +autoconf -aclocal && -${AUTOMAKE:-automake} --add-missing && -${AUTOCONF:-autoconf} diff --git a/lustre/cobd/.cvsignore b/lustre/cobd/.cvsignore index e995588..642e2e6 100644 --- a/lustre/cobd/.cvsignore +++ b/lustre/cobd/.cvsignore @@ -1,3 +1,10 @@ .deps Makefile -Makefile.in +autoMakefile.in +autoMakefile +*.ko +*.mod.c +.*.cmd +.*.flags +.tmp_versions +.depend diff --git a/lustre/cobd/Makefile.am b/lustre/cobd/Makefile.am deleted file mode 100644 index 781c6ce..0000000 --- a/lustre/cobd/Makefile.am +++ /dev/null @@ -1,15 +0,0 @@ -# Copyright (C) 2002 Cluster File Systems, Inc. -# -# This code is issued under the GNU General Public License. -# See the file COPYING in this distribution - -DEFS= - -MODULE = cobd -modulefs_DATA = cobd.o -EXTRA_PROGRAMS = cobd -LINX= - -cobd_SOURCES = cache_obd.c lproc_cache.c $(LINX) - -include $(top_srcdir)/Rules diff --git a/lustre/cobd/cache_obd.c b/lustre/cobd/cache_obd.c index 9bcd1c2..c42dab1 100644 --- a/lustre/cobd/cache_obd.c +++ b/lustre/cobd/cache_obd.c @@ -234,22 +234,22 @@ static int cobd_iocontrol(unsigned int cmd, struct obd_export *exp, int len, } static struct obd_ops cobd_ops = { - o_owner: THIS_MODULE, + .o_owner = THIS_MODULE, - o_setup: cobd_setup, - o_cleanup: cobd_cleanup, + .o_setup = cobd_setup, + .o_cleanup = cobd_cleanup, - o_connect: cobd_connect, - o_disconnect: cobd_disconnect, + .o_connect = cobd_connect, + .o_disconnect = cobd_disconnect, - o_get_info: cobd_get_info, - o_statfs: cobd_statfs, + .o_get_info = cobd_get_info, + .o_statfs = cobd_statfs, - o_getattr: cobd_getattr, - o_preprw: cobd_preprw, - o_commitrw: cobd_commitrw, - o_brw: cobd_brw, - o_iocontrol: cobd_iocontrol, + .o_getattr = cobd_getattr, + .o_preprw = cobd_preprw, + .o_commitrw = cobd_commitrw, + .o_brw = cobd_brw, + .o_iocontrol = cobd_iocontrol, }; static int __init cobd_init(void) diff --git a/lustre/conf/Makefile.am b/lustre/conf/Makefile.am index a205d10..6e3666b 100644 --- a/lustre/conf/Makefile.am +++ b/lustre/conf/Makefile.am @@ -10,6 +10,3 @@ ldapconf_SCRIPTS = slapd-lustre.conf ldapschema_SCRIPTS = lustre.schema pkglibdir = '${exec_prefix}/usr/lib/$(PACKAGE)' pkglib_DATA = top.ldif lustre2ldif.xsl - -include $(top_srcdir)/Rules - diff --git a/lustre/configure.in b/lustre/configure.in index 26780cc..11039ec 100644 --- a/lustre/configure.in +++ b/lustre/configure.in @@ -5,60 +5,156 @@ AC_INIT AC_CANONICAL_SYSTEM +AM_INIT_AUTOMAKE(lustre, 1.2.1.7) +# AM_MAINTAINER_MODE -# Automake variables. Steal the version number from lustre.spec.in. -AM_INIT_AUTOMAKE(lustre, builtin([esyscmd], [sed -ne '/^%define version /{ s/.*version //; p; q; }' scripts/lustre.spec.in])) -#AM_MAINTAINER_MODE +# Four main targets: lustre kernel modules, utilities, tests, and liblustre +AC_MSG_CHECKING([whether to build kernel modules]) +AC_ARG_ENABLE([modules], + AC_HELP_STRING([--disable-modules], + [disable building of Lustre kernel modules]), + [],[enable_modules='yes']) +AC_MSG_RESULT([$enable_modules]) +AM_CONDITIONAL(MODULES, test x$enable_modules = xyes) -# LLNL patches their ext3 and calls it extN -AC_ARG_ENABLE(extN, [ --enable-extN use extN instead of ext3 for lustre backend]) -AM_CONDITIONAL(EXTN, test x$enable_extN = xyes) +AC_MSG_CHECKING([whether to build Lustre library]) +AC_ARG_ENABLE([liblustre], + AC_HELP_STRING([--disable-liblustre], + [disable building of Lustre library]), + [],[enable_liblustre='no']) +AC_MSG_RESULT([$enable_liblustre]) +AM_CONDITIONAL(LIBLUSTRE, test x$enable_liblustre = xyes) + +AC_MSG_CHECKING([whether to build utilities]) +AC_ARG_ENABLE([utils], + AC_HELP_STRING([--disable-utils], + [disable building of Lustre utility programs]), + [],[enable_utils='yes']) +AC_MSG_RESULT([$enable_utils]) + +AC_MSG_CHECKING([whether to build Lustre tests]) +AC_ARG_ENABLE([tests], + AC_HELP_STRING([--disable-tests], + [disable building of Lustre tests]), + [],[enable_tests='yes']) +AC_MSG_RESULT([$enable_tests]) # specify wether to build doc or not -AC_ARG_ENABLE(doc, [ --disable-doc skip creation of pdf documentation], - [ - if test x$enable_doc = xyes ; then - ENABLE_DOC=1 - else - ENABLE_DOC=0 - fi - ], - [ ENABLE_DOC=0 ]) +AC_MSG_CHECKING([whether to build docs]) +AC_ARG_ENABLE(doc, + AC_HELP_STRING([--disable-doc], + [skip creation of pdf documentation]), + [ + if test x$enable_doc = xyes ; then + ENABLE_DOC=1 + else + ENABLE_DOC=0 + fi + ],[ + ENABLE_DOC=0 + enable_doc='no' + ]) +AC_MSG_RESULT([$enable_doc]) AM_CONDITIONAL(DOC, test x$ENABLE_DOC = x1) AC_SUBST(ENABLE_DOC) +# default backing fs is ext3 +BACKINGFS='ext3' + +# LLNL patches their ext3 and calls it extN +AC_MSG_CHECKING([whether to use extN]) +AC_ARG_ENABLE([extN], + AC_HELP_STRING([--enable-extN], + [use extN instead of ext3 for lustre backend]), + [BACKINGFS='extN'],[enable_extN='no']) +AC_MSG_RESULT([$enable_extN]) +AM_CONDITIONAL(EXTN, test x$enable_extN = xyes) + +# SuSE gets ldiskfs +AC_MSG_CHECKING([whether to enable ldiskfs]) +AC_ARG_ENABLE([ldiskfs], + AC_HELP_STRING([--enable-ldiskfs], + [use ldiskfs for the Lustre backing FS]), + [BACKINGFS='ldiskfs'],[enable_ldiskfs='no']) +AC_MSG_RESULT([$enable_ldiskfs]) +AM_CONDITIONAL(LDISKFS, test x$enable_ldiskfs = xyes) + +AC_MSG_CHECKING([which backing filesystem to use]) +AC_MSG_RESULT([$BACKINGFS]) +AC_SUBST(BACKINGFS) + # the pinger is temporary, until we have the recovery node in place -AC_ARG_ENABLE(pinger, [ --disable-pinger disable recovery pinger support]) +AC_MSG_CHECKING([whether to enable pinger support]) +AC_ARG_ENABLE([pinger], + AC_HELP_STRING([--disable-pinger], + [disable recovery pinger support]), + [],[enable_pinger='yes']) +AC_MSG_RESULT([$enable_pinger]) if test x$enable_pinger != xno ; then AC_DEFINE(ENABLE_PINGER, 1, Use the Pinger) fi -AC_ARG_WITH(obd-buffer-size, [ --with-obd-buffer-size=[size] set lctl ioctl maximum bytes (default=8192)],OBD_BUFFER_SIZE=$with_obd_buffer_size,OBD_BUFFER_SIZE=8192) +AC_MSG_CHECKING([maximum OBD ioctl size]) +AC_ARG_WITH([obd-buffer-size], + AC_HELP_STRING([--with-obd-buffer-size=[size]], + [set lctl ioctl maximum bytes (default=8192)]), + [ + OBD_BUFFER_SIZE=$with_obd_buffer_size + ],[ + OBD_BUFFER_SIZE=8192 + ]) +AC_MSG_RESULT([$OBD_BUFFER_SIZE bytes]) AC_DEFINE_UNQUOTED(OBD_MAX_IOCTL_BUFFER, $OBD_BUFFER_SIZE, [IOCTL Buffer Size]) # specify location of libsysio tree -AC_ARG_WITH(sysio, [ --with-sysio=[path] set path to libsysio source (default=../libsysio)], sysiodir=$withval) -if test x$sysiodir = x; then - SYSIO='$(top_srcdir)/../libsysio' -else - SYSIO=$sysiodir -fi +AC_MSG_CHECKING([location of libsysio]) +AC_ARG_WITH([sysio], + AC_HELP_STRING([--with-sysio=[path]], + [set path to libsysio source (default=../libsysio)]), + [ + SYSIO=$with_sysio + SYSIO_PATH=$SYSIO + ],[ + SYSIO='$(top_srcdir)/../libsysio' + SYSIO_PATH='../libsysio' + ]) +AC_MSG_RESULT([$SYSIO_PATH]) + +AC_CHECK_FILE([$SYSIO_PATH/src/libsysio.a],[], + [ + if test x$enable_liblustre = xyes ; then + AC_MSG_ERROR([A built libsysio tree is required for building liblustre.]) + fi + ]) AC_SUBST(SYSIO) #build mpi-tests -AC_ARG_ENABLE(mpitests, [ --enable-mpitests build liblustre mpi tests]) +AC_MSG_CHECKING([whether to build mpitests]) +AC_ARG_ENABLE([mpitests], + AC_HELP_STRING([--enable-mpitests], + [build liblustre mpi tests]), + [],[enable_mpitests=no]) +AC_MSG_RESULT([$enable_mpitests]) AM_CONDITIONAL(MPITESTS, test x$enable_mpitests = xyes, Build MPI Tests) -# snap compilation -AC_ARG_ENABLE(snapfs, [ --enable-snapfs build snapfs]) +# snap compilation +AC_MSG_CHECKING([whether to enable snapfs support]) +AC_ARG_ENABLE([snapfs], + AC_HELP_STRING([--enable-snapfs], + [build snapfs]), + [],[enable_snapfs='no']) +AC_MSG_RESULT([$enable_snapfs]) AM_CONDITIONAL(SNAPFS, test x$enable_snapfs = xyes) -# smfs compilation -AC_ARG_ENABLE(smfs, [ --enable-smfs build smfs]) +# smfs compilation +AC_MSG_CHECKING([whether to enable smfs support]) +AC_ARG_ENABLE([smfs], + AC_HELP_STRING([--enable-smfs], + [build smfs]), + [],[enable_smfs='no']) +AC_MSG_RESULT([$enable_smfs]) AM_CONDITIONAL(SMFS, test x$enable_smfs = xyes) - - sinclude(portals/build.m4) sinclude(portals/archdep.m4) @@ -67,21 +163,95 @@ if test x$enable_inkernel = xyes ; then sh -e -x -c '(cp -f $0.mk $0.in)' fi -AM_CONFIG_HEADER(portals/include/config.h) - -AC_OUTPUT([Makefile lvfs/Makefile portals/Makefile portals/Kernelenv \ - portals/libcfs/Makefile portals/portals/Makefile \ - portals/unals/Makefile portals/knals/Makefile \ - portals/router/Makefile portals/knals/socknal/Makefile \ - portals/knals/gmnal/Makefile portals/knals/qswnal/Makefile \ - portals/knals/scimacnal/Makefile \ - portals/knals/ibnal/Makefile \ - portals/utils/Makefile portals/tests/Makefile portals/doc/Makefile \ - obdecho/Makefile ptlrpc/Makefile liblustre/Makefile liblustre/tests/Makefile \ - lov/Makefile osc/Makefile mdc/Makefile mds/Makefile ost/Makefile \ - cobd/Makefile ptlbd/Makefile conf/Makefile tests/Makefile \ - utils/Makefile utils/Lustre/Makefile obdfilter/Makefile \ - obdclass/Makefile smfs/Makefile snapfs/Makefile snapfs/utils/Makefile \ - include/Makefile include/linux/Makefile include/lustre/Makefile \ - llite/Makefile doc/Makefile scripts/Makefile \ - scripts/lustre.spec]) +# we need to pass a full path here for kernel makefiles +INCLUDE_RULES="include $PWD/Rules" +AC_SUBST(INCLUDE_RULES) + +# ptlrpc kernel build requires this +LUSTRE="$PWD" +AC_SUBST(LUSTRE) + +# cray portals turns these off +AM_CONDITIONAL(UTILS, test x$enable_utils = xyes) +AM_CONDITIONAL(TESTS, test x$enable_tests = xyes) + +AM_CONFIG_HEADER(include/config.h) + +AC_OUTPUT([ +Makefile +Rules +autoMakefile +cobd/Makefile +cobd/autoMakefile +conf/Makefile +doc/Makefile +include/Makefile +include/linux/Makefile +include/lustre/Makefile +ldiskfs/Makefile +ldiskfs/autoMakefile +ldlm/Makefile +liblustre/Makefile +liblustre/tests/Makefile +llite/Makefile +llite/autoMakefile +lov/Makefile +lov/autoMakefile +lvfs/Makefile +lvfs/autoMakefile +mdc/Makefile +mdc/autoMakefile +mds/Makefile +mds/autoMakefile +obdclass/Makefile +obdclass/autoMakefile +obdecho/Makefile +obdecho/autoMakefile +obdfilter/Makefile +obdfilter/autoMakefile +osc/Makefile +osc/autoMakefile +ost/Makefile +ost/autoMakefile +portals/Kernelenv +portals/Makefile +portals/autoMakefile +portals/doc/Makefile +portals/knals/Makefile +portals/knals/autoMakefile +portals/knals/gmnal/Makefile +portals/knals/gmnal/autoMakefile +portals/knals/ibnal/Makefile +portals/knals/ibnal/autoMakefile +portals/knals/qswnal/Makefile +portals/knals/qswnal/autoMakefile +portals/knals/scimacnal/Makefile +portals/knals/scimacnal/autoMakefile +portals/knals/socknal/Makefile +portals/knals/socknal/autoMakefile +portals/libcfs/Makefile +portals/libcfs/autoMakefile +portals/portals/Makefile +portals/portals/autoMakefile +portals/router/Makefile +portals/router/autoMakefile +portals/tests/Makefile +portals/tests/autoMakefile +portals/unals/Makefile +portals/utils/Makefile +ptlbd/Makefile +ptlbd/autoMakefile +ptlrpc/Makefile +ptlrpc/autoMakefile +scripts/Makefile +scripts/lustre.spec +scripts/version_tag.pl +smfs/Makefile +smfs/autoMakefile +snapfs/Makefile +snapfs/autoMakefile +snapfs/utils/Makefile +tests/Makefile +utils/Lustre/Makefile +utils/Makefile +]) diff --git a/lustre/doc/Makefile.am b/lustre/doc/Makefile.am index dbffef4..a47d5e7 100644 --- a/lustre/doc/Makefile.am +++ b/lustre/doc/Makefile.am @@ -122,5 +122,3 @@ doc.old/lustre.lin: dist-hook: rm -rf $(distdir)/figs/CVS - -include $(top_srcdir)/Rules diff --git a/lustre/include/.cvsignore b/lustre/include/.cvsignore index 7b78c04..a8dd680 100644 --- a/lustre/include/.cvsignore +++ b/lustre/include/.cvsignore @@ -3,6 +3,7 @@ config.log config.status configure config.h +config.h.in stamp-h stamp-h1 stamp-h.in diff --git a/lustre/include/Makefile.am b/lustre/include/Makefile.am index 7c8201c..2a3f201 100644 --- a/lustre/include/Makefile.am +++ b/lustre/include/Makefile.am @@ -6,4 +6,4 @@ SUBDIRS = linux lustre EXTRA_DIST = config.h.in ioctl.h liblustre.h -include $(top_srcdir)/Rules + diff --git a/lustre/include/config.h.in b/lustre/include/config.h.in deleted file mode 100644 index eca8fdd..0000000 --- a/lustre/include/config.h.in +++ /dev/null @@ -1,61 +0,0 @@ -/* include/config.h.in. Generated from configure.in by autoheader. */ - -/* Use the Pinger */ -#undef ENABLE_PINGER - -/* Define to 1 if you have the header file. */ -#undef HAVE_INTTYPES_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_MEMORY_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_STDINT_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_STDLIB_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_STRINGS_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_STRING_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_SYS_STAT_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_SYS_TYPES_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_UNISTD_H - -/* IOCTL Buffer Size */ -#undef OBD_MAX_IOCTL_BUFFER - -/* Name of package */ -#undef PACKAGE - -/* Define to the address where bug reports for this package should be sent. */ -#undef PACKAGE_BUGREPORT - -/* Define to the full name of this package. */ -#undef PACKAGE_NAME - -/* Define to the full name and version of this package. */ -#undef PACKAGE_STRING - -/* Define to the one symbol short name of this package. */ -#undef PACKAGE_TARNAME - -/* Define to the version of this package. */ -#undef PACKAGE_VERSION - -/* The size of a `unsigned long long', as computed by sizeof. */ -#undef SIZEOF_UNSIGNED_LONG_LONG - -/* Define to 1 if you have the ANSI C header files. */ -#undef STDC_HEADERS - -/* Version number of package */ -#undef VERSION diff --git a/lustre/include/liblustre.h b/lustre/include/liblustre.h index d859bfc..af80f44 100644 --- a/lustre/include/liblustre.h +++ b/lustre/include/liblustre.h @@ -24,8 +24,8 @@ #ifndef LIBLUSTRE_H__ #define LIBLUSTRE_H__ -#include #include +#include #ifndef __CYGWIN__ #include #include @@ -240,8 +240,18 @@ static inline int request_module(char *name) #define __MOD_DEC_USE_COUNT(m) do {} while (0) #define MOD_INC_USE_COUNT do {} while (0) #define MOD_DEC_USE_COUNT do {} while (0) -#define try_module_get __MOD_INC_USE_COUNT -#define module_put __MOD_DEC_USE_COUNT +static inline void __module_get(struct module *module) +{ +} + +static inline int try_module_get(struct module *module) +{ + return 1; +} + +static inline void module_put(struct module *module) +{ +} /* module initialization */ extern int init_obdclass(void); @@ -255,14 +265,13 @@ extern int echo_client_init(void); /* general stuff */ -#define jiffies 0 #define EXPORT_SYMBOL(S) -typedef int spinlock_t; +typedef struct { } spinlock_t; typedef __u64 kdev_t; -#define SPIN_LOCK_UNLOCKED 0 +#define SPIN_LOCK_UNLOCKED (spinlock_t) { } #define LASSERT_SPIN_LOCKED(lock) do {} while(0) static inline void spin_lock(spinlock_t *l) {return;} @@ -376,6 +385,10 @@ struct page { #endif }; +/* 2.4 defines */ +#define PAGE_LIST_ENTRY list +#define PAGE_LIST(page) ((page)->list) + #define kmap(page) (page)->addr #define kunmap(a) do {} while (0) @@ -523,14 +536,15 @@ struct semaphore { int count; }; -#define down(a) do {} while (0) -#define up(a) do {} while (0) -#define down_read(a) do {} while (0) -#define up_read(a) do {} while (0) -#define down_write(a) do {} while (0) -#define up_write(a) do {} while (0) -#define sema_init(a,b) do {} while (0) -#define init_rwsem(a) do {} while (0) +/* use the macro's argument to avoid unused warnings */ +#define down(a) do { (void)a; } while (0) +#define up(a) do { (void)a; } while (0) +#define down_read(a) do { (void)a; } while (0) +#define up_read(a) do { (void)a; } while (0) +#define down_write(a) do { (void)a; } while (0) +#define up_write(a) do { (void)a; } while (0) +#define sema_init(a,b) do { (void)a; } while (0) +#define init_rwsem(a) do { (void)a; } while (0) #define DECLARE_MUTEX(name) \ struct semaphore name = { 1 } static inline void init_MUTEX (struct semaphore *sem) @@ -618,6 +632,20 @@ static inline int schedule_timeout(signed long t) #define SIGNAL_MASK_ASSERT() #define KERN_INFO +#include +#if HZ != 1 +#error "liblustre's jiffies currently expects HZ to be 1" +#endif +#define jiffies \ +({ \ + unsigned long _ret = 0; \ + struct timeval tv; \ + if (gettimeofday(&tv, NULL) == 0) \ + _ret = tv.tv_sec; \ + _ret; \ +}) +#define time_after(a, b) ((long)(b) - (long)(a) > 0) +#define time_before(a, b) time_after(b,a) struct timer_list { struct list_head tl_list; @@ -650,11 +678,6 @@ static inline void del_timer(struct timer_list *l) free(l); } -#define time_after(a, b) \ -({ \ - 1; \ -}) - typedef struct { volatile int counter; } atomic_t; #define atomic_read(a) ((a)->counter) diff --git a/lustre/include/linux/lustre_compat25.h b/lustre/include/linux/lustre_compat25.h index 58ba03e..120e996 100644 --- a/lustre/include/linux/lustre_compat25.h +++ b/lustre/include/linux/lustre_compat25.h @@ -194,5 +194,42 @@ static inline int cleanup_group_info(void) #endif /* end of 2.4 compat macros */ +#ifdef HAVE_PAGE_LIST +static inline int mapping_has_pages(struct address_space *mapping) +{ + int rc = 1; + + ll_pgcache_lock(mapping); + if (list_empty(&mapping->dirty_pages) && + list_empty(&mapping->clean_pages) && + list_empty(&mapping->locked_pages)) { + rc = 0; + } + ll_pgcache_unlock(mapping); + + return rc; +} + +static inline int clear_page_dirty_for_io(struct page *page) +{ + struct address_space *mapping = page->mapping; + + if (page->mapping && PageDirty(page)) { + ClearPageDirty(page); + ll_pgcache_lock(mapping); + list_del(&page->list); + list_add(&page->list, &mapping->locked_pages); + ll_pgcache_unlock(mapping); + return 1; + } + return 0; +} +#else +static inline int mapping_has_pages(struct address_space *mapping) +{ + return mapping->nrpages > 0; +} +#endif + #endif /* __KERNEL__ */ #endif /* _COMPAT25_H */ diff --git a/lustre/include/linux/lustre_idl.h b/lustre/include/linux/lustre_idl.h index 39eaae3..85dc751 100644 --- a/lustre/include/linux/lustre_idl.h +++ b/lustre/include/linux/lustre_idl.h @@ -54,7 +54,6 @@ # include # include # include /* for strncpy, below */ -# include # include /* to check for FMODE_EXEC, lest we redefine */ #else #ifdef __CYGWIN__ diff --git a/lustre/include/linux/lustre_lib.h b/lustre/include/linux/lustre_lib.h index b0b907c..ebdfdf6 100644 --- a/lustre/include/linux/lustre_lib.h +++ b/lustre/include/linux/lustre_lib.h @@ -25,8 +25,6 @@ #ifndef _LUSTRE_LIB_H #define _LUSTRE_LIB_H -#include - #ifndef __KERNEL__ # include # include diff --git a/lustre/include/linux/lustre_net.h b/lustre/include/linux/lustre_net.h index 43d5445..ccde06b9 100644 --- a/lustre/include/linux/lustre_net.h +++ b/lustre/include/linux/lustre_net.h @@ -92,7 +92,7 @@ #define MDT_MAX_THREADS 32UL #define MDT_NUM_THREADS max(min_t(unsigned long, num_physpages / 8192, \ MDT_MAX_THREADS), 2UL) -#define MDS_NBUF_MAX 512UL +#define MDS_NBUF_MAX 4096UL #define MDS_BUFSIZE (8 * 1024) /* Assume file name length = FNAME_MAX = 256 (true for extN). * path name length = PATH_MAX = 4096 diff --git a/lustre/include/linux/obd.h b/lustre/include/linux/obd.h index 185424e..7e4150d 100644 --- a/lustre/include/linux/obd.h +++ b/lustre/include/linux/obd.h @@ -18,7 +18,8 @@ #define IOC_MDC_TYPE 'i' #define IOC_MDC_MIN_NR 20 #define IOC_MDC_LOOKUP _IOWR(IOC_MDC_TYPE, 20, struct obd_device *) -#define IOC_MDC_GETSTRIPE _IOWR(IOC_MDC_TYPE, 21, struct lov_mds_md *) +/* Moved to lustre_user.h +#define IOC_MDC_GETSTRIPE _IOWR(IOC_MDC_TYPE, 21, struct lov_mds_md *) */ #define IOC_MDC_MAX_NR 50 #ifdef __KERNEL__ diff --git a/lustre/include/linux/obd_class.h b/lustre/include/linux/obd_class.h index c7848b3..1a577f0 100644 --- a/lustre/include/linux/obd_class.h +++ b/lustre/include/linux/obd_class.h @@ -608,6 +608,9 @@ obd_lvfs_fid2dentry(struct obd_export *exp, __u64 id_ino, __u32 gen, __u64 gr) #define time_before(t1, t2) ((long)t2 - (long)t1 > 0) #endif +/* @max_age is the oldest time in jiffies that we accept using a cached data. + * If the cache is older than @max_age we will get a new value from the + * target. Use a value of "jiffies + HZ" to guarantee freshness. */ static inline int obd_statfs(struct obd_device *obd, struct obd_statfs *osfs, unsigned long max_age) { @@ -623,10 +626,12 @@ static inline int obd_statfs(struct obd_device *obd, struct obd_statfs *osfs, CDEBUG(D_SUPER, "osfs %lu, max_age %lu\n", obd->obd_osfs_age, max_age); if (time_before(obd->obd_osfs_age, max_age)) { rc = OBP(obd, statfs)(obd, osfs, max_age); - spin_lock(&obd->obd_osfs_lock); - memcpy(&obd->obd_osfs, osfs, sizeof(obd->obd_osfs)); - obd->obd_osfs_age = jiffies; - spin_unlock(&obd->obd_osfs_lock); + if (rc == 0) { + spin_lock(&obd->obd_osfs_lock); + memcpy(&obd->obd_osfs, osfs, sizeof(obd->obd_osfs)); + obd->obd_osfs_age = jiffies; + spin_unlock(&obd->obd_osfs_lock); + } } else { CDEBUG(D_SUPER, "using cached obd_statfs data\n"); spin_lock(&obd->obd_osfs_lock); diff --git a/lustre/include/lustre/Makefile.am b/lustre/include/lustre/Makefile.am index 377bef6..a785ada 100644 --- a/lustre/include/lustre/Makefile.am +++ b/lustre/include/lustre/Makefile.am @@ -5,3 +5,5 @@ pkginclude_HEADERS = lustre_user.h liblustreapi.h + +EXTRA_DIST = $(pkginclude_HEADERS) diff --git a/lustre/include/lustre/liblustreapi.h b/lustre/include/lustre/liblustreapi.h index 9f890a7..5aa2de2 100644 --- a/lustre/include/lustre/liblustreapi.h +++ b/lustre/include/lustre/liblustreapi.h @@ -26,14 +26,16 @@ #ifndef _LIBLUSTREAPI_H_ #define _LIBLUSTREAPI_H_ -/* liblustreapi.c */ -int op_create_file(char *name, long stripe_size, int stripe_offset, - int stripe_count); -int op_find(char *path, struct obd_uuid *obduuid, int recursive, - int verbose, int quiet); -int op_check(int type_num, char **obd_type_p, char *dir); -int op_catinfo(char *dir, char *keyword, char *node_name); - +#include +/* liblustreapi.c */ +extern int op_create_file(char *name, long stripe_size, int stripe_offset, + int stripe_count); +extern int op_find(char *path, struct obd_uuid *obduuid, int recursive, + int verbose, int quiet); +extern int op_check(int type_num, char **obd_type_p, char *dir); +extern int op_catinfo(char *dir, char *keyword, char *node_name); +extern int get_file_stripe(char *path, struct lov_user_md *lum); +extern int llapi_is_lustre_mnttype(char *type); #endif diff --git a/lustre/include/lustre/lustre_user.h b/lustre/include/lustre/lustre_user.h index ad55e05..e98b204 100644 --- a/lustre/include/lustre/lustre_user.h +++ b/lustre/include/lustre/lustre_user.h @@ -35,6 +35,9 @@ #define LL_IOC_GROUP_LOCK _IOW ('f', 158, long) #define LL_IOC_GROUP_UNLOCK _IOW ('f', 159, long) +#define IOC_MDC_TYPE 'i' +#define IOC_MDC_GETSTRIPE _IOWR(IOC_MDC_TYPE, 21, struct lov_mds_md *) + #define O_LOV_DELAY_CREATE 0100000000 /* hopefully this does not conflict */ #define LL_FILE_IGNORE_LOCK 0x00000001 diff --git a/lustre/install-sh b/lustre/install-sh deleted file mode 100755 index e9de238..0000000 --- a/lustre/install-sh +++ /dev/null @@ -1,251 +0,0 @@ -#!/bin/sh -# -# install - install a program, script, or datafile -# This comes from X11R5 (mit/util/scripts/install.sh). -# -# Copyright 1991 by the Massachusetts Institute of Technology -# -# Permission to use, copy, modify, distribute, and sell this software and its -# documentation for any purpose is hereby granted without fee, provided that -# the above copyright notice appear in all copies and that both that -# copyright notice and this permission notice appear in supporting -# documentation, and that the name of M.I.T. not be used in advertising or -# publicity pertaining to distribution of the software without specific, -# written prior permission. M.I.T. makes no representations about the -# suitability of this software for any purpose. It is provided "as is" -# without express or implied warranty. -# -# Calling this script install-sh is preferred over install.sh, to prevent -# `make' implicit rules from creating a file called install from it -# when there is no Makefile. -# -# This script is compatible with the BSD install script, but was written -# from scratch. It can only install one file at a time, a restriction -# shared with many OS's install programs. - - -# set DOITPROG to echo to test this script - -# Don't use :- since 4.3BSD and earlier shells don't like it. -doit="${DOITPROG-}" - - -# put in absolute paths if you don't have them in your path; or use env. vars. - -mvprog="${MVPROG-mv}" -cpprog="${CPPROG-cp}" -chmodprog="${CHMODPROG-chmod}" -chownprog="${CHOWNPROG-chown}" -chgrpprog="${CHGRPPROG-chgrp}" -stripprog="${STRIPPROG-strip}" -rmprog="${RMPROG-rm}" -mkdirprog="${MKDIRPROG-mkdir}" - -transformbasename="" -transform_arg="" -instcmd="$mvprog" -chmodcmd="$chmodprog 0755" -chowncmd="" -chgrpcmd="" -stripcmd="" -rmcmd="$rmprog -f" -mvcmd="$mvprog" -src="" -dst="" -dir_arg="" - -while [ x"$1" != x ]; do - case $1 in - -c) instcmd="$cpprog" - shift - continue;; - - -d) dir_arg=true - shift - continue;; - - -m) chmodcmd="$chmodprog $2" - shift - shift - continue;; - - -o) chowncmd="$chownprog $2" - shift - shift - continue;; - - -g) chgrpcmd="$chgrpprog $2" - shift - shift - continue;; - - -s) stripcmd="$stripprog" - shift - continue;; - - -t=*) transformarg=`echo $1 | sed 's/-t=//'` - shift - continue;; - - -b=*) transformbasename=`echo $1 | sed 's/-b=//'` - shift - continue;; - - *) if [ x"$src" = x ] - then - src=$1 - else - # this colon is to work around a 386BSD /bin/sh bug - : - dst=$1 - fi - shift - continue;; - esac -done - -if [ x"$src" = x ] -then - echo "install: no input file specified" - exit 1 -else - true -fi - -if [ x"$dir_arg" != x ]; then - dst=$src - src="" - - if [ -d $dst ]; then - instcmd=: - chmodcmd="" - else - instcmd=mkdir - fi -else - -# Waiting for this to be detected by the "$instcmd $src $dsttmp" command -# might cause directories to be created, which would be especially bad -# if $src (and thus $dsttmp) contains '*'. - - if [ -f $src -o -d $src ] - then - true - else - echo "install: $src does not exist" - exit 1 - fi - - if [ x"$dst" = x ] - then - echo "install: no destination specified" - exit 1 - else - true - fi - -# If destination is a directory, append the input filename; if your system -# does not like double slashes in filenames, you may need to add some logic - - if [ -d $dst ] - then - dst="$dst"/`basename $src` - else - true - fi -fi - -## this sed command emulates the dirname command -dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` - -# Make sure that the destination directory exists. -# this part is taken from Noah Friedman's mkinstalldirs script - -# Skip lots of stat calls in the usual case. -if [ ! -d "$dstdir" ]; then -defaultIFS=' -' -IFS="${IFS-${defaultIFS}}" - -oIFS="${IFS}" -# Some sh's can't handle IFS=/ for some reason. -IFS='%' -set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'` -IFS="${oIFS}" - -pathcomp='' - -while [ $# -ne 0 ] ; do - pathcomp="${pathcomp}${1}" - shift - - if [ ! -d "${pathcomp}" ] ; - then - $mkdirprog "${pathcomp}" - else - true - fi - - pathcomp="${pathcomp}/" -done -fi - -if [ x"$dir_arg" != x ] -then - $doit $instcmd $dst && - - if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi && - if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi && - if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi && - if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi -else - -# If we're going to rename the final executable, determine the name now. - - if [ x"$transformarg" = x ] - then - dstfile=`basename $dst` - else - dstfile=`basename $dst $transformbasename | - sed $transformarg`$transformbasename - fi - -# don't allow the sed command to completely eliminate the filename - - if [ x"$dstfile" = x ] - then - dstfile=`basename $dst` - else - true - fi - -# Make a temp file name in the proper directory. - - dsttmp=$dstdir/#inst.$$# - -# Move or copy the file name to the temp name - - $doit $instcmd $src $dsttmp && - - trap "rm -f ${dsttmp}" 0 && - -# and set any options; do chmod last to preserve setuid bits - -# If any of these fail, we abort the whole thing. If we want to -# ignore errors from any of these, just make sure not to ignore -# errors from the above "$doit $instcmd $src $dsttmp" command. - - if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi && - if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi && - if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi && - if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi && - -# Now rename the file to the real destination. - - $doit $rmcmd -f $dstdir/$dstfile && - $doit $mvcmd $dsttmp $dstdir/$dstfile - -fi && - - -exit 0 diff --git a/lustre/kernel_patches/kernel_configs/kernel-2.6.4-2.6-suse-i686-smp.config b/lustre/kernel_patches/kernel_configs/kernel-2.6.4-2.6-suse-i686-smp.config new file mode 100644 index 0000000..8492557 --- /dev/null +++ b/lustre/kernel_patches/kernel_configs/kernel-2.6.4-2.6-suse-i686-smp.config @@ -0,0 +1,2784 @@ +# +# Automatically generated make config: don't edit +# +CONFIG_X86=y +CONFIG_MMU=y +CONFIG_UID16=y +CONFIG_GENERIC_ISA_DMA=y + +# +# Code maturity level options +# +CONFIG_EXPERIMENTAL=y +CONFIG_CLEAN_COMPILE=y +# CONFIG_STANDALONE is not set + +# +# General setup +# +CONFIG_SWAP=y +CONFIG_SYSVIPC=y +CONFIG_BSD_PROCESS_ACCT=y +CONFIG_SYSCTL=y +CONFIG_LOG_BUF_SHIFT=17 +CONFIG_HOTPLUG=y +CONFIG_EVLOG=y +# CONFIG_EVLOG_FWPRINTK is not set +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +# CONFIG_EMBEDDED is not set +CONFIG_DELAY_ACCT=y +CONFIG_KALLSYMS=y +CONFIG_FUTEX=y +CONFIG_EPOLL=y +CONFIG_IOSCHED_NOOP=y +CONFIG_IOSCHED_AS=y +CONFIG_IOSCHED_DEADLINE=y +CONFIG_IOSCHED_CFQ=y +# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set + +# +# Loadable module support +# +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +CONFIG_MODULE_FORCE_UNLOAD=y +CONFIG_OBSOLETE_MODPARM=y +CONFIG_MODVERSIONS=y +CONFIG_KMOD=y +CONFIG_STOP_MACHINE=y +CONFIG_CKRM=y +CONFIG_CKRM_RES_DUMMY=m +CONFIG_CKRM_RES_SOCKETAQ=m + +# +# Processor type and features +# +# CONFIG_X86_PC is not set +# CONFIG_X86_ELAN is not set +# CONFIG_X86_VOYAGER is not set +# CONFIG_X86_NUMAQ is not set +# CONFIG_X86_SUMMIT is not set +# CONFIG_X86_BIGSMP is not set +# CONFIG_X86_VISWS is not set +CONFIG_X86_GENERICARCH=y +# CONFIG_X86_ES7000 is not set +CONFIG_X86_CYCLONE_TIMER=y +# CONFIG_M386 is not set +# CONFIG_M486 is not set +# CONFIG_M586 is not set +# CONFIG_M586TSC is not set +# CONFIG_M586MMX is not set +CONFIG_M686=y +# CONFIG_MPENTIUMII is not set +# CONFIG_MPENTIUMIII is not set +# CONFIG_MPENTIUMM is not set +# CONFIG_MPENTIUM4 is not set +# CONFIG_MK6 is not set +# CONFIG_MK7 is not set +# CONFIG_MK8 is not set +# CONFIG_MCRUSOE is not set +# CONFIG_MWINCHIPC6 is not set +# CONFIG_MWINCHIP2 is not set +# CONFIG_MWINCHIP3D is not set +# CONFIG_MCYRIXIII is not set +# CONFIG_MVIAC3_2 is not set +CONFIG_X86_GENERIC=y +CONFIG_X86_CMPXCHG=y +CONFIG_X86_XADD=y +CONFIG_X86_L1_CACHE_SHIFT=7 +CONFIG_RWSEM_XCHGADD_ALGORITHM=y +CONFIG_X86_PPRO_FENCE=y +CONFIG_X86_WP_WORKS_OK=y +CONFIG_X86_INVLPG=y +CONFIG_X86_BSWAP=y +CONFIG_X86_POPAD_OK=y +CONFIG_X86_GOOD_APIC=y +CONFIG_X86_INTEL_USERCOPY=y +CONFIG_X86_USE_PPRO_CHECKSUM=y +# CONFIG_HPET_TIMER is not set +# CONFIG_HPET_EMULATE_RTC is not set +CONFIG_SMP=y +CONFIG_NR_CPUS=32 +# CONFIG_PREEMPT is not set +CONFIG_X86_LOCAL_APIC=y +CONFIG_X86_IO_APIC=y +CONFIG_X86_TSC=y +CONFIG_X86_MCE=y +# CONFIG_X86_MCE_NONFATAL is not set +CONFIG_X86_MCE_P4THERMAL=y +CONFIG_TOSHIBA=m +CONFIG_I8K=m +CONFIG_MICROCODE=m +CONFIG_X86_MSR=m +CONFIG_X86_CPUID=m + +# +# Firmware Drivers +# +CONFIG_EDD=m +# CONFIG_NOHIGHMEM is not set +# CONFIG_HIGHMEM4G is not set +CONFIG_HIGHMEM64G=y +CONFIG_HIGHMEM=y +CONFIG_X86_PAE=y +# CONFIG_NUMA is not set +CONFIG_HIGHPTE=y +# CONFIG_MATH_EMULATION is not set +CONFIG_MTRR=y +CONFIG_EFI=y +CONFIG_IRQBALANCE=y +CONFIG_HAVE_DEC_LOCK=y +CONFIG_BOOT_IOREMAP=y +CONFIG_REGPARM=y + +# +# Special options +# +CONFIG_PROC_MM=y + +# +# Power management options (ACPI, APM) +# +CONFIG_PM=y +# CONFIG_SOFTWARE_SUSPEND is not set +CONFIG_PM_DISK=y +CONFIG_PM_DISK_PARTITION="" + +# +# ACPI (Advanced Configuration and Power Interface) Support +# +CONFIG_ACPI=y +CONFIG_ACPI_BOOT=y +CONFIG_ACPI_INTERPRETER=y +CONFIG_ACPI_SLEEP=y +CONFIG_ACPI_SLEEP_PROC_FS=y +CONFIG_ACPI_AC=m +CONFIG_ACPI_BATTERY=m +CONFIG_ACPI_BUTTON=m +CONFIG_ACPI_FAN=m +CONFIG_ACPI_PROCESSOR=m +CONFIG_ACPI_THERMAL=m +# CONFIG_ACPI_ASUS is not set +CONFIG_ACPI_TOSHIBA=m +# CONFIG_ACPI_DEBUG is not set +CONFIG_ACPI_BUS=y +CONFIG_ACPI_EC=y +CONFIG_ACPI_POWER=y +CONFIG_ACPI_PCI=y +CONFIG_ACPI_SYSTEM=y +CONFIG_X86_PM_TIMER=y +CONFIG_ACPI_INITRD=y + +# +# APM (Advanced Power Management) BIOS Support +# +CONFIG_APM=y +# CONFIG_APM_IGNORE_USER_SUSPEND is not set +CONFIG_APM_DO_ENABLE=y +# CONFIG_APM_CPU_IDLE is not set +CONFIG_APM_DISPLAY_BLANK=y +# CONFIG_APM_RTC_IS_GMT is not set +CONFIG_APM_ALLOW_INTS=y +# CONFIG_APM_REAL_MODE_POWER_OFF is not set + +# +# CPU Frequency scaling +# +CONFIG_CPU_FREQ=y +CONFIG_CPU_FREQ_PROC_INTF=y +CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y +# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set +CONFIG_CPU_FREQ_GOV_PERFORMANCE=y +CONFIG_CPU_FREQ_GOV_POWERSAVE=m +CONFIG_CPU_FREQ_GOV_USERSPACE=m +# CONFIG_CPU_FREQ_24_API is not set +CONFIG_CPU_FREQ_TABLE=m + +# +# CPUFreq processor drivers +# +CONFIG_X86_ACPI_CPUFREQ=m +# CONFIG_X86_ACPI_CPUFREQ_PROC_INTF is not set +CONFIG_X86_POWERNOW_K6=m +CONFIG_X86_POWERNOW_K7=m +CONFIG_X86_POWERNOW_K8=m +CONFIG_X86_POWERNOW_K8_ACPI=y +CONFIG_X86_GX_SUSPMOD=m +CONFIG_X86_SPEEDSTEP_CENTRINO=m +CONFIG_X86_SPEEDSTEP_ICH=m +CONFIG_X86_SPEEDSTEP_SMI=m +CONFIG_X86_P4_CLOCKMOD=m +CONFIG_X86_SPEEDSTEP_LIB=m +CONFIG_X86_LONGRUN=m +CONFIG_X86_LONGHAUL=m + +# +# Bus options (PCI, PCMCIA, EISA, MCA, ISA) +# +CONFIG_PCI=y +# CONFIG_PCI_GOBIOS is not set +# CONFIG_PCI_GOMMCONFIG is not set +# CONFIG_PCI_GODIRECT is not set +CONFIG_PCI_GOANY=y +CONFIG_PCI_BIOS=y +CONFIG_PCI_DIRECT=y +CONFIG_PCI_MMCONFIG=y +CONFIG_PCI_USE_VECTOR=y +# CONFIG_PCI_LEGACY_PROC is not set +CONFIG_PCI_NAMES=y +CONFIG_ISA=y +# CONFIG_EISA is not set +# CONFIG_MCA is not set +CONFIG_SCx200=m + +# +# PCMCIA/CardBus support +# +CONFIG_PCMCIA=m +# CONFIG_PCMCIA_DEBUG is not set +CONFIG_YENTA=m +CONFIG_CARDBUS=y +CONFIG_I82092=m +CONFIG_I82365=m +CONFIG_TCIC=m +CONFIG_PCMCIA_PROBE=y + +# +# PCI Hotplug Support +# +CONFIG_HOTPLUG_PCI=m +CONFIG_HOTPLUG_PCI_FAKE=m +CONFIG_HOTPLUG_PCI_COMPAQ=m +CONFIG_HOTPLUG_PCI_COMPAQ_NVRAM=y +CONFIG_HOTPLUG_PCI_IBM=m +CONFIG_HOTPLUG_PCI_ACPI=m +CONFIG_HOTPLUG_PCI_CPCI=y +CONFIG_HOTPLUG_PCI_CPCI_ZT5550=m +CONFIG_HOTPLUG_PCI_CPCI_GENERIC=m +CONFIG_HOTPLUG_PCI_PCIE=m +# CONFIG_HOTPLUG_PCI_PCIE_POLL_EVENT_MODE is not set +# CONFIG_HOTPLUG_PCI_SHPC is not set + +# +# Executable file formats +# +CONFIG_BINFMT_ELF=y +CONFIG_BINFMT_AOUT=m +CONFIG_BINFMT_MISC=m + +# +# Device Drivers +# + +# +# Generic Driver Options +# +CONFIG_FW_LOADER=m +# CONFIG_DEBUG_DRIVER is not set + +# +# Memory Technology Devices (MTD) +# +CONFIG_MTD=m +# CONFIG_MTD_DEBUG is not set +CONFIG_MTD_PARTITIONS=m +CONFIG_MTD_CONCAT=m +CONFIG_MTD_REDBOOT_PARTS=m +CONFIG_MTD_CMDLINE_PARTS=m + +# +# User Modules And Translation Layers +# +CONFIG_MTD_CHAR=m +CONFIG_MTD_BLOCK=m +# CONFIG_MTD_BLOCK_RO is not set +CONFIG_FTL=m +# CONFIG_NFTL is not set +CONFIG_INFTL=m + +# +# RAM/ROM/Flash chip drivers +# +CONFIG_MTD_CFI=m +CONFIG_MTD_JEDECPROBE=m +CONFIG_MTD_GEN_PROBE=m +CONFIG_MTD_CFI_ADV_OPTIONS=y +CONFIG_MTD_CFI_NOSWAP=y +# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set +# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set +# CONFIG_MTD_CFI_GEOMETRY is not set +CONFIG_MTD_CFI_INTELEXT=m +CONFIG_MTD_CFI_AMDSTD=m +CONFIG_MTD_CFI_STAA=m +# CONFIG_MTD_RAM is not set +# CONFIG_MTD_ROM is not set +CONFIG_MTD_ABSENT=m +CONFIG_MTD_OBSOLETE_CHIPS=y +CONFIG_MTD_AMDSTD=m +CONFIG_MTD_SHARP=m +CONFIG_MTD_JEDEC=m + +# +# Mapping drivers for chip access +# +CONFIG_MTD_COMPLEX_MAPPINGS=y +CONFIG_MTD_PHYSMAP=m +CONFIG_MTD_PHYSMAP_START=0x8000000 +CONFIG_MTD_PHYSMAP_LEN=0x4000000 +CONFIG_MTD_PHYSMAP_BUSWIDTH=2 +CONFIG_MTD_PNC2000=m +CONFIG_MTD_SC520CDP=m +CONFIG_MTD_NETSC520=m +CONFIG_MTD_SBC_GXX=m +CONFIG_MTD_ELAN_104NC=m +CONFIG_MTD_OCTAGON=m +CONFIG_MTD_VMAX=m +CONFIG_MTD_SCx200_DOCFLASH=m +CONFIG_MTD_AMD76XROM=m +CONFIG_MTD_ICH2ROM=m +CONFIG_MTD_SCB2_FLASH=m +CONFIG_MTD_NETtel=m +CONFIG_MTD_DILNETPC=m +CONFIG_MTD_DILNETPC_BOOTSIZE=0x80000 +CONFIG_MTD_L440GX=m +CONFIG_MTD_PCI=m + +# +# Self-contained MTD device drivers +# +CONFIG_MTD_PMC551=m +CONFIG_MTD_PMC551_BUGFIX=y +# CONFIG_MTD_PMC551_DEBUG is not set +CONFIG_MTD_SLRAM=m +CONFIG_MTD_MTDRAM=m +CONFIG_MTDRAM_TOTAL_SIZE=4096 +CONFIG_MTDRAM_ERASE_SIZE=128 +CONFIG_MTD_BLKMTD=m + +# +# Disk-On-Chip Device Drivers +# +CONFIG_MTD_DOC2000=m +CONFIG_MTD_DOC2001=m +CONFIG_MTD_DOC2001PLUS=m +CONFIG_MTD_DOCPROBE=m +CONFIG_MTD_DOCPROBE_ADVANCED=y +CONFIG_MTD_DOCPROBE_ADDRESS=0x0000 +CONFIG_MTD_DOCPROBE_HIGH=y +CONFIG_MTD_DOCPROBE_55AA=y + +# +# NAND Flash Device Drivers +# +CONFIG_MTD_NAND=m +# CONFIG_MTD_NAND_VERIFY_WRITE is not set +CONFIG_MTD_NAND_IDS=m + +# +# Parallel port support +# +CONFIG_PARPORT=m +CONFIG_PARPORT_PC=m +CONFIG_PARPORT_PC_CML1=m +CONFIG_PARPORT_SERIAL=m +CONFIG_PARPORT_PC_FIFO=y +CONFIG_PARPORT_PC_SUPERIO=y +CONFIG_PARPORT_PC_PCMCIA=m +CONFIG_PARPORT_OTHER=y +CONFIG_PARPORT_1284=y + +# +# Plug and Play support +# +CONFIG_PNP=y +# CONFIG_PNP_DEBUG is not set + +# +# Protocols +# +CONFIG_ISAPNP=y +CONFIG_PNPBIOS=y +CONFIG_PNPBIOS_PROC_FS=y + +# +# Block devices +# +CONFIG_BLK_DEV_FD=y +CONFIG_BLK_DEV_XD=m +CONFIG_PARIDE=m +CONFIG_PARIDE_PARPORT=m + +# +# Parallel IDE high-level drivers +# +CONFIG_PARIDE_PD=m +CONFIG_PARIDE_PCD=m +CONFIG_PARIDE_PF=m +CONFIG_PARIDE_PT=m +CONFIG_PARIDE_PG=m + +# +# Parallel IDE protocol modules +# +CONFIG_PARIDE_ATEN=m +CONFIG_PARIDE_BPCK=m +CONFIG_PARIDE_BPCK6=m +CONFIG_PARIDE_COMM=m +CONFIG_PARIDE_DSTR=m +CONFIG_PARIDE_FIT2=m +CONFIG_PARIDE_FIT3=m +CONFIG_PARIDE_EPAT=m +CONFIG_PARIDE_EPATC8=y +CONFIG_PARIDE_EPIA=m +CONFIG_PARIDE_FRIQ=m +CONFIG_PARIDE_FRPW=m +CONFIG_PARIDE_KBIC=m +CONFIG_PARIDE_KTTI=m +CONFIG_PARIDE_ON20=m +CONFIG_PARIDE_ON26=m +CONFIG_BLK_CPQ_DA=m +CONFIG_BLK_CPQ_CISS_DA=m +CONFIG_CISS_SCSI_TAPE=y +CONFIG_BLK_DEV_DAC960=m +CONFIG_BLK_DEV_UMEM=m +CONFIG_BLK_DEV_LOOP=y +CONFIG_BLK_DEV_CRYPTOLOOP=m +CONFIG_BLK_DEV_NBD=m +CONFIG_BLK_DEV_CARMEL=m +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_SIZE=64000 +CONFIG_BLK_DEV_INITRD=y +CONFIG_LBD=y +CONFIG_CIPHER_TWOFISH=m + +# +# ATA/ATAPI/MFM/RLL support +# +CONFIG_IDE=y +CONFIG_BLK_DEV_IDE=y + +# +# Please see Documentation/ide.txt for help/info on IDE drives +# +# CONFIG_BLK_DEV_HD_IDE is not set +CONFIG_BLK_DEV_IDEDISK=y +CONFIG_IDEDISK_MULTI_MODE=y +CONFIG_IDEDISK_STROKE=y +CONFIG_BLK_DEV_IDECS=m +CONFIG_BLK_DEV_IDECD=m +CONFIG_BLK_DEV_IDETAPE=m +CONFIG_BLK_DEV_IDEFLOPPY=y +CONFIG_BLK_DEV_IDESCSI=m +# CONFIG_IDE_TASK_IOCTL is not set +# CONFIG_IDE_TASKFILE_IO is not set + +# +# IDE chipset support/bugfixes +# +CONFIG_IDE_GENERIC=y +CONFIG_BLK_DEV_CMD640=y +CONFIG_BLK_DEV_CMD640_ENHANCED=y +CONFIG_BLK_DEV_IDEPNP=y +CONFIG_BLK_DEV_IDEPCI=y +CONFIG_IDEPCI_SHARE_IRQ=y +CONFIG_BLK_DEV_OFFBOARD=y +CONFIG_BLK_DEV_GENERIC=y +# CONFIG_BLK_DEV_OPTI621 is not set +CONFIG_BLK_DEV_RZ1000=y +CONFIG_BLK_DEV_IDEDMA_PCI=y +# CONFIG_BLK_DEV_IDEDMA_FORCED is not set +CONFIG_IDEDMA_PCI_AUTO=y +CONFIG_IDEDMA_ONLYDISK=y +CONFIG_BLK_DEV_ADMA=y +CONFIG_BLK_DEV_AEC62XX=y +CONFIG_BLK_DEV_ALI15X3=y +# CONFIG_WDC_ALI15X3 is not set +CONFIG_BLK_DEV_AMD74XX=y +CONFIG_BLK_DEV_ATIIXP=y +CONFIG_BLK_DEV_CMD64X=y +CONFIG_BLK_DEV_TRIFLEX=y +CONFIG_BLK_DEV_CY82C693=y +CONFIG_BLK_DEV_CS5520=m +CONFIG_BLK_DEV_CS5530=m +CONFIG_BLK_DEV_HPT34X=y +CONFIG_HPT34X_AUTODMA=y +CONFIG_BLK_DEV_HPT366=y +CONFIG_BLK_DEV_SC1200=y +CONFIG_BLK_DEV_PIIX=y +CONFIG_BLK_DEV_NS87415=y +CONFIG_BLK_DEV_PDC202XX_OLD=y +CONFIG_PDC202XX_BURST=y +CONFIG_BLK_DEV_PDC202XX_NEW=y +CONFIG_PDC202XX_FORCE=y +CONFIG_BLK_DEV_SVWKS=y +CONFIG_BLK_DEV_SIIMAGE=y +CONFIG_BLK_DEV_SIS5513=y +CONFIG_BLK_DEV_SLC90E66=y +# CONFIG_BLK_DEV_TRM290 is not set +CONFIG_BLK_DEV_VIA82CXXX=y +CONFIG_IDE_CHIPSETS=y + +# +# Note: most of these also require special kernel boot parameters +# +CONFIG_BLK_DEV_4DRIVES=y +CONFIG_BLK_DEV_ALI14XX=y +CONFIG_BLK_DEV_DTC2278=y +CONFIG_BLK_DEV_HT6560B=y +# CONFIG_BLK_DEV_PDC4030 is not set +CONFIG_BLK_DEV_QD65XX=y +CONFIG_BLK_DEV_UMC8672=y +CONFIG_BLK_DEV_IDEDMA=y +# CONFIG_IDEDMA_IVB is not set +CONFIG_IDEDMA_AUTO=y +# CONFIG_BLK_DEV_HD is not set + +# +# SCSI device support +# +CONFIG_SCSI=m +CONFIG_SCSI_PROC_FS=y + +# +# SCSI support type (disk, tape, CD-ROM) +# +CONFIG_BLK_DEV_SD=m +CONFIG_CHR_DEV_ST=m +CONFIG_CHR_DEV_OSST=m +CONFIG_BLK_DEV_SR=m +# CONFIG_BLK_DEV_SR_VENDOR is not set +CONFIG_CHR_DEV_SG=m +CONFIG_CHR_DEV_SCH=m + +# +# Some SCSI devices (e.g. CD jukebox) support multiple LUNs +# +CONFIG_SCSI_MULTI_LUN=y +CONFIG_SCSI_REPORT_LUNS=y +CONFIG_SCSI_CONSTANTS=y +CONFIG_SCSI_LOGGING=y + +# +# SCSI Transport Attributes +# +CONFIG_SCSI_SPI_ATTRS=m +CONFIG_SCSI_FC_ATTRS=m + +# +# SCSI low-level drivers +# +CONFIG_BLK_DEV_3W_XXXX_RAID=m +CONFIG_SCSI_7000FASST=m +CONFIG_SCSI_ACARD=m +CONFIG_SCSI_AHA152X=m +CONFIG_SCSI_AHA1542=m +CONFIG_SCSI_AACRAID=m +CONFIG_SCSI_AIC7XXX=m +CONFIG_AIC7XXX_CMDS_PER_DEVICE=32 +CONFIG_AIC7XXX_RESET_DELAY_MS=5000 +# CONFIG_AIC7XXX_BUILD_FIRMWARE is not set +# CONFIG_AIC7XXX_DEBUG_ENABLE is not set +CONFIG_AIC7XXX_DEBUG_MASK=0 +CONFIG_AIC7XXX_REG_PRETTY_PRINT=y +CONFIG_SCSI_AIC7XXX_OLD=m +CONFIG_SCSI_AIC79XX=m +CONFIG_AIC79XX_CMDS_PER_DEVICE=32 +CONFIG_AIC79XX_RESET_DELAY_MS=15000 +# CONFIG_AIC79XX_BUILD_FIRMWARE is not set +# CONFIG_AIC79XX_ENABLE_RD_STRM is not set +# CONFIG_AIC79XX_DEBUG_ENABLE is not set +CONFIG_AIC79XX_DEBUG_MASK=0 +CONFIG_AIC79XX_REG_PRETTY_PRINT=y +CONFIG_SCSI_ADVANSYS=m +CONFIG_SCSI_IN2000=m +CONFIG_SCSI_MEGARAID=m +CONFIG_SCSI_SATA=y +CONFIG_SCSI_SATA_SVW=m +CONFIG_SCSI_ATA_PIIX=m +CONFIG_SCSI_SATA_PROMISE=m +CONFIG_SCSI_SATA_SIL=m +CONFIG_SCSI_SATA_SIS=m +CONFIG_SCSI_SATA_VIA=m +CONFIG_SCSI_SATA_VITESSE=m +CONFIG_SCSI_BUSLOGIC=m +# CONFIG_SCSI_OMIT_FLASHPOINT is not set +# CONFIG_SCSI_CPQFCTS is not set +CONFIG_SCSI_DMX3191D=m +CONFIG_SCSI_DTC3280=m +CONFIG_SCSI_EATA=m +CONFIG_SCSI_EATA_TAGGED_QUEUE=y +CONFIG_SCSI_EATA_LINKED_COMMANDS=y +CONFIG_SCSI_EATA_MAX_TAGS=16 +CONFIG_SCSI_EATA_PIO=m +CONFIG_SCSI_FUTURE_DOMAIN=m +CONFIG_SCSI_GDTH=m +CONFIG_SCSI_GENERIC_NCR5380=m +CONFIG_SCSI_GENERIC_NCR5380_MMIO=m +CONFIG_SCSI_GENERIC_NCR53C400=y +CONFIG_SCSI_IPS=m +# CONFIG_SCSI_INIA100 is not set +CONFIG_SCSI_PPA=m +CONFIG_SCSI_IMM=m +# CONFIG_SCSI_IZIP_EPP16 is not set +# CONFIG_SCSI_IZIP_SLOW_CTR is not set +CONFIG_SCSI_NCR53C406A=m +CONFIG_SCSI_SYM53C8XX_2=m +CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1 +CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16 +CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 +# CONFIG_SCSI_SYM53C8XX_IOMAPPED is not set +CONFIG_SCSI_LPFC=m +CONFIG_SCSI_IPR=m +CONFIG_SCSI_IPR_TRACE=y +CONFIG_SCSI_IPR_DUMP=y +CONFIG_SCSI_PAS16=m +CONFIG_SCSI_PSI240I=m +CONFIG_SCSI_QLOGIC_FAS=m +CONFIG_SCSI_QLOGIC_ISP=m +CONFIG_SCSI_QLOGIC_FC=m +CONFIG_SCSI_QLOGIC_FC_FIRMWARE=y +CONFIG_SCSI_QLOGIC_1280=m +CONFIG_SCSI_QLA2XXX=m +CONFIG_SCSI_QLA21XX=m +CONFIG_SCSI_QLA22XX=m +CONFIG_SCSI_QLA2300=m +CONFIG_SCSI_QLA2322=m +CONFIG_SCSI_QLA6312=m +CONFIG_SCSI_QLA6322=m +CONFIG_SCSI_QLA2XXX_FAILOVER=y +CONFIG_SCSI_SYM53C416=m +CONFIG_SCSI_DC395x=m +CONFIG_SCSI_DC390T=m +CONFIG_SCSI_T128=m +CONFIG_SCSI_U14_34F=m +CONFIG_SCSI_U14_34F_TAGGED_QUEUE=y +CONFIG_SCSI_U14_34F_LINKED_COMMANDS=y +CONFIG_SCSI_U14_34F_MAX_TAGS=8 +CONFIG_SCSI_ULTRASTOR=m +CONFIG_SCSI_NSP32=m +CONFIG_SCSI_DEBUG=m + +# +# PCMCIA SCSI adapter support +# +CONFIG_PCMCIA_AHA152X=m +CONFIG_PCMCIA_FDOMAIN=m +CONFIG_PCMCIA_NINJA_SCSI=m +CONFIG_PCMCIA_QLOGIC=m + +# +# Old CD-ROM drivers (not SCSI, not IDE) +# +CONFIG_CD_NO_IDESCSI=y +CONFIG_AZTCD=m +CONFIG_GSCD=m +CONFIG_MCD=m +CONFIG_MCD_IRQ=11 +CONFIG_MCD_BASE=0x300 +CONFIG_MCDX=m +CONFIG_OPTCD=m +CONFIG_SJCD=m +CONFIG_ISP16_CDI=m +CONFIG_CDU535=m + +# +# Multi-device support (RAID and LVM) +# +CONFIG_MD=y +CONFIG_BLK_DEV_MD=y +CONFIG_MD_LINEAR=m +CONFIG_MD_RAID0=m +CONFIG_MD_RAID1=m +CONFIG_MD_RAID5=m +CONFIG_MD_RAID6=m +CONFIG_MD_MULTIPATH=m +CONFIG_BLK_DEV_DM=m +CONFIG_DM_CRYPT=m +CONFIG_DM_MULTIPATH=m +CONFIG_DM_SNAPSHOT=m +CONFIG_DM_MIRROR=m +CONFIG_DM_ZERO=m +CONFIG_DM_FLAKEY=m + +# +# Fusion MPT device support +# +CONFIG_FUSION=m +CONFIG_FUSION_MAX_SGE=40 +CONFIG_FUSION_ISENSE=m +CONFIG_FUSION_CTL=m +CONFIG_FUSION_LAN=m + +# +# IEEE 1394 (FireWire) support +# +CONFIG_IEEE1394=m + +# +# Subsystem Options +# +# CONFIG_IEEE1394_VERBOSEDEBUG is not set +# CONFIG_IEEE1394_OUI_DB is not set +CONFIG_IEEE1394_EXTRA_CONFIG_ROMS=y +CONFIG_IEEE1394_CONFIG_ROM_IP1394=y + +# +# Device Drivers +# +CONFIG_IEEE1394_PCILYNX=m +CONFIG_IEEE1394_OHCI1394=m + +# +# Protocol Drivers +# +CONFIG_IEEE1394_VIDEO1394=m +CONFIG_IEEE1394_SBP2=m +# CONFIG_IEEE1394_SBP2_PHYS_DMA is not set +CONFIG_IEEE1394_ETH1394=m +CONFIG_IEEE1394_DV1394=m +CONFIG_IEEE1394_RAWIO=m +CONFIG_IEEE1394_CMP=m +CONFIG_IEEE1394_AMDTP=m + +# +# I2O device support +# +CONFIG_I2O=m +CONFIG_I2O_PCI=m +CONFIG_I2O_BLOCK=m +CONFIG_I2O_SCSI=m +CONFIG_I2O_PROC=m + +# +# Networking support +# +CONFIG_NET=y + +# +# Networking options +# +CONFIG_PACKET=m +CONFIG_PACKET_MMAP=y +CONFIG_NETLINK_DEV=m +CONFIG_UNIX=y +CONFIG_NET_KEY=m +CONFIG_INET=y +CONFIG_IP_MULTICAST=y +CONFIG_IP_ADVANCED_ROUTER=y +CONFIG_IP_MULTIPLE_TABLES=y +CONFIG_IP_ROUTE_FWMARK=y +CONFIG_IP_ROUTE_NAT=y +CONFIG_IP_ROUTE_MULTIPATH=y +CONFIG_IP_ROUTE_TOS=y +CONFIG_IP_ROUTE_VERBOSE=y +# CONFIG_IP_PNP is not set +CONFIG_NET_IPIP=m +CONFIG_NET_IPGRE=m +CONFIG_NET_IPGRE_BROADCAST=y +CONFIG_IP_MROUTE=y +CONFIG_IP_PIMSM_V1=y +CONFIG_IP_PIMSM_V2=y +# CONFIG_ARPD is not set +CONFIG_SYN_COOKIES=y +CONFIG_INET_AH=m +CONFIG_INET_ESP=m +CONFIG_INET_IPCOMP=m + +# +# IP: Virtual Server Configuration +# +CONFIG_IP_VS=m +# CONFIG_IP_VS_DEBUG is not set +CONFIG_IP_VS_TAB_BITS=12 + +# +# IPVS transport protocol load balancing support +# +CONFIG_IP_VS_PROTO_TCP=y +CONFIG_IP_VS_PROTO_UDP=y +CONFIG_IP_VS_PROTO_ESP=y +CONFIG_IP_VS_PROTO_AH=y + +# +# IPVS scheduler +# +CONFIG_IP_VS_RR=m +CONFIG_IP_VS_WRR=m +CONFIG_IP_VS_LC=m +CONFIG_IP_VS_WLC=m +CONFIG_IP_VS_LBLC=m +CONFIG_IP_VS_LBLCR=m +CONFIG_IP_VS_DH=m +CONFIG_IP_VS_SH=m +CONFIG_IP_VS_SED=m +CONFIG_IP_VS_NQ=m + +# +# IPVS application helper +# +CONFIG_IP_VS_FTP=m +CONFIG_IPV6=m +CONFIG_IPV6_SUBTREES=y +CONFIG_IPV6_PRIVACY=y +CONFIG_IPV6_NDISC_NEW=y +CONFIG_INET6_AH=m +CONFIG_INET6_ESP=m +CONFIG_INET6_IPCOMP=m +CONFIG_IPV6_TUNNEL=m + +# +# MOBILE IPv6 (EXPERIMENTAL) +# +CONFIG_IPV6_MOBILITY=m +CONFIG_IPV6_MOBILITY_MN=m +CONFIG_IPV6_MOBILITY_HA=m +# CONFIG_IPV6_MOBILITY_DEBUG is not set +CONFIG_DECNET=m +CONFIG_DECNET_SIOCGIFCONF=y +# CONFIG_DECNET_ROUTER is not set +CONFIG_BRIDGE=m +CONFIG_NETFILTER=y +# CONFIG_NETFILTER_DEBUG is not set +CONFIG_BRIDGE_NETFILTER=y + +# +# IP: Netfilter Configuration +# +CONFIG_IP_NF_CONNTRACK=m +CONFIG_IP_NF_FTP=m +CONFIG_IP_NF_IRC=m +CONFIG_IP_NF_TFTP=m +CONFIG_IP_NF_AMANDA=m +CONFIG_IP_NF_QUEUE=m +CONFIG_IP_NF_IPTABLES=m +CONFIG_IP_NF_MATCH_LIMIT=m +CONFIG_IP_NF_MATCH_IPRANGE=m +CONFIG_IP_NF_MATCH_MAC=m +CONFIG_IP_NF_MATCH_PKTTYPE=m +CONFIG_IP_NF_MATCH_MARK=m +CONFIG_IP_NF_MATCH_MULTIPORT=m +CONFIG_IP_NF_MATCH_TOS=m +CONFIG_IP_NF_MATCH_RECENT=m +CONFIG_IP_NF_MATCH_ECN=m +CONFIG_IP_NF_MATCH_DSCP=m +CONFIG_IP_NF_MATCH_AH_ESP=m +CONFIG_IP_NF_MATCH_LENGTH=m +CONFIG_IP_NF_MATCH_TTL=m +CONFIG_IP_NF_MATCH_TCPMSS=m +CONFIG_IP_NF_MATCH_HELPER=m +CONFIG_IP_NF_MATCH_STATE=m +CONFIG_IP_NF_MATCH_CONNTRACK=m +CONFIG_IP_NF_MATCH_OWNER=m +CONFIG_IP_NF_MATCH_PHYSDEV=m +CONFIG_IP_NF_FILTER=m +CONFIG_IP_NF_TARGET_REJECT=m +CONFIG_IP_NF_NAT=m +CONFIG_IP_NF_NAT_NEEDED=y +CONFIG_IP_NF_TARGET_MASQUERADE=m +CONFIG_IP_NF_TARGET_REDIRECT=m +CONFIG_IP_NF_TARGET_NETMAP=m +CONFIG_IP_NF_TARGET_SAME=m +# CONFIG_IP_NF_NAT_LOCAL is not set +CONFIG_IP_NF_NAT_SNMP_BASIC=m +CONFIG_IP_NF_NAT_IRC=m +CONFIG_IP_NF_NAT_FTP=m +CONFIG_IP_NF_NAT_TFTP=m +CONFIG_IP_NF_NAT_AMANDA=m +CONFIG_IP_NF_MANGLE=m +CONFIG_IP_NF_TARGET_TOS=m +CONFIG_IP_NF_TARGET_ECN=m +CONFIG_IP_NF_TARGET_DSCP=m +CONFIG_IP_NF_TARGET_MARK=m +CONFIG_IP_NF_TARGET_CLASSIFY=m +CONFIG_IP_NF_TARGET_LOG=m +CONFIG_IP_NF_TARGET_ULOG=m +CONFIG_IP_NF_TARGET_TCPMSS=m +CONFIG_IP_NF_ARPTABLES=m +CONFIG_IP_NF_ARPFILTER=m +CONFIG_IP_NF_ARP_MANGLE=m +CONFIG_IP_NF_COMPAT_IPCHAINS=m +CONFIG_IP_NF_COMPAT_IPFWADM=m + +# +# IPv6: Netfilter Configuration +# +CONFIG_IP6_NF_FTP=m +CONFIG_IP6_NF_QUEUE=m +CONFIG_IP6_NF_IPTABLES=m +CONFIG_IP6_NF_MATCH_LIMIT=m +CONFIG_IP6_NF_MATCH_MAC=m +CONFIG_IP6_NF_MATCH_RT=m +CONFIG_IP6_NF_MATCH_OPTS=m +CONFIG_IP6_NF_MATCH_FRAG=m +CONFIG_IP6_NF_MATCH_HL=m +CONFIG_IP6_NF_MATCH_MULTIPORT=m +CONFIG_IP6_NF_MATCH_OWNER=m +CONFIG_IP6_NF_MATCH_MARK=m +CONFIG_IP6_NF_MATCH_IPV6HEADER=m +CONFIG_IP6_NF_MATCH_AHESP=m +CONFIG_IP6_NF_MATCH_LENGTH=m +CONFIG_IP6_NF_MATCH_EUI64=m +CONFIG_IP6_NF_CONNTRACK=m +CONFIG_IP6_NF_MATCH_STATE=m +CONFIG_IP6_NF_FILTER=m +CONFIG_IP6_NF_TARGET_LOG=m +CONFIG_IP6_NF_TARGET_REJECT=m +CONFIG_IP6_NF_MANGLE=m +CONFIG_IP6_NF_TARGET_MARK=m + +# +# DECnet: Netfilter Configuration +# +CONFIG_DECNET_NF_GRABULATOR=m + +# +# Bridge: Netfilter Configuration +# +CONFIG_BRIDGE_NF_EBTABLES=m +CONFIG_BRIDGE_EBT_BROUTE=m +CONFIG_BRIDGE_EBT_T_FILTER=m +CONFIG_BRIDGE_EBT_T_NAT=m +CONFIG_BRIDGE_EBT_802_3=m +CONFIG_BRIDGE_EBT_AMONG=m +CONFIG_BRIDGE_EBT_ARP=m +CONFIG_BRIDGE_EBT_IP=m +CONFIG_BRIDGE_EBT_LIMIT=m +CONFIG_BRIDGE_EBT_MARK=m +CONFIG_BRIDGE_EBT_PKTTYPE=m +CONFIG_BRIDGE_EBT_STP=m +CONFIG_BRIDGE_EBT_VLAN=m +CONFIG_BRIDGE_EBT_ARPREPLY=m +CONFIG_BRIDGE_EBT_DNAT=m +CONFIG_BRIDGE_EBT_MARK_T=m +CONFIG_BRIDGE_EBT_REDIRECT=m +CONFIG_BRIDGE_EBT_SNAT=m +CONFIG_BRIDGE_EBT_LOG=m +CONFIG_XFRM=y +CONFIG_XFRM_USER=m + +# +# SCTP Configuration (EXPERIMENTAL) +# +CONFIG_IP_SCTP=m +# CONFIG_SCTP_DBG_MSG is not set +# CONFIG_SCTP_DBG_OBJCNT is not set +# CONFIG_SCTP_HMAC_NONE is not set +# CONFIG_SCTP_HMAC_SHA1 is not set +CONFIG_SCTP_HMAC_MD5=y +CONFIG_ATM=y +CONFIG_ATM_CLIP=y +CONFIG_ATM_CLIP_NO_ICMP=y +CONFIG_ATM_LANE=m +CONFIG_ATM_MPOA=m +CONFIG_ATM_BR2684=m +# CONFIG_ATM_BR2684_IPFILTER is not set +CONFIG_VLAN_8021Q=m +CONFIG_LLC=y +CONFIG_LLC2=m +CONFIG_IPX=m +# CONFIG_IPX_INTERN is not set +CONFIG_ATALK=m +CONFIG_DEV_APPLETALK=y +CONFIG_LTPC=m +CONFIG_COPS=m +CONFIG_COPS_DAYNA=y +CONFIG_COPS_TANGENT=y +CONFIG_IPDDP=m +CONFIG_IPDDP_ENCAP=y +CONFIG_IPDDP_DECAP=y +CONFIG_X25=m +CONFIG_LAPB=m +# CONFIG_NET_DIVERT is not set +CONFIG_ECONET=m +# CONFIG_ECONET_AUNUDP is not set +# CONFIG_ECONET_NATIVE is not set +CONFIG_WAN_ROUTER=m +# CONFIG_NET_FASTROUTE is not set +# CONFIG_NET_HW_FLOWCONTROL is not set + +# +# QoS and/or fair queueing +# +CONFIG_NET_SCHED=y +CONFIG_NET_SCH_CBQ=m +CONFIG_NET_SCH_HTB=m +CONFIG_NET_SCH_HFSC=m +CONFIG_NET_SCH_CSZ=m +CONFIG_NET_SCH_ATM=y +CONFIG_NET_SCH_PRIO=m +CONFIG_NET_SCH_RED=m +CONFIG_NET_SCH_SFQ=m +CONFIG_NET_SCH_TEQL=m +CONFIG_NET_SCH_TBF=m +CONFIG_NET_SCH_GRED=m +CONFIG_NET_SCH_DSMARK=m +CONFIG_NET_SCH_DELAY=m +CONFIG_NET_SCH_INGRESS=m +CONFIG_NET_QOS=y +CONFIG_NET_ESTIMATOR=y +CONFIG_NET_CLS=y +CONFIG_NET_CLS_TCINDEX=m +CONFIG_NET_CLS_ROUTE4=m +CONFIG_NET_CLS_ROUTE=y +CONFIG_NET_CLS_FW=m +CONFIG_NET_CLS_U32=m +CONFIG_NET_CLS_RSVP=m +CONFIG_NET_CLS_RSVP6=m +CONFIG_NET_CLS_POLICE=y + +# +# Network testing +# +CONFIG_NET_PKTGEN=m +CONFIG_NETDEVICES=y + +# +# ARCnet devices +# +CONFIG_ARCNET=m +CONFIG_ARCNET_1201=m +CONFIG_ARCNET_1051=m +CONFIG_ARCNET_RAW=m +CONFIG_ARCNET_COM90xx=m +CONFIG_ARCNET_COM90xxIO=m +CONFIG_ARCNET_RIM_I=m +CONFIG_ARCNET_COM20020=m +CONFIG_ARCNET_COM20020_ISA=m +CONFIG_ARCNET_COM20020_PCI=m +CONFIG_DUMMY=m +CONFIG_BONDING=m +CONFIG_EQUALIZER=m +CONFIG_TUN=m +CONFIG_ETHERTAP=m +CONFIG_NET_SB1000=m + +# +# Ethernet (10 or 100Mbit) +# +CONFIG_NET_ETHERNET=y +CONFIG_MII=m +CONFIG_HAPPYMEAL=m +CONFIG_SUNGEM=m +CONFIG_NET_VENDOR_3COM=y +CONFIG_EL1=m +CONFIG_EL2=m +CONFIG_ELPLUS=m +CONFIG_EL16=m +CONFIG_EL3=m +CONFIG_3C515=m +CONFIG_VORTEX=m +CONFIG_TYPHOON=m +CONFIG_LANCE=m +CONFIG_NET_VENDOR_SMC=y +CONFIG_WD80x3=m +CONFIG_ULTRA=m +CONFIG_SMC9194=m +CONFIG_NET_VENDOR_RACAL=y +CONFIG_NI52=m +CONFIG_NI65=m + +# +# Tulip family network device support +# +CONFIG_NET_TULIP=y +CONFIG_DE2104X=m +CONFIG_TULIP=m +# CONFIG_TULIP_MWI is not set +# CONFIG_TULIP_MMIO is not set +CONFIG_TULIP_NAPI=y +CONFIG_TULIP_NAPI_HW_MITIGATION=y +CONFIG_DE4X5=m +CONFIG_WINBOND_840=m +CONFIG_DM9102=m +CONFIG_PCMCIA_XIRCOM=m +CONFIG_AT1700=m +CONFIG_DEPCA=m +CONFIG_HP100=m +CONFIG_NET_ISA=y +CONFIG_E2100=m +CONFIG_EWRK3=m +CONFIG_EEXPRESS=m +CONFIG_EEXPRESS_PRO=m +CONFIG_HPLAN_PLUS=m +CONFIG_HPLAN=m +CONFIG_LP486E=m +CONFIG_ETH16I=m +CONFIG_NE2000=m +CONFIG_ZNET=m +CONFIG_SEEQ8005=m +CONFIG_NET_PCI=y +CONFIG_PCNET32=m +CONFIG_AMD8111_ETH=m +CONFIG_ADAPTEC_STARFIRE=m +CONFIG_ADAPTEC_STARFIRE_NAPI=y +CONFIG_AC3200=m +CONFIG_APRICOT=m +CONFIG_B44=m +CONFIG_FORCEDETH=m +CONFIG_CS89x0=m +CONFIG_DGRS=m +CONFIG_EEPRO100=m +# CONFIG_EEPRO100_PIO is not set +CONFIG_E100=m +CONFIG_E100_NAPI=y +CONFIG_FEALNX=m +CONFIG_NATSEMI=m +CONFIG_NE2K_PCI=m +CONFIG_8139CP=m +CONFIG_8139TOO=m +# CONFIG_8139TOO_PIO is not set +# CONFIG_8139TOO_TUNE_TWISTER is not set +CONFIG_8139TOO_8129=y +# CONFIG_8139_OLD_RX_RESET is not set +CONFIG_8139_RXBUF_IDX=2 +CONFIG_SIS900=m +CONFIG_EPIC100=m +CONFIG_SUNDANCE=m +# CONFIG_SUNDANCE_MMIO is not set +CONFIG_TLAN=m +CONFIG_VIA_RHINE=m +# CONFIG_VIA_RHINE_MMIO is not set +CONFIG_NET_POCKET=y +CONFIG_ATP=m +CONFIG_DE600=m +CONFIG_DE620=m + +# +# Ethernet (1000 Mbit) +# +CONFIG_ACENIC=m +# CONFIG_ACENIC_OMIT_TIGON_I is not set +CONFIG_DL2K=m +CONFIG_E1000=m +CONFIG_E1000_NAPI=y +CONFIG_NS83820=m +CONFIG_HAMACHI=m +CONFIG_YELLOWFIN=m +CONFIG_R8169=m +CONFIG_SIS190=m +CONFIG_SK98LIN=m +CONFIG_TIGON3=m +CONFIG_NET_BROADCOM=m +CONFIG_NET_BCM44=m + +# +# Ethernet (10000 Mbit) +# +CONFIG_IXGB=m +CONFIG_IXGB_NAPI=y +CONFIG_S2IO=m +CONFIG_S2IO_NAPI=y +CONFIG_FDDI=y +# CONFIG_DEFXX is not set +CONFIG_SKFP=m +CONFIG_HIPPI=y +CONFIG_ROADRUNNER=m +CONFIG_ROADRUNNER_LARGE_RINGS=y +CONFIG_PLIP=m +CONFIG_PPP=m +CONFIG_PPP_MULTILINK=y +CONFIG_PPP_FILTER=y +CONFIG_PPP_ASYNC=m +CONFIG_PPP_SYNC_TTY=m +CONFIG_PPP_DEFLATE=m +CONFIG_PPP_BSDCOMP=m +CONFIG_PPP_MPPE=m +CONFIG_PPPOE=m +CONFIG_PPPOATM=m +CONFIG_SLIP=m +CONFIG_SLIP_COMPRESSED=y +CONFIG_SLIP_SMART=y +CONFIG_SLIP_MODE_SLIP6=y + +# +# Wireless LAN (non-hamradio) +# +CONFIG_NET_RADIO=y + +# +# Obsolete Wireless cards support (pre-802.11) +# +CONFIG_STRIP=m +# CONFIG_ARLAN is not set +CONFIG_WAVELAN=m +CONFIG_PCMCIA_WAVELAN=m +CONFIG_PCMCIA_NETWAVE=m + +# +# Wireless 802.11 Frequency Hopping cards support +# +CONFIG_PCMCIA_RAYCS=m + +# +# Wireless 802.11b ISA/PCI cards support +# +CONFIG_AIRO=m +CONFIG_HERMES=m +CONFIG_PLX_HERMES=m +CONFIG_TMD_HERMES=m +CONFIG_PCI_HERMES=m +CONFIG_ATMEL=m +CONFIG_PCI_ATMEL=m + +# +# Wireless 802.11b Pcmcia/Cardbus cards support +# +CONFIG_PCMCIA_HERMES=m +CONFIG_AIRO_CS=m +CONFIG_PCMCIA_ATMEL=m +CONFIG_PCMCIA_WL3501=m + +# +# Prism GT/Duette 802.11(a/b/g) PCI/Cardbus support +# +CONFIG_PRISM54=m +CONFIG_NET_WIRELESS=y + +# +# Token Ring devices +# +CONFIG_TR=y +CONFIG_IBMTR=m +CONFIG_IBMOL=m +CONFIG_IBMLS=m +CONFIG_3C359=m +CONFIG_TMS380TR=m +CONFIG_TMSPCI=m +CONFIG_SKISA=m +CONFIG_PROTEON=m +CONFIG_ABYSS=m +CONFIG_SMCTR=m +CONFIG_NET_FC=y +CONFIG_NET_LPFC=m +CONFIG_RCPCI=m +CONFIG_SHAPER=m +CONFIG_NETCONSOLE=m + +# +# Wan interfaces +# +CONFIG_WAN=y +CONFIG_HOSTESS_SV11=m +# CONFIG_COSA is not set +CONFIG_DSCC4=m +CONFIG_DSCC4_PCISYNC=y +CONFIG_DSCC4_PCI_RST=y +CONFIG_LANMEDIA=m +CONFIG_SEALEVEL_4021=m +CONFIG_SYNCLINK_SYNCPPP=m +CONFIG_HDLC=m +CONFIG_HDLC_RAW=y +CONFIG_HDLC_RAW_ETH=y +CONFIG_HDLC_CISCO=y +CONFIG_HDLC_FR=y +CONFIG_HDLC_PPP=y +CONFIG_HDLC_X25=y +CONFIG_PCI200SYN=m +CONFIG_WANXL=m +# CONFIG_WANXL_BUILD_FIRMWARE is not set +CONFIG_PC300=m +CONFIG_PC300_MLPPP=y +CONFIG_N2=m +CONFIG_C101=m +CONFIG_FARSYNC=m +CONFIG_DLCI=m +CONFIG_DLCI_COUNT=24 +CONFIG_DLCI_MAX=8 +CONFIG_SDLA=m +# CONFIG_WAN_ROUTER_DRIVERS is not set +CONFIG_LAPBETHER=m +CONFIG_X25_ASY=m +# CONFIG_SBNI is not set + +# +# PCMCIA network device support +# +CONFIG_NET_PCMCIA=y +CONFIG_PCMCIA_3C589=m +CONFIG_PCMCIA_3C574=m +CONFIG_PCMCIA_FMVJ18X=m +CONFIG_PCMCIA_PCNET=m +CONFIG_PCMCIA_NMCLAN=m +CONFIG_PCMCIA_SMC91C92=m +CONFIG_PCMCIA_XIRC2PS=m +CONFIG_PCMCIA_AXNET=m +CONFIG_ARCNET_COM20020_CS=m +CONFIG_PCMCIA_IBMTR=m + +# +# ATM drivers +# +CONFIG_ATM_TCP=m +CONFIG_ATM_LANAI=m +CONFIG_ATM_ENI=m +# CONFIG_ATM_ENI_DEBUG is not set +# CONFIG_ATM_ENI_TUNE_BURST is not set +CONFIG_ATM_FIRESTREAM=m +CONFIG_ATM_ZATM=m +# CONFIG_ATM_ZATM_DEBUG is not set +CONFIG_ATM_NICSTAR=m +CONFIG_ATM_NICSTAR_USE_SUNI=y +CONFIG_ATM_NICSTAR_USE_IDT77105=y +CONFIG_ATM_IDT77252=m +# CONFIG_ATM_IDT77252_DEBUG is not set +CONFIG_ATM_IDT77252_RCV_ALL=y +CONFIG_ATM_IDT77252_USE_SUNI=y +CONFIG_ATM_AMBASSADOR=m +# CONFIG_ATM_AMBASSADOR_DEBUG is not set +CONFIG_ATM_HORIZON=m +# CONFIG_ATM_HORIZON_DEBUG is not set +CONFIG_ATM_IA=m +# CONFIG_ATM_IA_DEBUG is not set +CONFIG_ATM_FORE200E_MAYBE=m +CONFIG_ATM_FORE200E_PCA=y +CONFIG_ATM_FORE200E_PCA_DEFAULT_FW=y +CONFIG_ATM_FORE200E_TX_RETRY=16 +CONFIG_ATM_FORE200E_DEBUG=0 +CONFIG_ATM_FORE200E=m +CONFIG_ATM_HE=m +CONFIG_ATM_HE_USE_SUNI=y + +# +# Amateur Radio support +# +CONFIG_HAMRADIO=y + +# +# Packet Radio protocols +# +CONFIG_AX25=m +CONFIG_AX25_DAMA_SLAVE=y +CONFIG_NETROM=m +CONFIG_ROSE=m + +# +# AX.25 network device drivers +# +CONFIG_BPQETHER=m +CONFIG_SCC=m +CONFIG_SCC_DELAY=y +CONFIG_SCC_TRXECHO=y +CONFIG_BAYCOM_SER_FDX=m +CONFIG_BAYCOM_SER_HDX=m +CONFIG_BAYCOM_PAR=m +CONFIG_BAYCOM_EPP=m +CONFIG_YAM=m + +# +# IrDA (infrared) support +# +CONFIG_IRDA=m + +# +# IrDA protocols +# +CONFIG_IRLAN=m +CONFIG_IRNET=m +CONFIG_IRCOMM=m +CONFIG_IRDA_ULTRA=y + +# +# IrDA options +# +CONFIG_IRDA_CACHE_LAST_LSAP=y +# CONFIG_IRDA_FAST_RR is not set +# CONFIG_IRDA_DEBUG is not set + +# +# Infrared-port device drivers +# + +# +# SIR device drivers +# +CONFIG_IRTTY_SIR=m + +# +# Dongle support +# +CONFIG_DONGLE=y +CONFIG_ESI_DONGLE=m +CONFIG_ACTISYS_DONGLE=m +CONFIG_TEKRAM_DONGLE=m +CONFIG_LITELINK_DONGLE=m +CONFIG_MA600_DONGLE=m +CONFIG_GIRBIL_DONGLE=m +CONFIG_MCP2120_DONGLE=m +CONFIG_OLD_BELKIN_DONGLE=m +CONFIG_ACT200L_DONGLE=m + +# +# Old SIR device drivers +# + +# +# Old Serial dongle support +# + +# +# FIR device drivers +# +CONFIG_USB_IRDA=m +CONFIG_SIGMATEL_FIR=m +CONFIG_NSC_FIR=m +CONFIG_WINBOND_FIR=m +CONFIG_TOSHIBA_FIR=m +CONFIG_SMC_IRCC_FIR=m +CONFIG_ALI_FIR=m +CONFIG_VLSI_FIR=m +CONFIG_VIA_FIR=m + +# +# Bluetooth support +# +CONFIG_BT=m +CONFIG_BT_L2CAP=m +CONFIG_BT_SCO=m +CONFIG_BT_RFCOMM=m +CONFIG_BT_RFCOMM_TTY=y +CONFIG_BT_BNEP=m +CONFIG_BT_BNEP_MC_FILTER=y +CONFIG_BT_BNEP_PROTO_FILTER=y +CONFIG_BT_CMTP=m + +# +# Bluetooth device drivers +# +CONFIG_BT_HCIUSB=m +CONFIG_BT_HCIUSB_SCO=y +CONFIG_BT_HCIUART=m +CONFIG_BT_HCIUART_H4=y +CONFIG_BT_HCIUART_BCSP=y +CONFIG_BT_HCIUART_BCSP_TXCRC=y +CONFIG_BT_HCIBCM203X=m +CONFIG_BT_HCIBFUSB=m +CONFIG_BT_HCIDTL1=m +CONFIG_BT_HCIBT3C=m +CONFIG_BT_HCIBLUECARD=m +CONFIG_BT_HCIBTUART=m +CONFIG_BT_HCIVHCI=m +CONFIG_NETPOLL=y +CONFIG_NETPOLL_RX=y +CONFIG_NETPOLL_TRAP=y +CONFIG_NET_POLL_CONTROLLER=y + +# +# ISDN subsystem +# +CONFIG_ISDN=m + +# +# Old ISDN4Linux +# +CONFIG_ISDN_I4L=m +CONFIG_ISDN_PPP=y +CONFIG_ISDN_PPP_VJ=y +CONFIG_ISDN_MPP=y +CONFIG_IPPP_FILTER=y +CONFIG_ISDN_PPP_BSDCOMP=m +CONFIG_ISDN_AUDIO=y +CONFIG_ISDN_TTY_FAX=y +CONFIG_ISDN_X25=y + +# +# ISDN feature submodules +# + +# +# ISDN4Linux hardware drivers +# + +# +# Passive cards +# +CONFIG_ISDN_DRV_HISAX=m + +# +# D-channel protocol features +# +CONFIG_HISAX_EURO=y +CONFIG_DE_AOC=y +# CONFIG_HISAX_NO_SENDCOMPLETE is not set +# CONFIG_HISAX_NO_LLC is not set +# CONFIG_HISAX_NO_KEYPAD is not set +CONFIG_HISAX_1TR6=y +CONFIG_HISAX_NI1=y +CONFIG_HISAX_MAX_CARDS=8 + +# +# HiSax supported cards +# +CONFIG_HISAX_16_0=y +CONFIG_HISAX_16_3=y +CONFIG_HISAX_TELESPCI=y +CONFIG_HISAX_S0BOX=y +CONFIG_HISAX_AVM_A1=y +CONFIG_HISAX_FRITZPCI=y +CONFIG_HISAX_AVM_A1_PCMCIA=y +CONFIG_HISAX_ELSA=y +CONFIG_HISAX_IX1MICROR2=y +CONFIG_HISAX_DIEHLDIVA=y +CONFIG_HISAX_ASUSCOM=y +CONFIG_HISAX_TELEINT=y +CONFIG_HISAX_HFCS=y +CONFIG_HISAX_SEDLBAUER=y +CONFIG_HISAX_SPORTSTER=y +CONFIG_HISAX_MIC=y +CONFIG_HISAX_NETJET=y +CONFIG_HISAX_NETJET_U=y +CONFIG_HISAX_NICCY=y +CONFIG_HISAX_ISURF=y +CONFIG_HISAX_HSTSAPHIR=y +CONFIG_HISAX_BKM_A4T=y +CONFIG_HISAX_SCT_QUADRO=y +CONFIG_HISAX_GAZEL=y +CONFIG_HISAX_HFC_PCI=y +CONFIG_HISAX_W6692=y +CONFIG_HISAX_HFC_SX=y +CONFIG_HISAX_ENTERNOW_PCI=y +CONFIG_HISAX_DEBUG=y + +# +# HiSax PCMCIA card service modules +# +# CONFIG_HISAX_SEDLBAUER_CS is not set +CONFIG_HISAX_ELSA_CS=m +CONFIG_HISAX_AVM_A1_CS=m +CONFIG_HISAX_TELES_CS=m + +# +# HiSax sub driver modules +# +CONFIG_HISAX_ST5481=m +CONFIG_HISAX_HFCUSB=m +CONFIG_HISAX_FRITZ_PCIPNP=m +CONFIG_HISAX_HDLC=y + +# +# Active cards +# +CONFIG_ISDN_DRV_ICN=m +CONFIG_ISDN_DRV_PCBIT=m +CONFIG_ISDN_DRV_SC=m +CONFIG_ISDN_DRV_ACT2000=m +CONFIG_ISDN_DRV_TPAM=m + +# +# CAPI subsystem +# +CONFIG_ISDN_CAPI=m +CONFIG_ISDN_DRV_AVMB1_VERBOSE_REASON=y +CONFIG_ISDN_CAPI_MIDDLEWARE=y +CONFIG_ISDN_CAPI_CAPI20=m +CONFIG_ISDN_CAPI_CAPIFS_BOOL=y +CONFIG_ISDN_CAPI_CAPIFS=m +CONFIG_ISDN_CAPI_CAPIDRV=m + +# +# CAPI hardware drivers +# + +# +# Active AVM cards +# +CONFIG_CAPI_AVM=y +CONFIG_ISDN_DRV_AVMB1_B1ISA=m +CONFIG_ISDN_DRV_AVMB1_B1PCI=m +CONFIG_ISDN_DRV_AVMB1_B1PCIV4=y +CONFIG_ISDN_DRV_AVMB1_T1ISA=m +CONFIG_ISDN_DRV_AVMB1_B1PCMCIA=m +CONFIG_ISDN_DRV_AVMB1_AVM_CS=m +CONFIG_ISDN_DRV_AVMB1_T1PCI=m +CONFIG_ISDN_DRV_AVMB1_C4=m + +# +# Active Eicon DIVA Server cards +# +CONFIG_CAPI_EICON=y +CONFIG_ISDN_DIVAS=m +CONFIG_ISDN_DIVAS_BRIPCI=y +CONFIG_ISDN_DIVAS_PRIPCI=y +CONFIG_ISDN_DIVAS_DIVACAPI=m +CONFIG_ISDN_DIVAS_USERIDI=m +CONFIG_ISDN_DIVAS_MAINT=m + +# +# Telephony Support +# +CONFIG_PHONE=m +CONFIG_PHONE_IXJ=m +CONFIG_PHONE_IXJ_PCMCIA=m + +# +# Input device support +# +CONFIG_INPUT=y + +# +# Userland interfaces +# +CONFIG_INPUT_MOUSEDEV=y +CONFIG_INPUT_MOUSEDEV_PSAUX=y +CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 +CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 +CONFIG_INPUT_JOYDEV=m +CONFIG_INPUT_TSDEV=m +CONFIG_INPUT_TSDEV_SCREEN_X=240 +CONFIG_INPUT_TSDEV_SCREEN_Y=320 +CONFIG_INPUT_EVDEV=m +# CONFIG_INPUT_EVBUG is not set + +# +# Input I/O drivers +# +CONFIG_GAMEPORT=m +CONFIG_SOUND_GAMEPORT=m +CONFIG_GAMEPORT_NS558=m +CONFIG_GAMEPORT_L4=m +CONFIG_GAMEPORT_EMU10K1=m +CONFIG_GAMEPORT_VORTEX=m +CONFIG_GAMEPORT_FM801=m +CONFIG_GAMEPORT_CS461x=m +CONFIG_SERIO=y +CONFIG_SERIO_I8042=y +CONFIG_SERIO_SERPORT=m +CONFIG_SERIO_CT82C710=m +CONFIG_SERIO_PARKBD=m +CONFIG_SERIO_PCIPS2=m + +# +# Input Device Drivers +# +CONFIG_INPUT_KEYBOARD=y +CONFIG_KEYBOARD_ATKBD=y +CONFIG_KEYBOARD_SUNKBD=m +# CONFIG_KEYBOARD_LKKBD is not set +CONFIG_KEYBOARD_XTKBD=m +CONFIG_KEYBOARD_NEWTON=m +CONFIG_INPUT_MOUSE=y +CONFIG_MOUSE_PS2=y +CONFIG_MOUSE_SERIAL=m +CONFIG_MOUSE_INPORT=m +CONFIG_MOUSE_ATIXL=y +CONFIG_MOUSE_LOGIBM=m +CONFIG_MOUSE_PC110PAD=m +# CONFIG_MOUSE_VSXXXAA is not set +CONFIG_INPUT_JOYSTICK=y +CONFIG_JOYSTICK_ANALOG=m +CONFIG_JOYSTICK_A3D=m +CONFIG_JOYSTICK_ADI=m +CONFIG_JOYSTICK_COBRA=m +CONFIG_JOYSTICK_GF2K=m +CONFIG_JOYSTICK_GRIP=m +CONFIG_JOYSTICK_GRIP_MP=m +CONFIG_JOYSTICK_GUILLEMOT=m +CONFIG_JOYSTICK_INTERACT=m +CONFIG_JOYSTICK_SIDEWINDER=m +CONFIG_JOYSTICK_TMDC=m +CONFIG_JOYSTICK_IFORCE=m +CONFIG_JOYSTICK_IFORCE_USB=y +CONFIG_JOYSTICK_IFORCE_232=y +CONFIG_JOYSTICK_WARRIOR=m +CONFIG_JOYSTICK_MAGELLAN=m +CONFIG_JOYSTICK_SPACEORB=m +CONFIG_JOYSTICK_SPACEBALL=m +CONFIG_JOYSTICK_STINGER=m +CONFIG_JOYSTICK_TWIDDLER=m +CONFIG_JOYSTICK_DB9=m +CONFIG_JOYSTICK_GAMECON=m +CONFIG_JOYSTICK_TURBOGRAFX=m +# CONFIG_INPUT_JOYDUMP is not set +CONFIG_INPUT_TOUCHSCREEN=y +CONFIG_TOUCHSCREEN_GUNZE=m +CONFIG_INPUT_MISC=y +CONFIG_INPUT_PCSPKR=y +CONFIG_INPUT_UINPUT=m + +# +# Character devices +# +CONFIG_VT=y +CONFIG_VT_CONSOLE=y +CONFIG_HW_CONSOLE=y +CONFIG_SERIAL_NONSTANDARD=y +CONFIG_ROCKETPORT=m +CONFIG_SYNCLINK=m +CONFIG_SYNCLINKMP=m +CONFIG_N_HDLC=m +CONFIG_STALDRV=y + +# +# Serial drivers +# +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_SERIAL_8250_CS=m +# CONFIG_SERIAL_8250_ACPI is not set +CONFIG_SERIAL_8250_NR_UARTS=4 +CONFIG_SERIAL_8250_EXTENDED=y +CONFIG_SERIAL_8250_MANY_PORTS=y +CONFIG_SERIAL_8250_SHARE_IRQ=y +# CONFIG_SERIAL_8250_DETECT_IRQ is not set +CONFIG_SERIAL_8250_MULTIPORT=y +CONFIG_SERIAL_8250_RSA=y + +# +# Non-8250 serial port support +# +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_CORE_CONSOLE=y +CONFIG_UNIX98_PTYS=y +CONFIG_LEGACY_PTYS=y +CONFIG_LEGACY_PTY_COUNT=256 +CONFIG_PRINTER=m +# CONFIG_LP_CONSOLE is not set +CONFIG_PPDEV=m +CONFIG_TIPAR=m +CONFIG_QIC02_TAPE=m +CONFIG_QIC02_DYNCONF=y + +# +# Setting runtime QIC-02 configuration is done with qic02conf +# + +# +# from the tpqic02-support package. It is available at +# + +# +# metalab.unc.edu or ftp://titus.cfw.com/pub/Linux/util/ +# + +# +# IPMI +# +CONFIG_IPMI_HANDLER=m +CONFIG_IPMI_PANIC_EVENT=y +CONFIG_IPMI_PANIC_STRING=y +CONFIG_IPMI_DEVICE_INTERFACE=m +CONFIG_IPMI_KCS=m +CONFIG_IPMI_WATCHDOG=m + +# +# Watchdog Cards +# +CONFIG_WATCHDOG=y +# CONFIG_WATCHDOG_NOWAYOUT is not set + +# +# Watchdog Device Drivers +# +CONFIG_SOFT_WATCHDOG=m +CONFIG_ACQUIRE_WDT=m +CONFIG_ADVANTECH_WDT=m +CONFIG_ALIM1535_WDT=m +CONFIG_ALIM7101_WDT=m +CONFIG_AMD7XX_TCO=m +CONFIG_SC520_WDT=m +CONFIG_EUROTECH_WDT=m +CONFIG_IB700_WDT=m +CONFIG_WAFER_WDT=m +CONFIG_I8XX_TCO=m +CONFIG_SC1200_WDT=m +CONFIG_SCx200_WDT=m +CONFIG_60XX_WDT=m +CONFIG_CPU5_WDT=m +CONFIG_W83627HF_WDT=m +CONFIG_W83877F_WDT=m +CONFIG_MACHZ_WDT=m + +# +# ISA-based Watchdog Cards +# +CONFIG_PCWATCHDOG=m +CONFIG_MIXCOMWD=m +CONFIG_WDT=m +CONFIG_WDT_501=y + +# +# PCI-based Watchdog Cards +# +CONFIG_PCIPCWATCHDOG=m +CONFIG_WDTPCI=m +CONFIG_WDT_501_PCI=y + +# +# USB-based Watchdog Cards +# +CONFIG_USBPCWATCHDOG=m +CONFIG_HW_RANDOM=m +CONFIG_NVRAM=m +CONFIG_RTC=y +CONFIG_DTLK=m +CONFIG_R3964=m +CONFIG_APPLICOM=m +CONFIG_SONYPI=m + +# +# Ftape, the floppy tape device driver +# +CONFIG_AGP=m +CONFIG_AGP_ALI=m +CONFIG_AGP_ATI=m +CONFIG_AGP_AMD=m +CONFIG_AGP_AMD64=m +CONFIG_AGP_INTEL=m +CONFIG_AGP_NVIDIA=m +CONFIG_AGP_SIS=m +CONFIG_AGP_SWORKS=m +CONFIG_AGP_VIA=m +CONFIG_AGP_EFFICEON=m +# CONFIG_DRM is not set + +# +# PCMCIA character devices +# +CONFIG_SYNCLINK_CS=m +# CONFIG_MWAVE is not set +CONFIG_SCx200_GPIO=m +CONFIG_RAW_DRIVER=m +CONFIG_MAX_RAW_DEVS=4096 +CONFIG_HANGCHECK_TIMER=m + +# +# Linux InfraRed Controller +# +CONFIG_LIRC_SUPPORT=m +CONFIG_LIRC_MAX_DEV=2 +CONFIG_LIRC_BT829=m +CONFIG_LIRC_IT87=m +CONFIG_LIRC_ATIUSB=m +CONFIG_LIRC_SERIAL=m +# CONFIG_LIRC_HOMEBREW is not set +CONFIG_LIRC_PORT_SERIAL=0x3f8 +CONFIG_LIRC_IRQ_SERIAL=4 +CONFIG_LIRC_SIR=m +CONFIG_LIRC_PORT_SIR=0x3f8 +CONFIG_LIRC_IRQ_SIR=4 + +# +# I2C support +# +CONFIG_I2C=m +CONFIG_I2C_CHARDEV=m + +# +# I2C Algorithms +# +CONFIG_I2C_ALGOBIT=m +CONFIG_I2C_ALGOPCF=m + +# +# I2C Hardware Bus support +# +CONFIG_I2C_ALI1535=m +CONFIG_I2C_ALI15X3=m +CONFIG_I2C_AMD756=m +CONFIG_I2C_AMD8111=m +CONFIG_I2C_I801=m +CONFIG_I2C_I810=m +CONFIG_I2C_ISA=m +CONFIG_I2C_NFORCE2=m +CONFIG_I2C_PARPORT=m +CONFIG_I2C_PARPORT_LIGHT=m +CONFIG_I2C_PIIX4=m +CONFIG_I2C_PROSAVAGE=m +CONFIG_I2C_SAVAGE4=m +CONFIG_SCx200_I2C=m +CONFIG_SCx200_I2C_SCL=12 +CONFIG_SCx200_I2C_SDA=13 +CONFIG_SCx200_ACB=m +CONFIG_I2C_SIS5595=m +CONFIG_I2C_SIS630=m +CONFIG_I2C_SIS96X=m +CONFIG_I2C_VIA=m +CONFIG_I2C_VIAPRO=m +CONFIG_I2C_VOODOO3=m + +# +# Hardware Sensors Chip support +# +CONFIG_I2C_SENSOR=m +CONFIG_SENSORS_ADM1021=m +CONFIG_SENSORS_ASB100=m +CONFIG_SENSORS_DS1621=m +CONFIG_SENSORS_FSCHER=m +CONFIG_SENSORS_GL518SM=m +CONFIG_SENSORS_IT87=m +CONFIG_SENSORS_LM75=m +CONFIG_SENSORS_LM78=m +CONFIG_SENSORS_LM80=m +CONFIG_SENSORS_LM83=m +CONFIG_SENSORS_LM85=m +CONFIG_SENSORS_LM90=m +CONFIG_SENSORS_VIA686A=m +CONFIG_SENSORS_W83781D=m +CONFIG_SENSORS_W83L785TS=m +CONFIG_SENSORS_W83627HF=m + +# +# Other I2C Chip support +# +CONFIG_SENSORS_EEPROM=m +# CONFIG_I2C_DEBUG_CORE is not set +# CONFIG_I2C_DEBUG_ALGO is not set +# CONFIG_I2C_DEBUG_BUS is not set +# CONFIG_I2C_DEBUG_CHIP is not set + +# +# Misc devices +# +CONFIG_IBM_ASM=m + +# +# Multimedia devices +# +CONFIG_VIDEO_DEV=m + +# +# Video For Linux +# + +# +# Video Adapters +# +CONFIG_VIDEO_BT848=m +CONFIG_VIDEO_PMS=m +CONFIG_VIDEO_BWQCAM=m +CONFIG_VIDEO_CQCAM=m +CONFIG_VIDEO_W9966=m +CONFIG_VIDEO_CPIA=m +CONFIG_VIDEO_CPIA_PP=m +CONFIG_VIDEO_CPIA_USB=m +CONFIG_VIDEO_SAA5246A=m +CONFIG_VIDEO_SAA5249=m +CONFIG_TUNER_3036=m +CONFIG_VIDEO_STRADIS=m +# CONFIG_VIDEO_ZORAN is not set +CONFIG_VIDEO_SAA7134=m +CONFIG_VIDEO_MXB=m +CONFIG_VIDEO_DPC=m +CONFIG_VIDEO_HEXIUM_ORION=m +CONFIG_VIDEO_HEXIUM_GEMINI=m +CONFIG_VIDEO_CX88=m + +# +# Radio Adapters +# +CONFIG_RADIO_CADET=m +CONFIG_RADIO_RTRACK=m +CONFIG_RADIO_RTRACK2=m +CONFIG_RADIO_AZTECH=m +CONFIG_RADIO_GEMTEK=m +CONFIG_RADIO_GEMTEK_PCI=m +CONFIG_RADIO_MAXIRADIO=m +CONFIG_RADIO_MAESTRO=m +CONFIG_RADIO_MIROPCM20=m +# CONFIG_RADIO_MIROPCM20_RDS is not set +CONFIG_RADIO_SF16FMI=m +CONFIG_RADIO_SF16FMR2=m +CONFIG_RADIO_TERRATEC=m +CONFIG_RADIO_TRUST=m +CONFIG_RADIO_TYPHOON=m +CONFIG_RADIO_TYPHOON_PROC_FS=y +CONFIG_RADIO_ZOLTRIX=m + +# +# Digital Video Broadcasting Devices +# +CONFIG_DVB=y +CONFIG_DVB_CORE=m + +# +# Supported Frontend Modules +# +CONFIG_DVB_TWINHAN_DST=m +CONFIG_DVB_STV0299=m +CONFIG_DVB_SP887X=m +CONFIG_DVB_SP887X_FIRMWARE_FILE="/etc/dvb/sc_main.mc" +CONFIG_DVB_ALPS_TDLB7=m +CONFIG_DVB_ALPS_TDMB7=m +CONFIG_DVB_ATMEL_AT76C651=m +CONFIG_DVB_CX24110=m +CONFIG_DVB_GRUNDIG_29504_491=m +CONFIG_DVB_GRUNDIG_29504_401=m +CONFIG_DVB_MT312=m +CONFIG_DVB_VES1820=m +CONFIG_DVB_VES1X93=m +CONFIG_DVB_TDA1004X=m +CONFIG_DVB_TDA1004X_FIRMWARE_FILE="/usr/lib/hotplug/firmware/tda1004x.bin" +CONFIG_DVB_NXT6000=m + +# +# Supported SAA7146 based PCI Adapters +# +CONFIG_DVB_AV7110=m +# CONFIG_DVB_AV7110_FIRMWARE is not set +CONFIG_DVB_AV7110_OSD=y +CONFIG_DVB_BUDGET=m +CONFIG_DVB_BUDGET_CI=m +CONFIG_DVB_BUDGET_AV=m +CONFIG_DVB_BUDGET_PATCH=m + +# +# Supported USB Adapters +# +CONFIG_DVB_TTUSB_BUDGET=m +CONFIG_DVB_TTUSB_DEC=m + +# +# Supported FlexCopII (B2C2) Adapters +# +CONFIG_DVB_B2C2_SKYSTAR=m + +# +# Supported BT878 Adapters +# +CONFIG_DVB_BT8XX=m +CONFIG_VIDEO_SAA7146=m +CONFIG_VIDEO_SAA7146_VV=m +CONFIG_VIDEO_VIDEOBUF=m +CONFIG_VIDEO_TUNER=m +CONFIG_VIDEO_BUF=m +CONFIG_VIDEO_BTCX=m +CONFIG_VIDEO_IR=m + +# +# Graphics support +# +CONFIG_FB=y +CONFIG_FB_PM2=m +CONFIG_FB_PM2_FIFO_DISCONNECT=y +CONFIG_FB_CYBER2000=m +CONFIG_FB_IMSTT=y +CONFIG_FB_VGA16=m +CONFIG_FB_VESA=y +CONFIG_VIDEO_SELECT=y +CONFIG_FB_HGA=m +CONFIG_FB_RIVA=m +CONFIG_FB_I810=m +CONFIG_FB_I810_GTF=y +# CONFIG_FB_MATROX is not set +# CONFIG_FB_RADEON_OLD is not set +CONFIG_FB_RADEON=m +CONFIG_FB_RADEON_I2C=y +# CONFIG_FB_RADEON_DEBUG is not set +# CONFIG_FB_ATY128 is not set +CONFIG_FB_ATY=m +CONFIG_FB_ATY_CT=y +CONFIG_FB_ATY_GX=y +CONFIG_FB_ATY_XL_INIT=y +CONFIG_FB_SIS=m +CONFIG_FB_SIS_300=y +CONFIG_FB_SIS_315=y +CONFIG_FB_NEOMAGIC=m +CONFIG_FB_KYRO=m +CONFIG_FB_3DFX=m +CONFIG_FB_VOODOO1=m +CONFIG_FB_TRIDENT=m +# CONFIG_FB_VIRTUAL is not set + +# +# Console display driver support +# +CONFIG_VGA_CONSOLE=y +CONFIG_MDA_CONSOLE=m +CONFIG_DUMMY_CONSOLE=y +CONFIG_FRAMEBUFFER_CONSOLE=y +CONFIG_PCI_CONSOLE=y +# CONFIG_FONTS is not set +CONFIG_FONT_8x8=y +CONFIG_FONT_8x16=y + +# +# Logo configuration +# +# CONFIG_LOGO is not set + +# +# Bootsplash configuration +# +CONFIG_BOOTSPLASH=y + +# +# Sound +# +CONFIG_SOUND=m + +# +# Advanced Linux Sound Architecture +# +CONFIG_SND=m +CONFIG_SND_TIMER=m +CONFIG_SND_PCM=m +CONFIG_SND_HWDEP=m +CONFIG_SND_RAWMIDI=m +CONFIG_SND_SEQUENCER=m +CONFIG_SND_SEQ_DUMMY=m +CONFIG_SND_OSSEMUL=y +CONFIG_SND_MIXER_OSS=m +CONFIG_SND_PCM_OSS=m +CONFIG_SND_SEQUENCER_OSS=y +CONFIG_SND_RTCTIMER=m +CONFIG_SND_VERBOSE_PRINTK=y +CONFIG_SND_DEBUG=y +CONFIG_SND_DEBUG_MEMORY=y +# CONFIG_SND_DEBUG_DETECT is not set + +# +# Generic devices +# +CONFIG_SND_MPU401_UART=m +CONFIG_SND_OPL3_LIB=m +CONFIG_SND_OPL4_LIB=m +CONFIG_SND_VX_LIB=m +CONFIG_SND_DUMMY=m +CONFIG_SND_VIRMIDI=m +CONFIG_SND_MTPAV=m +CONFIG_SND_SERIAL_U16550=m +CONFIG_SND_MPU401=m + +# +# ISA devices +# +CONFIG_SND_AD1816A=m +CONFIG_SND_AD1848=m +CONFIG_SND_CS4231=m +CONFIG_SND_CS4232=m +CONFIG_SND_CS4236=m +CONFIG_SND_ES968=m +CONFIG_SND_ES1688=m +CONFIG_SND_ES18XX=m +CONFIG_SND_GUSCLASSIC=m +CONFIG_SND_GUSEXTREME=m +CONFIG_SND_GUSMAX=m +CONFIG_SND_INTERWAVE=m +CONFIG_SND_INTERWAVE_STB=m +CONFIG_SND_OPTI92X_AD1848=m +CONFIG_SND_OPTI92X_CS4231=m +CONFIG_SND_OPTI93X=m +CONFIG_SND_SB8=m +CONFIG_SND_SB16=m +CONFIG_SND_SBAWE=m +CONFIG_SND_SB16_CSP=y +CONFIG_SND_WAVEFRONT=m +CONFIG_SND_ALS100=m +CONFIG_SND_AZT2320=m +CONFIG_SND_CMI8330=m +CONFIG_SND_DT019X=m +CONFIG_SND_OPL3SA2=m +CONFIG_SND_SGALAXY=m +CONFIG_SND_SSCAPE=m + +# +# PCI devices +# +CONFIG_SND_AC97_CODEC=m +CONFIG_SND_ALI5451=m +CONFIG_SND_ATIIXP=m +CONFIG_SND_AU8810=m +CONFIG_SND_AU8820=m +CONFIG_SND_AU8830=m +CONFIG_SND_AZT3328=m +CONFIG_SND_BT87X=m +CONFIG_SND_CS46XX=m +CONFIG_SND_CS46XX_NEW_DSP=y +CONFIG_SND_CS4281=m +CONFIG_SND_EMU10K1=m +CONFIG_SND_KORG1212=m +CONFIG_SND_MIXART=m +CONFIG_SND_NM256=m +CONFIG_SND_RME32=m +CONFIG_SND_RME96=m +CONFIG_SND_RME9652=m +CONFIG_SND_HDSP=m +CONFIG_SND_TRIDENT=m +CONFIG_SND_YMFPCI=m +CONFIG_SND_ALS4000=m +CONFIG_SND_CMIPCI=m +CONFIG_SND_ENS1370=m +CONFIG_SND_ENS1371=m +CONFIG_SND_ES1938=m +CONFIG_SND_ES1968=m +CONFIG_SND_MAESTRO3=m +CONFIG_SND_FM801=m +CONFIG_SND_FM801_TEA575X=m +CONFIG_SND_ICE1712=m +CONFIG_SND_ICE1724=m +CONFIG_SND_INTEL8X0=m +CONFIG_SND_INTEL8X0M=m +CONFIG_SND_SONICVIBES=m +CONFIG_SND_VIA82XX=m +CONFIG_SND_VX222=m + +# +# ALSA USB devices +# +CONFIG_SND_USB_AUDIO=m + +# +# PCMCIA devices +# +# CONFIG_SND_VXPOCKET is not set +# CONFIG_SND_VXP440 is not set +# CONFIG_SND_PDAUDIOCF is not set + +# +# Open Sound System +# +CONFIG_SOUND_PRIME=m +CONFIG_SOUND_BT878=m +CONFIG_SOUND_CMPCI=m +CONFIG_SOUND_CMPCI_FM=y +CONFIG_SOUND_CMPCI_FMIO=0x388 +CONFIG_SOUND_CMPCI_MIDI=y +CONFIG_SOUND_CMPCI_MPUIO=0x330 +CONFIG_SOUND_CMPCI_JOYSTICK=y +CONFIG_SOUND_CMPCI_CM8738=y +# CONFIG_SOUND_CMPCI_SPDIFINVERSE is not set +CONFIG_SOUND_CMPCI_SPDIFLOOP=y +CONFIG_SOUND_CMPCI_SPEAKERS=2 +CONFIG_SOUND_EMU10K1=m +CONFIG_MIDI_EMU10K1=y +# CONFIG_SOUND_FUSION is not set +CONFIG_SOUND_CS4281=m +CONFIG_SOUND_ES1370=m +CONFIG_SOUND_ES1371=m +CONFIG_SOUND_ESSSOLO1=m +CONFIG_SOUND_MAESTRO=m +CONFIG_SOUND_MAESTRO3=m +CONFIG_SOUND_ICH=m +CONFIG_SOUND_SONICVIBES=m +CONFIG_SOUND_TRIDENT=m +# CONFIG_SOUND_MSNDCLAS is not set +# CONFIG_SOUND_MSNDPIN is not set +CONFIG_SOUND_VIA82CXXX=m +CONFIG_MIDI_VIA82CXXX=y +CONFIG_SOUND_OSS=m +CONFIG_SOUND_TRACEINIT=y +CONFIG_SOUND_DMAP=y +# CONFIG_SOUND_AD1816 is not set +CONFIG_SOUND_AD1889=m +CONFIG_SOUND_SGALAXY=m +CONFIG_SOUND_ADLIB=m +CONFIG_SOUND_ACI_MIXER=m +CONFIG_SOUND_CS4232=m +CONFIG_SOUND_SSCAPE=m +CONFIG_SOUND_GUS=m +# CONFIG_SOUND_GUS16 is not set +CONFIG_SOUND_GUSMAX=y +CONFIG_SOUND_VMIDI=m +CONFIG_SOUND_TRIX=m +CONFIG_SOUND_MSS=m +CONFIG_SOUND_MPU401=m +CONFIG_SOUND_NM256=m +CONFIG_SOUND_MAD16=m +CONFIG_MAD16_OLDCARD=y +CONFIG_SOUND_PAS=m +CONFIG_SOUND_PSS=m +CONFIG_PSS_MIXER=y +# CONFIG_PSS_HAVE_BOOT is not set +CONFIG_SOUND_SB=m +# CONFIG_SOUND_AWE32_SYNTH is not set +CONFIG_SOUND_WAVEFRONT=m +CONFIG_SOUND_MAUI=m +CONFIG_SOUND_YM3812=m +CONFIG_SOUND_OPL3SA1=m +CONFIG_SOUND_OPL3SA2=m +CONFIG_SOUND_YMFPCI=m +CONFIG_SOUND_YMFPCI_LEGACY=y +CONFIG_SOUND_UART6850=m +CONFIG_SOUND_AEDSP16=m +CONFIG_SC6600=y +CONFIG_SC6600_JOY=y +CONFIG_SC6600_CDROM=4 +CONFIG_SC6600_CDROMBASE=0x0 +# CONFIG_AEDSP16_MSS is not set +# CONFIG_AEDSP16_SBPRO is not set +CONFIG_AEDSP16_MPU401=y +CONFIG_SOUND_TVMIXER=m +CONFIG_SOUND_KAHLUA=m +CONFIG_SOUND_ALI5455=m +CONFIG_SOUND_FORTE=m +CONFIG_SOUND_RME96XX=m +CONFIG_SOUND_AD1980=m + +# +# USB support +# +CONFIG_USB=m +# CONFIG_USB_DEBUG is not set + +# +# Miscellaneous USB options +# +CONFIG_USB_DEVICEFS=y +# CONFIG_USB_BANDWIDTH is not set +# CONFIG_USB_DYNAMIC_MINORS is not set + +# +# USB Host Controller Drivers +# +CONFIG_USB_EHCI_HCD=m +CONFIG_USB_EHCI_SPLIT_ISO=y +CONFIG_USB_OHCI_HCD=m +CONFIG_USB_UHCI_HCD=m + +# +# USB Device Class drivers +# +CONFIG_USB_AUDIO=m + +# +# USB Bluetooth TTY can only be used with disabled Bluetooth subsystem +# +CONFIG_USB_MIDI=m +CONFIG_USB_ACM=m +CONFIG_USB_PRINTER=m +CONFIG_USB_STORAGE=m +# CONFIG_USB_STORAGE_DEBUG is not set +CONFIG_USB_STORAGE_DATAFAB=y +CONFIG_USB_STORAGE_FREECOM=y +CONFIG_USB_STORAGE_ISD200=y +CONFIG_USB_STORAGE_DPCM=y +CONFIG_USB_STORAGE_HP8200e=y +CONFIG_USB_STORAGE_SDDR09=y +CONFIG_USB_STORAGE_SDDR55=y +CONFIG_USB_STORAGE_JUMPSHOT=y + +# +# USB Human Interface Devices (HID) +# +CONFIG_USB_HID=m +CONFIG_USB_HIDINPUT=y +CONFIG_HID_FF=y +CONFIG_HID_PID=y +CONFIG_LOGITECH_FF=y +CONFIG_THRUSTMASTER_FF=y +CONFIG_USB_HIDDEV=y + +# +# USB HID Boot Protocol drivers +# +# CONFIG_USB_KBD is not set +# CONFIG_USB_MOUSE is not set +CONFIG_USB_AIPTEK=m +CONFIG_USB_WACOM=m +CONFIG_USB_KBTAB=m +CONFIG_USB_POWERMATE=m +CONFIG_USB_MTOUCH=m +CONFIG_USB_XPAD=m +CONFIG_USB_ATI_REMOTE=m + +# +# USB Imaging devices +# +CONFIG_USB_MDC800=m +CONFIG_USB_MICROTEK=m +CONFIG_USB_HPUSBSCSI=m + +# +# USB Multimedia devices +# +CONFIG_USB_DABUSB=m +CONFIG_USB_VICAM=m +CONFIG_USB_DSBR=m +CONFIG_USB_IBMCAM=m +CONFIG_USB_KONICAWC=m +CONFIG_USB_OV511=m +CONFIG_USB_SE401=m +CONFIG_USB_STV680=m +CONFIG_USB_W9968CF=m + +# +# USB Network adaptors +# +CONFIG_USB_CATC=m +CONFIG_USB_KAWETH=m +CONFIG_USB_PEGASUS=m +CONFIG_USB_RTL8150=m +CONFIG_USB_USBNET=m + +# +# USB Host-to-Host Cables +# +CONFIG_USB_ALI_M5632=y +CONFIG_USB_AN2720=y +CONFIG_USB_BELKIN=y +CONFIG_USB_GENESYS=y +CONFIG_USB_NET1080=y +CONFIG_USB_PL2301=y + +# +# Intelligent USB Devices/Gadgets +# +CONFIG_USB_ARMLINUX=y +CONFIG_USB_EPSON2888=y +CONFIG_USB_ZAURUS=y +CONFIG_USB_CDCETHER=y + +# +# USB Network Adapters +# +CONFIG_USB_AX8817X=y + +# +# USB port drivers +# +CONFIG_USB_USS720=m + +# +# USB Serial Converter support +# +CONFIG_USB_SERIAL=m +CONFIG_USB_SERIAL_GENERIC=y +CONFIG_USB_SERIAL_BELKIN=m +CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m +CONFIG_USB_SERIAL_EMPEG=m +CONFIG_USB_SERIAL_FTDI_SIO=m +CONFIG_USB_SERIAL_VISOR=m +CONFIG_USB_SERIAL_IPAQ=m +CONFIG_USB_SERIAL_IR=m +CONFIG_USB_SERIAL_EDGEPORT=m +CONFIG_USB_SERIAL_EDGEPORT_TI=m +CONFIG_USB_SERIAL_KEYSPAN_PDA=m +CONFIG_USB_SERIAL_KEYSPAN=m +CONFIG_USB_SERIAL_KEYSPAN_MPR=y +CONFIG_USB_SERIAL_KEYSPAN_USA28=y +CONFIG_USB_SERIAL_KEYSPAN_USA28X=y +CONFIG_USB_SERIAL_KEYSPAN_USA28XA=y +CONFIG_USB_SERIAL_KEYSPAN_USA28XB=y +CONFIG_USB_SERIAL_KEYSPAN_USA19=y +CONFIG_USB_SERIAL_KEYSPAN_USA18X=y +CONFIG_USB_SERIAL_KEYSPAN_USA19W=y +CONFIG_USB_SERIAL_KEYSPAN_USA19QW=y +CONFIG_USB_SERIAL_KEYSPAN_USA19QI=y +CONFIG_USB_SERIAL_KEYSPAN_USA49W=y +CONFIG_USB_SERIAL_KEYSPAN_USA49WLC=y +CONFIG_USB_SERIAL_KLSI=m +CONFIG_USB_SERIAL_KOBIL_SCT=m +CONFIG_USB_SERIAL_MCT_U232=m +CONFIG_USB_SERIAL_PL2303=m +CONFIG_USB_SERIAL_SAFE=m +CONFIG_USB_SERIAL_SAFE_PADDED=y +CONFIG_USB_SERIAL_CYBERJACK=m +CONFIG_USB_SERIAL_XIRCOM=m +CONFIG_USB_SERIAL_OMNINET=m +CONFIG_USB_EZUSB=y + +# +# USB Miscellaneous drivers +# +CONFIG_USB_EMI62=m +CONFIG_USB_EMI26=m +CONFIG_USB_TIGL=m +CONFIG_USB_AUERSWALD=m +CONFIG_USB_RIO500=m +CONFIG_USB_LEGOTOWER=m +CONFIG_USB_LCD=m +CONFIG_USB_LED=m +CONFIG_USB_SPEEDTOUCH=m +# CONFIG_USB_TEST is not set + +# +# USB Gadget Support +# +# CONFIG_USB_GADGET is not set + +# +# File systems +# +CONFIG_EXT2_FS=y +CONFIG_EXT2_FS_XATTR=y +CONFIG_EXT2_FS_POSIX_ACL=y +CONFIG_EXT2_FS_SECURITY=y +CONFIG_EXT3_FS=m +CONFIG_EXT3_FS_XATTR=y +CONFIG_EXT3_FS_POSIX_ACL=y +CONFIG_EXT3_FS_SECURITY=y +CONFIG_JBD=m +CONFIG_JBD_DEBUG=y +CONFIG_FS_MBCACHE=y +CONFIG_REISERFS_FS=m +# CONFIG_REISERFS_CHECK is not set +# CONFIG_REISERFS_PROC_INFO is not set +CONFIG_REISERFS_FS_XATTR=y +CONFIG_REISERFS_FS_POSIX_ACL=y +CONFIG_REISERFS_FS_SECURITY=y +CONFIG_JFS_FS=m +CONFIG_JFS_POSIX_ACL=y +# CONFIG_JFS_DEBUG is not set +CONFIG_JFS_STATISTICS=y +CONFIG_FS_POSIX_ACL=y +CONFIG_XFS_FS=m +CONFIG_XFS_RT=y +CONFIG_XFS_QUOTA=m +CONFIG_XFS_SECURITY=y +CONFIG_XFS_POSIX_ACL=y +CONFIG_XFS_DMAPI=m +# CONFIG_XFS_DEBUG is not set +# CONFIG_XFS_TRACE is not set +CONFIG_MINIX_FS=y +CONFIG_ROMFS_FS=m +CONFIG_QUOTA=y +CONFIG_QFMT_V1=m +CONFIG_QFMT_V2=m +CONFIG_QUOTACTL=y +CONFIG_AUTOFS_FS=m +CONFIG_AUTOFS4_FS=m + +# +# CD-ROM/DVD Filesystems +# +CONFIG_ISO9660_FS=y +CONFIG_JOLIET=y +CONFIG_ZISOFS=y +CONFIG_ZISOFS_FS=y +CONFIG_UDF_FS=m + +# +# DOS/FAT/NT Filesystems +# +CONFIG_FAT_FS=m +CONFIG_MSDOS_FS=m +CONFIG_VFAT_FS=m +CONFIG_NTFS_FS=m +# CONFIG_NTFS_DEBUG is not set +# CONFIG_NTFS_RW is not set +CONFIG_RCFS_FS=m + +# +# Pseudo filesystems +# +CONFIG_PROC_FS=y +CONFIG_PROC_KCORE=y +# CONFIG_DEVFS_FS is not set +CONFIG_DEVPTS_FS_XATTR=y +CONFIG_DEVPTS_FS_SECURITY=y +CONFIG_TMPFS=y +CONFIG_HUGETLBFS=y +CONFIG_HUGETLB_PAGE=y +CONFIG_RAMFS=y +CONFIG_RELAYFS_FS=m +CONFIG_KLOG_CHANNEL=y +# CONFIG_KLOG_CHANNEL_AUTOENABLE is not set +CONFIG_KLOG_CHANNEL_SHIFT=21 + +# +# Miscellaneous filesystems +# +CONFIG_ADFS_FS=m +# CONFIG_ADFS_FS_RW is not set +CONFIG_AFFS_FS=m +CONFIG_HFS_FS=m +CONFIG_HFSPLUS_FS=m +CONFIG_BEFS_FS=m +# CONFIG_BEFS_DEBUG is not set +CONFIG_BFS_FS=m +CONFIG_EFS_FS=m +CONFIG_JFFS_FS=m +CONFIG_JFFS_FS_VERBOSE=0 +CONFIG_JFFS2_FS=m +CONFIG_JFFS2_FS_DEBUG=0 +# CONFIG_JFFS2_FS_NAND is not set +CONFIG_CRAMFS=m +CONFIG_VXFS_FS=m +CONFIG_HPFS_FS=m +CONFIG_QNX4FS_FS=m +# CONFIG_QNX4FS_RW is not set +CONFIG_SYSV_FS=m +CONFIG_UFS_FS=m +# CONFIG_UFS_FS_WRITE is not set + +# +# Network File Systems +# +CONFIG_NFS_FS=y +CONFIG_NFS_V3=y +CONFIG_NFS_ACL=y +CONFIG_NFS_V4=y +CONFIG_NFS_DIRECTIO=y +CONFIG_NFSD=m +CONFIG_NFSD_V3=y +CONFIG_NFSD_ACL=y +CONFIG_NFS_ACL_SUPPORT=y +CONFIG_NFSD_V4=y +CONFIG_NFSD_TCP=y +CONFIG_LOCKD=y +CONFIG_STATD=y +CONFIG_LOCKD_V4=y +CONFIG_EXPORTFS=m +CONFIG_SUNRPC=y +CONFIG_SUNRPC_GSS=y +CONFIG_RPCSEC_GSS_KRB5=y +CONFIG_SMB_FS=m +CONFIG_SMB_NLS_DEFAULT=y +CONFIG_SMB_NLS_REMOTE="cp437" +CONFIG_CIFS=m +CONFIG_NCP_FS=m +CONFIG_NCPFS_PACKET_SIGNING=y +CONFIG_NCPFS_IOCTL_LOCKING=y +CONFIG_NCPFS_STRONG=y +CONFIG_NCPFS_NFS_NS=y +CONFIG_NCPFS_OS2_NS=y +CONFIG_NCPFS_SMALLDOS=y +CONFIG_NCPFS_NLS=y +CONFIG_NCPFS_EXTRAS=y +CONFIG_CODA_FS=m +# CONFIG_CODA_FS_OLD_API is not set +# CONFIG_INTERMEZZO_FS is not set +CONFIG_AFS_FS=m +CONFIG_RXRPC=m + +# +# Partition Types +# +CONFIG_PARTITION_ADVANCED=y +# CONFIG_ACORN_PARTITION is not set +CONFIG_OSF_PARTITION=y +# CONFIG_AMIGA_PARTITION is not set +CONFIG_ATARI_PARTITION=y +CONFIG_MAC_PARTITION=y +CONFIG_MSDOS_PARTITION=y +CONFIG_BSD_DISKLABEL=y +# CONFIG_MINIX_SUBPARTITION is not set +CONFIG_SOLARIS_X86_PARTITION=y +CONFIG_UNIXWARE_DISKLABEL=y +CONFIG_LDM_PARTITION=y +# CONFIG_LDM_DEBUG is not set +CONFIG_NEC98_PARTITION=y +# CONFIG_SGI_PARTITION is not set +CONFIG_ULTRIX_PARTITION=y +CONFIG_SUN_PARTITION=y +CONFIG_EFI_PARTITION=y + +# +# Native Language Support +# +CONFIG_NLS=y +CONFIG_NLS_DEFAULT="iso8859-1" +CONFIG_NLS_CODEPAGE_437=m +CONFIG_NLS_CODEPAGE_737=m +CONFIG_NLS_CODEPAGE_775=m +CONFIG_NLS_CODEPAGE_850=m +CONFIG_NLS_CODEPAGE_852=m +CONFIG_NLS_CODEPAGE_855=m +CONFIG_NLS_CODEPAGE_857=m +CONFIG_NLS_CODEPAGE_860=m +CONFIG_NLS_CODEPAGE_861=m +CONFIG_NLS_CODEPAGE_862=m +CONFIG_NLS_CODEPAGE_863=m +CONFIG_NLS_CODEPAGE_864=m +CONFIG_NLS_CODEPAGE_865=m +CONFIG_NLS_CODEPAGE_866=m +CONFIG_NLS_CODEPAGE_869=m +CONFIG_NLS_CODEPAGE_936=m +CONFIG_NLS_CODEPAGE_950=m +CONFIG_NLS_CODEPAGE_932=m +CONFIG_NLS_CODEPAGE_949=m +CONFIG_NLS_CODEPAGE_874=m +CONFIG_NLS_ISO8859_8=m +CONFIG_NLS_CODEPAGE_1250=m +CONFIG_NLS_CODEPAGE_1251=m +CONFIG_NLS_ISO8859_1=m +CONFIG_NLS_ISO8859_2=m +CONFIG_NLS_ISO8859_3=m +CONFIG_NLS_ISO8859_4=m +CONFIG_NLS_ISO8859_5=m +CONFIG_NLS_ISO8859_6=m +CONFIG_NLS_ISO8859_7=m +CONFIG_NLS_ISO8859_9=m +CONFIG_NLS_ISO8859_13=m +CONFIG_NLS_ISO8859_14=m +CONFIG_NLS_ISO8859_15=m +CONFIG_NLS_KOI8_R=m +CONFIG_NLS_KOI8_U=m +CONFIG_NLS_UTF8=m + +# +# Profiling support +# +# CONFIG_PROFILING is not set + +# +# Kernel hacking +# +CONFIG_CRASH_DUMP=m +CONFIG_KERNTYPES=y +CONFIG_CRASH_DUMP_BLOCKDEV=m +CONFIG_CRASH_DUMP_NETDEV=m +# CONFIG_CRASH_DUMP_MEMDEV is not set +CONFIG_CRASH_DUMP_COMPRESS_RLE=m +CONFIG_CRASH_DUMP_COMPRESS_GZIP=m +CONFIG_DEBUG_KERNEL=y +CONFIG_EARLY_PRINTK=y +# CONFIG_DEBUG_STACKOVERFLOW is not set +CONFIG_DEBUG_STACK_USAGE=y +# CONFIG_DEBUG_SLAB is not set +CONFIG_MAGIC_SYSRQ=y +# CONFIG_DEBUG_SPINLOCK is not set +# CONFIG_DEBUG_PAGEALLOC is not set +# CONFIG_DEBUG_HIGHMEM is not set +# CONFIG_DEBUG_INFO is not set +# CONFIG_DEBUG_SPINLOCK_SLEEP is not set +# CONFIG_FRAME_POINTER is not set +# CONFIG_KDB is not set +CONFIG_X86_FIND_SMP_CONFIG=y +CONFIG_X86_MPPARSE=y + +# +# Security options +# +CONFIG_SECURITY=y +CONFIG_SECURITY_NETWORK=y +CONFIG_SECURITY_CAPABILITIES=y +CONFIG_SECURITY_CAPABILITIES_BOOTPARAM=y +CONFIG_SECURITY_ROOTPLUG=m +CONFIG_SECURITY_SELINUX=y +CONFIG_SECURITY_SELINUX_BOOTPARAM=y +CONFIG_SECURITY_SELINUX_DEVELOP=y +# CONFIG_SECURITY_SELINUX_MLS is not set + +# +# Cryptographic options +# +CONFIG_CRYPTO=y +CONFIG_CRYPTO_HMAC=y +CONFIG_CRYPTO_NULL=m +CONFIG_CRYPTO_MD4=m +CONFIG_CRYPTO_MD5=y +CONFIG_CRYPTO_SHA1=m +CONFIG_CRYPTO_SHA256=m +CONFIG_CRYPTO_SHA512=m +CONFIG_CRYPTO_DES=y +CONFIG_CRYPTO_BLOWFISH=m +CONFIG_CRYPTO_TWOFISH=m +CONFIG_CRYPTO_SERPENT=m +CONFIG_CRYPTO_AES=m +CONFIG_CRYPTO_CAST5=m +CONFIG_CRYPTO_CAST6=m +CONFIG_CRYPTO_ARC4=m +CONFIG_CRYPTO_DEFLATE=m +CONFIG_CRYPTO_MICHAEL_MIC=m +CONFIG_CRYPTO_TEST=m + +# +# Library routines +# +CONFIG_CRC32=y +CONFIG_QSORT=y +CONFIG_ZLIB_INFLATE=y +CONFIG_ZLIB_DEFLATE=m + +# +# Build options +# +CONFIG_SUSE_KERNEL=y +CONFIG_CFGNAME="bigsmp" +CONFIG_RELEASE="51.0" +CONFIG_X86_SMP=y +CONFIG_X86_HT=y +CONFIG_X86_BIOS_REBOOT=y +CONFIG_X86_TRAMPOLINE=y +CONFIG_PC=y diff --git a/lustre/kernel_patches/kernel_configs/kernel-2.6.4-2.6-suse-i686.config b/lustre/kernel_patches/kernel_configs/kernel-2.6.4-2.6-suse-i686.config new file mode 100644 index 0000000..8492557 --- /dev/null +++ b/lustre/kernel_patches/kernel_configs/kernel-2.6.4-2.6-suse-i686.config @@ -0,0 +1,2784 @@ +# +# Automatically generated make config: don't edit +# +CONFIG_X86=y +CONFIG_MMU=y +CONFIG_UID16=y +CONFIG_GENERIC_ISA_DMA=y + +# +# Code maturity level options +# +CONFIG_EXPERIMENTAL=y +CONFIG_CLEAN_COMPILE=y +# CONFIG_STANDALONE is not set + +# +# General setup +# +CONFIG_SWAP=y +CONFIG_SYSVIPC=y +CONFIG_BSD_PROCESS_ACCT=y +CONFIG_SYSCTL=y +CONFIG_LOG_BUF_SHIFT=17 +CONFIG_HOTPLUG=y +CONFIG_EVLOG=y +# CONFIG_EVLOG_FWPRINTK is not set +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +# CONFIG_EMBEDDED is not set +CONFIG_DELAY_ACCT=y +CONFIG_KALLSYMS=y +CONFIG_FUTEX=y +CONFIG_EPOLL=y +CONFIG_IOSCHED_NOOP=y +CONFIG_IOSCHED_AS=y +CONFIG_IOSCHED_DEADLINE=y +CONFIG_IOSCHED_CFQ=y +# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set + +# +# Loadable module support +# +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +CONFIG_MODULE_FORCE_UNLOAD=y +CONFIG_OBSOLETE_MODPARM=y +CONFIG_MODVERSIONS=y +CONFIG_KMOD=y +CONFIG_STOP_MACHINE=y +CONFIG_CKRM=y +CONFIG_CKRM_RES_DUMMY=m +CONFIG_CKRM_RES_SOCKETAQ=m + +# +# Processor type and features +# +# CONFIG_X86_PC is not set +# CONFIG_X86_ELAN is not set +# CONFIG_X86_VOYAGER is not set +# CONFIG_X86_NUMAQ is not set +# CONFIG_X86_SUMMIT is not set +# CONFIG_X86_BIGSMP is not set +# CONFIG_X86_VISWS is not set +CONFIG_X86_GENERICARCH=y +# CONFIG_X86_ES7000 is not set +CONFIG_X86_CYCLONE_TIMER=y +# CONFIG_M386 is not set +# CONFIG_M486 is not set +# CONFIG_M586 is not set +# CONFIG_M586TSC is not set +# CONFIG_M586MMX is not set +CONFIG_M686=y +# CONFIG_MPENTIUMII is not set +# CONFIG_MPENTIUMIII is not set +# CONFIG_MPENTIUMM is not set +# CONFIG_MPENTIUM4 is not set +# CONFIG_MK6 is not set +# CONFIG_MK7 is not set +# CONFIG_MK8 is not set +# CONFIG_MCRUSOE is not set +# CONFIG_MWINCHIPC6 is not set +# CONFIG_MWINCHIP2 is not set +# CONFIG_MWINCHIP3D is not set +# CONFIG_MCYRIXIII is not set +# CONFIG_MVIAC3_2 is not set +CONFIG_X86_GENERIC=y +CONFIG_X86_CMPXCHG=y +CONFIG_X86_XADD=y +CONFIG_X86_L1_CACHE_SHIFT=7 +CONFIG_RWSEM_XCHGADD_ALGORITHM=y +CONFIG_X86_PPRO_FENCE=y +CONFIG_X86_WP_WORKS_OK=y +CONFIG_X86_INVLPG=y +CONFIG_X86_BSWAP=y +CONFIG_X86_POPAD_OK=y +CONFIG_X86_GOOD_APIC=y +CONFIG_X86_INTEL_USERCOPY=y +CONFIG_X86_USE_PPRO_CHECKSUM=y +# CONFIG_HPET_TIMER is not set +# CONFIG_HPET_EMULATE_RTC is not set +CONFIG_SMP=y +CONFIG_NR_CPUS=32 +# CONFIG_PREEMPT is not set +CONFIG_X86_LOCAL_APIC=y +CONFIG_X86_IO_APIC=y +CONFIG_X86_TSC=y +CONFIG_X86_MCE=y +# CONFIG_X86_MCE_NONFATAL is not set +CONFIG_X86_MCE_P4THERMAL=y +CONFIG_TOSHIBA=m +CONFIG_I8K=m +CONFIG_MICROCODE=m +CONFIG_X86_MSR=m +CONFIG_X86_CPUID=m + +# +# Firmware Drivers +# +CONFIG_EDD=m +# CONFIG_NOHIGHMEM is not set +# CONFIG_HIGHMEM4G is not set +CONFIG_HIGHMEM64G=y +CONFIG_HIGHMEM=y +CONFIG_X86_PAE=y +# CONFIG_NUMA is not set +CONFIG_HIGHPTE=y +# CONFIG_MATH_EMULATION is not set +CONFIG_MTRR=y +CONFIG_EFI=y +CONFIG_IRQBALANCE=y +CONFIG_HAVE_DEC_LOCK=y +CONFIG_BOOT_IOREMAP=y +CONFIG_REGPARM=y + +# +# Special options +# +CONFIG_PROC_MM=y + +# +# Power management options (ACPI, APM) +# +CONFIG_PM=y +# CONFIG_SOFTWARE_SUSPEND is not set +CONFIG_PM_DISK=y +CONFIG_PM_DISK_PARTITION="" + +# +# ACPI (Advanced Configuration and Power Interface) Support +# +CONFIG_ACPI=y +CONFIG_ACPI_BOOT=y +CONFIG_ACPI_INTERPRETER=y +CONFIG_ACPI_SLEEP=y +CONFIG_ACPI_SLEEP_PROC_FS=y +CONFIG_ACPI_AC=m +CONFIG_ACPI_BATTERY=m +CONFIG_ACPI_BUTTON=m +CONFIG_ACPI_FAN=m +CONFIG_ACPI_PROCESSOR=m +CONFIG_ACPI_THERMAL=m +# CONFIG_ACPI_ASUS is not set +CONFIG_ACPI_TOSHIBA=m +# CONFIG_ACPI_DEBUG is not set +CONFIG_ACPI_BUS=y +CONFIG_ACPI_EC=y +CONFIG_ACPI_POWER=y +CONFIG_ACPI_PCI=y +CONFIG_ACPI_SYSTEM=y +CONFIG_X86_PM_TIMER=y +CONFIG_ACPI_INITRD=y + +# +# APM (Advanced Power Management) BIOS Support +# +CONFIG_APM=y +# CONFIG_APM_IGNORE_USER_SUSPEND is not set +CONFIG_APM_DO_ENABLE=y +# CONFIG_APM_CPU_IDLE is not set +CONFIG_APM_DISPLAY_BLANK=y +# CONFIG_APM_RTC_IS_GMT is not set +CONFIG_APM_ALLOW_INTS=y +# CONFIG_APM_REAL_MODE_POWER_OFF is not set + +# +# CPU Frequency scaling +# +CONFIG_CPU_FREQ=y +CONFIG_CPU_FREQ_PROC_INTF=y +CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y +# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set +CONFIG_CPU_FREQ_GOV_PERFORMANCE=y +CONFIG_CPU_FREQ_GOV_POWERSAVE=m +CONFIG_CPU_FREQ_GOV_USERSPACE=m +# CONFIG_CPU_FREQ_24_API is not set +CONFIG_CPU_FREQ_TABLE=m + +# +# CPUFreq processor drivers +# +CONFIG_X86_ACPI_CPUFREQ=m +# CONFIG_X86_ACPI_CPUFREQ_PROC_INTF is not set +CONFIG_X86_POWERNOW_K6=m +CONFIG_X86_POWERNOW_K7=m +CONFIG_X86_POWERNOW_K8=m +CONFIG_X86_POWERNOW_K8_ACPI=y +CONFIG_X86_GX_SUSPMOD=m +CONFIG_X86_SPEEDSTEP_CENTRINO=m +CONFIG_X86_SPEEDSTEP_ICH=m +CONFIG_X86_SPEEDSTEP_SMI=m +CONFIG_X86_P4_CLOCKMOD=m +CONFIG_X86_SPEEDSTEP_LIB=m +CONFIG_X86_LONGRUN=m +CONFIG_X86_LONGHAUL=m + +# +# Bus options (PCI, PCMCIA, EISA, MCA, ISA) +# +CONFIG_PCI=y +# CONFIG_PCI_GOBIOS is not set +# CONFIG_PCI_GOMMCONFIG is not set +# CONFIG_PCI_GODIRECT is not set +CONFIG_PCI_GOANY=y +CONFIG_PCI_BIOS=y +CONFIG_PCI_DIRECT=y +CONFIG_PCI_MMCONFIG=y +CONFIG_PCI_USE_VECTOR=y +# CONFIG_PCI_LEGACY_PROC is not set +CONFIG_PCI_NAMES=y +CONFIG_ISA=y +# CONFIG_EISA is not set +# CONFIG_MCA is not set +CONFIG_SCx200=m + +# +# PCMCIA/CardBus support +# +CONFIG_PCMCIA=m +# CONFIG_PCMCIA_DEBUG is not set +CONFIG_YENTA=m +CONFIG_CARDBUS=y +CONFIG_I82092=m +CONFIG_I82365=m +CONFIG_TCIC=m +CONFIG_PCMCIA_PROBE=y + +# +# PCI Hotplug Support +# +CONFIG_HOTPLUG_PCI=m +CONFIG_HOTPLUG_PCI_FAKE=m +CONFIG_HOTPLUG_PCI_COMPAQ=m +CONFIG_HOTPLUG_PCI_COMPAQ_NVRAM=y +CONFIG_HOTPLUG_PCI_IBM=m +CONFIG_HOTPLUG_PCI_ACPI=m +CONFIG_HOTPLUG_PCI_CPCI=y +CONFIG_HOTPLUG_PCI_CPCI_ZT5550=m +CONFIG_HOTPLUG_PCI_CPCI_GENERIC=m +CONFIG_HOTPLUG_PCI_PCIE=m +# CONFIG_HOTPLUG_PCI_PCIE_POLL_EVENT_MODE is not set +# CONFIG_HOTPLUG_PCI_SHPC is not set + +# +# Executable file formats +# +CONFIG_BINFMT_ELF=y +CONFIG_BINFMT_AOUT=m +CONFIG_BINFMT_MISC=m + +# +# Device Drivers +# + +# +# Generic Driver Options +# +CONFIG_FW_LOADER=m +# CONFIG_DEBUG_DRIVER is not set + +# +# Memory Technology Devices (MTD) +# +CONFIG_MTD=m +# CONFIG_MTD_DEBUG is not set +CONFIG_MTD_PARTITIONS=m +CONFIG_MTD_CONCAT=m +CONFIG_MTD_REDBOOT_PARTS=m +CONFIG_MTD_CMDLINE_PARTS=m + +# +# User Modules And Translation Layers +# +CONFIG_MTD_CHAR=m +CONFIG_MTD_BLOCK=m +# CONFIG_MTD_BLOCK_RO is not set +CONFIG_FTL=m +# CONFIG_NFTL is not set +CONFIG_INFTL=m + +# +# RAM/ROM/Flash chip drivers +# +CONFIG_MTD_CFI=m +CONFIG_MTD_JEDECPROBE=m +CONFIG_MTD_GEN_PROBE=m +CONFIG_MTD_CFI_ADV_OPTIONS=y +CONFIG_MTD_CFI_NOSWAP=y +# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set +# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set +# CONFIG_MTD_CFI_GEOMETRY is not set +CONFIG_MTD_CFI_INTELEXT=m +CONFIG_MTD_CFI_AMDSTD=m +CONFIG_MTD_CFI_STAA=m +# CONFIG_MTD_RAM is not set +# CONFIG_MTD_ROM is not set +CONFIG_MTD_ABSENT=m +CONFIG_MTD_OBSOLETE_CHIPS=y +CONFIG_MTD_AMDSTD=m +CONFIG_MTD_SHARP=m +CONFIG_MTD_JEDEC=m + +# +# Mapping drivers for chip access +# +CONFIG_MTD_COMPLEX_MAPPINGS=y +CONFIG_MTD_PHYSMAP=m +CONFIG_MTD_PHYSMAP_START=0x8000000 +CONFIG_MTD_PHYSMAP_LEN=0x4000000 +CONFIG_MTD_PHYSMAP_BUSWIDTH=2 +CONFIG_MTD_PNC2000=m +CONFIG_MTD_SC520CDP=m +CONFIG_MTD_NETSC520=m +CONFIG_MTD_SBC_GXX=m +CONFIG_MTD_ELAN_104NC=m +CONFIG_MTD_OCTAGON=m +CONFIG_MTD_VMAX=m +CONFIG_MTD_SCx200_DOCFLASH=m +CONFIG_MTD_AMD76XROM=m +CONFIG_MTD_ICH2ROM=m +CONFIG_MTD_SCB2_FLASH=m +CONFIG_MTD_NETtel=m +CONFIG_MTD_DILNETPC=m +CONFIG_MTD_DILNETPC_BOOTSIZE=0x80000 +CONFIG_MTD_L440GX=m +CONFIG_MTD_PCI=m + +# +# Self-contained MTD device drivers +# +CONFIG_MTD_PMC551=m +CONFIG_MTD_PMC551_BUGFIX=y +# CONFIG_MTD_PMC551_DEBUG is not set +CONFIG_MTD_SLRAM=m +CONFIG_MTD_MTDRAM=m +CONFIG_MTDRAM_TOTAL_SIZE=4096 +CONFIG_MTDRAM_ERASE_SIZE=128 +CONFIG_MTD_BLKMTD=m + +# +# Disk-On-Chip Device Drivers +# +CONFIG_MTD_DOC2000=m +CONFIG_MTD_DOC2001=m +CONFIG_MTD_DOC2001PLUS=m +CONFIG_MTD_DOCPROBE=m +CONFIG_MTD_DOCPROBE_ADVANCED=y +CONFIG_MTD_DOCPROBE_ADDRESS=0x0000 +CONFIG_MTD_DOCPROBE_HIGH=y +CONFIG_MTD_DOCPROBE_55AA=y + +# +# NAND Flash Device Drivers +# +CONFIG_MTD_NAND=m +# CONFIG_MTD_NAND_VERIFY_WRITE is not set +CONFIG_MTD_NAND_IDS=m + +# +# Parallel port support +# +CONFIG_PARPORT=m +CONFIG_PARPORT_PC=m +CONFIG_PARPORT_PC_CML1=m +CONFIG_PARPORT_SERIAL=m +CONFIG_PARPORT_PC_FIFO=y +CONFIG_PARPORT_PC_SUPERIO=y +CONFIG_PARPORT_PC_PCMCIA=m +CONFIG_PARPORT_OTHER=y +CONFIG_PARPORT_1284=y + +# +# Plug and Play support +# +CONFIG_PNP=y +# CONFIG_PNP_DEBUG is not set + +# +# Protocols +# +CONFIG_ISAPNP=y +CONFIG_PNPBIOS=y +CONFIG_PNPBIOS_PROC_FS=y + +# +# Block devices +# +CONFIG_BLK_DEV_FD=y +CONFIG_BLK_DEV_XD=m +CONFIG_PARIDE=m +CONFIG_PARIDE_PARPORT=m + +# +# Parallel IDE high-level drivers +# +CONFIG_PARIDE_PD=m +CONFIG_PARIDE_PCD=m +CONFIG_PARIDE_PF=m +CONFIG_PARIDE_PT=m +CONFIG_PARIDE_PG=m + +# +# Parallel IDE protocol modules +# +CONFIG_PARIDE_ATEN=m +CONFIG_PARIDE_BPCK=m +CONFIG_PARIDE_BPCK6=m +CONFIG_PARIDE_COMM=m +CONFIG_PARIDE_DSTR=m +CONFIG_PARIDE_FIT2=m +CONFIG_PARIDE_FIT3=m +CONFIG_PARIDE_EPAT=m +CONFIG_PARIDE_EPATC8=y +CONFIG_PARIDE_EPIA=m +CONFIG_PARIDE_FRIQ=m +CONFIG_PARIDE_FRPW=m +CONFIG_PARIDE_KBIC=m +CONFIG_PARIDE_KTTI=m +CONFIG_PARIDE_ON20=m +CONFIG_PARIDE_ON26=m +CONFIG_BLK_CPQ_DA=m +CONFIG_BLK_CPQ_CISS_DA=m +CONFIG_CISS_SCSI_TAPE=y +CONFIG_BLK_DEV_DAC960=m +CONFIG_BLK_DEV_UMEM=m +CONFIG_BLK_DEV_LOOP=y +CONFIG_BLK_DEV_CRYPTOLOOP=m +CONFIG_BLK_DEV_NBD=m +CONFIG_BLK_DEV_CARMEL=m +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_SIZE=64000 +CONFIG_BLK_DEV_INITRD=y +CONFIG_LBD=y +CONFIG_CIPHER_TWOFISH=m + +# +# ATA/ATAPI/MFM/RLL support +# +CONFIG_IDE=y +CONFIG_BLK_DEV_IDE=y + +# +# Please see Documentation/ide.txt for help/info on IDE drives +# +# CONFIG_BLK_DEV_HD_IDE is not set +CONFIG_BLK_DEV_IDEDISK=y +CONFIG_IDEDISK_MULTI_MODE=y +CONFIG_IDEDISK_STROKE=y +CONFIG_BLK_DEV_IDECS=m +CONFIG_BLK_DEV_IDECD=m +CONFIG_BLK_DEV_IDETAPE=m +CONFIG_BLK_DEV_IDEFLOPPY=y +CONFIG_BLK_DEV_IDESCSI=m +# CONFIG_IDE_TASK_IOCTL is not set +# CONFIG_IDE_TASKFILE_IO is not set + +# +# IDE chipset support/bugfixes +# +CONFIG_IDE_GENERIC=y +CONFIG_BLK_DEV_CMD640=y +CONFIG_BLK_DEV_CMD640_ENHANCED=y +CONFIG_BLK_DEV_IDEPNP=y +CONFIG_BLK_DEV_IDEPCI=y +CONFIG_IDEPCI_SHARE_IRQ=y +CONFIG_BLK_DEV_OFFBOARD=y +CONFIG_BLK_DEV_GENERIC=y +# CONFIG_BLK_DEV_OPTI621 is not set +CONFIG_BLK_DEV_RZ1000=y +CONFIG_BLK_DEV_IDEDMA_PCI=y +# CONFIG_BLK_DEV_IDEDMA_FORCED is not set +CONFIG_IDEDMA_PCI_AUTO=y +CONFIG_IDEDMA_ONLYDISK=y +CONFIG_BLK_DEV_ADMA=y +CONFIG_BLK_DEV_AEC62XX=y +CONFIG_BLK_DEV_ALI15X3=y +# CONFIG_WDC_ALI15X3 is not set +CONFIG_BLK_DEV_AMD74XX=y +CONFIG_BLK_DEV_ATIIXP=y +CONFIG_BLK_DEV_CMD64X=y +CONFIG_BLK_DEV_TRIFLEX=y +CONFIG_BLK_DEV_CY82C693=y +CONFIG_BLK_DEV_CS5520=m +CONFIG_BLK_DEV_CS5530=m +CONFIG_BLK_DEV_HPT34X=y +CONFIG_HPT34X_AUTODMA=y +CONFIG_BLK_DEV_HPT366=y +CONFIG_BLK_DEV_SC1200=y +CONFIG_BLK_DEV_PIIX=y +CONFIG_BLK_DEV_NS87415=y +CONFIG_BLK_DEV_PDC202XX_OLD=y +CONFIG_PDC202XX_BURST=y +CONFIG_BLK_DEV_PDC202XX_NEW=y +CONFIG_PDC202XX_FORCE=y +CONFIG_BLK_DEV_SVWKS=y +CONFIG_BLK_DEV_SIIMAGE=y +CONFIG_BLK_DEV_SIS5513=y +CONFIG_BLK_DEV_SLC90E66=y +# CONFIG_BLK_DEV_TRM290 is not set +CONFIG_BLK_DEV_VIA82CXXX=y +CONFIG_IDE_CHIPSETS=y + +# +# Note: most of these also require special kernel boot parameters +# +CONFIG_BLK_DEV_4DRIVES=y +CONFIG_BLK_DEV_ALI14XX=y +CONFIG_BLK_DEV_DTC2278=y +CONFIG_BLK_DEV_HT6560B=y +# CONFIG_BLK_DEV_PDC4030 is not set +CONFIG_BLK_DEV_QD65XX=y +CONFIG_BLK_DEV_UMC8672=y +CONFIG_BLK_DEV_IDEDMA=y +# CONFIG_IDEDMA_IVB is not set +CONFIG_IDEDMA_AUTO=y +# CONFIG_BLK_DEV_HD is not set + +# +# SCSI device support +# +CONFIG_SCSI=m +CONFIG_SCSI_PROC_FS=y + +# +# SCSI support type (disk, tape, CD-ROM) +# +CONFIG_BLK_DEV_SD=m +CONFIG_CHR_DEV_ST=m +CONFIG_CHR_DEV_OSST=m +CONFIG_BLK_DEV_SR=m +# CONFIG_BLK_DEV_SR_VENDOR is not set +CONFIG_CHR_DEV_SG=m +CONFIG_CHR_DEV_SCH=m + +# +# Some SCSI devices (e.g. CD jukebox) support multiple LUNs +# +CONFIG_SCSI_MULTI_LUN=y +CONFIG_SCSI_REPORT_LUNS=y +CONFIG_SCSI_CONSTANTS=y +CONFIG_SCSI_LOGGING=y + +# +# SCSI Transport Attributes +# +CONFIG_SCSI_SPI_ATTRS=m +CONFIG_SCSI_FC_ATTRS=m + +# +# SCSI low-level drivers +# +CONFIG_BLK_DEV_3W_XXXX_RAID=m +CONFIG_SCSI_7000FASST=m +CONFIG_SCSI_ACARD=m +CONFIG_SCSI_AHA152X=m +CONFIG_SCSI_AHA1542=m +CONFIG_SCSI_AACRAID=m +CONFIG_SCSI_AIC7XXX=m +CONFIG_AIC7XXX_CMDS_PER_DEVICE=32 +CONFIG_AIC7XXX_RESET_DELAY_MS=5000 +# CONFIG_AIC7XXX_BUILD_FIRMWARE is not set +# CONFIG_AIC7XXX_DEBUG_ENABLE is not set +CONFIG_AIC7XXX_DEBUG_MASK=0 +CONFIG_AIC7XXX_REG_PRETTY_PRINT=y +CONFIG_SCSI_AIC7XXX_OLD=m +CONFIG_SCSI_AIC79XX=m +CONFIG_AIC79XX_CMDS_PER_DEVICE=32 +CONFIG_AIC79XX_RESET_DELAY_MS=15000 +# CONFIG_AIC79XX_BUILD_FIRMWARE is not set +# CONFIG_AIC79XX_ENABLE_RD_STRM is not set +# CONFIG_AIC79XX_DEBUG_ENABLE is not set +CONFIG_AIC79XX_DEBUG_MASK=0 +CONFIG_AIC79XX_REG_PRETTY_PRINT=y +CONFIG_SCSI_ADVANSYS=m +CONFIG_SCSI_IN2000=m +CONFIG_SCSI_MEGARAID=m +CONFIG_SCSI_SATA=y +CONFIG_SCSI_SATA_SVW=m +CONFIG_SCSI_ATA_PIIX=m +CONFIG_SCSI_SATA_PROMISE=m +CONFIG_SCSI_SATA_SIL=m +CONFIG_SCSI_SATA_SIS=m +CONFIG_SCSI_SATA_VIA=m +CONFIG_SCSI_SATA_VITESSE=m +CONFIG_SCSI_BUSLOGIC=m +# CONFIG_SCSI_OMIT_FLASHPOINT is not set +# CONFIG_SCSI_CPQFCTS is not set +CONFIG_SCSI_DMX3191D=m +CONFIG_SCSI_DTC3280=m +CONFIG_SCSI_EATA=m +CONFIG_SCSI_EATA_TAGGED_QUEUE=y +CONFIG_SCSI_EATA_LINKED_COMMANDS=y +CONFIG_SCSI_EATA_MAX_TAGS=16 +CONFIG_SCSI_EATA_PIO=m +CONFIG_SCSI_FUTURE_DOMAIN=m +CONFIG_SCSI_GDTH=m +CONFIG_SCSI_GENERIC_NCR5380=m +CONFIG_SCSI_GENERIC_NCR5380_MMIO=m +CONFIG_SCSI_GENERIC_NCR53C400=y +CONFIG_SCSI_IPS=m +# CONFIG_SCSI_INIA100 is not set +CONFIG_SCSI_PPA=m +CONFIG_SCSI_IMM=m +# CONFIG_SCSI_IZIP_EPP16 is not set +# CONFIG_SCSI_IZIP_SLOW_CTR is not set +CONFIG_SCSI_NCR53C406A=m +CONFIG_SCSI_SYM53C8XX_2=m +CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1 +CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16 +CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 +# CONFIG_SCSI_SYM53C8XX_IOMAPPED is not set +CONFIG_SCSI_LPFC=m +CONFIG_SCSI_IPR=m +CONFIG_SCSI_IPR_TRACE=y +CONFIG_SCSI_IPR_DUMP=y +CONFIG_SCSI_PAS16=m +CONFIG_SCSI_PSI240I=m +CONFIG_SCSI_QLOGIC_FAS=m +CONFIG_SCSI_QLOGIC_ISP=m +CONFIG_SCSI_QLOGIC_FC=m +CONFIG_SCSI_QLOGIC_FC_FIRMWARE=y +CONFIG_SCSI_QLOGIC_1280=m +CONFIG_SCSI_QLA2XXX=m +CONFIG_SCSI_QLA21XX=m +CONFIG_SCSI_QLA22XX=m +CONFIG_SCSI_QLA2300=m +CONFIG_SCSI_QLA2322=m +CONFIG_SCSI_QLA6312=m +CONFIG_SCSI_QLA6322=m +CONFIG_SCSI_QLA2XXX_FAILOVER=y +CONFIG_SCSI_SYM53C416=m +CONFIG_SCSI_DC395x=m +CONFIG_SCSI_DC390T=m +CONFIG_SCSI_T128=m +CONFIG_SCSI_U14_34F=m +CONFIG_SCSI_U14_34F_TAGGED_QUEUE=y +CONFIG_SCSI_U14_34F_LINKED_COMMANDS=y +CONFIG_SCSI_U14_34F_MAX_TAGS=8 +CONFIG_SCSI_ULTRASTOR=m +CONFIG_SCSI_NSP32=m +CONFIG_SCSI_DEBUG=m + +# +# PCMCIA SCSI adapter support +# +CONFIG_PCMCIA_AHA152X=m +CONFIG_PCMCIA_FDOMAIN=m +CONFIG_PCMCIA_NINJA_SCSI=m +CONFIG_PCMCIA_QLOGIC=m + +# +# Old CD-ROM drivers (not SCSI, not IDE) +# +CONFIG_CD_NO_IDESCSI=y +CONFIG_AZTCD=m +CONFIG_GSCD=m +CONFIG_MCD=m +CONFIG_MCD_IRQ=11 +CONFIG_MCD_BASE=0x300 +CONFIG_MCDX=m +CONFIG_OPTCD=m +CONFIG_SJCD=m +CONFIG_ISP16_CDI=m +CONFIG_CDU535=m + +# +# Multi-device support (RAID and LVM) +# +CONFIG_MD=y +CONFIG_BLK_DEV_MD=y +CONFIG_MD_LINEAR=m +CONFIG_MD_RAID0=m +CONFIG_MD_RAID1=m +CONFIG_MD_RAID5=m +CONFIG_MD_RAID6=m +CONFIG_MD_MULTIPATH=m +CONFIG_BLK_DEV_DM=m +CONFIG_DM_CRYPT=m +CONFIG_DM_MULTIPATH=m +CONFIG_DM_SNAPSHOT=m +CONFIG_DM_MIRROR=m +CONFIG_DM_ZERO=m +CONFIG_DM_FLAKEY=m + +# +# Fusion MPT device support +# +CONFIG_FUSION=m +CONFIG_FUSION_MAX_SGE=40 +CONFIG_FUSION_ISENSE=m +CONFIG_FUSION_CTL=m +CONFIG_FUSION_LAN=m + +# +# IEEE 1394 (FireWire) support +# +CONFIG_IEEE1394=m + +# +# Subsystem Options +# +# CONFIG_IEEE1394_VERBOSEDEBUG is not set +# CONFIG_IEEE1394_OUI_DB is not set +CONFIG_IEEE1394_EXTRA_CONFIG_ROMS=y +CONFIG_IEEE1394_CONFIG_ROM_IP1394=y + +# +# Device Drivers +# +CONFIG_IEEE1394_PCILYNX=m +CONFIG_IEEE1394_OHCI1394=m + +# +# Protocol Drivers +# +CONFIG_IEEE1394_VIDEO1394=m +CONFIG_IEEE1394_SBP2=m +# CONFIG_IEEE1394_SBP2_PHYS_DMA is not set +CONFIG_IEEE1394_ETH1394=m +CONFIG_IEEE1394_DV1394=m +CONFIG_IEEE1394_RAWIO=m +CONFIG_IEEE1394_CMP=m +CONFIG_IEEE1394_AMDTP=m + +# +# I2O device support +# +CONFIG_I2O=m +CONFIG_I2O_PCI=m +CONFIG_I2O_BLOCK=m +CONFIG_I2O_SCSI=m +CONFIG_I2O_PROC=m + +# +# Networking support +# +CONFIG_NET=y + +# +# Networking options +# +CONFIG_PACKET=m +CONFIG_PACKET_MMAP=y +CONFIG_NETLINK_DEV=m +CONFIG_UNIX=y +CONFIG_NET_KEY=m +CONFIG_INET=y +CONFIG_IP_MULTICAST=y +CONFIG_IP_ADVANCED_ROUTER=y +CONFIG_IP_MULTIPLE_TABLES=y +CONFIG_IP_ROUTE_FWMARK=y +CONFIG_IP_ROUTE_NAT=y +CONFIG_IP_ROUTE_MULTIPATH=y +CONFIG_IP_ROUTE_TOS=y +CONFIG_IP_ROUTE_VERBOSE=y +# CONFIG_IP_PNP is not set +CONFIG_NET_IPIP=m +CONFIG_NET_IPGRE=m +CONFIG_NET_IPGRE_BROADCAST=y +CONFIG_IP_MROUTE=y +CONFIG_IP_PIMSM_V1=y +CONFIG_IP_PIMSM_V2=y +# CONFIG_ARPD is not set +CONFIG_SYN_COOKIES=y +CONFIG_INET_AH=m +CONFIG_INET_ESP=m +CONFIG_INET_IPCOMP=m + +# +# IP: Virtual Server Configuration +# +CONFIG_IP_VS=m +# CONFIG_IP_VS_DEBUG is not set +CONFIG_IP_VS_TAB_BITS=12 + +# +# IPVS transport protocol load balancing support +# +CONFIG_IP_VS_PROTO_TCP=y +CONFIG_IP_VS_PROTO_UDP=y +CONFIG_IP_VS_PROTO_ESP=y +CONFIG_IP_VS_PROTO_AH=y + +# +# IPVS scheduler +# +CONFIG_IP_VS_RR=m +CONFIG_IP_VS_WRR=m +CONFIG_IP_VS_LC=m +CONFIG_IP_VS_WLC=m +CONFIG_IP_VS_LBLC=m +CONFIG_IP_VS_LBLCR=m +CONFIG_IP_VS_DH=m +CONFIG_IP_VS_SH=m +CONFIG_IP_VS_SED=m +CONFIG_IP_VS_NQ=m + +# +# IPVS application helper +# +CONFIG_IP_VS_FTP=m +CONFIG_IPV6=m +CONFIG_IPV6_SUBTREES=y +CONFIG_IPV6_PRIVACY=y +CONFIG_IPV6_NDISC_NEW=y +CONFIG_INET6_AH=m +CONFIG_INET6_ESP=m +CONFIG_INET6_IPCOMP=m +CONFIG_IPV6_TUNNEL=m + +# +# MOBILE IPv6 (EXPERIMENTAL) +# +CONFIG_IPV6_MOBILITY=m +CONFIG_IPV6_MOBILITY_MN=m +CONFIG_IPV6_MOBILITY_HA=m +# CONFIG_IPV6_MOBILITY_DEBUG is not set +CONFIG_DECNET=m +CONFIG_DECNET_SIOCGIFCONF=y +# CONFIG_DECNET_ROUTER is not set +CONFIG_BRIDGE=m +CONFIG_NETFILTER=y +# CONFIG_NETFILTER_DEBUG is not set +CONFIG_BRIDGE_NETFILTER=y + +# +# IP: Netfilter Configuration +# +CONFIG_IP_NF_CONNTRACK=m +CONFIG_IP_NF_FTP=m +CONFIG_IP_NF_IRC=m +CONFIG_IP_NF_TFTP=m +CONFIG_IP_NF_AMANDA=m +CONFIG_IP_NF_QUEUE=m +CONFIG_IP_NF_IPTABLES=m +CONFIG_IP_NF_MATCH_LIMIT=m +CONFIG_IP_NF_MATCH_IPRANGE=m +CONFIG_IP_NF_MATCH_MAC=m +CONFIG_IP_NF_MATCH_PKTTYPE=m +CONFIG_IP_NF_MATCH_MARK=m +CONFIG_IP_NF_MATCH_MULTIPORT=m +CONFIG_IP_NF_MATCH_TOS=m +CONFIG_IP_NF_MATCH_RECENT=m +CONFIG_IP_NF_MATCH_ECN=m +CONFIG_IP_NF_MATCH_DSCP=m +CONFIG_IP_NF_MATCH_AH_ESP=m +CONFIG_IP_NF_MATCH_LENGTH=m +CONFIG_IP_NF_MATCH_TTL=m +CONFIG_IP_NF_MATCH_TCPMSS=m +CONFIG_IP_NF_MATCH_HELPER=m +CONFIG_IP_NF_MATCH_STATE=m +CONFIG_IP_NF_MATCH_CONNTRACK=m +CONFIG_IP_NF_MATCH_OWNER=m +CONFIG_IP_NF_MATCH_PHYSDEV=m +CONFIG_IP_NF_FILTER=m +CONFIG_IP_NF_TARGET_REJECT=m +CONFIG_IP_NF_NAT=m +CONFIG_IP_NF_NAT_NEEDED=y +CONFIG_IP_NF_TARGET_MASQUERADE=m +CONFIG_IP_NF_TARGET_REDIRECT=m +CONFIG_IP_NF_TARGET_NETMAP=m +CONFIG_IP_NF_TARGET_SAME=m +# CONFIG_IP_NF_NAT_LOCAL is not set +CONFIG_IP_NF_NAT_SNMP_BASIC=m +CONFIG_IP_NF_NAT_IRC=m +CONFIG_IP_NF_NAT_FTP=m +CONFIG_IP_NF_NAT_TFTP=m +CONFIG_IP_NF_NAT_AMANDA=m +CONFIG_IP_NF_MANGLE=m +CONFIG_IP_NF_TARGET_TOS=m +CONFIG_IP_NF_TARGET_ECN=m +CONFIG_IP_NF_TARGET_DSCP=m +CONFIG_IP_NF_TARGET_MARK=m +CONFIG_IP_NF_TARGET_CLASSIFY=m +CONFIG_IP_NF_TARGET_LOG=m +CONFIG_IP_NF_TARGET_ULOG=m +CONFIG_IP_NF_TARGET_TCPMSS=m +CONFIG_IP_NF_ARPTABLES=m +CONFIG_IP_NF_ARPFILTER=m +CONFIG_IP_NF_ARP_MANGLE=m +CONFIG_IP_NF_COMPAT_IPCHAINS=m +CONFIG_IP_NF_COMPAT_IPFWADM=m + +# +# IPv6: Netfilter Configuration +# +CONFIG_IP6_NF_FTP=m +CONFIG_IP6_NF_QUEUE=m +CONFIG_IP6_NF_IPTABLES=m +CONFIG_IP6_NF_MATCH_LIMIT=m +CONFIG_IP6_NF_MATCH_MAC=m +CONFIG_IP6_NF_MATCH_RT=m +CONFIG_IP6_NF_MATCH_OPTS=m +CONFIG_IP6_NF_MATCH_FRAG=m +CONFIG_IP6_NF_MATCH_HL=m +CONFIG_IP6_NF_MATCH_MULTIPORT=m +CONFIG_IP6_NF_MATCH_OWNER=m +CONFIG_IP6_NF_MATCH_MARK=m +CONFIG_IP6_NF_MATCH_IPV6HEADER=m +CONFIG_IP6_NF_MATCH_AHESP=m +CONFIG_IP6_NF_MATCH_LENGTH=m +CONFIG_IP6_NF_MATCH_EUI64=m +CONFIG_IP6_NF_CONNTRACK=m +CONFIG_IP6_NF_MATCH_STATE=m +CONFIG_IP6_NF_FILTER=m +CONFIG_IP6_NF_TARGET_LOG=m +CONFIG_IP6_NF_TARGET_REJECT=m +CONFIG_IP6_NF_MANGLE=m +CONFIG_IP6_NF_TARGET_MARK=m + +# +# DECnet: Netfilter Configuration +# +CONFIG_DECNET_NF_GRABULATOR=m + +# +# Bridge: Netfilter Configuration +# +CONFIG_BRIDGE_NF_EBTABLES=m +CONFIG_BRIDGE_EBT_BROUTE=m +CONFIG_BRIDGE_EBT_T_FILTER=m +CONFIG_BRIDGE_EBT_T_NAT=m +CONFIG_BRIDGE_EBT_802_3=m +CONFIG_BRIDGE_EBT_AMONG=m +CONFIG_BRIDGE_EBT_ARP=m +CONFIG_BRIDGE_EBT_IP=m +CONFIG_BRIDGE_EBT_LIMIT=m +CONFIG_BRIDGE_EBT_MARK=m +CONFIG_BRIDGE_EBT_PKTTYPE=m +CONFIG_BRIDGE_EBT_STP=m +CONFIG_BRIDGE_EBT_VLAN=m +CONFIG_BRIDGE_EBT_ARPREPLY=m +CONFIG_BRIDGE_EBT_DNAT=m +CONFIG_BRIDGE_EBT_MARK_T=m +CONFIG_BRIDGE_EBT_REDIRECT=m +CONFIG_BRIDGE_EBT_SNAT=m +CONFIG_BRIDGE_EBT_LOG=m +CONFIG_XFRM=y +CONFIG_XFRM_USER=m + +# +# SCTP Configuration (EXPERIMENTAL) +# +CONFIG_IP_SCTP=m +# CONFIG_SCTP_DBG_MSG is not set +# CONFIG_SCTP_DBG_OBJCNT is not set +# CONFIG_SCTP_HMAC_NONE is not set +# CONFIG_SCTP_HMAC_SHA1 is not set +CONFIG_SCTP_HMAC_MD5=y +CONFIG_ATM=y +CONFIG_ATM_CLIP=y +CONFIG_ATM_CLIP_NO_ICMP=y +CONFIG_ATM_LANE=m +CONFIG_ATM_MPOA=m +CONFIG_ATM_BR2684=m +# CONFIG_ATM_BR2684_IPFILTER is not set +CONFIG_VLAN_8021Q=m +CONFIG_LLC=y +CONFIG_LLC2=m +CONFIG_IPX=m +# CONFIG_IPX_INTERN is not set +CONFIG_ATALK=m +CONFIG_DEV_APPLETALK=y +CONFIG_LTPC=m +CONFIG_COPS=m +CONFIG_COPS_DAYNA=y +CONFIG_COPS_TANGENT=y +CONFIG_IPDDP=m +CONFIG_IPDDP_ENCAP=y +CONFIG_IPDDP_DECAP=y +CONFIG_X25=m +CONFIG_LAPB=m +# CONFIG_NET_DIVERT is not set +CONFIG_ECONET=m +# CONFIG_ECONET_AUNUDP is not set +# CONFIG_ECONET_NATIVE is not set +CONFIG_WAN_ROUTER=m +# CONFIG_NET_FASTROUTE is not set +# CONFIG_NET_HW_FLOWCONTROL is not set + +# +# QoS and/or fair queueing +# +CONFIG_NET_SCHED=y +CONFIG_NET_SCH_CBQ=m +CONFIG_NET_SCH_HTB=m +CONFIG_NET_SCH_HFSC=m +CONFIG_NET_SCH_CSZ=m +CONFIG_NET_SCH_ATM=y +CONFIG_NET_SCH_PRIO=m +CONFIG_NET_SCH_RED=m +CONFIG_NET_SCH_SFQ=m +CONFIG_NET_SCH_TEQL=m +CONFIG_NET_SCH_TBF=m +CONFIG_NET_SCH_GRED=m +CONFIG_NET_SCH_DSMARK=m +CONFIG_NET_SCH_DELAY=m +CONFIG_NET_SCH_INGRESS=m +CONFIG_NET_QOS=y +CONFIG_NET_ESTIMATOR=y +CONFIG_NET_CLS=y +CONFIG_NET_CLS_TCINDEX=m +CONFIG_NET_CLS_ROUTE4=m +CONFIG_NET_CLS_ROUTE=y +CONFIG_NET_CLS_FW=m +CONFIG_NET_CLS_U32=m +CONFIG_NET_CLS_RSVP=m +CONFIG_NET_CLS_RSVP6=m +CONFIG_NET_CLS_POLICE=y + +# +# Network testing +# +CONFIG_NET_PKTGEN=m +CONFIG_NETDEVICES=y + +# +# ARCnet devices +# +CONFIG_ARCNET=m +CONFIG_ARCNET_1201=m +CONFIG_ARCNET_1051=m +CONFIG_ARCNET_RAW=m +CONFIG_ARCNET_COM90xx=m +CONFIG_ARCNET_COM90xxIO=m +CONFIG_ARCNET_RIM_I=m +CONFIG_ARCNET_COM20020=m +CONFIG_ARCNET_COM20020_ISA=m +CONFIG_ARCNET_COM20020_PCI=m +CONFIG_DUMMY=m +CONFIG_BONDING=m +CONFIG_EQUALIZER=m +CONFIG_TUN=m +CONFIG_ETHERTAP=m +CONFIG_NET_SB1000=m + +# +# Ethernet (10 or 100Mbit) +# +CONFIG_NET_ETHERNET=y +CONFIG_MII=m +CONFIG_HAPPYMEAL=m +CONFIG_SUNGEM=m +CONFIG_NET_VENDOR_3COM=y +CONFIG_EL1=m +CONFIG_EL2=m +CONFIG_ELPLUS=m +CONFIG_EL16=m +CONFIG_EL3=m +CONFIG_3C515=m +CONFIG_VORTEX=m +CONFIG_TYPHOON=m +CONFIG_LANCE=m +CONFIG_NET_VENDOR_SMC=y +CONFIG_WD80x3=m +CONFIG_ULTRA=m +CONFIG_SMC9194=m +CONFIG_NET_VENDOR_RACAL=y +CONFIG_NI52=m +CONFIG_NI65=m + +# +# Tulip family network device support +# +CONFIG_NET_TULIP=y +CONFIG_DE2104X=m +CONFIG_TULIP=m +# CONFIG_TULIP_MWI is not set +# CONFIG_TULIP_MMIO is not set +CONFIG_TULIP_NAPI=y +CONFIG_TULIP_NAPI_HW_MITIGATION=y +CONFIG_DE4X5=m +CONFIG_WINBOND_840=m +CONFIG_DM9102=m +CONFIG_PCMCIA_XIRCOM=m +CONFIG_AT1700=m +CONFIG_DEPCA=m +CONFIG_HP100=m +CONFIG_NET_ISA=y +CONFIG_E2100=m +CONFIG_EWRK3=m +CONFIG_EEXPRESS=m +CONFIG_EEXPRESS_PRO=m +CONFIG_HPLAN_PLUS=m +CONFIG_HPLAN=m +CONFIG_LP486E=m +CONFIG_ETH16I=m +CONFIG_NE2000=m +CONFIG_ZNET=m +CONFIG_SEEQ8005=m +CONFIG_NET_PCI=y +CONFIG_PCNET32=m +CONFIG_AMD8111_ETH=m +CONFIG_ADAPTEC_STARFIRE=m +CONFIG_ADAPTEC_STARFIRE_NAPI=y +CONFIG_AC3200=m +CONFIG_APRICOT=m +CONFIG_B44=m +CONFIG_FORCEDETH=m +CONFIG_CS89x0=m +CONFIG_DGRS=m +CONFIG_EEPRO100=m +# CONFIG_EEPRO100_PIO is not set +CONFIG_E100=m +CONFIG_E100_NAPI=y +CONFIG_FEALNX=m +CONFIG_NATSEMI=m +CONFIG_NE2K_PCI=m +CONFIG_8139CP=m +CONFIG_8139TOO=m +# CONFIG_8139TOO_PIO is not set +# CONFIG_8139TOO_TUNE_TWISTER is not set +CONFIG_8139TOO_8129=y +# CONFIG_8139_OLD_RX_RESET is not set +CONFIG_8139_RXBUF_IDX=2 +CONFIG_SIS900=m +CONFIG_EPIC100=m +CONFIG_SUNDANCE=m +# CONFIG_SUNDANCE_MMIO is not set +CONFIG_TLAN=m +CONFIG_VIA_RHINE=m +# CONFIG_VIA_RHINE_MMIO is not set +CONFIG_NET_POCKET=y +CONFIG_ATP=m +CONFIG_DE600=m +CONFIG_DE620=m + +# +# Ethernet (1000 Mbit) +# +CONFIG_ACENIC=m +# CONFIG_ACENIC_OMIT_TIGON_I is not set +CONFIG_DL2K=m +CONFIG_E1000=m +CONFIG_E1000_NAPI=y +CONFIG_NS83820=m +CONFIG_HAMACHI=m +CONFIG_YELLOWFIN=m +CONFIG_R8169=m +CONFIG_SIS190=m +CONFIG_SK98LIN=m +CONFIG_TIGON3=m +CONFIG_NET_BROADCOM=m +CONFIG_NET_BCM44=m + +# +# Ethernet (10000 Mbit) +# +CONFIG_IXGB=m +CONFIG_IXGB_NAPI=y +CONFIG_S2IO=m +CONFIG_S2IO_NAPI=y +CONFIG_FDDI=y +# CONFIG_DEFXX is not set +CONFIG_SKFP=m +CONFIG_HIPPI=y +CONFIG_ROADRUNNER=m +CONFIG_ROADRUNNER_LARGE_RINGS=y +CONFIG_PLIP=m +CONFIG_PPP=m +CONFIG_PPP_MULTILINK=y +CONFIG_PPP_FILTER=y +CONFIG_PPP_ASYNC=m +CONFIG_PPP_SYNC_TTY=m +CONFIG_PPP_DEFLATE=m +CONFIG_PPP_BSDCOMP=m +CONFIG_PPP_MPPE=m +CONFIG_PPPOE=m +CONFIG_PPPOATM=m +CONFIG_SLIP=m +CONFIG_SLIP_COMPRESSED=y +CONFIG_SLIP_SMART=y +CONFIG_SLIP_MODE_SLIP6=y + +# +# Wireless LAN (non-hamradio) +# +CONFIG_NET_RADIO=y + +# +# Obsolete Wireless cards support (pre-802.11) +# +CONFIG_STRIP=m +# CONFIG_ARLAN is not set +CONFIG_WAVELAN=m +CONFIG_PCMCIA_WAVELAN=m +CONFIG_PCMCIA_NETWAVE=m + +# +# Wireless 802.11 Frequency Hopping cards support +# +CONFIG_PCMCIA_RAYCS=m + +# +# Wireless 802.11b ISA/PCI cards support +# +CONFIG_AIRO=m +CONFIG_HERMES=m +CONFIG_PLX_HERMES=m +CONFIG_TMD_HERMES=m +CONFIG_PCI_HERMES=m +CONFIG_ATMEL=m +CONFIG_PCI_ATMEL=m + +# +# Wireless 802.11b Pcmcia/Cardbus cards support +# +CONFIG_PCMCIA_HERMES=m +CONFIG_AIRO_CS=m +CONFIG_PCMCIA_ATMEL=m +CONFIG_PCMCIA_WL3501=m + +# +# Prism GT/Duette 802.11(a/b/g) PCI/Cardbus support +# +CONFIG_PRISM54=m +CONFIG_NET_WIRELESS=y + +# +# Token Ring devices +# +CONFIG_TR=y +CONFIG_IBMTR=m +CONFIG_IBMOL=m +CONFIG_IBMLS=m +CONFIG_3C359=m +CONFIG_TMS380TR=m +CONFIG_TMSPCI=m +CONFIG_SKISA=m +CONFIG_PROTEON=m +CONFIG_ABYSS=m +CONFIG_SMCTR=m +CONFIG_NET_FC=y +CONFIG_NET_LPFC=m +CONFIG_RCPCI=m +CONFIG_SHAPER=m +CONFIG_NETCONSOLE=m + +# +# Wan interfaces +# +CONFIG_WAN=y +CONFIG_HOSTESS_SV11=m +# CONFIG_COSA is not set +CONFIG_DSCC4=m +CONFIG_DSCC4_PCISYNC=y +CONFIG_DSCC4_PCI_RST=y +CONFIG_LANMEDIA=m +CONFIG_SEALEVEL_4021=m +CONFIG_SYNCLINK_SYNCPPP=m +CONFIG_HDLC=m +CONFIG_HDLC_RAW=y +CONFIG_HDLC_RAW_ETH=y +CONFIG_HDLC_CISCO=y +CONFIG_HDLC_FR=y +CONFIG_HDLC_PPP=y +CONFIG_HDLC_X25=y +CONFIG_PCI200SYN=m +CONFIG_WANXL=m +# CONFIG_WANXL_BUILD_FIRMWARE is not set +CONFIG_PC300=m +CONFIG_PC300_MLPPP=y +CONFIG_N2=m +CONFIG_C101=m +CONFIG_FARSYNC=m +CONFIG_DLCI=m +CONFIG_DLCI_COUNT=24 +CONFIG_DLCI_MAX=8 +CONFIG_SDLA=m +# CONFIG_WAN_ROUTER_DRIVERS is not set +CONFIG_LAPBETHER=m +CONFIG_X25_ASY=m +# CONFIG_SBNI is not set + +# +# PCMCIA network device support +# +CONFIG_NET_PCMCIA=y +CONFIG_PCMCIA_3C589=m +CONFIG_PCMCIA_3C574=m +CONFIG_PCMCIA_FMVJ18X=m +CONFIG_PCMCIA_PCNET=m +CONFIG_PCMCIA_NMCLAN=m +CONFIG_PCMCIA_SMC91C92=m +CONFIG_PCMCIA_XIRC2PS=m +CONFIG_PCMCIA_AXNET=m +CONFIG_ARCNET_COM20020_CS=m +CONFIG_PCMCIA_IBMTR=m + +# +# ATM drivers +# +CONFIG_ATM_TCP=m +CONFIG_ATM_LANAI=m +CONFIG_ATM_ENI=m +# CONFIG_ATM_ENI_DEBUG is not set +# CONFIG_ATM_ENI_TUNE_BURST is not set +CONFIG_ATM_FIRESTREAM=m +CONFIG_ATM_ZATM=m +# CONFIG_ATM_ZATM_DEBUG is not set +CONFIG_ATM_NICSTAR=m +CONFIG_ATM_NICSTAR_USE_SUNI=y +CONFIG_ATM_NICSTAR_USE_IDT77105=y +CONFIG_ATM_IDT77252=m +# CONFIG_ATM_IDT77252_DEBUG is not set +CONFIG_ATM_IDT77252_RCV_ALL=y +CONFIG_ATM_IDT77252_USE_SUNI=y +CONFIG_ATM_AMBASSADOR=m +# CONFIG_ATM_AMBASSADOR_DEBUG is not set +CONFIG_ATM_HORIZON=m +# CONFIG_ATM_HORIZON_DEBUG is not set +CONFIG_ATM_IA=m +# CONFIG_ATM_IA_DEBUG is not set +CONFIG_ATM_FORE200E_MAYBE=m +CONFIG_ATM_FORE200E_PCA=y +CONFIG_ATM_FORE200E_PCA_DEFAULT_FW=y +CONFIG_ATM_FORE200E_TX_RETRY=16 +CONFIG_ATM_FORE200E_DEBUG=0 +CONFIG_ATM_FORE200E=m +CONFIG_ATM_HE=m +CONFIG_ATM_HE_USE_SUNI=y + +# +# Amateur Radio support +# +CONFIG_HAMRADIO=y + +# +# Packet Radio protocols +# +CONFIG_AX25=m +CONFIG_AX25_DAMA_SLAVE=y +CONFIG_NETROM=m +CONFIG_ROSE=m + +# +# AX.25 network device drivers +# +CONFIG_BPQETHER=m +CONFIG_SCC=m +CONFIG_SCC_DELAY=y +CONFIG_SCC_TRXECHO=y +CONFIG_BAYCOM_SER_FDX=m +CONFIG_BAYCOM_SER_HDX=m +CONFIG_BAYCOM_PAR=m +CONFIG_BAYCOM_EPP=m +CONFIG_YAM=m + +# +# IrDA (infrared) support +# +CONFIG_IRDA=m + +# +# IrDA protocols +# +CONFIG_IRLAN=m +CONFIG_IRNET=m +CONFIG_IRCOMM=m +CONFIG_IRDA_ULTRA=y + +# +# IrDA options +# +CONFIG_IRDA_CACHE_LAST_LSAP=y +# CONFIG_IRDA_FAST_RR is not set +# CONFIG_IRDA_DEBUG is not set + +# +# Infrared-port device drivers +# + +# +# SIR device drivers +# +CONFIG_IRTTY_SIR=m + +# +# Dongle support +# +CONFIG_DONGLE=y +CONFIG_ESI_DONGLE=m +CONFIG_ACTISYS_DONGLE=m +CONFIG_TEKRAM_DONGLE=m +CONFIG_LITELINK_DONGLE=m +CONFIG_MA600_DONGLE=m +CONFIG_GIRBIL_DONGLE=m +CONFIG_MCP2120_DONGLE=m +CONFIG_OLD_BELKIN_DONGLE=m +CONFIG_ACT200L_DONGLE=m + +# +# Old SIR device drivers +# + +# +# Old Serial dongle support +# + +# +# FIR device drivers +# +CONFIG_USB_IRDA=m +CONFIG_SIGMATEL_FIR=m +CONFIG_NSC_FIR=m +CONFIG_WINBOND_FIR=m +CONFIG_TOSHIBA_FIR=m +CONFIG_SMC_IRCC_FIR=m +CONFIG_ALI_FIR=m +CONFIG_VLSI_FIR=m +CONFIG_VIA_FIR=m + +# +# Bluetooth support +# +CONFIG_BT=m +CONFIG_BT_L2CAP=m +CONFIG_BT_SCO=m +CONFIG_BT_RFCOMM=m +CONFIG_BT_RFCOMM_TTY=y +CONFIG_BT_BNEP=m +CONFIG_BT_BNEP_MC_FILTER=y +CONFIG_BT_BNEP_PROTO_FILTER=y +CONFIG_BT_CMTP=m + +# +# Bluetooth device drivers +# +CONFIG_BT_HCIUSB=m +CONFIG_BT_HCIUSB_SCO=y +CONFIG_BT_HCIUART=m +CONFIG_BT_HCIUART_H4=y +CONFIG_BT_HCIUART_BCSP=y +CONFIG_BT_HCIUART_BCSP_TXCRC=y +CONFIG_BT_HCIBCM203X=m +CONFIG_BT_HCIBFUSB=m +CONFIG_BT_HCIDTL1=m +CONFIG_BT_HCIBT3C=m +CONFIG_BT_HCIBLUECARD=m +CONFIG_BT_HCIBTUART=m +CONFIG_BT_HCIVHCI=m +CONFIG_NETPOLL=y +CONFIG_NETPOLL_RX=y +CONFIG_NETPOLL_TRAP=y +CONFIG_NET_POLL_CONTROLLER=y + +# +# ISDN subsystem +# +CONFIG_ISDN=m + +# +# Old ISDN4Linux +# +CONFIG_ISDN_I4L=m +CONFIG_ISDN_PPP=y +CONFIG_ISDN_PPP_VJ=y +CONFIG_ISDN_MPP=y +CONFIG_IPPP_FILTER=y +CONFIG_ISDN_PPP_BSDCOMP=m +CONFIG_ISDN_AUDIO=y +CONFIG_ISDN_TTY_FAX=y +CONFIG_ISDN_X25=y + +# +# ISDN feature submodules +# + +# +# ISDN4Linux hardware drivers +# + +# +# Passive cards +# +CONFIG_ISDN_DRV_HISAX=m + +# +# D-channel protocol features +# +CONFIG_HISAX_EURO=y +CONFIG_DE_AOC=y +# CONFIG_HISAX_NO_SENDCOMPLETE is not set +# CONFIG_HISAX_NO_LLC is not set +# CONFIG_HISAX_NO_KEYPAD is not set +CONFIG_HISAX_1TR6=y +CONFIG_HISAX_NI1=y +CONFIG_HISAX_MAX_CARDS=8 + +# +# HiSax supported cards +# +CONFIG_HISAX_16_0=y +CONFIG_HISAX_16_3=y +CONFIG_HISAX_TELESPCI=y +CONFIG_HISAX_S0BOX=y +CONFIG_HISAX_AVM_A1=y +CONFIG_HISAX_FRITZPCI=y +CONFIG_HISAX_AVM_A1_PCMCIA=y +CONFIG_HISAX_ELSA=y +CONFIG_HISAX_IX1MICROR2=y +CONFIG_HISAX_DIEHLDIVA=y +CONFIG_HISAX_ASUSCOM=y +CONFIG_HISAX_TELEINT=y +CONFIG_HISAX_HFCS=y +CONFIG_HISAX_SEDLBAUER=y +CONFIG_HISAX_SPORTSTER=y +CONFIG_HISAX_MIC=y +CONFIG_HISAX_NETJET=y +CONFIG_HISAX_NETJET_U=y +CONFIG_HISAX_NICCY=y +CONFIG_HISAX_ISURF=y +CONFIG_HISAX_HSTSAPHIR=y +CONFIG_HISAX_BKM_A4T=y +CONFIG_HISAX_SCT_QUADRO=y +CONFIG_HISAX_GAZEL=y +CONFIG_HISAX_HFC_PCI=y +CONFIG_HISAX_W6692=y +CONFIG_HISAX_HFC_SX=y +CONFIG_HISAX_ENTERNOW_PCI=y +CONFIG_HISAX_DEBUG=y + +# +# HiSax PCMCIA card service modules +# +# CONFIG_HISAX_SEDLBAUER_CS is not set +CONFIG_HISAX_ELSA_CS=m +CONFIG_HISAX_AVM_A1_CS=m +CONFIG_HISAX_TELES_CS=m + +# +# HiSax sub driver modules +# +CONFIG_HISAX_ST5481=m +CONFIG_HISAX_HFCUSB=m +CONFIG_HISAX_FRITZ_PCIPNP=m +CONFIG_HISAX_HDLC=y + +# +# Active cards +# +CONFIG_ISDN_DRV_ICN=m +CONFIG_ISDN_DRV_PCBIT=m +CONFIG_ISDN_DRV_SC=m +CONFIG_ISDN_DRV_ACT2000=m +CONFIG_ISDN_DRV_TPAM=m + +# +# CAPI subsystem +# +CONFIG_ISDN_CAPI=m +CONFIG_ISDN_DRV_AVMB1_VERBOSE_REASON=y +CONFIG_ISDN_CAPI_MIDDLEWARE=y +CONFIG_ISDN_CAPI_CAPI20=m +CONFIG_ISDN_CAPI_CAPIFS_BOOL=y +CONFIG_ISDN_CAPI_CAPIFS=m +CONFIG_ISDN_CAPI_CAPIDRV=m + +# +# CAPI hardware drivers +# + +# +# Active AVM cards +# +CONFIG_CAPI_AVM=y +CONFIG_ISDN_DRV_AVMB1_B1ISA=m +CONFIG_ISDN_DRV_AVMB1_B1PCI=m +CONFIG_ISDN_DRV_AVMB1_B1PCIV4=y +CONFIG_ISDN_DRV_AVMB1_T1ISA=m +CONFIG_ISDN_DRV_AVMB1_B1PCMCIA=m +CONFIG_ISDN_DRV_AVMB1_AVM_CS=m +CONFIG_ISDN_DRV_AVMB1_T1PCI=m +CONFIG_ISDN_DRV_AVMB1_C4=m + +# +# Active Eicon DIVA Server cards +# +CONFIG_CAPI_EICON=y +CONFIG_ISDN_DIVAS=m +CONFIG_ISDN_DIVAS_BRIPCI=y +CONFIG_ISDN_DIVAS_PRIPCI=y +CONFIG_ISDN_DIVAS_DIVACAPI=m +CONFIG_ISDN_DIVAS_USERIDI=m +CONFIG_ISDN_DIVAS_MAINT=m + +# +# Telephony Support +# +CONFIG_PHONE=m +CONFIG_PHONE_IXJ=m +CONFIG_PHONE_IXJ_PCMCIA=m + +# +# Input device support +# +CONFIG_INPUT=y + +# +# Userland interfaces +# +CONFIG_INPUT_MOUSEDEV=y +CONFIG_INPUT_MOUSEDEV_PSAUX=y +CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 +CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 +CONFIG_INPUT_JOYDEV=m +CONFIG_INPUT_TSDEV=m +CONFIG_INPUT_TSDEV_SCREEN_X=240 +CONFIG_INPUT_TSDEV_SCREEN_Y=320 +CONFIG_INPUT_EVDEV=m +# CONFIG_INPUT_EVBUG is not set + +# +# Input I/O drivers +# +CONFIG_GAMEPORT=m +CONFIG_SOUND_GAMEPORT=m +CONFIG_GAMEPORT_NS558=m +CONFIG_GAMEPORT_L4=m +CONFIG_GAMEPORT_EMU10K1=m +CONFIG_GAMEPORT_VORTEX=m +CONFIG_GAMEPORT_FM801=m +CONFIG_GAMEPORT_CS461x=m +CONFIG_SERIO=y +CONFIG_SERIO_I8042=y +CONFIG_SERIO_SERPORT=m +CONFIG_SERIO_CT82C710=m +CONFIG_SERIO_PARKBD=m +CONFIG_SERIO_PCIPS2=m + +# +# Input Device Drivers +# +CONFIG_INPUT_KEYBOARD=y +CONFIG_KEYBOARD_ATKBD=y +CONFIG_KEYBOARD_SUNKBD=m +# CONFIG_KEYBOARD_LKKBD is not set +CONFIG_KEYBOARD_XTKBD=m +CONFIG_KEYBOARD_NEWTON=m +CONFIG_INPUT_MOUSE=y +CONFIG_MOUSE_PS2=y +CONFIG_MOUSE_SERIAL=m +CONFIG_MOUSE_INPORT=m +CONFIG_MOUSE_ATIXL=y +CONFIG_MOUSE_LOGIBM=m +CONFIG_MOUSE_PC110PAD=m +# CONFIG_MOUSE_VSXXXAA is not set +CONFIG_INPUT_JOYSTICK=y +CONFIG_JOYSTICK_ANALOG=m +CONFIG_JOYSTICK_A3D=m +CONFIG_JOYSTICK_ADI=m +CONFIG_JOYSTICK_COBRA=m +CONFIG_JOYSTICK_GF2K=m +CONFIG_JOYSTICK_GRIP=m +CONFIG_JOYSTICK_GRIP_MP=m +CONFIG_JOYSTICK_GUILLEMOT=m +CONFIG_JOYSTICK_INTERACT=m +CONFIG_JOYSTICK_SIDEWINDER=m +CONFIG_JOYSTICK_TMDC=m +CONFIG_JOYSTICK_IFORCE=m +CONFIG_JOYSTICK_IFORCE_USB=y +CONFIG_JOYSTICK_IFORCE_232=y +CONFIG_JOYSTICK_WARRIOR=m +CONFIG_JOYSTICK_MAGELLAN=m +CONFIG_JOYSTICK_SPACEORB=m +CONFIG_JOYSTICK_SPACEBALL=m +CONFIG_JOYSTICK_STINGER=m +CONFIG_JOYSTICK_TWIDDLER=m +CONFIG_JOYSTICK_DB9=m +CONFIG_JOYSTICK_GAMECON=m +CONFIG_JOYSTICK_TURBOGRAFX=m +# CONFIG_INPUT_JOYDUMP is not set +CONFIG_INPUT_TOUCHSCREEN=y +CONFIG_TOUCHSCREEN_GUNZE=m +CONFIG_INPUT_MISC=y +CONFIG_INPUT_PCSPKR=y +CONFIG_INPUT_UINPUT=m + +# +# Character devices +# +CONFIG_VT=y +CONFIG_VT_CONSOLE=y +CONFIG_HW_CONSOLE=y +CONFIG_SERIAL_NONSTANDARD=y +CONFIG_ROCKETPORT=m +CONFIG_SYNCLINK=m +CONFIG_SYNCLINKMP=m +CONFIG_N_HDLC=m +CONFIG_STALDRV=y + +# +# Serial drivers +# +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_SERIAL_8250_CS=m +# CONFIG_SERIAL_8250_ACPI is not set +CONFIG_SERIAL_8250_NR_UARTS=4 +CONFIG_SERIAL_8250_EXTENDED=y +CONFIG_SERIAL_8250_MANY_PORTS=y +CONFIG_SERIAL_8250_SHARE_IRQ=y +# CONFIG_SERIAL_8250_DETECT_IRQ is not set +CONFIG_SERIAL_8250_MULTIPORT=y +CONFIG_SERIAL_8250_RSA=y + +# +# Non-8250 serial port support +# +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_CORE_CONSOLE=y +CONFIG_UNIX98_PTYS=y +CONFIG_LEGACY_PTYS=y +CONFIG_LEGACY_PTY_COUNT=256 +CONFIG_PRINTER=m +# CONFIG_LP_CONSOLE is not set +CONFIG_PPDEV=m +CONFIG_TIPAR=m +CONFIG_QIC02_TAPE=m +CONFIG_QIC02_DYNCONF=y + +# +# Setting runtime QIC-02 configuration is done with qic02conf +# + +# +# from the tpqic02-support package. It is available at +# + +# +# metalab.unc.edu or ftp://titus.cfw.com/pub/Linux/util/ +# + +# +# IPMI +# +CONFIG_IPMI_HANDLER=m +CONFIG_IPMI_PANIC_EVENT=y +CONFIG_IPMI_PANIC_STRING=y +CONFIG_IPMI_DEVICE_INTERFACE=m +CONFIG_IPMI_KCS=m +CONFIG_IPMI_WATCHDOG=m + +# +# Watchdog Cards +# +CONFIG_WATCHDOG=y +# CONFIG_WATCHDOG_NOWAYOUT is not set + +# +# Watchdog Device Drivers +# +CONFIG_SOFT_WATCHDOG=m +CONFIG_ACQUIRE_WDT=m +CONFIG_ADVANTECH_WDT=m +CONFIG_ALIM1535_WDT=m +CONFIG_ALIM7101_WDT=m +CONFIG_AMD7XX_TCO=m +CONFIG_SC520_WDT=m +CONFIG_EUROTECH_WDT=m +CONFIG_IB700_WDT=m +CONFIG_WAFER_WDT=m +CONFIG_I8XX_TCO=m +CONFIG_SC1200_WDT=m +CONFIG_SCx200_WDT=m +CONFIG_60XX_WDT=m +CONFIG_CPU5_WDT=m +CONFIG_W83627HF_WDT=m +CONFIG_W83877F_WDT=m +CONFIG_MACHZ_WDT=m + +# +# ISA-based Watchdog Cards +# +CONFIG_PCWATCHDOG=m +CONFIG_MIXCOMWD=m +CONFIG_WDT=m +CONFIG_WDT_501=y + +# +# PCI-based Watchdog Cards +# +CONFIG_PCIPCWATCHDOG=m +CONFIG_WDTPCI=m +CONFIG_WDT_501_PCI=y + +# +# USB-based Watchdog Cards +# +CONFIG_USBPCWATCHDOG=m +CONFIG_HW_RANDOM=m +CONFIG_NVRAM=m +CONFIG_RTC=y +CONFIG_DTLK=m +CONFIG_R3964=m +CONFIG_APPLICOM=m +CONFIG_SONYPI=m + +# +# Ftape, the floppy tape device driver +# +CONFIG_AGP=m +CONFIG_AGP_ALI=m +CONFIG_AGP_ATI=m +CONFIG_AGP_AMD=m +CONFIG_AGP_AMD64=m +CONFIG_AGP_INTEL=m +CONFIG_AGP_NVIDIA=m +CONFIG_AGP_SIS=m +CONFIG_AGP_SWORKS=m +CONFIG_AGP_VIA=m +CONFIG_AGP_EFFICEON=m +# CONFIG_DRM is not set + +# +# PCMCIA character devices +# +CONFIG_SYNCLINK_CS=m +# CONFIG_MWAVE is not set +CONFIG_SCx200_GPIO=m +CONFIG_RAW_DRIVER=m +CONFIG_MAX_RAW_DEVS=4096 +CONFIG_HANGCHECK_TIMER=m + +# +# Linux InfraRed Controller +# +CONFIG_LIRC_SUPPORT=m +CONFIG_LIRC_MAX_DEV=2 +CONFIG_LIRC_BT829=m +CONFIG_LIRC_IT87=m +CONFIG_LIRC_ATIUSB=m +CONFIG_LIRC_SERIAL=m +# CONFIG_LIRC_HOMEBREW is not set +CONFIG_LIRC_PORT_SERIAL=0x3f8 +CONFIG_LIRC_IRQ_SERIAL=4 +CONFIG_LIRC_SIR=m +CONFIG_LIRC_PORT_SIR=0x3f8 +CONFIG_LIRC_IRQ_SIR=4 + +# +# I2C support +# +CONFIG_I2C=m +CONFIG_I2C_CHARDEV=m + +# +# I2C Algorithms +# +CONFIG_I2C_ALGOBIT=m +CONFIG_I2C_ALGOPCF=m + +# +# I2C Hardware Bus support +# +CONFIG_I2C_ALI1535=m +CONFIG_I2C_ALI15X3=m +CONFIG_I2C_AMD756=m +CONFIG_I2C_AMD8111=m +CONFIG_I2C_I801=m +CONFIG_I2C_I810=m +CONFIG_I2C_ISA=m +CONFIG_I2C_NFORCE2=m +CONFIG_I2C_PARPORT=m +CONFIG_I2C_PARPORT_LIGHT=m +CONFIG_I2C_PIIX4=m +CONFIG_I2C_PROSAVAGE=m +CONFIG_I2C_SAVAGE4=m +CONFIG_SCx200_I2C=m +CONFIG_SCx200_I2C_SCL=12 +CONFIG_SCx200_I2C_SDA=13 +CONFIG_SCx200_ACB=m +CONFIG_I2C_SIS5595=m +CONFIG_I2C_SIS630=m +CONFIG_I2C_SIS96X=m +CONFIG_I2C_VIA=m +CONFIG_I2C_VIAPRO=m +CONFIG_I2C_VOODOO3=m + +# +# Hardware Sensors Chip support +# +CONFIG_I2C_SENSOR=m +CONFIG_SENSORS_ADM1021=m +CONFIG_SENSORS_ASB100=m +CONFIG_SENSORS_DS1621=m +CONFIG_SENSORS_FSCHER=m +CONFIG_SENSORS_GL518SM=m +CONFIG_SENSORS_IT87=m +CONFIG_SENSORS_LM75=m +CONFIG_SENSORS_LM78=m +CONFIG_SENSORS_LM80=m +CONFIG_SENSORS_LM83=m +CONFIG_SENSORS_LM85=m +CONFIG_SENSORS_LM90=m +CONFIG_SENSORS_VIA686A=m +CONFIG_SENSORS_W83781D=m +CONFIG_SENSORS_W83L785TS=m +CONFIG_SENSORS_W83627HF=m + +# +# Other I2C Chip support +# +CONFIG_SENSORS_EEPROM=m +# CONFIG_I2C_DEBUG_CORE is not set +# CONFIG_I2C_DEBUG_ALGO is not set +# CONFIG_I2C_DEBUG_BUS is not set +# CONFIG_I2C_DEBUG_CHIP is not set + +# +# Misc devices +# +CONFIG_IBM_ASM=m + +# +# Multimedia devices +# +CONFIG_VIDEO_DEV=m + +# +# Video For Linux +# + +# +# Video Adapters +# +CONFIG_VIDEO_BT848=m +CONFIG_VIDEO_PMS=m +CONFIG_VIDEO_BWQCAM=m +CONFIG_VIDEO_CQCAM=m +CONFIG_VIDEO_W9966=m +CONFIG_VIDEO_CPIA=m +CONFIG_VIDEO_CPIA_PP=m +CONFIG_VIDEO_CPIA_USB=m +CONFIG_VIDEO_SAA5246A=m +CONFIG_VIDEO_SAA5249=m +CONFIG_TUNER_3036=m +CONFIG_VIDEO_STRADIS=m +# CONFIG_VIDEO_ZORAN is not set +CONFIG_VIDEO_SAA7134=m +CONFIG_VIDEO_MXB=m +CONFIG_VIDEO_DPC=m +CONFIG_VIDEO_HEXIUM_ORION=m +CONFIG_VIDEO_HEXIUM_GEMINI=m +CONFIG_VIDEO_CX88=m + +# +# Radio Adapters +# +CONFIG_RADIO_CADET=m +CONFIG_RADIO_RTRACK=m +CONFIG_RADIO_RTRACK2=m +CONFIG_RADIO_AZTECH=m +CONFIG_RADIO_GEMTEK=m +CONFIG_RADIO_GEMTEK_PCI=m +CONFIG_RADIO_MAXIRADIO=m +CONFIG_RADIO_MAESTRO=m +CONFIG_RADIO_MIROPCM20=m +# CONFIG_RADIO_MIROPCM20_RDS is not set +CONFIG_RADIO_SF16FMI=m +CONFIG_RADIO_SF16FMR2=m +CONFIG_RADIO_TERRATEC=m +CONFIG_RADIO_TRUST=m +CONFIG_RADIO_TYPHOON=m +CONFIG_RADIO_TYPHOON_PROC_FS=y +CONFIG_RADIO_ZOLTRIX=m + +# +# Digital Video Broadcasting Devices +# +CONFIG_DVB=y +CONFIG_DVB_CORE=m + +# +# Supported Frontend Modules +# +CONFIG_DVB_TWINHAN_DST=m +CONFIG_DVB_STV0299=m +CONFIG_DVB_SP887X=m +CONFIG_DVB_SP887X_FIRMWARE_FILE="/etc/dvb/sc_main.mc" +CONFIG_DVB_ALPS_TDLB7=m +CONFIG_DVB_ALPS_TDMB7=m +CONFIG_DVB_ATMEL_AT76C651=m +CONFIG_DVB_CX24110=m +CONFIG_DVB_GRUNDIG_29504_491=m +CONFIG_DVB_GRUNDIG_29504_401=m +CONFIG_DVB_MT312=m +CONFIG_DVB_VES1820=m +CONFIG_DVB_VES1X93=m +CONFIG_DVB_TDA1004X=m +CONFIG_DVB_TDA1004X_FIRMWARE_FILE="/usr/lib/hotplug/firmware/tda1004x.bin" +CONFIG_DVB_NXT6000=m + +# +# Supported SAA7146 based PCI Adapters +# +CONFIG_DVB_AV7110=m +# CONFIG_DVB_AV7110_FIRMWARE is not set +CONFIG_DVB_AV7110_OSD=y +CONFIG_DVB_BUDGET=m +CONFIG_DVB_BUDGET_CI=m +CONFIG_DVB_BUDGET_AV=m +CONFIG_DVB_BUDGET_PATCH=m + +# +# Supported USB Adapters +# +CONFIG_DVB_TTUSB_BUDGET=m +CONFIG_DVB_TTUSB_DEC=m + +# +# Supported FlexCopII (B2C2) Adapters +# +CONFIG_DVB_B2C2_SKYSTAR=m + +# +# Supported BT878 Adapters +# +CONFIG_DVB_BT8XX=m +CONFIG_VIDEO_SAA7146=m +CONFIG_VIDEO_SAA7146_VV=m +CONFIG_VIDEO_VIDEOBUF=m +CONFIG_VIDEO_TUNER=m +CONFIG_VIDEO_BUF=m +CONFIG_VIDEO_BTCX=m +CONFIG_VIDEO_IR=m + +# +# Graphics support +# +CONFIG_FB=y +CONFIG_FB_PM2=m +CONFIG_FB_PM2_FIFO_DISCONNECT=y +CONFIG_FB_CYBER2000=m +CONFIG_FB_IMSTT=y +CONFIG_FB_VGA16=m +CONFIG_FB_VESA=y +CONFIG_VIDEO_SELECT=y +CONFIG_FB_HGA=m +CONFIG_FB_RIVA=m +CONFIG_FB_I810=m +CONFIG_FB_I810_GTF=y +# CONFIG_FB_MATROX is not set +# CONFIG_FB_RADEON_OLD is not set +CONFIG_FB_RADEON=m +CONFIG_FB_RADEON_I2C=y +# CONFIG_FB_RADEON_DEBUG is not set +# CONFIG_FB_ATY128 is not set +CONFIG_FB_ATY=m +CONFIG_FB_ATY_CT=y +CONFIG_FB_ATY_GX=y +CONFIG_FB_ATY_XL_INIT=y +CONFIG_FB_SIS=m +CONFIG_FB_SIS_300=y +CONFIG_FB_SIS_315=y +CONFIG_FB_NEOMAGIC=m +CONFIG_FB_KYRO=m +CONFIG_FB_3DFX=m +CONFIG_FB_VOODOO1=m +CONFIG_FB_TRIDENT=m +# CONFIG_FB_VIRTUAL is not set + +# +# Console display driver support +# +CONFIG_VGA_CONSOLE=y +CONFIG_MDA_CONSOLE=m +CONFIG_DUMMY_CONSOLE=y +CONFIG_FRAMEBUFFER_CONSOLE=y +CONFIG_PCI_CONSOLE=y +# CONFIG_FONTS is not set +CONFIG_FONT_8x8=y +CONFIG_FONT_8x16=y + +# +# Logo configuration +# +# CONFIG_LOGO is not set + +# +# Bootsplash configuration +# +CONFIG_BOOTSPLASH=y + +# +# Sound +# +CONFIG_SOUND=m + +# +# Advanced Linux Sound Architecture +# +CONFIG_SND=m +CONFIG_SND_TIMER=m +CONFIG_SND_PCM=m +CONFIG_SND_HWDEP=m +CONFIG_SND_RAWMIDI=m +CONFIG_SND_SEQUENCER=m +CONFIG_SND_SEQ_DUMMY=m +CONFIG_SND_OSSEMUL=y +CONFIG_SND_MIXER_OSS=m +CONFIG_SND_PCM_OSS=m +CONFIG_SND_SEQUENCER_OSS=y +CONFIG_SND_RTCTIMER=m +CONFIG_SND_VERBOSE_PRINTK=y +CONFIG_SND_DEBUG=y +CONFIG_SND_DEBUG_MEMORY=y +# CONFIG_SND_DEBUG_DETECT is not set + +# +# Generic devices +# +CONFIG_SND_MPU401_UART=m +CONFIG_SND_OPL3_LIB=m +CONFIG_SND_OPL4_LIB=m +CONFIG_SND_VX_LIB=m +CONFIG_SND_DUMMY=m +CONFIG_SND_VIRMIDI=m +CONFIG_SND_MTPAV=m +CONFIG_SND_SERIAL_U16550=m +CONFIG_SND_MPU401=m + +# +# ISA devices +# +CONFIG_SND_AD1816A=m +CONFIG_SND_AD1848=m +CONFIG_SND_CS4231=m +CONFIG_SND_CS4232=m +CONFIG_SND_CS4236=m +CONFIG_SND_ES968=m +CONFIG_SND_ES1688=m +CONFIG_SND_ES18XX=m +CONFIG_SND_GUSCLASSIC=m +CONFIG_SND_GUSEXTREME=m +CONFIG_SND_GUSMAX=m +CONFIG_SND_INTERWAVE=m +CONFIG_SND_INTERWAVE_STB=m +CONFIG_SND_OPTI92X_AD1848=m +CONFIG_SND_OPTI92X_CS4231=m +CONFIG_SND_OPTI93X=m +CONFIG_SND_SB8=m +CONFIG_SND_SB16=m +CONFIG_SND_SBAWE=m +CONFIG_SND_SB16_CSP=y +CONFIG_SND_WAVEFRONT=m +CONFIG_SND_ALS100=m +CONFIG_SND_AZT2320=m +CONFIG_SND_CMI8330=m +CONFIG_SND_DT019X=m +CONFIG_SND_OPL3SA2=m +CONFIG_SND_SGALAXY=m +CONFIG_SND_SSCAPE=m + +# +# PCI devices +# +CONFIG_SND_AC97_CODEC=m +CONFIG_SND_ALI5451=m +CONFIG_SND_ATIIXP=m +CONFIG_SND_AU8810=m +CONFIG_SND_AU8820=m +CONFIG_SND_AU8830=m +CONFIG_SND_AZT3328=m +CONFIG_SND_BT87X=m +CONFIG_SND_CS46XX=m +CONFIG_SND_CS46XX_NEW_DSP=y +CONFIG_SND_CS4281=m +CONFIG_SND_EMU10K1=m +CONFIG_SND_KORG1212=m +CONFIG_SND_MIXART=m +CONFIG_SND_NM256=m +CONFIG_SND_RME32=m +CONFIG_SND_RME96=m +CONFIG_SND_RME9652=m +CONFIG_SND_HDSP=m +CONFIG_SND_TRIDENT=m +CONFIG_SND_YMFPCI=m +CONFIG_SND_ALS4000=m +CONFIG_SND_CMIPCI=m +CONFIG_SND_ENS1370=m +CONFIG_SND_ENS1371=m +CONFIG_SND_ES1938=m +CONFIG_SND_ES1968=m +CONFIG_SND_MAESTRO3=m +CONFIG_SND_FM801=m +CONFIG_SND_FM801_TEA575X=m +CONFIG_SND_ICE1712=m +CONFIG_SND_ICE1724=m +CONFIG_SND_INTEL8X0=m +CONFIG_SND_INTEL8X0M=m +CONFIG_SND_SONICVIBES=m +CONFIG_SND_VIA82XX=m +CONFIG_SND_VX222=m + +# +# ALSA USB devices +# +CONFIG_SND_USB_AUDIO=m + +# +# PCMCIA devices +# +# CONFIG_SND_VXPOCKET is not set +# CONFIG_SND_VXP440 is not set +# CONFIG_SND_PDAUDIOCF is not set + +# +# Open Sound System +# +CONFIG_SOUND_PRIME=m +CONFIG_SOUND_BT878=m +CONFIG_SOUND_CMPCI=m +CONFIG_SOUND_CMPCI_FM=y +CONFIG_SOUND_CMPCI_FMIO=0x388 +CONFIG_SOUND_CMPCI_MIDI=y +CONFIG_SOUND_CMPCI_MPUIO=0x330 +CONFIG_SOUND_CMPCI_JOYSTICK=y +CONFIG_SOUND_CMPCI_CM8738=y +# CONFIG_SOUND_CMPCI_SPDIFINVERSE is not set +CONFIG_SOUND_CMPCI_SPDIFLOOP=y +CONFIG_SOUND_CMPCI_SPEAKERS=2 +CONFIG_SOUND_EMU10K1=m +CONFIG_MIDI_EMU10K1=y +# CONFIG_SOUND_FUSION is not set +CONFIG_SOUND_CS4281=m +CONFIG_SOUND_ES1370=m +CONFIG_SOUND_ES1371=m +CONFIG_SOUND_ESSSOLO1=m +CONFIG_SOUND_MAESTRO=m +CONFIG_SOUND_MAESTRO3=m +CONFIG_SOUND_ICH=m +CONFIG_SOUND_SONICVIBES=m +CONFIG_SOUND_TRIDENT=m +# CONFIG_SOUND_MSNDCLAS is not set +# CONFIG_SOUND_MSNDPIN is not set +CONFIG_SOUND_VIA82CXXX=m +CONFIG_MIDI_VIA82CXXX=y +CONFIG_SOUND_OSS=m +CONFIG_SOUND_TRACEINIT=y +CONFIG_SOUND_DMAP=y +# CONFIG_SOUND_AD1816 is not set +CONFIG_SOUND_AD1889=m +CONFIG_SOUND_SGALAXY=m +CONFIG_SOUND_ADLIB=m +CONFIG_SOUND_ACI_MIXER=m +CONFIG_SOUND_CS4232=m +CONFIG_SOUND_SSCAPE=m +CONFIG_SOUND_GUS=m +# CONFIG_SOUND_GUS16 is not set +CONFIG_SOUND_GUSMAX=y +CONFIG_SOUND_VMIDI=m +CONFIG_SOUND_TRIX=m +CONFIG_SOUND_MSS=m +CONFIG_SOUND_MPU401=m +CONFIG_SOUND_NM256=m +CONFIG_SOUND_MAD16=m +CONFIG_MAD16_OLDCARD=y +CONFIG_SOUND_PAS=m +CONFIG_SOUND_PSS=m +CONFIG_PSS_MIXER=y +# CONFIG_PSS_HAVE_BOOT is not set +CONFIG_SOUND_SB=m +# CONFIG_SOUND_AWE32_SYNTH is not set +CONFIG_SOUND_WAVEFRONT=m +CONFIG_SOUND_MAUI=m +CONFIG_SOUND_YM3812=m +CONFIG_SOUND_OPL3SA1=m +CONFIG_SOUND_OPL3SA2=m +CONFIG_SOUND_YMFPCI=m +CONFIG_SOUND_YMFPCI_LEGACY=y +CONFIG_SOUND_UART6850=m +CONFIG_SOUND_AEDSP16=m +CONFIG_SC6600=y +CONFIG_SC6600_JOY=y +CONFIG_SC6600_CDROM=4 +CONFIG_SC6600_CDROMBASE=0x0 +# CONFIG_AEDSP16_MSS is not set +# CONFIG_AEDSP16_SBPRO is not set +CONFIG_AEDSP16_MPU401=y +CONFIG_SOUND_TVMIXER=m +CONFIG_SOUND_KAHLUA=m +CONFIG_SOUND_ALI5455=m +CONFIG_SOUND_FORTE=m +CONFIG_SOUND_RME96XX=m +CONFIG_SOUND_AD1980=m + +# +# USB support +# +CONFIG_USB=m +# CONFIG_USB_DEBUG is not set + +# +# Miscellaneous USB options +# +CONFIG_USB_DEVICEFS=y +# CONFIG_USB_BANDWIDTH is not set +# CONFIG_USB_DYNAMIC_MINORS is not set + +# +# USB Host Controller Drivers +# +CONFIG_USB_EHCI_HCD=m +CONFIG_USB_EHCI_SPLIT_ISO=y +CONFIG_USB_OHCI_HCD=m +CONFIG_USB_UHCI_HCD=m + +# +# USB Device Class drivers +# +CONFIG_USB_AUDIO=m + +# +# USB Bluetooth TTY can only be used with disabled Bluetooth subsystem +# +CONFIG_USB_MIDI=m +CONFIG_USB_ACM=m +CONFIG_USB_PRINTER=m +CONFIG_USB_STORAGE=m +# CONFIG_USB_STORAGE_DEBUG is not set +CONFIG_USB_STORAGE_DATAFAB=y +CONFIG_USB_STORAGE_FREECOM=y +CONFIG_USB_STORAGE_ISD200=y +CONFIG_USB_STORAGE_DPCM=y +CONFIG_USB_STORAGE_HP8200e=y +CONFIG_USB_STORAGE_SDDR09=y +CONFIG_USB_STORAGE_SDDR55=y +CONFIG_USB_STORAGE_JUMPSHOT=y + +# +# USB Human Interface Devices (HID) +# +CONFIG_USB_HID=m +CONFIG_USB_HIDINPUT=y +CONFIG_HID_FF=y +CONFIG_HID_PID=y +CONFIG_LOGITECH_FF=y +CONFIG_THRUSTMASTER_FF=y +CONFIG_USB_HIDDEV=y + +# +# USB HID Boot Protocol drivers +# +# CONFIG_USB_KBD is not set +# CONFIG_USB_MOUSE is not set +CONFIG_USB_AIPTEK=m +CONFIG_USB_WACOM=m +CONFIG_USB_KBTAB=m +CONFIG_USB_POWERMATE=m +CONFIG_USB_MTOUCH=m +CONFIG_USB_XPAD=m +CONFIG_USB_ATI_REMOTE=m + +# +# USB Imaging devices +# +CONFIG_USB_MDC800=m +CONFIG_USB_MICROTEK=m +CONFIG_USB_HPUSBSCSI=m + +# +# USB Multimedia devices +# +CONFIG_USB_DABUSB=m +CONFIG_USB_VICAM=m +CONFIG_USB_DSBR=m +CONFIG_USB_IBMCAM=m +CONFIG_USB_KONICAWC=m +CONFIG_USB_OV511=m +CONFIG_USB_SE401=m +CONFIG_USB_STV680=m +CONFIG_USB_W9968CF=m + +# +# USB Network adaptors +# +CONFIG_USB_CATC=m +CONFIG_USB_KAWETH=m +CONFIG_USB_PEGASUS=m +CONFIG_USB_RTL8150=m +CONFIG_USB_USBNET=m + +# +# USB Host-to-Host Cables +# +CONFIG_USB_ALI_M5632=y +CONFIG_USB_AN2720=y +CONFIG_USB_BELKIN=y +CONFIG_USB_GENESYS=y +CONFIG_USB_NET1080=y +CONFIG_USB_PL2301=y + +# +# Intelligent USB Devices/Gadgets +# +CONFIG_USB_ARMLINUX=y +CONFIG_USB_EPSON2888=y +CONFIG_USB_ZAURUS=y +CONFIG_USB_CDCETHER=y + +# +# USB Network Adapters +# +CONFIG_USB_AX8817X=y + +# +# USB port drivers +# +CONFIG_USB_USS720=m + +# +# USB Serial Converter support +# +CONFIG_USB_SERIAL=m +CONFIG_USB_SERIAL_GENERIC=y +CONFIG_USB_SERIAL_BELKIN=m +CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m +CONFIG_USB_SERIAL_EMPEG=m +CONFIG_USB_SERIAL_FTDI_SIO=m +CONFIG_USB_SERIAL_VISOR=m +CONFIG_USB_SERIAL_IPAQ=m +CONFIG_USB_SERIAL_IR=m +CONFIG_USB_SERIAL_EDGEPORT=m +CONFIG_USB_SERIAL_EDGEPORT_TI=m +CONFIG_USB_SERIAL_KEYSPAN_PDA=m +CONFIG_USB_SERIAL_KEYSPAN=m +CONFIG_USB_SERIAL_KEYSPAN_MPR=y +CONFIG_USB_SERIAL_KEYSPAN_USA28=y +CONFIG_USB_SERIAL_KEYSPAN_USA28X=y +CONFIG_USB_SERIAL_KEYSPAN_USA28XA=y +CONFIG_USB_SERIAL_KEYSPAN_USA28XB=y +CONFIG_USB_SERIAL_KEYSPAN_USA19=y +CONFIG_USB_SERIAL_KEYSPAN_USA18X=y +CONFIG_USB_SERIAL_KEYSPAN_USA19W=y +CONFIG_USB_SERIAL_KEYSPAN_USA19QW=y +CONFIG_USB_SERIAL_KEYSPAN_USA19QI=y +CONFIG_USB_SERIAL_KEYSPAN_USA49W=y +CONFIG_USB_SERIAL_KEYSPAN_USA49WLC=y +CONFIG_USB_SERIAL_KLSI=m +CONFIG_USB_SERIAL_KOBIL_SCT=m +CONFIG_USB_SERIAL_MCT_U232=m +CONFIG_USB_SERIAL_PL2303=m +CONFIG_USB_SERIAL_SAFE=m +CONFIG_USB_SERIAL_SAFE_PADDED=y +CONFIG_USB_SERIAL_CYBERJACK=m +CONFIG_USB_SERIAL_XIRCOM=m +CONFIG_USB_SERIAL_OMNINET=m +CONFIG_USB_EZUSB=y + +# +# USB Miscellaneous drivers +# +CONFIG_USB_EMI62=m +CONFIG_USB_EMI26=m +CONFIG_USB_TIGL=m +CONFIG_USB_AUERSWALD=m +CONFIG_USB_RIO500=m +CONFIG_USB_LEGOTOWER=m +CONFIG_USB_LCD=m +CONFIG_USB_LED=m +CONFIG_USB_SPEEDTOUCH=m +# CONFIG_USB_TEST is not set + +# +# USB Gadget Support +# +# CONFIG_USB_GADGET is not set + +# +# File systems +# +CONFIG_EXT2_FS=y +CONFIG_EXT2_FS_XATTR=y +CONFIG_EXT2_FS_POSIX_ACL=y +CONFIG_EXT2_FS_SECURITY=y +CONFIG_EXT3_FS=m +CONFIG_EXT3_FS_XATTR=y +CONFIG_EXT3_FS_POSIX_ACL=y +CONFIG_EXT3_FS_SECURITY=y +CONFIG_JBD=m +CONFIG_JBD_DEBUG=y +CONFIG_FS_MBCACHE=y +CONFIG_REISERFS_FS=m +# CONFIG_REISERFS_CHECK is not set +# CONFIG_REISERFS_PROC_INFO is not set +CONFIG_REISERFS_FS_XATTR=y +CONFIG_REISERFS_FS_POSIX_ACL=y +CONFIG_REISERFS_FS_SECURITY=y +CONFIG_JFS_FS=m +CONFIG_JFS_POSIX_ACL=y +# CONFIG_JFS_DEBUG is not set +CONFIG_JFS_STATISTICS=y +CONFIG_FS_POSIX_ACL=y +CONFIG_XFS_FS=m +CONFIG_XFS_RT=y +CONFIG_XFS_QUOTA=m +CONFIG_XFS_SECURITY=y +CONFIG_XFS_POSIX_ACL=y +CONFIG_XFS_DMAPI=m +# CONFIG_XFS_DEBUG is not set +# CONFIG_XFS_TRACE is not set +CONFIG_MINIX_FS=y +CONFIG_ROMFS_FS=m +CONFIG_QUOTA=y +CONFIG_QFMT_V1=m +CONFIG_QFMT_V2=m +CONFIG_QUOTACTL=y +CONFIG_AUTOFS_FS=m +CONFIG_AUTOFS4_FS=m + +# +# CD-ROM/DVD Filesystems +# +CONFIG_ISO9660_FS=y +CONFIG_JOLIET=y +CONFIG_ZISOFS=y +CONFIG_ZISOFS_FS=y +CONFIG_UDF_FS=m + +# +# DOS/FAT/NT Filesystems +# +CONFIG_FAT_FS=m +CONFIG_MSDOS_FS=m +CONFIG_VFAT_FS=m +CONFIG_NTFS_FS=m +# CONFIG_NTFS_DEBUG is not set +# CONFIG_NTFS_RW is not set +CONFIG_RCFS_FS=m + +# +# Pseudo filesystems +# +CONFIG_PROC_FS=y +CONFIG_PROC_KCORE=y +# CONFIG_DEVFS_FS is not set +CONFIG_DEVPTS_FS_XATTR=y +CONFIG_DEVPTS_FS_SECURITY=y +CONFIG_TMPFS=y +CONFIG_HUGETLBFS=y +CONFIG_HUGETLB_PAGE=y +CONFIG_RAMFS=y +CONFIG_RELAYFS_FS=m +CONFIG_KLOG_CHANNEL=y +# CONFIG_KLOG_CHANNEL_AUTOENABLE is not set +CONFIG_KLOG_CHANNEL_SHIFT=21 + +# +# Miscellaneous filesystems +# +CONFIG_ADFS_FS=m +# CONFIG_ADFS_FS_RW is not set +CONFIG_AFFS_FS=m +CONFIG_HFS_FS=m +CONFIG_HFSPLUS_FS=m +CONFIG_BEFS_FS=m +# CONFIG_BEFS_DEBUG is not set +CONFIG_BFS_FS=m +CONFIG_EFS_FS=m +CONFIG_JFFS_FS=m +CONFIG_JFFS_FS_VERBOSE=0 +CONFIG_JFFS2_FS=m +CONFIG_JFFS2_FS_DEBUG=0 +# CONFIG_JFFS2_FS_NAND is not set +CONFIG_CRAMFS=m +CONFIG_VXFS_FS=m +CONFIG_HPFS_FS=m +CONFIG_QNX4FS_FS=m +# CONFIG_QNX4FS_RW is not set +CONFIG_SYSV_FS=m +CONFIG_UFS_FS=m +# CONFIG_UFS_FS_WRITE is not set + +# +# Network File Systems +# +CONFIG_NFS_FS=y +CONFIG_NFS_V3=y +CONFIG_NFS_ACL=y +CONFIG_NFS_V4=y +CONFIG_NFS_DIRECTIO=y +CONFIG_NFSD=m +CONFIG_NFSD_V3=y +CONFIG_NFSD_ACL=y +CONFIG_NFS_ACL_SUPPORT=y +CONFIG_NFSD_V4=y +CONFIG_NFSD_TCP=y +CONFIG_LOCKD=y +CONFIG_STATD=y +CONFIG_LOCKD_V4=y +CONFIG_EXPORTFS=m +CONFIG_SUNRPC=y +CONFIG_SUNRPC_GSS=y +CONFIG_RPCSEC_GSS_KRB5=y +CONFIG_SMB_FS=m +CONFIG_SMB_NLS_DEFAULT=y +CONFIG_SMB_NLS_REMOTE="cp437" +CONFIG_CIFS=m +CONFIG_NCP_FS=m +CONFIG_NCPFS_PACKET_SIGNING=y +CONFIG_NCPFS_IOCTL_LOCKING=y +CONFIG_NCPFS_STRONG=y +CONFIG_NCPFS_NFS_NS=y +CONFIG_NCPFS_OS2_NS=y +CONFIG_NCPFS_SMALLDOS=y +CONFIG_NCPFS_NLS=y +CONFIG_NCPFS_EXTRAS=y +CONFIG_CODA_FS=m +# CONFIG_CODA_FS_OLD_API is not set +# CONFIG_INTERMEZZO_FS is not set +CONFIG_AFS_FS=m +CONFIG_RXRPC=m + +# +# Partition Types +# +CONFIG_PARTITION_ADVANCED=y +# CONFIG_ACORN_PARTITION is not set +CONFIG_OSF_PARTITION=y +# CONFIG_AMIGA_PARTITION is not set +CONFIG_ATARI_PARTITION=y +CONFIG_MAC_PARTITION=y +CONFIG_MSDOS_PARTITION=y +CONFIG_BSD_DISKLABEL=y +# CONFIG_MINIX_SUBPARTITION is not set +CONFIG_SOLARIS_X86_PARTITION=y +CONFIG_UNIXWARE_DISKLABEL=y +CONFIG_LDM_PARTITION=y +# CONFIG_LDM_DEBUG is not set +CONFIG_NEC98_PARTITION=y +# CONFIG_SGI_PARTITION is not set +CONFIG_ULTRIX_PARTITION=y +CONFIG_SUN_PARTITION=y +CONFIG_EFI_PARTITION=y + +# +# Native Language Support +# +CONFIG_NLS=y +CONFIG_NLS_DEFAULT="iso8859-1" +CONFIG_NLS_CODEPAGE_437=m +CONFIG_NLS_CODEPAGE_737=m +CONFIG_NLS_CODEPAGE_775=m +CONFIG_NLS_CODEPAGE_850=m +CONFIG_NLS_CODEPAGE_852=m +CONFIG_NLS_CODEPAGE_855=m +CONFIG_NLS_CODEPAGE_857=m +CONFIG_NLS_CODEPAGE_860=m +CONFIG_NLS_CODEPAGE_861=m +CONFIG_NLS_CODEPAGE_862=m +CONFIG_NLS_CODEPAGE_863=m +CONFIG_NLS_CODEPAGE_864=m +CONFIG_NLS_CODEPAGE_865=m +CONFIG_NLS_CODEPAGE_866=m +CONFIG_NLS_CODEPAGE_869=m +CONFIG_NLS_CODEPAGE_936=m +CONFIG_NLS_CODEPAGE_950=m +CONFIG_NLS_CODEPAGE_932=m +CONFIG_NLS_CODEPAGE_949=m +CONFIG_NLS_CODEPAGE_874=m +CONFIG_NLS_ISO8859_8=m +CONFIG_NLS_CODEPAGE_1250=m +CONFIG_NLS_CODEPAGE_1251=m +CONFIG_NLS_ISO8859_1=m +CONFIG_NLS_ISO8859_2=m +CONFIG_NLS_ISO8859_3=m +CONFIG_NLS_ISO8859_4=m +CONFIG_NLS_ISO8859_5=m +CONFIG_NLS_ISO8859_6=m +CONFIG_NLS_ISO8859_7=m +CONFIG_NLS_ISO8859_9=m +CONFIG_NLS_ISO8859_13=m +CONFIG_NLS_ISO8859_14=m +CONFIG_NLS_ISO8859_15=m +CONFIG_NLS_KOI8_R=m +CONFIG_NLS_KOI8_U=m +CONFIG_NLS_UTF8=m + +# +# Profiling support +# +# CONFIG_PROFILING is not set + +# +# Kernel hacking +# +CONFIG_CRASH_DUMP=m +CONFIG_KERNTYPES=y +CONFIG_CRASH_DUMP_BLOCKDEV=m +CONFIG_CRASH_DUMP_NETDEV=m +# CONFIG_CRASH_DUMP_MEMDEV is not set +CONFIG_CRASH_DUMP_COMPRESS_RLE=m +CONFIG_CRASH_DUMP_COMPRESS_GZIP=m +CONFIG_DEBUG_KERNEL=y +CONFIG_EARLY_PRINTK=y +# CONFIG_DEBUG_STACKOVERFLOW is not set +CONFIG_DEBUG_STACK_USAGE=y +# CONFIG_DEBUG_SLAB is not set +CONFIG_MAGIC_SYSRQ=y +# CONFIG_DEBUG_SPINLOCK is not set +# CONFIG_DEBUG_PAGEALLOC is not set +# CONFIG_DEBUG_HIGHMEM is not set +# CONFIG_DEBUG_INFO is not set +# CONFIG_DEBUG_SPINLOCK_SLEEP is not set +# CONFIG_FRAME_POINTER is not set +# CONFIG_KDB is not set +CONFIG_X86_FIND_SMP_CONFIG=y +CONFIG_X86_MPPARSE=y + +# +# Security options +# +CONFIG_SECURITY=y +CONFIG_SECURITY_NETWORK=y +CONFIG_SECURITY_CAPABILITIES=y +CONFIG_SECURITY_CAPABILITIES_BOOTPARAM=y +CONFIG_SECURITY_ROOTPLUG=m +CONFIG_SECURITY_SELINUX=y +CONFIG_SECURITY_SELINUX_BOOTPARAM=y +CONFIG_SECURITY_SELINUX_DEVELOP=y +# CONFIG_SECURITY_SELINUX_MLS is not set + +# +# Cryptographic options +# +CONFIG_CRYPTO=y +CONFIG_CRYPTO_HMAC=y +CONFIG_CRYPTO_NULL=m +CONFIG_CRYPTO_MD4=m +CONFIG_CRYPTO_MD5=y +CONFIG_CRYPTO_SHA1=m +CONFIG_CRYPTO_SHA256=m +CONFIG_CRYPTO_SHA512=m +CONFIG_CRYPTO_DES=y +CONFIG_CRYPTO_BLOWFISH=m +CONFIG_CRYPTO_TWOFISH=m +CONFIG_CRYPTO_SERPENT=m +CONFIG_CRYPTO_AES=m +CONFIG_CRYPTO_CAST5=m +CONFIG_CRYPTO_CAST6=m +CONFIG_CRYPTO_ARC4=m +CONFIG_CRYPTO_DEFLATE=m +CONFIG_CRYPTO_MICHAEL_MIC=m +CONFIG_CRYPTO_TEST=m + +# +# Library routines +# +CONFIG_CRC32=y +CONFIG_QSORT=y +CONFIG_ZLIB_INFLATE=y +CONFIG_ZLIB_DEFLATE=m + +# +# Build options +# +CONFIG_SUSE_KERNEL=y +CONFIG_CFGNAME="bigsmp" +CONFIG_RELEASE="51.0" +CONFIG_X86_SMP=y +CONFIG_X86_HT=y +CONFIG_X86_BIOS_REBOOT=y +CONFIG_X86_TRAMPOLINE=y +CONFIG_PC=y diff --git a/lustre/kernel_patches/patches/bproc-patch-2.4.20 b/lustre/kernel_patches/patches/bproc-patch-2.4.20 index 90d86c2..0144b9f 100644 --- a/lustre/kernel_patches/patches/bproc-patch-2.4.20 +++ b/lustre/kernel_patches/patches/bproc-patch-2.4.20 @@ -762,7 +762,7 @@ Index: linux/kernel/bproc_hook.c + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * -+ * Id: bproc-patch-2.4.20,v 1.3.2.1 2004/02/14 07:21:44 nic Exp $ ++ * Id: bproc-patch-2.4.20,v 1.8 2004/04/12 21:44:45 nic Exp $ + *-----------------------------------------------------------------------*/ +#include +#include @@ -830,7 +830,7 @@ Index: linux/include/linux/bproc.h + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * -+ * Id: bproc-patch-2.4.20,v 1.3.2.1 2004/02/14 07:21:44 nic Exp $ ++ * Id: bproc-patch-2.4.20,v 1.8 2004/04/12 21:44:45 nic Exp $ + *-----------------------------------------------------------------------*/ +#ifndef _LINUX_BPROC_H +#define _LINUX_BPROC_H diff --git a/lustre/kernel_patches/patches/export_symbols-2.6-suse.patch b/lustre/kernel_patches/patches/export_symbols-2.6-suse.patch index f66abb9..b22d925 100644 --- a/lustre/kernel_patches/patches/export_symbols-2.6-suse.patch +++ b/lustre/kernel_patches/patches/export_symbols-2.6-suse.patch @@ -1,7 +1,7 @@ -Index: linux-2.6.0/fs/filesystems.c +Index: linux-2.6.4-51.0/fs/filesystems.c =================================================================== ---- linux-2.6.0.orig/fs/filesystems.c 2003-12-30 08:32:44.000000000 +0300 -+++ linux-2.6.0/fs/filesystems.c 2003-12-31 01:10:16.000000000 +0300 +--- linux-2.6.4-51.0.orig/fs/filesystems.c 2004-04-05 12:41:59.000000000 -0400 ++++ linux-2.6.4-51.0/fs/filesystems.c 2004-04-15 14:59:56.000000000 -0400 @@ -27,7 +27,9 @@ */ @@ -13,11 +13,11 @@ Index: linux-2.6.0/fs/filesystems.c /* WARNING: This can be used only if we _already_ own a reference */ void get_filesystem(struct file_system_type *fs) -Index: linux-2.6.0/include/linux/fs.h +Index: linux-2.6.4-51.0/include/linux/fs.h =================================================================== ---- linux-2.6.0.orig/include/linux/fs.h 2003-12-31 00:33:41.000000000 +0300 -+++ linux-2.6.0/include/linux/fs.h 2003-12-31 01:09:26.000000000 +0300 -@@ -1390,6 +1390,7 @@ +--- linux-2.6.4-51.0.orig/include/linux/fs.h 2004-04-15 14:59:50.000000000 -0400 ++++ linux-2.6.4-51.0/include/linux/fs.h 2004-04-15 14:59:56.000000000 -0400 +@@ -1432,6 +1432,7 @@ extern struct file_operations generic_ro_fops; @@ -25,10 +25,10 @@ Index: linux-2.6.0/include/linux/fs.h #define special_file(m) (S_ISCHR(m)||S_ISBLK(m)||S_ISFIFO(m)||S_ISSOCK(m)) extern int vfs_readlink(struct dentry *, char __user *, int, const char *); -Index: linux-2.6.0/include/linux/ext2_fs_sb.h +Index: linux-2.6.4-51.0/include/linux/ext2_fs_sb.h =================================================================== ---- linux-2.6.0.orig/include/linux/ext2_fs_sb.h 2003-05-15 20:10:39.000000000 +0400 -+++ linux-2.6.0/include/linux/ext2_fs_sb.h 2003-12-31 01:09:26.000000000 +0300 +--- linux-2.6.4-51.0.orig/include/linux/ext2_fs_sb.h 2004-04-05 12:42:07.000000000 -0400 ++++ linux-2.6.4-51.0/include/linux/ext2_fs_sb.h 2004-04-15 14:59:56.000000000 -0400 @@ -16,9 +16,11 @@ #ifndef _LINUX_EXT2_FS_SB #define _LINUX_EXT2_FS_SB @@ -42,3 +42,12 @@ Index: linux-2.6.0/include/linux/ext2_fs_sb.h /* * second extended-fs super-block data in memory */ +Index: linux-2.6.4-51.0/kernel/kallsyms.c +=================================================================== +--- linux-2.6.4-51.0.orig/kernel/kallsyms.c 2004-04-05 12:42:08.000000000 -0400 ++++ linux-2.6.4-51.0/kernel/kallsyms.c 2004-04-15 15:00:56.000000000 -0400 +@@ -329,3 +329,4 @@ + + EXPORT_SYMBOL(kallsyms_lookup); + EXPORT_SYMBOL(__print_symbol); ++EXPORT_SYMBOL(kernel_text_address); diff --git a/lustre/kernel_patches/patches/kernel_text_address-2.6-suse.patch b/lustre/kernel_patches/patches/kernel_text_address-2.6-suse.patch deleted file mode 100644 index c60c525..0000000 --- a/lustre/kernel_patches/patches/kernel_text_address-2.6-suse.patch +++ /dev/null @@ -1,26 +0,0 @@ -Index: linux-2.6.3/arch/i386/kernel/traps.c -=================================================================== ---- linux-2.6.3.orig/arch/i386/kernel/traps.c 2004-02-23 14:04:13.000000000 -0800 -+++ linux-2.6.3/arch/i386/kernel/traps.c 2004-02-23 14:10:07.000000000 -0800 -@@ -890,3 +890,21 @@ - - trap_init_hook(); - } -+ -+int is_kernel_text_address(unsigned long addr) -+{ -+ if (addr < (unsigned long) &_stext || -+ addr > (unsigned long) &_etext || -+ module_text_address(addr)) -+ return 0; -+ -+ return 1; -+} -+ -+int lookup_symbol(unsigned long address, char *buf, int buflen) -+{ -+ return -ENOSYS; -+} -+ -+EXPORT_SYMBOL_GPL(is_kernel_text_address); -+EXPORT_SYMBOL_GPL(lookup_symbol); diff --git a/lustre/kernel_patches/patches/md_path_lookup-2.6-suse b/lustre/kernel_patches/patches/md_path_lookup-2.6-suse new file mode 100644 index 0000000..4e2b66d --- /dev/null +++ b/lustre/kernel_patches/patches/md_path_lookup-2.6-suse @@ -0,0 +1,25 @@ +Index: linux-2.6.4-51.0/drivers/md/dm-path-selector.c +=================================================================== +--- linux-2.6.4-51.0.orig/drivers/md/dm-path-selector.c 2004-04-18 20:10:21.000000000 -0400 ++++ linux-2.6.4-51.0/drivers/md/dm-path-selector.c 2004-04-18 20:10:59.000000000 -0400 +@@ -129,7 +129,7 @@ + struct path *path; + }; + +-static struct path_info *path_lookup(struct list_head *head, struct path *p) ++static struct path_info *md_path_lookup(struct list_head *head, struct path *p) + { + struct path_info *pi; + +@@ -235,9 +235,9 @@ + * mind the expense of these searches. + */ + spin_lock_irqsave(&s->lock, flags); +- pi = path_lookup(&s->valid_paths, p); ++ pi = md_path_lookup(&s->valid_paths, p); + if (!pi) +- pi = path_lookup(&s->invalid_paths, p); ++ pi = md_path_lookup(&s->invalid_paths, p); + + if (!pi) + DMWARN("asked to change the state of an unknown path"); diff --git a/lustre/kernel_patches/patches/vfs_intent-2.4.21-suse2.patch b/lustre/kernel_patches/patches/vfs_intent-2.4.21-suse2.patch index 25d147d..ec3b64c 100644 --- a/lustre/kernel_patches/patches/vfs_intent-2.4.21-suse2.patch +++ b/lustre/kernel_patches/patches/vfs_intent-2.4.21-suse2.patch @@ -12,10 +12,10 @@ kernel/ksyms.c | 1 12 files changed, 558 insertions(+), 128 deletions(-) -Index: linux-2.4.21-suse2/fs/dcache.c +Index: linux-2.4.21-x86_64/fs/dcache.c =================================================================== ---- linux-2.4.21-suse2.orig/fs/dcache.c 2003-10-28 21:33:59.000000000 +0300 -+++ linux-2.4.21-suse2/fs/dcache.c 2004-01-10 12:15:41.000000000 +0300 +--- linux-2.4.21-x86_64.orig/fs/dcache.c 2003-10-28 10:33:59.000000000 -0800 ++++ linux-2.4.21-x86_64/fs/dcache.c 2004-04-12 19:57:36.000000000 -0700 @@ -186,6 +186,13 @@ spin_unlock(&dcache_lock); return 0; @@ -53,10 +53,10 @@ Index: linux-2.4.21-suse2/fs/dcache.c } #define do_switch(x,y) do { \ -Index: linux-2.4.21-suse2/fs/exec.c +Index: linux-2.4.21-x86_64/fs/exec.c =================================================================== ---- linux-2.4.21-suse2.orig/fs/exec.c 2003-10-28 21:34:17.000000000 +0300 -+++ linux-2.4.21-suse2/fs/exec.c 2004-01-10 12:15:41.000000000 +0300 +--- linux-2.4.21-x86_64.orig/fs/exec.c 2003-10-28 10:34:17.000000000 -0800 ++++ linux-2.4.21-x86_64/fs/exec.c 2004-04-12 19:57:36.000000000 -0700 @@ -112,8 +112,10 @@ struct file * file; struct nameidata nd; @@ -118,10 +118,10 @@ Index: linux-2.4.21-suse2/fs/exec.c goto close_fail; retval = binfmt->core_dump(signr, regs, file); -Index: linux-2.4.21-suse2/fs/namei.c +Index: linux-2.4.21-x86_64/fs/namei.c =================================================================== ---- linux-2.4.21-suse2.orig/fs/namei.c 2004-01-10 12:06:40.000000000 +0300 -+++ linux-2.4.21-suse2/fs/namei.c 2004-01-10 12:55:09.000000000 +0300 +--- linux-2.4.21-x86_64.orig/fs/namei.c 2003-10-28 10:34:18.000000000 -0800 ++++ linux-2.4.21-x86_64/fs/namei.c 2004-04-12 19:58:44.000000000 -0700 @@ -94,6 +94,13 @@ * XEmacs seems to be relying on it... */ @@ -300,7 +300,7 @@ Index: linux-2.4.21-suse2/fs/namei.c break; } goto return_base; -@@ -643,6 +680,25 @@ +@@ -643,6 +680,27 @@ * Check the cached dentry for staleness. */ dentry = nd->dentry; @@ -322,11 +322,13 @@ Index: linux-2.4.21-suse2/fs/namei.c + } + nd->dentry = new; + } ++ if (!nd->dentry->d_inode) ++ goto no_inode; + } else if (dentry && dentry->d_op && dentry->d_op->d_revalidate) { err = -ESTALE; if (!dentry->d_op->d_revalidate(dentry, lookup_flags & LOOKUP_PARENT)) { -@@ -656,6 +712,8 @@ +@@ -656,6 +714,8 @@ dput(dentry); break; } @@ -335,7 +337,7 @@ Index: linux-2.4.21-suse2/fs/namei.c path_release(nd); return_err: return err; -@@ -663,13 +721,13 @@ +@@ -663,13 +723,13 @@ int link_path_walk(const char * name, struct nameidata *nd) { @@ -351,7 +353,7 @@ Index: linux-2.4.21-suse2/fs/namei.c } int path_walk(const char * name, struct nameidata *nd) -@@ -677,6 +735,12 @@ +@@ -677,6 +737,12 @@ return __path_walk(name, nd); } @@ -364,7 +366,7 @@ Index: linux-2.4.21-suse2/fs/namei.c /* SMP-safe */ /* returns 1 if everything is done */ static int __emul_lookup_dentry(const char *name, struct nameidata *nd) -@@ -759,6 +823,17 @@ +@@ -759,6 +825,17 @@ } /* SMP-safe */ @@ -382,7 +384,7 @@ Index: linux-2.4.21-suse2/fs/namei.c int path_lookup(const char *path, unsigned flags, struct nameidata *nd) { int error = 0; -@@ -773,6 +848,7 @@ +@@ -773,6 +850,7 @@ { nd->last_type = LAST_ROOT; /* if there are only slashes... */ nd->flags = flags; @@ -390,7 +392,7 @@ Index: linux-2.4.21-suse2/fs/namei.c if (*name=='/') return walk_init_root(name,nd); read_lock(¤t->fs->lock); -@@ -787,7 +863,8 @@ +@@ -787,7 +865,8 @@ * needs parent already locked. Doesn't follow mounts. * SMP-safe. */ @@ -400,7 +402,7 @@ Index: linux-2.4.21-suse2/fs/namei.c { struct dentry * dentry; struct inode *inode; -@@ -810,13 +887,16 @@ +@@ -810,13 +889,16 @@ goto out; } @@ -418,7 +420,7 @@ Index: linux-2.4.21-suse2/fs/namei.c dentry = inode->i_op->lookup(inode, new); unlock_kernel(); if (!dentry) -@@ -828,6 +908,12 @@ +@@ -828,6 +910,12 @@ return dentry; } @@ -431,7 +433,7 @@ Index: linux-2.4.21-suse2/fs/namei.c /* SMP-safe */ struct dentry * lookup_one_len(const char * name, struct dentry * base, int len) { -@@ -849,7 +935,7 @@ +@@ -849,7 +937,7 @@ } this.hash = end_name_hash(hash); @@ -440,7 +442,7 @@ Index: linux-2.4.21-suse2/fs/namei.c access: return ERR_PTR(-EACCES); } -@@ -880,6 +966,23 @@ +@@ -880,6 +968,23 @@ return err; } @@ -464,7 +466,7 @@ Index: linux-2.4.21-suse2/fs/namei.c /* * It's inline, so penalty for filesystems that don't use sticky bit is * minimal. -@@ -977,7 +1080,8 @@ +@@ -977,7 +1082,8 @@ return retval; } @@ -474,7 +476,7 @@ Index: linux-2.4.21-suse2/fs/namei.c { int error; -@@ -990,12 +1094,15 @@ +@@ -990,12 +1096,15 @@ goto exit_lock; error = -EACCES; /* shouldn't it be ENOSYS? */ @@ -492,7 +494,7 @@ Index: linux-2.4.21-suse2/fs/namei.c unlock_kernel(); exit_lock: up(&dir->i_zombie); -@@ -1004,6 +1111,11 @@ +@@ -1004,6 +1113,11 @@ return error; } @@ -504,7 +506,7 @@ Index: linux-2.4.21-suse2/fs/namei.c /* * open_namei() * -@@ -1018,7 +1130,8 @@ +@@ -1018,7 +1132,8 @@ * for symlinks (where the permissions are checked later). * SMP-safe */ @@ -514,7 +516,7 @@ Index: linux-2.4.21-suse2/fs/namei.c { int acc_mode, error = 0; struct inode *inode; -@@ -1028,11 +1141,14 @@ +@@ -1028,11 +1143,14 @@ acc_mode = ACC_MODE(flag); @@ -530,7 +532,7 @@ Index: linux-2.4.21-suse2/fs/namei.c if (error) return error; dentry = nd->dentry; -@@ -1042,6 +1158,10 @@ +@@ -1042,6 +1160,10 @@ /* * Create - we need to know the parent. */ @@ -541,7 +543,7 @@ Index: linux-2.4.21-suse2/fs/namei.c error = path_lookup(pathname, LOOKUP_PARENT, nd); if (error) return error; -@@ -1057,7 +1177,7 @@ +@@ -1057,7 +1179,7 @@ dir = nd->dentry; down(&dir->d_inode->i_sem); @@ -550,7 +552,7 @@ Index: linux-2.4.21-suse2/fs/namei.c do_last: error = PTR_ERR(dentry); -@@ -1066,11 +1186,12 @@ +@@ -1066,11 +1188,12 @@ goto exit; } @@ -564,7 +566,7 @@ Index: linux-2.4.21-suse2/fs/namei.c up(&dir->d_inode->i_sem); #ifndef DENTRY_WASTE_RAM if (error) -@@ -1178,7 +1299,7 @@ +@@ -1178,7 +1301,7 @@ if (!error) { DQUOT_INIT(inode); @@ -573,7 +575,7 @@ Index: linux-2.4.21-suse2/fs/namei.c } put_write_access(inode); if (error) -@@ -1190,8 +1311,10 @@ +@@ -1190,8 +1313,10 @@ return 0; exit_dput: @@ -584,7 +586,7 @@ Index: linux-2.4.21-suse2/fs/namei.c path_release(nd); return error; -@@ -1210,7 +1333,10 @@ +@@ -1210,7 +1335,10 @@ * are done. Procfs-like symlinks just set LAST_BIND. */ UPDATE_ATIME(dentry->d_inode); @@ -595,7 +597,7 @@ Index: linux-2.4.21-suse2/fs/namei.c dput(dentry); if (error) return error; -@@ -1232,13 +1358,20 @@ +@@ -1232,13 +1360,20 @@ } dir = nd->dentry; down(&dir->d_inode->i_sem); @@ -618,7 +620,7 @@ Index: linux-2.4.21-suse2/fs/namei.c { struct dentry *dentry; -@@ -1246,7 +1379,7 @@ +@@ -1246,7 +1381,7 @@ dentry = ERR_PTR(-EEXIST); if (nd->last_type != LAST_NORM) goto fail; @@ -627,12 +629,16 @@ Index: linux-2.4.21-suse2/fs/namei.c if (IS_ERR(dentry)) goto fail; if (!is_dir && nd->last.name[nd->last.len] && !dentry->d_inode) -@@ -1302,7 +1435,16 @@ +@@ -1302,7 +1437,20 @@ error = path_lookup(tmp, LOOKUP_PARENT, &nd); if (error) goto out; - dentry = lookup_create(&nd, 0); + ++ if (nd.last_type != LAST_NORM) { ++ error = -EEXIST; ++ goto out2; ++ } + if (nd.dentry->d_inode->i_op->mknod_raw) { + struct inode_operations *op = nd.dentry->d_inode->i_op; + error = op->mknod_raw(&nd, mode, dev); @@ -645,7 +651,7 @@ Index: linux-2.4.21-suse2/fs/namei.c error = PTR_ERR(dentry); if (!IS_POSIXACL(nd.dentry->d_inode)) -@@ -1324,6 +1466,7 @@ +@@ -1324,6 +1472,7 @@ dput(dentry); } up(&nd.dentry->d_inode->i_sem); @@ -653,11 +659,15 @@ Index: linux-2.4.21-suse2/fs/namei.c path_release(&nd); out: putname(tmp); -@@ -1371,7 +1514,14 @@ +@@ -1371,7 +1520,18 @@ error = path_lookup(tmp, LOOKUP_PARENT, &nd); if (error) goto out; - dentry = lookup_create(&nd, 1); ++ if (nd.last_type != LAST_NORM) { ++ error = -EEXIST; ++ goto out2; ++ } + if (nd.dentry->d_inode->i_op->mkdir_raw) { + struct inode_operations *op = nd.dentry->d_inode->i_op; + error = op->mkdir_raw(&nd, mode); @@ -669,7 +679,7 @@ Index: linux-2.4.21-suse2/fs/namei.c error = PTR_ERR(dentry); if (!IS_ERR(dentry)) { if (!IS_POSIXACL(nd.dentry->d_inode)) -@@ -1380,6 +1530,7 @@ +@@ -1380,6 +1540,7 @@ dput(dentry); } up(&nd.dentry->d_inode->i_sem); @@ -677,7 +687,7 @@ Index: linux-2.4.21-suse2/fs/namei.c path_release(&nd); out: putname(tmp); -@@ -1480,8 +1631,16 @@ +@@ -1480,8 +1641,16 @@ error = -EBUSY; goto exit1; } @@ -695,7 +705,7 @@ Index: linux-2.4.21-suse2/fs/namei.c error = PTR_ERR(dentry); if (!IS_ERR(dentry)) { error = vfs_rmdir(nd.dentry->d_inode, dentry); -@@ -1539,8 +1698,15 @@ +@@ -1539,8 +1708,15 @@ error = -EISDIR; if (nd.last_type != LAST_NORM) goto exit1; @@ -712,11 +722,15 @@ Index: linux-2.4.21-suse2/fs/namei.c error = PTR_ERR(dentry); if (!IS_ERR(dentry)) { /* Why not before? Because we want correct error value */ -@@ -1607,15 +1773,23 @@ +@@ -1607,15 +1783,27 @@ error = path_lookup(to, LOOKUP_PARENT, &nd); if (error) goto out; - dentry = lookup_create(&nd, 0); ++ if (nd.last_type != LAST_NORM) { ++ error = -EEXIST; ++ goto out2; ++ } + if (nd.dentry->d_inode->i_op->symlink_raw) { + struct inode_operations *op = nd.dentry->d_inode->i_op; + error = op->symlink_raw(&nd, from); @@ -738,11 +752,15 @@ Index: linux-2.4.21-suse2/fs/namei.c putname(to); } putname(from); -@@ -1691,7 +1865,14 @@ +@@ -1691,7 +1879,18 @@ error = -EXDEV; if (old_nd.mnt != nd.mnt) goto out_release; - new_dentry = lookup_create(&nd, 0); ++ if (nd.last_type != LAST_NORM) { ++ error = -EEXIST; ++ goto out_release; ++ } + if (nd.dentry->d_inode->i_op->link_raw) { + struct inode_operations *op = nd.dentry->d_inode->i_op; + error = op->link_raw(&old_nd, &nd); @@ -754,7 +772,7 @@ Index: linux-2.4.21-suse2/fs/namei.c error = PTR_ERR(new_dentry); if (!IS_ERR(new_dentry)) { error = vfs_link(old_nd.dentry, nd.dentry->d_inode, new_dentry); -@@ -1735,7 +1916,7 @@ +@@ -1735,7 +1934,7 @@ * locking]. */ int vfs_rename_dir(struct inode *old_dir, struct dentry *old_dentry, @@ -763,7 +781,7 @@ Index: linux-2.4.21-suse2/fs/namei.c { int error; struct inode *target; -@@ -1814,7 +1995,7 @@ +@@ -1814,7 +2013,7 @@ } int vfs_rename_other(struct inode *old_dir, struct dentry *old_dentry, @@ -772,7 +790,7 @@ Index: linux-2.4.21-suse2/fs/namei.c { int error; -@@ -1902,9 +2083,18 @@ +@@ -1902,9 +2101,18 @@ if (newnd.last_type != LAST_NORM) goto exit2; @@ -792,7 +810,7 @@ Index: linux-2.4.21-suse2/fs/namei.c error = PTR_ERR(old_dentry); if (IS_ERR(old_dentry)) goto exit3; -@@ -1920,16 +2110,16 @@ +@@ -1920,16 +2128,16 @@ if (newnd.last.name[newnd.last.len]) goto exit4; } @@ -811,7 +829,7 @@ Index: linux-2.4.21-suse2/fs/namei.c dput(new_dentry); exit4: dput(old_dentry); -@@ -1980,20 +2170,26 @@ +@@ -1980,20 +2188,26 @@ } static inline int @@ -840,7 +858,7 @@ Index: linux-2.4.21-suse2/fs/namei.c out: if (current->link_count || res || nd->last_type!=LAST_NORM) return res; -@@ -2017,7 +2213,13 @@ +@@ -2017,7 +2231,13 @@ int vfs_follow_link(struct nameidata *nd, const char *link) { @@ -855,7 +873,7 @@ Index: linux-2.4.21-suse2/fs/namei.c } /* get the link contents into pagecache */ -@@ -2059,7 +2261,7 @@ +@@ -2059,7 +2279,7 @@ { struct page *page = NULL; char *s = page_getlink(dentry, &page); @@ -864,10 +882,10 @@ Index: linux-2.4.21-suse2/fs/namei.c if (page) { kunmap(page); page_cache_release(page); -Index: linux-2.4.21-suse2/fs/namespace.c +Index: linux-2.4.21-x86_64/fs/namespace.c =================================================================== ---- linux-2.4.21-suse2.orig/fs/namespace.c 2003-10-28 21:34:12.000000000 +0300 -+++ linux-2.4.21-suse2/fs/namespace.c 2004-01-10 12:15:41.000000000 +0300 +--- linux-2.4.21-x86_64.orig/fs/namespace.c 2003-10-28 10:34:12.000000000 -0800 ++++ linux-2.4.21-x86_64/fs/namespace.c 2004-04-12 19:57:36.000000000 -0700 @@ -98,6 +98,7 @@ { old_nd->dentry = mnt->mnt_mountpoint; @@ -981,10 +999,10 @@ Index: linux-2.4.21-suse2/fs/namespace.c path_release(&new_nd); out0: unlock_kernel(); -Index: linux-2.4.21-suse2/fs/open.c +Index: linux-2.4.21-x86_64/fs/open.c =================================================================== ---- linux-2.4.21-suse2.orig/fs/open.c 2003-10-28 21:33:59.000000000 +0300 -+++ linux-2.4.21-suse2/fs/open.c 2004-01-10 12:55:39.000000000 +0300 +--- linux-2.4.21-x86_64.orig/fs/open.c 2003-10-28 10:33:59.000000000 -0800 ++++ linux-2.4.21-x86_64/fs/open.c 2004-04-12 19:57:36.000000000 -0700 @@ -19,6 +19,8 @@ #include @@ -1385,11 +1403,11 @@ Index: linux-2.4.21-suse2/fs/open.c /* * Find an empty file descriptor entry, and mark it busy. */ -Index: linux-2.4.21-suse2/fs/stat.c +Index: linux-2.4.21-x86_64/fs/stat.c =================================================================== ---- linux-2.4.21-suse2.orig/fs/stat.c 2003-10-28 21:33:58.000000000 +0300 -+++ linux-2.4.21-suse2/fs/stat.c 2004-01-10 12:15:41.000000000 +0300 -@@ -17,10 +17,14 @@ +--- linux-2.4.21-x86_64.orig/fs/stat.c 2003-10-28 10:33:58.000000000 -0800 ++++ linux-2.4.21-x86_64/fs/stat.c 2004-04-12 19:58:44.000000000 -0700 +@@ -17,10 +17,12 @@ * Revalidate the inode. This is required for proper NFS attribute caching. */ static __inline__ int @@ -1398,15 +1416,13 @@ Index: linux-2.4.21-suse2/fs/stat.c { struct inode * inode = dentry->d_inode; - if (inode->i_op && inode->i_op->revalidate) -+ if (!inode) -+ return -ENOENT; + if (inode->i_op && inode->i_op->revalidate_it) + return inode->i_op->revalidate_it(dentry, it); + else if (inode->i_op && inode->i_op->revalidate) return inode->i_op->revalidate(dentry); return 0; } -@@ -141,13 +145,15 @@ +@@ -141,13 +143,15 @@ asmlinkage long sys_stat(char * filename, struct __old_kernel_stat * statbuf) { struct nameidata nd; @@ -1424,7 +1440,7 @@ Index: linux-2.4.21-suse2/fs/stat.c path_release(&nd); } return error; -@@ -157,13 +163,15 @@ +@@ -157,13 +161,15 @@ asmlinkage long sys_newstat(char * filename, struct stat * statbuf) { struct nameidata nd; @@ -1442,7 +1458,7 @@ Index: linux-2.4.21-suse2/fs/stat.c path_release(&nd); } return error; -@@ -178,13 +186,15 @@ +@@ -178,13 +184,15 @@ asmlinkage long sys_lstat(char * filename, struct __old_kernel_stat * statbuf) { struct nameidata nd; @@ -1460,7 +1476,7 @@ Index: linux-2.4.21-suse2/fs/stat.c path_release(&nd); } return error; -@@ -195,13 +205,15 @@ +@@ -195,13 +203,15 @@ asmlinkage long sys_newlstat(char * filename, struct stat * statbuf) { struct nameidata nd; @@ -1478,7 +1494,7 @@ Index: linux-2.4.21-suse2/fs/stat.c path_release(&nd); } return error; -@@ -222,7 +234,7 @@ +@@ -222,7 +232,7 @@ if (f) { struct dentry * dentry = f->f_dentry; @@ -1487,7 +1503,7 @@ Index: linux-2.4.21-suse2/fs/stat.c if (!err) err = cp_old_stat(dentry->d_inode, statbuf); fput(f); -@@ -241,7 +253,7 @@ +@@ -241,7 +251,7 @@ if (f) { struct dentry * dentry = f->f_dentry; @@ -1496,7 +1512,7 @@ Index: linux-2.4.21-suse2/fs/stat.c if (!err) err = cp_new_stat(dentry->d_inode, statbuf); fput(f); -@@ -263,7 +275,7 @@ +@@ -263,7 +273,7 @@ error = -EINVAL; if (inode->i_op && inode->i_op->readlink && @@ -1505,7 +1521,7 @@ Index: linux-2.4.21-suse2/fs/stat.c UPDATE_ATIME(inode); error = inode->i_op->readlink(nd.dentry, buf, bufsiz); } -@@ -339,12 +351,14 @@ +@@ -339,12 +349,14 @@ { struct nameidata nd; int error; @@ -1522,7 +1538,7 @@ Index: linux-2.4.21-suse2/fs/stat.c path_release(&nd); } return error; -@@ -354,12 +368,14 @@ +@@ -354,12 +366,14 @@ { struct nameidata nd; int error; @@ -1539,7 +1555,7 @@ Index: linux-2.4.21-suse2/fs/stat.c path_release(&nd); } return error; -@@ -374,7 +390,7 @@ +@@ -374,7 +388,7 @@ if (f) { struct dentry * dentry = f->f_dentry; @@ -1548,10 +1564,10 @@ Index: linux-2.4.21-suse2/fs/stat.c if (!err) err = cp_new_stat64(dentry->d_inode, statbuf); fput(f); -Index: linux-2.4.21-suse2/include/linux/dcache.h +Index: linux-2.4.21-x86_64/include/linux/dcache.h =================================================================== ---- linux-2.4.21-suse2.orig/include/linux/dcache.h 2003-11-11 03:44:28.000000000 +0300 -+++ linux-2.4.21-suse2/include/linux/dcache.h 2004-01-10 12:48:36.000000000 +0300 +--- linux-2.4.21-x86_64.orig/include/linux/dcache.h 2003-11-10 16:44:28.000000000 -0800 ++++ linux-2.4.21-x86_64/include/linux/dcache.h 2004-04-12 19:57:36.000000000 -0700 @@ -7,6 +7,51 @@ #include #include @@ -1635,10 +1651,10 @@ Index: linux-2.4.21-suse2/include/linux/dcache.h extern spinlock_t dcache_lock; -Index: linux-2.4.21-suse2/include/linux/fs.h +Index: linux-2.4.21-x86_64/include/linux/fs.h =================================================================== ---- linux-2.4.21-suse2.orig/include/linux/fs.h 2004-01-10 11:28:05.000000000 +0300 -+++ linux-2.4.21-suse2/include/linux/fs.h 2004-01-10 12:48:36.000000000 +0300 +--- linux-2.4.21-x86_64.orig/include/linux/fs.h 2004-04-12 19:57:33.000000000 -0700 ++++ linux-2.4.21-x86_64/include/linux/fs.h 2004-04-12 19:57:36.000000000 -0700 @@ -74,6 +74,7 @@ #define FMODE_READ 1 @@ -1766,10 +1782,10 @@ Index: linux-2.4.21-suse2/include/linux/fs.h extern int page_readlink(struct dentry *, char *, int); extern int page_follow_link(struct dentry *, struct nameidata *); extern struct inode_operations page_symlink_inode_operations; -Index: linux-2.4.21-suse2/include/linux/fs_struct.h +Index: linux-2.4.21-x86_64/include/linux/fs_struct.h =================================================================== ---- linux-2.4.21-suse2.orig/include/linux/fs_struct.h 2001-07-14 02:10:44.000000000 +0400 -+++ linux-2.4.21-suse2/include/linux/fs_struct.h 2004-01-10 12:15:41.000000000 +0300 +--- linux-2.4.21-x86_64.orig/include/linux/fs_struct.h 2001-07-13 15:10:44.000000000 -0700 ++++ linux-2.4.21-x86_64/include/linux/fs_struct.h 2004-04-12 19:57:36.000000000 -0700 @@ -34,10 +34,12 @@ write_lock(&fs->lock); old_root = fs->root; @@ -1796,10 +1812,10 @@ Index: linux-2.4.21-suse2/include/linux/fs_struct.h dput(old_pwd); mntput(old_pwdmnt); } -Index: linux-2.4.21-suse2/kernel/exit.c +Index: linux-2.4.21-x86_64/kernel/exit.c =================================================================== ---- linux-2.4.21-suse2.orig/kernel/exit.c 2003-10-28 21:34:13.000000000 +0300 -+++ linux-2.4.21-suse2/kernel/exit.c 2004-01-10 12:15:41.000000000 +0300 +--- linux-2.4.21-x86_64.orig/kernel/exit.c 2003-10-28 10:34:13.000000000 -0800 ++++ linux-2.4.21-x86_64/kernel/exit.c 2004-04-12 19:57:36.000000000 -0700 @@ -288,11 +288,14 @@ { /* No need to hold fs->lock if we are killing it */ @@ -1815,10 +1831,10 @@ Index: linux-2.4.21-suse2/kernel/exit.c dput(fs->altroot); mntput(fs->altrootmnt); } -Index: linux-2.4.21-suse2/kernel/fork.c +Index: linux-2.4.21-x86_64/kernel/fork.c =================================================================== ---- linux-2.4.21-suse2.orig/kernel/fork.c 2003-10-28 21:34:17.000000000 +0300 -+++ linux-2.4.21-suse2/kernel/fork.c 2004-01-10 12:15:41.000000000 +0300 +--- linux-2.4.21-x86_64.orig/kernel/fork.c 2003-10-28 10:34:17.000000000 -0800 ++++ linux-2.4.21-x86_64/kernel/fork.c 2004-04-12 19:57:36.000000000 -0700 @@ -461,10 +461,13 @@ fs->umask = old->umask; read_lock(&old->lock); @@ -1833,10 +1849,10 @@ Index: linux-2.4.21-suse2/kernel/fork.c fs->altrootmnt = mntget(old->altrootmnt); fs->altroot = dget(old->altroot); } else { -Index: linux-2.4.21-suse2/kernel/ksyms.c +Index: linux-2.4.21-x86_64/kernel/ksyms.c =================================================================== ---- linux-2.4.21-suse2.orig/kernel/ksyms.c 2004-01-10 11:28:05.000000000 +0300 -+++ linux-2.4.21-suse2/kernel/ksyms.c 2004-01-10 12:15:41.000000000 +0300 +--- linux-2.4.21-x86_64.orig/kernel/ksyms.c 2004-04-12 19:57:33.000000000 -0700 ++++ linux-2.4.21-x86_64/kernel/ksyms.c 2004-04-12 19:57:36.000000000 -0700 @@ -327,6 +327,7 @@ EXPORT_SYMBOL(set_page_dirty); EXPORT_SYMBOL(vfs_readlink); diff --git a/lustre/kernel_patches/series/2.6-suse.series b/lustre/kernel_patches/series/2.6-suse.series index 99ea296..f3cb5bb 100644 --- a/lustre/kernel_patches/series/2.6-suse.series +++ b/lustre/kernel_patches/series/2.6-suse.series @@ -9,6 +9,6 @@ export-truncate-2.6-suse.patch export_symbols-2.6-suse.patch removepage-2.6-suse.patch dev_read_only-2.6-suse.patch -kernel_text_address-2.6-suse.patch export-2.6-suse.patch header-guards-2.6-suse.patch +md_path_lookup-2.6-suse diff --git a/lustre/kernel_patches/series/ldiskfs-2.6-suse.series b/lustre/kernel_patches/series/ldiskfs-2.6-suse.series index 65e8dcd..cff99dd 100644 --- a/lustre/kernel_patches/series/ldiskfs-2.6-suse.series +++ b/lustre/kernel_patches/series/ldiskfs-2.6-suse.series @@ -1,4 +1,3 @@ -header-guards-2.6-suse.patch ext3-wantedi-2.6-suse.patch ext3-san-jdike-2.6-suse.patch iopen-2.6-suse.patch @@ -8,4 +7,3 @@ ext3-init-generation-2.6-suse.patch ext3-ea-in-inode-2.6-suse.patch export-ext3-2.6-suse.patch ext3-include-fixes-2.6-suse.patch -ext3-xattr-header-move-2.6.suse.patch diff --git a/lustre/kernel_patches/targets/2.6-suse.target b/lustre/kernel_patches/targets/2.6-suse.target index ef3b1ae..ea9b136 100644 --- a/lustre/kernel_patches/targets/2.6-suse.target +++ b/lustre/kernel_patches/targets/2.6-suse.target @@ -1,13 +1,14 @@ -KERNEL=linux-2.6.4-51.8.tar.gz -SERIES=2.6-suse +KERNEL=linux-2.6.4-51.0.tar.gz +SERIES=2.6-suse.series VERSION=2.6.4 -EXTRA_VERSION=51.8_lustre +EXTRA_VERSION=51.0_lustre RHBUILD=0 +LINUX26=1 -BASE_ARCHS="" +BASE_ARCHS="i686" BIGMEM_ARCHS="" BOOT_ARCHS="" JENSEN_ARCHS="" -SMP_ARCHS="" +SMP_ARCHS="i686" UP_ARCHS="" SRC_ARCHS="" diff --git a/lustre/ldlm/.cvsignore b/lustre/ldlm/.cvsignore index e69dc6d..bde2a9f 100644 --- a/lustre/ldlm/.cvsignore +++ b/lustre/ldlm/.cvsignore @@ -2,3 +2,5 @@ Makefile Makefile.in .*.cmd +.*.flags +.tmp_versions diff --git a/lustre/ldlm/Makefile.am b/lustre/ldlm/Makefile.am index 0da12fc..779639a 100644 --- a/lustre/ldlm/Makefile.am +++ b/lustre/ldlm/Makefile.am @@ -7,13 +7,7 @@ # ldlm is built into ptlrpc # -DEFS= - -if LIBLUSTRE -lib_LIBRARIES = libldlm.a -libldlm_a_SOURCES = l_lock.c ldlm_lock.c ldlm_resource.c ldlm_lib.c \ - ldlm_plain.c ldlm_extent.c ldlm_request.c ldlm_lockd.c ldlm_internal.h -libldlm_a_CFLAGS = -fPIC -endif - -include $(top_srcdir)/Rules +MOSTLYCLEANFILES = *.o *.ko *.mod.c +DIST_SOURCES = ldlm_extent.c ldlm_flock.c ldlm_internal.h ldlm_lib.c \ + ldlm_lock.c ldlm_lockd.c ldlm_plain.c ldlm_request.c \ + ldlm_resource.c ldlm_test.c l_lock.c diff --git a/lustre/ldlm/ldlm_lib.c b/lustre/ldlm/ldlm_lib.c index 02ad9f6..64cf6e44 100644 --- a/lustre/ldlm/ldlm_lib.c +++ b/lustre/ldlm/ldlm_lib.c @@ -701,7 +701,6 @@ void target_start_recovery_timer(struct obd_device *obd, svc_handler_t handler) obd->obd_recovery_handler = handler; obd->obd_recovery_timer.function = target_recovery_expired; obd->obd_recovery_timer.data = (unsigned long)obd; - init_timer(&obd->obd_recovery_timer); spin_unlock_bh(&obd->obd_processing_task_lock); reset_recovery_timer(obd); diff --git a/lustre/ldlm/ldlm_lockd.c b/lustre/ldlm/ldlm_lockd.c index f75d8f1..ecb4c21 100644 --- a/lustre/ldlm/ldlm_lockd.c +++ b/lustre/ldlm/ldlm_lockd.c @@ -311,16 +311,11 @@ static void ldlm_failed_ast(struct ldlm_lock *lock, int rc,const char *ast_type) const struct ptlrpc_connection *conn = lock->l_export->exp_connection; char str[PTL_NALFMT_SIZE]; - CERROR("%s AST failed (%d) for res "LPU64"/"LPU64 - ", mode %s: evicting client %s@%s NID "LPX64" (%s)\n", - ast_type, rc, - lock->l_resource->lr_name.name[0], - lock->l_resource->lr_name.name[1], - ldlm_lockname[lock->l_granted_mode], - lock->l_export->exp_client_uuid.uuid, - conn->c_remote_uuid.uuid, conn->c_peer.peer_nid, - portals_nid2str(conn->c_peer.peer_ni->pni_number, - conn->c_peer.peer_nid, str)); + LDLM_ERROR(lock, "%s AST failed (%d): evicting client %s@%s NID "LPX64 + " (%s)", ast_type, rc, lock->l_export->exp_client_uuid.uuid, + conn->c_remote_uuid.uuid, conn->c_peer.peer_nid, + portals_nid2str(conn->c_peer.peer_ni->pni_number, + conn->c_peer.peer_nid, str)); ptlrpc_fail_export(lock->l_export); } @@ -342,14 +337,14 @@ static int ldlm_handle_ast_error(struct ldlm_lock *lock, } } else if (rc) { if (rc == -EINVAL) - LDLM_DEBUG(lock, "client (nid "LPU64") returned %d " - "from %s AST - normal race", + LDLM_DEBUG(lock, "client (nid "LPU64") returned %d" + " from %s AST - normal race", req->rq_peer.peer_nid, req->rq_repmsg->status, ast_type); else LDLM_ERROR(lock, "client (nid "LPU64") returned %d " "from %s AST", req->rq_peer.peer_nid, - (req->rq_repmsg != NULL)? + (req->rq_repmsg != NULL) ? req->rq_repmsg->status : 0, ast_type); ldlm_lock_cancel(lock); /* Server-side AST functions are called from ldlm_reprocess_all, @@ -494,6 +489,7 @@ int ldlm_server_completion_ast(struct ldlm_lock *lock, int flags, void *data) rc = ptlrpc_queue_wait(req); if (rc != 0) rc = ldlm_handle_ast_error(lock, req, rc, "completion"); + ptlrpc_req_finished(req); RETURN(rc); @@ -528,7 +524,7 @@ int ldlm_server_glimpse_ast(struct ldlm_lock *lock, void *data) rc = ptlrpc_queue_wait(req); if (rc == -ELDLM_NO_LOCK_DATA) LDLM_DEBUG(lock, "lost race - client has a lock but no inode"); - else if (rc) + else if (rc != 0) rc = ldlm_handle_ast_error(lock, req, rc, "glimpse"); else rc = res->lr_namespace->ns_lvbo->lvbo_update diff --git a/lustre/liblustre/Makefile.am b/lustre/liblustre/Makefile.am index 438ebb4..b831bd8 100644 --- a/lustre/liblustre/Makefile.am +++ b/lustre/liblustre/Makefile.am @@ -1,9 +1,8 @@ ## Liblustre excecutables & libraries Makefile -DEFS= - SUBDIRS = . tests -LL_CFLAGS = -I$(SYSIO)/include +AM_CPPFLAGS = $(HAVE_EFENCE) -I$(SYSIO)/include -D_LARGEFILE64_SOURCE=1 $(LLCPPFLAGS) -I$(top_srcdir)/portals/unals +AM_CFLAGS = $(LLCFLAGS) LIBS = $(LIBEFENCE) @@ -25,18 +24,17 @@ SYSIO_LIBS = $(SYSIO)/drivers/native/libsysio_native.a \ $(SYSIO)/src/libsysio.a \ $(SYSIO)/dev/stdfd/libsysio_stdfd.a +if LIBLUSTRE lib_LIBRARIES = liblustre.a noinst_LIBRARIES = libllite.a +endif -libllite_a_SOURCES = llite_lib.c super.c namei.c rw.c file.c dir.c -libllite_a_CFLAGS = $(LL_CFLAGS) +libllite_a_SOURCES = llite_lib.c super.c namei.c rw.c file.c dir.c llite_lib.h # for make rpms -- need cleanup liblustre_a_SOURCES = llite_lib.c super.c namei.c rw.c file.c dir.c -liblustre_a_CFLAGS = $(LL_CFLAGS) liblustre.a : $(LUSTRE_LIBS) $(PTL_LIBS) $(SYSIO_LIBS) - $(shell $(top_srcdir)/liblustre/genlib.sh $(SYSIO) $(AR) $(LINK)) - -include $(top_srcdir)/Rules + $(srcdir)/genlib.sh $(SYSIO) $(AR) $(LINK) || ( rm -f $@; exit 1 ) +EXTRA_DIST = genlib.sh diff --git a/lustre/liblustre/dir.c b/lustre/liblustre/dir.c index c236d73..c125b79 100644 --- a/lustre/liblustre/dir.c +++ b/lustre/liblustre/dir.c @@ -1,7 +1,7 @@ /* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*- * vim:expandtab:shiftwidth=8:tabstop=8: * - * Lustre Light Super operations + * Lustre Light directory handling * * Copyright (c) 2002, 2003 Cluster File Systems, Inc. * diff --git a/lustre/liblustre/file.c b/lustre/liblustre/file.c index 9a5162d..03538bf 100644 --- a/lustre/liblustre/file.c +++ b/lustre/liblustre/file.c @@ -1,7 +1,7 @@ /* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*- * vim:expandtab:shiftwidth=8:tabstop=8: * - * Lustre Light Super operations + * Lustre Light file operations * * Copyright (c) 2002, 2003 Cluster File Systems, Inc. * @@ -166,6 +166,8 @@ int llu_iop_open(struct pnode *pnode, int flags, mode_t mode) } fd->fd_flags &= ~O_LOV_DELAY_CREATE; + lli->lli_open_flags = flags; + out_release: request = it->d.lustre.it_data; ptlrpc_req_finished(request); diff --git a/lustre/liblustre/llite_lib.c b/lustre/liblustre/llite_lib.c index 1cb6a37..352e5e3 100644 --- a/lustre/liblustre/llite_lib.c +++ b/lustre/liblustre/llite_lib.c @@ -1,7 +1,7 @@ /* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*- * vim:expandtab:shiftwidth=8:tabstop=8: * - * Lustre Light Super operations + * Lustre Light common routines * * Copyright (c) 2002, 2003 Cluster File Systems, Inc. * @@ -48,6 +48,8 @@ #include "llite_lib.h" +unsigned int portal_subsystem_debug = ~0 - (S_PORTALS | S_QSWNAL | S_SOCKNAL | + S_GMNAL | S_IBNAL); ptl_handle_ni_t tcpnal_ni; struct task_struct *current; @@ -96,17 +98,20 @@ char *portals_nid2str(int nal, ptl_nid_t nid, char *str) case TCPNAL: /* userspace NAL */ case SOCKNAL: - sprintf(str, "%u:%d.%d.%d.%d", (__u32)(nid >> 32), - HIPQUAD(nid)); + snprintf(str, PTL_NALFMT_SIZE - 1, "%u:%u.%u.%u.%u", + (__u32)(nid >> 32), HIPQUAD(nid)); break; case QSWNAL: case GMNAL: case IBNAL: case SCIMACNAL: - sprintf(str, "%u:%u", (__u32)(nid >> 32), (__u32)nid); + snprintf(str, PTL_NALFMT_SIZE - 1, "%u:%u", + (__u32)(nid >> 32), (__u32)nid); break; default: - return NULL; + snprintf(str, PTL_NALFMT_SIZE - 1, "?%d? %llx", + nal, (long long)nid); + break; } return str; } @@ -222,7 +227,6 @@ int lllib_init(char *dumpfile) if (init_obdclass() || init_lib_portals() || ptlrpc_init() || - ldlm_init() || mdc_init() || lov_init() || osc_init()) @@ -263,6 +267,7 @@ int liblustre_process_log(struct config_llog_instance *cfg, int allow_recov) CERROR("Can't parse NID %s\n", g_zconf_mdsnid); RETURN(-EINVAL); } + nal = ptl_name2nal("tcp"); if (nal <= 0) { CERROR("Can't parse NAL tcp\n"); diff --git a/lustre/liblustre/llite_lib.h b/lustre/liblustre/llite_lib.h index 123bb5c..ac9ad91 100644 --- a/lustre/liblustre/llite_lib.h +++ b/lustre/liblustre/llite_lib.h @@ -86,6 +86,7 @@ struct llu_inode_info { * was opened several times without close, we track an * open_count here */ struct ll_file_data *lli_file_data; + int lli_open_flags; int lli_open_count; /* stat FIXME not 64 bit clean */ diff --git a/lustre/liblustre/namei.c b/lustre/liblustre/namei.c index 3929e2c..73827ce 100644 --- a/lustre/liblustre/namei.c +++ b/lustre/liblustre/namei.c @@ -1,7 +1,7 @@ /* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*- * vim:expandtab:shiftwidth=8:tabstop=8: * - * Lustre Light Super operations + * Lustre Light name resolution * * Copyright (c) 2002, 2003 Cluster File Systems, Inc. * diff --git a/lustre/liblustre/rw.c b/lustre/liblustre/rw.c index a737a14..c43bb06 100644 --- a/lustre/liblustre/rw.c +++ b/lustre/liblustre/rw.c @@ -1,7 +1,7 @@ /* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*- * vim:expandtab:shiftwidth=8:tabstop=8: * - * Lustre Light Super operations + * Lustre Light block IO * * Copyright (c) 2002, 2003 Cluster File Systems, Inc. * @@ -94,7 +94,7 @@ static int llu_extent_lock_callback(struct ldlm_lock *lock, struct lov_stripe_md *lsm; __u32 stripe; __u64 kms; - + /* This lock wasn't granted, don't try to evict pages */ if (lock->l_req_mode != lock->l_granted_mode) RETURN(0); @@ -123,7 +123,7 @@ iput: default: LBUG(); } - + RETURN(0); } diff --git a/lustre/liblustre/tests/.cvsignore b/lustre/liblustre/tests/.cvsignore index e995588..eb542ff 100644 --- a/lustre/liblustre/tests/.cvsignore +++ b/lustre/liblustre/tests/.cvsignore @@ -1,3 +1,8 @@ -.deps Makefile Makefile.in +.deps +echo_test +recovery_small +replay_ost_single +replay_single +sanity diff --git a/lustre/liblustre/tests/Makefile.am b/lustre/liblustre/tests/Makefile.am index 813c5e9..81e7058 100644 --- a/lustre/liblustre/tests/Makefile.am +++ b/lustre/liblustre/tests/Makefile.am @@ -1,13 +1,13 @@ ## Liblustre excecutables & libraries Makefile -DEFS= -LL_CFLAGS = -I$(SYSIO)/include +AM_CPPFLAGS = -I$(SYSIO)/include -I/opt/lam/include $(LLCPPFLAGS) -I$(top_srcdir)/portals/unals +AM_CFLAGS = $(LLCFLAGS) +LIBS = $(LIBEFENCE) $(LIBREADLINE) LLIB_EXEC= ../liblustre.a -lpthread +if LIBLUSTRE noinst_LIBRARIES = libtestcommon.a -libtestcommon_a_SOURCES = test_common.c - def_tests = echo_test sanity recovery_small replay_single replay_ost_single if MPITESTS @@ -15,6 +15,9 @@ bin_PROGRAMS = $(def_tests) test_lock_cancel else bin_PROGRAMS = $(def_tests) endif +endif # LIBLUSTRE + +libtestcommon_a_SOURCES = test_common.c test_common.h echo_test_SOURCES = echo_test.c ../../utils/parser.c ../../utils/obd.c ../../utils/lustre_cfg.c echo_test_CFLAGS = $(LL_CFLAGS) @@ -47,5 +50,4 @@ test_lock_cancel_CFLAGS = $(LL_CFLAGS) -I/opt/lam/include -L/opt/lam/lib test_lock_cancel_LDADD := $(LLIB_EXEC) -lmpi -llam endif -include $(top_srcdir)/Rules diff --git a/lustre/liblustre/tests/echo_test.c b/lustre/liblustre/tests/echo_test.c index 51bf60fc..0f4a6fc 100644 --- a/lustre/liblustre/tests/echo_test.c +++ b/lustre/liblustre/tests/echo_test.c @@ -19,6 +19,9 @@ struct ldlm_namespace; struct ldlm_res_id; struct obd_import; +unsigned int portal_subsystem_debug = ~0 - (S_PORTALS | S_QSWNAL | S_SOCKNAL | + S_GMNAL | S_IBNAL); + void *inter_module_get(char *arg) { if (!strcmp(arg, "tcpnal_ni")) @@ -40,17 +43,20 @@ char *portals_nid2str(int nal, ptl_nid_t nid, char *str) case TCPNAL: /* userspace NAL */ case SOCKNAL: - sprintf(str, "%u:%d.%d.%d.%d", (__u32)(nid >> 32), - HIPQUAD(nid)); + snprintf(str, PTL_NALFMT_SIZE - 1, "%u:%u.%u.%u.%u", + (__u32)(nid >> 32), HIPQUAD(nid)); break; case QSWNAL: case GMNAL: case IBNAL: case SCIMACNAL: - sprintf(str, "%u:%u", (__u32)(nid >> 32), (__u32)nid); + snprintf(str, PTL_NALFMT_SIZE - 1, "%u:%u", + (__u32)(nid >> 32), (__u32)nid); break; default: - return NULL; + snprintf(str, PTL_NALFMT_SIZE - 1, "?%d? %llx", + nal, (long long)nid); + break; } return str; } diff --git a/lustre/llite/.cvsignore b/lustre/llite/.cvsignore index 49c6100..d749c615 100644 --- a/lustre/llite/.cvsignore +++ b/lustre/llite/.cvsignore @@ -3,7 +3,13 @@ config.log config.status configure Makefile -Makefile.in .deps TAGS +autoMakefile.in +autoMakefile +*.ko +*.mod.c .*.cmd +.*.flags +.tmp_versions +.depend diff --git a/lustre/llite/Makefile.am b/lustre/llite/Makefile.am deleted file mode 100644 index 96b59e6..0000000 --- a/lustre/llite/Makefile.am +++ /dev/null @@ -1,21 +0,0 @@ -# Copyright (C) 2001 Cluster File Systems, Inc. -# -# This code is issued under the GNU General Public License. -# See the file COPYING in this distribution - -DEFS= - -MODULE = llite -modulefs_DATA = llite.o -EXTRA_PROGRAMS = llite - -COMMON_SRC = dcache.c dir.c file.c llite_close.c llite_lib.c llite_nfs.c rw.c \ - lproc_llite.c namei.c special.c symlink.c llite_internal.h - -if LINUX25 -llite_SOURCES = $(COMMON_SRC) rw26.c super25.c -else -llite_SOURCES = $(COMMON_SRC) rw24.c super.c -endif - -include $(top_srcdir)/Rules diff --git a/lustre/llite/dir.c b/lustre/llite/dir.c index 7b463ca..34516ca 100644 --- a/lustre/llite/dir.c +++ b/lustre/llite/dir.c @@ -90,7 +90,7 @@ static int ll_dir_readpage(struct file *file, struct page *page) } struct address_space_operations ll_dir_aops = { - readpage: ll_dir_readpage, + .readpage = ll_dir_readpage, }; /* @@ -480,7 +480,7 @@ static int ll_dir_ioctl(struct inode *inode, struct file *file, lmmsize = body->eadatasize; if (lmmsize == 0) - GOTO(out_get, rc = -ENODATA); + GOTO(out_get, rc = -ENODATA); lmm = lustre_msg_buf(request->rq_repmsg, 1, lmmsize); LASSERT(lmm != NULL); @@ -551,17 +551,17 @@ static int ll_dir_ioctl(struct inode *inode, struct file *file, int rc, len=0; struct client_obd *cli; struct obd_device *obd; - + rc = obd_ioctl_getdata(&buf, &len, (void *)arg); if (rc) RETURN(rc); data = (void *)buf; obd = class_name2obd(data->ioc_inlbuf1); - + if (!obd ) GOTO(out_ping, rc = -ENODEV); - + if (!obd->obd_attached) { CERROR("Device %d not attached\n", obd->obd_minor); GOTO(out_ping, rc = -ENODEV); @@ -580,7 +580,7 @@ static int ll_dir_ioctl(struct inode *inode, struct file *file, rc = ptlrpc_queue_wait(req); - ptlrpc_req_finished(req); + ptlrpc_req_finished(req); out_ping: obd_ioctl_freedata(buf, len); return rc; @@ -591,7 +591,7 @@ static int ll_dir_ioctl(struct inode *inode, struct file *file, int rc, len = 0; char *bufs[2], *str; int lens[2], size; - + rc = obd_ioctl_getdata(&buf, &len, (void *)arg); if (rc) RETURN(rc); @@ -601,7 +601,7 @@ static int ll_dir_ioctl(struct inode *inode, struct file *file, obd_ioctl_freedata(buf, len); RETURN(-EINVAL); } - + lens[0] = data->ioc_inllen1; bufs[0] = data->ioc_inlbuf1; if (data->ioc_inllen2) { @@ -612,22 +612,22 @@ static int ll_dir_ioctl(struct inode *inode, struct file *file, bufs[1] = NULL; } size = data->ioc_plen1; - req = ptlrpc_prep_req(sbi2mdc(sbi)->cl_import, LLOG_CATINFO, + req = ptlrpc_prep_req(sbi2mdc(sbi)->cl_import, LLOG_CATINFO, 2, lens, bufs); if (!req) GOTO(out_catinfo, rc = -ENOMEM); req->rq_replen = lustre_msg_size(1, &size); - + rc = ptlrpc_queue_wait(req); str = lustre_msg_string(req->rq_repmsg, 0, data->ioc_plen1); if (!rc) - rc = copy_to_user(data->ioc_pbuf1, str, + rc = copy_to_user(data->ioc_pbuf1, str, data->ioc_plen1); ptlrpc_req_finished(req); out_catinfo: obd_ioctl_freedata(buf, len); RETURN(rc); - } + } default: return obd_iocontrol(cmd, sbi->ll_osc_exp,0,NULL,(void *)arg); } @@ -644,10 +644,10 @@ int ll_dir_release(struct inode *inode, struct file *file) } struct file_operations ll_dir_operations = { - open: ll_dir_open, - release: ll_dir_release, - read: generic_read_dir, - readdir: ll_readdir, - ioctl: ll_dir_ioctl + .open = ll_dir_open, + .release = ll_dir_release, + .read = generic_read_dir, + .readdir = ll_readdir, + .ioctl = ll_dir_ioctl }; diff --git a/lustre/llite/file.c b/lustre/llite/file.c index 8da3efb..dc982c2 100644 --- a/lustre/llite/file.c +++ b/lustre/llite/file.c @@ -381,34 +381,22 @@ void ll_pgcache_remove_extent(struct inode *inode, struct lov_stripe_md *lsm, tmpex.l_extent.start, lock->l_policy_data.l_extent.end, start, i, end); - ll_pgcache_lock(inode->i_mapping); - if (list_empty(&inode->i_mapping->dirty_pages) && - list_empty(&inode->i_mapping->clean_pages) && - list_empty(&inode->i_mapping->locked_pages)) { + if (!mapping_has_pages(inode->i_mapping)) { CDEBUG(D_INODE|D_PAGE, "nothing left\n"); - ll_pgcache_unlock(inode->i_mapping); break; } - ll_pgcache_unlock(inode->i_mapping); conditional_schedule(); page = find_get_page(inode->i_mapping, i); if (page == NULL) continue; - LL_CDEBUG_PAGE(D_PAGE, page, "lock page off %llu ext "LPU64"\n", - (long long)i << PAGE_SHIFT,tmpex.l_extent.start); + LL_CDEBUG_PAGE(D_PAGE, page, "lock page idx %lu ext "LPU64"\n", + i, tmpex.l_extent.start); lock_page(page); /* page->mapping to check with racing against teardown */ - if (page->mapping && PageDirty(page) && !discard) { - ClearPageDirty(page); - LL_CDEBUG_PAGE(D_PAGE, page, "found dirty\n"); - ll_pgcache_lock(inode->i_mapping); - list_del(&page->list); - list_add(&page->list, &inode->i_mapping->locked_pages); - ll_pgcache_unlock(inode->i_mapping); - + if (!discard && clear_page_dirty_for_io(page)) { rc = ll_call_writepage(inode, page); if (rc != 0) CERROR("writepage of page %p failed: %d\n", @@ -489,6 +477,7 @@ static int ll_extent_lock_callback(struct ldlm_lock *lock, down(&inode->i_sem); kms = ldlm_extent_shift_kms(lock, lsm->lsm_oinfo[stripe].loi_kms); + if (lsm->lsm_oinfo[stripe].loi_kms != kms) LDLM_DEBUG(lock, "updating kms from "LPU64" to "LPU64, lsm->lsm_oinfo[stripe].loi_kms, kms); @@ -813,7 +802,7 @@ static ssize_t ll_file_write(struct file *file, const char *buf, size_t count, if (*ppos + count > maxbytes) count = maxbytes - *ppos; - CDEBUG(D_PAGE, "Writing inode %lu, "LPSZ" bytes, offset %Lu\n", + CDEBUG(D_INFO, "Writing inode %lu, "LPSZ" bytes, offset %Lu\n", inode->i_ino, count, *ppos); /* generic_file_write handles O_APPEND after getting i_sem */ @@ -1349,25 +1338,28 @@ int ll_getattr(struct vfsmount *mnt, struct dentry *de, #endif struct file_operations ll_file_operations = { - read: ll_file_read, - write: ll_file_write, - ioctl: ll_file_ioctl, - open: ll_file_open, - release: ll_file_release, - mmap: generic_file_mmap, - llseek: ll_file_seek, - fsync: ll_fsync, - //lock: ll_file_flock + .read = ll_file_read, + .write = ll_file_write, + .ioctl = ll_file_ioctl, + .open = ll_file_open, + .release = ll_file_release, + .mmap = generic_file_mmap, + .llseek = ll_file_seek, +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0)) + .sendfile = generic_file_sendfile, +#endif + .fsync = ll_fsync, + //.lock ll_file_flock }; struct inode_operations ll_file_inode_operations = { - setattr_raw: ll_setattr_raw, - setattr: ll_setattr, - truncate: ll_truncate, + .setattr_raw = ll_setattr_raw, + .setattr = ll_setattr, + .truncate = ll_truncate, #if (LINUX_VERSION_CODE > KERNEL_VERSION(2,5,0)) - getattr_it: ll_getattr, + .getattr_it = ll_getattr, #else - revalidate_it: ll_inode_revalidate_it, + .revalidate_it = ll_inode_revalidate_it, #endif }; diff --git a/lustre/llite/llite_internal.h b/lustre/llite/llite_internal.h index 45a6053..a7a275c 100644 --- a/lustre/llite/llite_internal.h +++ b/lustre/llite/llite_internal.h @@ -186,7 +186,6 @@ void ll_lookup_finish_locks(struct lookup_intent *it, struct dentry *dentry); /* llite/llite_lib.c */ -extern struct super_operations ll_super_operations; extern struct super_operations lustre_super_operations; char *ll_read_opt(const char *opt, char *data); @@ -196,7 +195,6 @@ void ll_lli_init(struct ll_inode_info *lli); int ll_fill_super(struct super_block *sb, void *data, int silent); int lustre_fill_super(struct super_block *sb, void *data, int silent); void lustre_put_super(struct super_block *sb); -void ll_put_super(struct super_block *sb); struct inode *ll_inode_from_lock(struct ldlm_lock *lock); void ll_clear_inode(struct inode *inode); int ll_attr2inode(struct inode *inode, struct iattr *attr, int trunc); diff --git a/lustre/llite/llite_lib.c b/lustre/llite/llite_lib.c index 5812e16..2000356 100644 --- a/lustre/llite/llite_lib.c +++ b/lustre/llite/llite_lib.c @@ -38,7 +38,6 @@ kmem_cache_t *ll_file_data_slab; extern struct address_space_operations ll_aops; extern struct address_space_operations ll_dir_aops; -extern struct super_operations ll_super_operations; #ifndef log2 #define log2(n) ffz(~(n)) @@ -193,12 +192,14 @@ int lustre_common_fill_super(struct super_block *sb, char *mdc, char *osc) GOTO(out_root, err); } -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)) -#warning "Please fix this" -#else + /* making vm readahead 0 for 2.4.x. In the case of 2.6.x, + backing dev info assigned to inode mapping is used for + determining maximal readahead. */ +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0)) /* bug 2805 - set VM readahead to zero */ vm_max_readahead = vm_min_readahead = 0; #endif + sb->s_root = d_alloc_root(root); RETURN(err); @@ -362,19 +363,6 @@ out: RETURN(err); } /* ll_read_super */ -void ll_put_super(struct super_block *sb) -{ - ENTRY; - - CDEBUG(D_VFSTRACE, "VFS Op: sb %p\n", sb); - - lustre_common_put_super(sb); - - lustre_free_sbi(sb); - - EXIT; -} /* ll_put_super */ - int lustre_process_log(struct lustre_mount_data *lmd, char * profile, struct config_llog_instance *cfg, int allow_recov) { @@ -541,7 +529,7 @@ int lustre_fill_super(struct super_block *sb, void *data, int silent) struct config_llog_instance cfg; int len; - if (!lmd->lmd_mds) { + if (lmd->lmd_mds[0] == '\0') { CERROR("no mds name\n"); GOTO(out_free, err = -EINVAL); } @@ -883,10 +871,10 @@ int ll_setattr_raw(struct inode *inode, struct iattr *attr) (rc=ll_permission(inode,MAY_WRITE,NULL))!=0) RETURN(rc); } else { - /* from inode_change_ok() */ - if (current->fsuid != inode->i_uid && - !capable(CAP_FOWNER)) - RETURN(-EPERM); + /* from inode_change_ok() */ + if (current->fsuid != inode->i_uid && + !capable(CAP_FOWNER)) + RETURN(-EPERM); } } @@ -1116,6 +1104,13 @@ void ll_update_inode(struct inode *inode, struct mds_body *body, set_bit(LLI_F_HAVE_MDS_SIZE_LOCK, &lli->lli_flags); } +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0)) +static struct backing_dev_info ll_backing_dev_info = { + .ra_pages = 0, /* No readahead */ + .memory_backed = 0, /* Does contribute to dirty memory */ +}; +#endif + void ll_read_inode2(struct inode *inode, void *opaque) { struct lustre_md *md = opaque; @@ -1155,14 +1150,18 @@ void ll_read_inode2(struct inode *inode, void *opaque) EXIT; } else { inode->i_op = &ll_special_inode_operations; + #if (LINUX_VERSION_CODE > KERNEL_VERSION(2,5,0)) -#warning "need to fix this for 2.6 also" init_special_inode(inode, inode->i_mode, kdev_t_to_nr(inode->i_rdev)); + + /* initializing backing dev info. */ + inode->i_mapping->backing_dev_info = &ll_backing_dev_info; #else init_special_inode(inode, inode->i_mode, inode->i_rdev); - +#endif lli->ll_save_ifop = inode->i_fop; + if (S_ISCHR(inode->i_mode)) inode->i_fop = &ll_special_chr_inode_fops; else if (S_ISBLK(inode->i_mode)) @@ -1171,7 +1170,6 @@ void ll_read_inode2(struct inode *inode, void *opaque) inode->i_fop = &ll_special_fifo_inode_fops; else if (S_ISSOCK(inode->i_mode)) inode->i_fop = &ll_special_sock_inode_fops; -#endif EXIT; } } diff --git a/lustre/llite/llite_nfs.c b/lustre/llite/llite_nfs.c index f3b7fc3..93638fd 100644 --- a/lustre/llite/llite_nfs.c +++ b/lustre/llite/llite_nfs.c @@ -81,8 +81,8 @@ extern struct dentry_operations ll_d_ops; static struct dentry *ll_iget_for_nfs(struct super_block *sb, unsigned long ino, __u32 generation, umode_t mode) -{ - struct inode *inode; +{ + struct inode *inode; struct dentry *result; struct list_head *lp; diff --git a/lustre/llite/namei.c b/lustre/llite/namei.c index 8ad20e6..771a854 100644 --- a/lustre/llite/namei.c +++ b/lustre/llite/namei.c @@ -194,6 +194,7 @@ int ll_mdc_cancel_unused(struct lustre_handle *conn, struct inode *inode, { .name = {inode->i_ino, inode->i_generation} }; struct obd_device *obddev = class_conn2obd(conn); ENTRY; + RETURN(ldlm_cli_cancel_unused(obddev->obd_namespace, &res_id, flags, opaque)); } @@ -776,23 +777,23 @@ static int ll_rename_raw(struct nameidata *oldnd, struct nameidata *newnd) } struct inode_operations ll_dir_inode_operations = { - link_raw: ll_link_raw, - unlink_raw: ll_unlink_raw, - symlink_raw: ll_symlink_raw, - mkdir_raw: ll_mkdir_raw, - rmdir_raw: ll_rmdir_raw, - mknod_raw: ll_mknod_raw, - mknod: ll_mknod, - rename_raw: ll_rename_raw, - setattr: ll_setattr, - setattr_raw: ll_setattr_raw, + .link_raw = ll_link_raw, + .unlink_raw = ll_unlink_raw, + .symlink_raw = ll_symlink_raw, + .mkdir_raw = ll_mkdir_raw, + .rmdir_raw = ll_rmdir_raw, + .mknod_raw = ll_mknod_raw, + .mknod = ll_mknod, + .rename_raw = ll_rename_raw, + .setattr = ll_setattr, + .setattr_raw = ll_setattr_raw, #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)) - create_it: ll_create_it, - lookup_it: ll_lookup_it, - revalidate_it: ll_inode_revalidate_it, + .create_it = ll_create_it, + .lookup_it = ll_lookup_it, + .revalidate_it = ll_inode_revalidate_it, #else - lookup: ll_lookup_nd, - create: ll_create_nd, - getattr_it: ll_getattr, + .lookup = ll_lookup_nd, + .create = ll_create_nd, + .getattr_it = ll_getattr, #endif }; diff --git a/lustre/llite/rw24.c b/lustre/llite/rw24.c index 71e194d..8a3099f 100644 --- a/lustre/llite/rw24.c +++ b/lustre/llite/rw24.c @@ -177,12 +177,12 @@ static int ll_direct_IO_24(int rw, } struct address_space_operations ll_aops = { - readpage: ll_readpage, - direct_IO: ll_direct_IO_24, - writepage: ll_writepage_24, - prepare_write: ll_prepare_write, - commit_write: ll_commit_write, - removepage: ll_removepage, - sync_page: NULL, - bmap: NULL + .readpage = ll_readpage, + .direct_IO = ll_direct_IO_24, + .writepage = ll_writepage_24, + .prepare_write = ll_prepare_write, + .commit_write = ll_commit_write, + .removepage = ll_removepage, + .sync_page = NULL, + .bmap = NULL }; diff --git a/lustre/llite/rw26.c b/lustre/llite/rw26.c index d048848..b9193e8 100644 --- a/lustre/llite/rw26.c +++ b/lustre/llite/rw26.c @@ -95,15 +95,15 @@ out: } struct address_space_operations ll_aops = { - readpage: ll_readpage, -// readpages: ll_readpages, -// direct_IO: ll_direct_IO_26, - writepage: ll_writepage_26, - writepages: generic_writepages, - set_page_dirty: __set_page_dirty_nobuffers, - sync_page: NULL, - prepare_write: ll_prepare_write, - commit_write: ll_commit_write, - removepage: ll_removepage, - bmap: NULL + .readpage = ll_readpage, +// .readpages = ll_readpages, +// .direct_IO = ll_direct_IO_26, + .writepage = ll_writepage_26, + .writepages = generic_writepages, + .set_page_dirty = __set_page_dirty_nobuffers, + .sync_page = NULL, + .prepare_write = ll_prepare_write, + .commit_write = ll_commit_write, + .removepage = ll_removepage, + .bmap = NULL }; diff --git a/lustre/llite/special.c b/lustre/llite/special.c index 4a63218..5bf9ec7 100644 --- a/lustre/llite/special.c +++ b/lustre/llite/special.c @@ -191,6 +191,7 @@ static int ll_special_ioctl(struct inode *inode, struct file *filp, struct file_operations *sfops = filp->f_op; rc = (*pfop)->ioctl(inode, filp, cmd, arg); + /* sometimes, file_operations will be changed in ioctl */ save_fops(filp, inode, sfops); } @@ -319,61 +320,62 @@ static int ll_special_file_release(struct inode *inode, struct file *filp) } struct inode_operations ll_special_inode_operations = { - setattr_raw: ll_setattr_raw, - setattr: ll_setattr, + .setattr_raw = ll_setattr_raw, + .setattr = ll_setattr, #if (LINUX_VERSION_CODE > KERNEL_VERSION(2,5,0)) - getattr_it: ll_getattr, + .getattr_it = ll_getattr, #else - revalidate_it: ll_inode_revalidate_it, + .revalidate_it = ll_inode_revalidate_it, #endif }; struct file_operations ll_special_chr_inode_fops = { - owner: THIS_MODULE, - open: ll_special_open, + .owner = THIS_MODULE, + .open = ll_special_open, }; struct file_operations ll_special_blk_inode_fops = { - owner: THIS_MODULE, - read: ll_special_read, - write: ll_special_write, - ioctl: ll_special_ioctl, - open: ll_special_open, - release: ll_special_release, - mmap: ll_special_mmap, - llseek: ll_special_seek, - fsync: ll_special_fsync, + .owner = THIS_MODULE, + .read = ll_special_read, + .write = ll_special_write, + .ioctl = ll_special_ioctl, + .open = ll_special_open, + .release = ll_special_release, + .mmap = ll_special_mmap, + .llseek = ll_special_seek, + .fsync = ll_special_fsync, }; struct file_operations ll_special_fifo_inode_fops = { - owner: THIS_MODULE, - open: ll_special_open, + .owner = THIS_MODULE, + .open = ll_special_open, }; struct file_operations ll_special_sock_inode_fops = { - owner: THIS_MODULE, - open: ll_special_open + .owner = THIS_MODULE, + .open = ll_special_open }; struct file_operations ll_special_chr_file_fops = { - owner: THIS_MODULE, - llseek: ll_special_file_seek, - read: ll_special_file_read, - write: ll_special_file_write, - poll: ll_special_file_poll, - ioctl: ll_special_file_ioctl, - open: ll_special_file_open, - release: ll_special_file_release, - fasync: ll_special_file_fasync, + .owner = THIS_MODULE, + .llseek = ll_special_file_seek, + .read = ll_special_file_read, + .write = ll_special_file_write, + .poll = ll_special_file_poll, + .ioctl = ll_special_file_ioctl, + .open = ll_special_file_open, + .release = ll_special_file_release, + .fasync = ll_special_file_fasync, }; struct file_operations ll_special_fifo_file_fops = { - owner: THIS_MODULE, - llseek: ll_special_file_seek, - read: ll_special_file_read, - write: ll_special_file_write, - poll: ll_special_file_poll, - ioctl: ll_special_file_ioctl, - open: ll_special_file_open, - release: ll_special_file_release, + .owner = THIS_MODULE, + .llseek = ll_special_file_seek, + .read = ll_special_file_read, + .write = ll_special_file_write, + .poll = ll_special_file_poll, + .ioctl = ll_special_file_ioctl, + .open = ll_special_file_open, + .release = ll_special_file_release, }; + diff --git a/lustre/llite/super.c b/lustre/llite/super.c index e248be7..133407a 100644 --- a/lustre/llite/super.c +++ b/lustre/llite/super.c @@ -60,44 +60,31 @@ static struct super_block *lustre_read_super(struct super_block *sb, RETURN(sb); } -/* exported operations */ -struct super_operations ll_super_operations = -{ - read_inode2: ll_read_inode2, - clear_inode: ll_clear_inode, - // delete_inode: ll_delete_inode, - put_super: ll_put_super, - statfs: ll_statfs, - umount_begin: ll_umount_begin, - fh_to_dentry: ll_fh_to_dentry, - dentry_to_fh: ll_dentry_to_fh -}; - static struct file_system_type lustre_lite_fs_type = { - name: "lustre_lite", - fs_flags: FS_NFSEXP_FSID, - read_super: ll_read_super, - owner: THIS_MODULE, + .owner = THIS_MODULE, + .name = "lustre_lite", + .fs_flags = FS_NFSEXP_FSID, + .read_super = ll_read_super, }; /* exported operations */ struct super_operations lustre_super_operations = { - read_inode2: ll_read_inode2, - clear_inode: ll_clear_inode, - // delete_inode: ll_delete_inode, - put_super: lustre_put_super, - statfs: ll_statfs, - umount_begin: ll_umount_begin, - fh_to_dentry: ll_fh_to_dentry, - dentry_to_fh: ll_dentry_to_fh + .read_inode2 = ll_read_inode2, + .clear_inode = ll_clear_inode, +// .delete_inode = ll_delete_inode, + .put_super = lustre_put_super, + .statfs = ll_statfs, + .umount_begin = ll_umount_begin, + .fh_to_dentry = ll_fh_to_dentry, + .dentry_to_fh = ll_dentry_to_fh }; static struct file_system_type lustre_fs_type = { - name: "lustre", - fs_flags: FS_NFSEXP_FSID, - read_super: lustre_read_super, - owner: THIS_MODULE, + .owner = THIS_MODULE, + .name = "lustre", + .fs_flags = FS_NFSEXP_FSID, + .read_super = lustre_read_super, }; static int __init init_lustre_lite(void) diff --git a/lustre/llite/super25.c b/lustre/llite/super25.c index 526776b..1f5425e 100644 --- a/lustre/llite/super25.c +++ b/lustre/llite/super25.c @@ -100,27 +100,29 @@ void ll_destroy_inodecache(void) /* exported operations */ struct super_operations lustre_super_operations = { - alloc_inode: ll_alloc_inode, - destroy_inode: ll_destroy_inode, - clear_inode: ll_clear_inode, - put_super: ll_put_super, - statfs: ll_statfs, - umount_begin: ll_umount_begin + .alloc_inode = ll_alloc_inode, + .destroy_inode = ll_destroy_inode, + .clear_inode = ll_clear_inode, + .put_super = lustre_put_super, + .statfs = ll_statfs, + .umount_begin = ll_umount_begin }; struct file_system_type lustre_lite_fs_type = { - .owner = THIS_MODULE, - .name = "lustre_lite", - .get_sb = ll_get_sb, - .kill_sb = kill_anon_super, + .owner = THIS_MODULE, + .name = "lustre_lite", + .get_sb = ll_get_sb, + .kill_sb = kill_anon_super, + .fs_flags = FS_BINARY_MOUNTDATA, }; struct file_system_type lustre_fs_type = { - .owner = THIS_MODULE, - .name = "lustre", - .get_sb = lustre_get_sb, - .kill_sb = kill_anon_super, + .owner = THIS_MODULE, + .name = "lustre", + .get_sb = lustre_get_sb, + .kill_sb = kill_anon_super, + .fs_flags = FS_BINARY_MOUNTDATA, }; static int __init init_lustre_lite(void) diff --git a/lustre/llite/symlink.c b/lustre/llite/symlink.c index 3056bf5..e401266 100644 --- a/lustre/llite/symlink.c +++ b/lustre/llite/symlink.c @@ -148,13 +148,13 @@ static int ll_follow_link(struct dentry *dentry, struct nameidata *nd) } struct inode_operations ll_fast_symlink_inode_operations = { - readlink: ll_readlink, - setattr: ll_setattr, - setattr_raw: ll_setattr_raw, - follow_link: ll_follow_link, + .readlink = ll_readlink, + .setattr = ll_setattr, + .setattr_raw = ll_setattr_raw, + .follow_link = ll_follow_link, #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)) - revalidate_it: ll_inode_revalidate_it + .revalidate_it = ll_inode_revalidate_it #else - getattr_it: ll_getattr + .getattr_it = ll_getattr #endif }; diff --git a/lustre/lov/.cvsignore b/lustre/lov/.cvsignore index e69dc6d..5ed596b 100644 --- a/lustre/lov/.cvsignore +++ b/lustre/lov/.cvsignore @@ -1,4 +1,10 @@ .deps Makefile -Makefile.in .*.cmd +autoMakefile.in +autoMakefile +*.ko +*.mod.c +.*.flags +.tmp_versions +.depend diff --git a/lustre/lov/Makefile.am b/lustre/lov/Makefile.am deleted file mode 100644 index 468d064..0000000 --- a/lustre/lov/Makefile.am +++ /dev/null @@ -1,19 +0,0 @@ -# Copyright (C) 2002 Cluster File Systems, Inc. -# -# This code is issued under the GNU General Public License. -# See the file COPYING in this distribution - -DEFS= - -if LIBLUSTRE -noinst_LIBRARIES = liblov.a -liblov_a_SOURCES = lov_log.c lov_obd.c lov_pack.c lov_internal.h -liblov_a_CFLAGS = -fPIC -else -MODULE = lov -modulefs_DATA = lov.o -EXTRA_PROGRAMS = lov -lov_SOURCES = lov_log.c lov_obd.c lov_pack.c lproc_lov.c lov_internal.h -endif - -include $(top_srcdir)/Rules diff --git a/lustre/lov/lov_obd.c b/lustre/lov/lov_obd.c index cd1ca69..82018b1 100644 --- a/lustre/lov/lov_obd.c +++ b/lustre/lov/lov_obd.c @@ -147,7 +147,7 @@ static int lov_connect(struct lustre_handle *conn, struct obd_device *obd, LASSERT( tgt_uuid != NULL); - tgt_obd = class_find_client_obd(tgt_uuid, LUSTRE_OSC_NAME, + tgt_obd = class_find_client_obd(tgt_uuid, LUSTRE_OSC_NAME, &obd->obd_uuid); if (!tgt_obd) { @@ -470,7 +470,6 @@ static obd_size lov_stripe_size(struct lov_stripe_md *lsm, obd_size ost_size, /* do_div(a, b) returns a % b, and a = a / b */ stripe_size = do_div(ost_size, ssize); - if (stripe_size) lov_size = ost_size * swidth + stripeno * ssize + stripe_size; else @@ -544,7 +543,7 @@ static int lov_clear_orphans(struct obd_export *export, struct obdo *src_oa, struct lov_stripe_md *obj_mdp = &obj_md; int err; - /* if called for a specific target, we don't + /* if called for a specific target, we don't care if it is not active. */ if (lov->tgts[i].active == 0 && ost_uuid == NULL) { CDEBUG(D_HA, "lov idx %d inactive\n", i); @@ -983,7 +982,7 @@ static int lov_getattr(struct obd_export *exp, struct obdo *oa, RETURN(rc); } -static int lov_getattr_interpret(struct ptlrpc_request_set *rqset, void *data, +static int lov_getattr_interpret(struct ptlrpc_request_set *rqset, void *data, int rc) { struct lov_getattr_async_args *aa = data; @@ -1571,8 +1570,8 @@ static int lov_brw(int cmd, struct obd_export *exp, struct obdo *src_oa, memcpy(tmp_oa, src_oa, sizeof(*tmp_oa)); tmp_oa->o_id = si->lsm.lsm_object_id; - rc = obd_brw(cmd, lov->tgts[si->ost_idx].ltd_exp, - tmp_oa, &si->lsm, si->bufct, + rc = obd_brw(cmd, lov->tgts[si->ost_idx].ltd_exp, + tmp_oa, &si->lsm, si->bufct, &ioarr[shift], oti); if (rc) GOTO(out_ioarr, rc); @@ -1781,7 +1780,7 @@ static int lov_ap_refresh_count(void *data, int cmd) if (IS_ERR(lap)) return -EINVAL; - return lap->lap_caller_ops->ap_refresh_count(lap->lap_caller_data, + return lap->lap_caller_ops->ap_refresh_count(lap->lap_caller_data, cmd); } static void lov_ap_fill_obdo(void *data, int cmd, struct obdo *oa) @@ -1817,7 +1816,7 @@ static struct obd_async_page_ops lov_async_page_ops = { int lov_prep_async_page(struct obd_export *exp, struct lov_stripe_md *lsm, struct lov_oinfo *loi, struct page *page, - obd_off offset, struct obd_async_page_ops *ops, + obd_off offset, struct obd_async_page_ops *ops, void *data, void **res) { struct lov_obd *lov = &exp->exp_obd->u.lov; @@ -1842,7 +1841,7 @@ int lov_prep_async_page(struct obd_export *exp, struct lov_stripe_md *lsm, lov_stripe_offset(lsm, offset, lap->lap_stripe, &lap->lap_sub_offset); loi = &lsm->lsm_oinfo[lap->lap_stripe]; - /* so the callback doesn't need the lsm */ + /* so the callback doesn't need the lsm */ lap->lap_loi_id = loi->loi_id; rc = obd_prep_async_page(lov->tgts[loi->loi_ost_idx].ltd_exp, @@ -1954,7 +1953,7 @@ static int lov_trigger_group_io(struct obd_export *exp, for (i = 0, loi = lsm->lsm_oinfo; i < lsm->lsm_stripe_count; i++, loi++) { - err = obd_trigger_group_io(lov->tgts[loi->loi_ost_idx].ltd_exp, + err = obd_trigger_group_io(lov->tgts[loi->loi_ost_idx].ltd_exp, lsm, loi, oig); if (rc == 0 && err != 0) rc = err; @@ -1980,10 +1979,10 @@ static int lov_teardown_async_page(struct obd_export *exp, RETURN(PTR_ERR(lap)); loi = &lsm->lsm_oinfo[lap->lap_stripe]; - rc = obd_teardown_async_page(lov->tgts[loi->loi_ost_idx].ltd_exp, + rc = obd_teardown_async_page(lov->tgts[loi->loi_ost_idx].ltd_exp, lsm, loi, lap->lap_sub_cookie); if (rc) { - CERROR("unable to teardown sub cookie %p: %d\n", + CERROR("unable to teardown sub cookie %p: %d\n", lap->lap_sub_cookie, rc); RETURN(rc); } @@ -2556,7 +2555,7 @@ static int lov_get_info(struct obd_export *exp, __u32 keylen, for (i = 0, loi = data->lsm->lsm_oinfo; i < data->lsm->lsm_stripe_count; i++, loi++) { - if (lov->tgts[loi->loi_ost_idx].ltd_exp == + if (lov->tgts[loi->loi_ost_idx].ltd_exp == data->lock->l_conn_export) { *stripe = i; RETURN(0); @@ -2592,7 +2591,7 @@ static int lov_get_info(struct obd_export *exp, __u32 keylen, } else if (keylen >= strlen("lovdesc") && strcmp(key, "lovdesc") == 0) { struct lov_desc *desc_ret = val; *desc_ret = lov->desc; - + RETURN(0); } @@ -2639,7 +2638,7 @@ static int lov_set_info(struct obd_export *exp, obd_count keylen, for (i = 0; i < lov->desc.ld_tgt_count; i++) { int er; - if (val && !obd_uuid_equals(val, &lov->tgts[i].uuid)) + if (val && !obd_uuid_equals(val, &lov->tgts[i].uuid)) continue; if (!val && !lov->tgts[i].active) @@ -2678,6 +2677,7 @@ __u64 lov_merge_size(struct lov_stripe_md *lsm, int kms) if (lov_size > size) size = lov_size; } + return size; } EXPORT_SYMBOL(lov_merge_size); @@ -2823,40 +2823,40 @@ void lov_increase_kms(struct obd_export *exp, struct lov_stripe_md *lsm, EXPORT_SYMBOL(lov_increase_kms); struct obd_ops lov_obd_ops = { - o_owner: THIS_MODULE, - o_setup: lov_setup, - o_cleanup: lov_cleanup, - o_connect: lov_connect, - o_disconnect: lov_disconnect, - o_statfs: lov_statfs, - o_packmd: lov_packmd, - o_unpackmd: lov_unpackmd, - o_create: lov_create, - o_destroy: lov_destroy, - o_getattr: lov_getattr, - o_getattr_async: lov_getattr_async, - o_setattr: lov_setattr, - o_brw: lov_brw, - o_brw_async: lov_brw_async, - .o_prep_async_page = lov_prep_async_page, - .o_queue_async_io = lov_queue_async_io, - .o_set_async_flags = lov_set_async_flags, - .o_queue_group_io = lov_queue_group_io, - .o_trigger_group_io = lov_trigger_group_io, - .o_teardown_async_page lov_teardown_async_page, - o_punch: lov_punch, - o_sync: lov_sync, - o_enqueue: lov_enqueue, - o_match: lov_match, - o_change_cbdata: lov_change_cbdata, - o_cancel: lov_cancel, - o_cancel_unused: lov_cancel_unused, - o_iocontrol: lov_iocontrol, - o_get_info: lov_get_info, - o_set_info: lov_set_info, - o_llog_init: lov_llog_init, - o_llog_finish: lov_llog_finish, - o_notify: lov_notify, + .o_owner = THIS_MODULE, + .o_setup = lov_setup, + .o_cleanup = lov_cleanup, + .o_connect = lov_connect, + .o_disconnect = lov_disconnect, + .o_statfs = lov_statfs, + .o_packmd = lov_packmd, + .o_unpackmd = lov_unpackmd, + .o_create = lov_create, + .o_destroy = lov_destroy, + .o_getattr = lov_getattr, + .o_getattr_async = lov_getattr_async, + .o_setattr = lov_setattr, + .o_brw = lov_brw, + .o_brw_async = lov_brw_async, + .o_prep_async_page = lov_prep_async_page, + .o_queue_async_io = lov_queue_async_io, + .o_set_async_flags = lov_set_async_flags, + .o_queue_group_io = lov_queue_group_io, + .o_trigger_group_io = lov_trigger_group_io, + .o_teardown_async_page = lov_teardown_async_page, + .o_punch = lov_punch, + .o_sync = lov_sync, + .o_enqueue = lov_enqueue, + .o_match = lov_match, + .o_change_cbdata = lov_change_cbdata, + .o_cancel = lov_cancel, + .o_cancel_unused = lov_cancel_unused, + .o_iocontrol = lov_iocontrol, + .o_get_info = lov_get_info, + .o_set_info = lov_set_info, + .o_llog_init = lov_llog_init, + .o_llog_finish = lov_llog_finish, + .o_notify = lov_notify, }; int __init lov_init(void) diff --git a/lustre/lov/lov_pack.c b/lustre/lov/lov_pack.c index 608787c..419f3ba 100644 --- a/lustre/lov/lov_pack.c +++ b/lustre/lov/lov_pack.c @@ -516,25 +516,26 @@ int lov_setea(struct obd_export *exp, struct lov_stripe_md **lsmp, for (i = 0; i < lump->lmm_stripe_count; i++) { __u32 len = sizeof(last_id); oexp = lov->tgts[lump->lmm_objects[i].l_ost_idx].ltd_exp; - rc = obd_get_info(oexp, strlen("last_id"), "last_id", - &len, &last_id); + rc = obd_get_info(oexp, strlen("last_id"), "last_id", + &len, &last_id); if (rc) RETURN(rc); - if (last_id < lump->lmm_objects[i].l_object_id) { + if (lump->lmm_objects[i].l_object_id > last_id) { CERROR("Setting EA for object > than last id on " - "ost idx %d "LPD64" > "LPD64" \n", - lump->lmm_objects[i].l_ost_idx, - lump->lmm_objects[i].l_object_id, last_id); + "ost idx %d "LPD64" > "LPD64" \n", + lump->lmm_objects[i].l_ost_idx, + lump->lmm_objects[i].l_object_id, last_id); RETURN(-EINVAL); } } rc = lov_setstripe(exp, lsmp, lump); - if (rc) + if (rc) RETURN(rc); + for (i = 0; i < lump->lmm_stripe_count; i++) { - (*lsmp)->lsm_oinfo[i].loi_ost_idx = - lump->lmm_objects[i].l_ost_idx; + (*lsmp)->lsm_oinfo[i].loi_ost_idx = + lump->lmm_objects[i].l_ost_idx; (*lsmp)->lsm_oinfo[i].loi_id = lump->lmm_objects[i].l_object_id; (*lsmp)->lsm_oinfo[i].loi_gr = lump->lmm_objects[i].l_object_gr; } diff --git a/lustre/lvfs/.cvsignore b/lustre/lvfs/.cvsignore index f686b81..ffeec5c 100644 --- a/lustre/lvfs/.cvsignore +++ b/lustre/lvfs/.cvsignore @@ -3,8 +3,15 @@ config.log config.status configure Makefile -Makefile.in .deps TAGS .*.cmd -fsfilt_extN.c +fsfilt-*.c +autoMakefile.in +autoMakefile +*.ko +*.mod.c +.*.flags +.tmp_versions +.depend +sources diff --git a/lustre/lvfs/Makefile.am b/lustre/lvfs/Makefile.am deleted file mode 100644 index 9e91de3..0000000 --- a/lustre/lvfs/Makefile.am +++ /dev/null @@ -1,52 +0,0 @@ -# Copyright (C) 2001 Cluster File Systems, Inc. -# -# This code is issued under the GNU General Public License. -# See the file COPYING in this distribution -DEFS= - -if LIBLUSTRE -noinst_LIBRARIES = liblvfs.a -liblvfs_a_SOURCES = lvfs_userfs.c -liblvfs_a_CFLAGS = -fPIC - -#if MYSQL -#liblvfs_a_SOURCES += lvfs_user_mysql.c -#endif - -else - -MODULE = lvfs - -if EXTN -FSMOD = fsfilt_extN -else -FSMOD = fsfilt_ext3 -endif - -modulefs_DATA = lvfs.o $(FSMOD).o - -EXTRA_PROGRAMS = lvfs $(FSMOD) -lvfs_SOURCES = lvfs_common.c lvfs_linux.c fsfilt.c lvfs_internal.h -if EXTN -fsfilt_extN_SOURCES = fsfilt_extN.c lvfs_internal.h -else -fsfilt_ext3_SOURCES = fsfilt_ext3.c lvfs_internal.h -endif -endif - -fsfilt_extN.c: fsfilt_ext3.c - sed -e "s/EXT3/EXTN/g" -e "s/ext3/extN/g" $< > $@ - -include $(top_srcdir)/Rules - -if LINUX25 -# workaround for fsfilt_ext3 -$(FSMOD).o: $(FSMOD).c - $(COMPILE) -UKBUILD_MODNAME -DKBUILD_MODNAME=$(FSMOD) -c -o $(FSMOD)_tmp.o $< - rm -f $(FSMOD)_tmp.c - $(LINUX)/scripts/modpost $(LINUX)/vmlinux $(FSMOD)_tmp.o - $(COMPILE) -UKBUILD_MODNAME -UKBUILD_BASENAME -DKBUILD_BASENAME=$(FSMOD) \ - -c $(FSMOD)_tmp.mod.c - $(LD) -m "`$(LD) --help | awk '/supported emulations/ {print $$4}'`" -r \ - -o $(FSMOD).o $(FSMOD)_tmp.o $(FSMOD)_tmp.mod.o -endif diff --git a/lustre/lvfs/fsfilt_ext3.c b/lustre/lvfs/fsfilt_ext3.c index 25eb31c..811d50f 100644 --- a/lustre/lvfs/fsfilt_ext3.c +++ b/lustre/lvfs/fsfilt_ext3.c @@ -35,12 +35,12 @@ #include #include #include -/* XXX ugh */ #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)) - #include +#include #else - #include +#include #endif + #include #include #include @@ -304,15 +304,17 @@ static int fsfilt_ext3_commit(struct inode *inode, void *h, int force_sync) rc = journal_stop(handle); unlock_kernel(); - // LASSERT(current->journal_info == NULL); return rc; } static int fsfilt_ext3_commit_async(struct inode *inode, void *h, - void **wait_handle) + void **wait_handle) { + unsigned long tid; transaction_t *transaction; - unsigned long tid, rtid; +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) + unsigned long rtid; +#endif handle_t *handle = h; journal_t *journal; int rc; @@ -888,27 +890,27 @@ static int fsfilt_ext3_get_op_len(int op, struct fsfilt_objinfo *fso, int logs) } static struct fsfilt_operations fsfilt_ext3_ops = { - fs_type: "ext3", - fs_owner: THIS_MODULE, - fs_start: fsfilt_ext3_start, - fs_brw_start: fsfilt_ext3_brw_start, - fs_commit: fsfilt_ext3_commit, - fs_commit_async: fsfilt_ext3_commit_async, - fs_commit_wait: fsfilt_ext3_commit_wait, - fs_setattr: fsfilt_ext3_setattr, - fs_iocontrol: fsfilt_ext3_iocontrol, - fs_set_md: fsfilt_ext3_set_md, - fs_get_md: fsfilt_ext3_get_md, - fs_readpage: fsfilt_ext3_readpage, - fs_add_journal_cb: fsfilt_ext3_add_journal_cb, - fs_statfs: fsfilt_ext3_statfs, - fs_sync: fsfilt_ext3_sync, - fs_map_inode_page: fsfilt_ext3_map_inode_page, - fs_prep_san_write: fsfilt_ext3_prep_san_write, - fs_write_record: fsfilt_ext3_write_record, - fs_read_record: fsfilt_ext3_read_record, - fs_setup: fsfilt_ext3_setup, - fs_get_op_len: fsfilt_ext3_get_op_len, + .fs_type = "ext3", + .fs_owner = THIS_MODULE, + .fs_start = fsfilt_ext3_start, + .fs_brw_start = fsfilt_ext3_brw_start, + .fs_commit = fsfilt_ext3_commit, + .fs_commit_async = fsfilt_ext3_commit_async, + .fs_commit_wait = fsfilt_ext3_commit_wait, + .fs_setattr = fsfilt_ext3_setattr, + .fs_iocontrol = fsfilt_ext3_iocontrol, + .fs_set_md = fsfilt_ext3_set_md, + .fs_get_md = fsfilt_ext3_get_md, + .fs_readpage = fsfilt_ext3_readpage, + .fs_add_journal_cb = fsfilt_ext3_add_journal_cb, + .fs_statfs = fsfilt_ext3_statfs, + .fs_sync = fsfilt_ext3_sync, + .fs_map_inode_page = fsfilt_ext3_map_inode_page, + .fs_prep_san_write = fsfilt_ext3_prep_san_write, + .fs_write_record = fsfilt_ext3_write_record, + .fs_read_record = fsfilt_ext3_read_record, + .fs_setup = fsfilt_ext3_setup, + .fs_get_op_len = fsfilt_ext3_get_op_len, }; static int __init fsfilt_ext3_init(void) diff --git a/lustre/lvfs/fsfilt_reiserfs.c b/lustre/lvfs/fsfilt_reiserfs.c index b38ba4a..861b663 100644 --- a/lustre/lvfs/fsfilt_reiserfs.c +++ b/lustre/lvfs/fsfilt_reiserfs.c @@ -213,19 +213,19 @@ static int fsfilt_reiserfs_get_op_len(int op, struct fsfilt_objinfo *fso, return 0; } static struct fsfilt_operations fsfilt_reiserfs_ops = { - fs_type: "reiserfs", - fs_owner: THIS_MODULE, - fs_start: fsfilt_reiserfs_start, - fs_brw_start: fsfilt_reiserfs_brw_start, - fs_commit: fsfilt_reiserfs_commit, - fs_setattr: fsfilt_reiserfs_setattr, - fs_set_md: fsfilt_reiserfs_set_md, - fs_get_md: fsfilt_reiserfs_get_md, - fs_readpage: fsfilt_reiserfs_readpage, - fs_add_journal_cb: fsfilt_reiserfs_add_journal_cb, - fs_statfs: fsfilt_reiserfs_statfs, - fs_sync: fsfilt_reiserfs_sync, - fs_get_op_len: fsfilt_reiserfs_get_op_len, + .fs_type = "reiserfs", + .fs_owner = THIS_MODULE, + .fs_start = fsfilt_reiserfs_start, + .fs_brw_start = fsfilt_reiserfs_brw_start, + .fs_commit = fsfilt_reiserfs_commit, + .fs_setattr = fsfilt_reiserfs_setattr, + .fs_set_md = fsfilt_reiserfs_set_md, + .fs_get_md = fsfilt_reiserfs_get_md, + .fs_readpage = fsfilt_reiserfs_readpage, + .fs_add_journal_cb = fsfilt_reiserfs_add_journal_cb, + .fs_statfs = fsfilt_reiserfs_statfs, + .fs_sync = fsfilt_reiserfs_sync, + .fs_get_op_len = fsfilt_reiserfs_get_op_len, }; static int __init fsfilt_reiserfs_init(void) diff --git a/lustre/mdc/.cvsignore b/lustre/mdc/.cvsignore index 49c6100..5d26f00 100644 --- a/lustre/mdc/.cvsignore +++ b/lustre/mdc/.cvsignore @@ -3,7 +3,13 @@ config.log config.status configure Makefile -Makefile.in .deps TAGS .*.cmd +autoMakefile.in +autoMakefile +*.ko +*.mod.c +.*.flags +.tmp_versions +.depend diff --git a/lustre/mdc/Makefile.am b/lustre/mdc/Makefile.am deleted file mode 100644 index 0200532..0000000 --- a/lustre/mdc/Makefile.am +++ /dev/null @@ -1,20 +0,0 @@ -# Copyright (C) 2001 Cluster File Systems, Inc. -# -# This code is issued under the GNU General Public License. -# See the file COPYING in this distribution - -DEFS= - -if LIBLUSTRE -noinst_LIBRARIES = libmdc.a -libmdc_a_SOURCES = mdc_request.c mdc_reint.c mdc_lib.c mdc_internal.h mdc_locks.c -libmdc_a_CFLAGS = -fPIC -else -MODULE = mdc -modulefs_DATA = mdc.o -EXTRA_PROGRAMS = mdc - -mdc_SOURCES = mdc_request.c mdc_reint.c lproc_mdc.c mdc_lib.c mdc_locks.c mdc_internal.h -endif - -include $(top_srcdir)/Rules diff --git a/lustre/mdc/mdc_locks.c b/lustre/mdc/mdc_locks.c index 7b1aa8b..2f9c27b 100644 --- a/lustre/mdc/mdc_locks.c +++ b/lustre/mdc/mdc_locks.c @@ -166,6 +166,7 @@ int mdc_change_cbdata(struct obd_export *exp, struct ll_fid *fid, ldlm_change_cbdata(class_exp2obd(exp)->obd_namespace, &res_id, it, data); + EXIT; return 0; } diff --git a/lustre/mdc/mdc_request.c b/lustre/mdc/mdc_request.c index a524061..afa8ec0 100644 --- a/lustre/mdc/mdc_request.c +++ b/lustre/mdc/mdc_request.c @@ -497,11 +497,10 @@ int mdc_close(struct obd_export *exp, struct obdo *obdo, rc = l_wait_event(req->rq_reply_waitq, mdc_close_check_reply(req), &lwi); if (req->rq_repmsg == NULL) { - CDEBUG(D_HA, "request failed to send: %p, %d\n", req, + CDEBUG(D_HA, "request failed to send: %p, %d\n", req, req->rq_status); rc = req->rq_status; } else if (rc == 0) { - LASSERTF(req->rq_repmsg != NULL, "req = %p", req); rc = req->rq_repmsg->status; if (req->rq_repmsg->type == PTL_RPC_MSG_ERR) { DEBUG_REQ(D_ERROR, req, "type == PTL_RPC_MSG_ERR, err " @@ -619,9 +618,15 @@ static int mdc_iocontrol(unsigned int cmd, struct obd_export *exp, int len, struct llog_ctxt *ctxt; int rc; ENTRY; - - MOD_INC_USE_COUNT; +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)) + MOD_INC_USE_COUNT; +#else + if (!try_module_get(THIS_MODULE)) { + CERROR("Can't get module. Is it alive?"); + return -EINVAL; + } +#endif switch (cmd) { case OBD_IOC_CLIENT_RECOVER: rc = ptlrpc_recover_import(imp, data->ioc_inlbuf1); @@ -646,11 +651,16 @@ static int mdc_iocontrol(unsigned int cmd, struct obd_export *exp, int len, } #endif default: - CERROR("osc_ioctl(): unrecognised ioctl %#x\n", cmd); + CERROR("mdc_ioctl(): unrecognised ioctl %#x\n", cmd); GOTO(out, rc = -ENOTTY); } out: +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)) MOD_DEC_USE_COUNT; +#else + module_put(THIS_MODULE); +#endif + return rc; } @@ -836,13 +846,16 @@ static int mdc_import_event(struct obd_device *obd, case IMP_EVENT_DISCON: { break; } + case IMP_EVENT_INACTIVE: { + if (obd->obd_observer) + rc = obd_notify(obd->obd_observer, obd, 0); + break; + } case IMP_EVENT_INVALIDATE: { struct ldlm_namespace *ns = obd->obd_namespace; ldlm_namespace_cleanup(ns, LDLM_FL_LOCAL_ONLY); - if (obd->obd_observer) - rc = obd_notify(obd->obd_observer, obd, 0); break; } case IMP_EVENT_ACTIVE: { @@ -985,20 +998,20 @@ static int mdc_llog_finish(struct obd_device *obd, int count) } struct obd_ops mdc_obd_ops = { - o_owner: THIS_MODULE, - o_setup: mdc_setup, - o_precleanup: mdc_precleanup, - o_cleanup: mdc_cleanup, - o_connect: client_connect_import, - o_disconnect: client_disconnect_export, - o_iocontrol: mdc_iocontrol, - o_set_info: mdc_set_info, - o_statfs: mdc_statfs, - o_pin: mdc_pin, - o_unpin: mdc_unpin, - o_import_event: mdc_import_event, - o_llog_init: mdc_llog_init, - o_llog_finish: mdc_llog_finish, + .o_owner = THIS_MODULE, + .o_setup = mdc_setup, + .o_precleanup = mdc_precleanup, + .o_cleanup = mdc_cleanup, + .o_connect = client_connect_import, + .o_disconnect = client_disconnect_export, + .o_iocontrol = mdc_iocontrol, + .o_set_info = mdc_set_info, + .o_statfs = mdc_statfs, + .o_pin = mdc_pin, + .o_unpin = mdc_unpin, + .o_import_event = mdc_import_event, + .o_llog_init = mdc_llog_init, + .o_llog_finish = mdc_llog_finish, }; int __init mdc_init(void) @@ -1009,12 +1022,12 @@ int __init mdc_init(void) LUSTRE_MDC_NAME); } +#ifdef __KERNEL__ static void /*__exit*/ mdc_exit(void) { class_unregister_type(LUSTRE_MDC_NAME); } -#ifdef __KERNEL__ MODULE_AUTHOR("Cluster File Systems, Inc. "); MODULE_DESCRIPTION("Lustre Metadata Client"); MODULE_LICENSE("GPL"); diff --git a/lustre/mds/.cvsignore b/lustre/mds/.cvsignore index 49c6100..d5103fa 100644 --- a/lustre/mds/.cvsignore +++ b/lustre/mds/.cvsignore @@ -3,7 +3,13 @@ config.log config.status configure Makefile -Makefile.in .deps TAGS .*.cmd +autoMakefile.in +autoMakefile +*.ko +*.mod.c +.*.o.flags +.tmp_versions +.depend diff --git a/lustre/mds/Makefile.am b/lustre/mds/Makefile.am deleted file mode 100644 index c526510..0000000 --- a/lustre/mds/Makefile.am +++ /dev/null @@ -1,13 +0,0 @@ -# Copyright (C) 2001 Cluster File Systems, Inc. -# -# This code is issued under the GNU General Public License. -# See the file COPYING in this distribution - -DEFS= -MODULE = mds -modulefs_DATA = mds.o -EXTRA_PROGRAMS = mds -mds_SOURCES = mds_log.c mds_unlink_open.c mds_lov.c handler.c mds_reint.c mds_fs.c lproc_mds.c mds_open.c \ -mds_lib.c mds_internal.h - -include $(top_srcdir)/Rules diff --git a/lustre/mds/handler.c b/lustre/mds/handler.c index a9ccebd..3d9da59 100644 --- a/lustre/mds/handler.c +++ b/lustre/mds/handler.c @@ -1849,7 +1849,7 @@ static int mdt_setup(struct obd_device *obd, obd_count len, void *buf) } rc = ptlrpc_start_n_threads(obd, mds->mds_setattr_service, - MDT_NUM_THREADS, "ll_mdt_attr"); + MDT_NUM_THREADS, "ll_mdt_attr"); if (rc) GOTO(err_thread2, rc); @@ -1917,28 +1917,28 @@ struct lvfs_callback_ops mds_lvfs_ops = { /* use obd ops to offer management infrastructure */ static struct obd_ops mds_obd_ops = { - o_owner: THIS_MODULE, - o_connect: mds_connect, - o_init_export: mds_init_export, - o_destroy_export: mds_destroy_export, - o_disconnect: mds_disconnect, - o_setup: mds_setup, - o_precleanup: mds_precleanup, - o_cleanup: mds_cleanup, - o_postrecov: mds_postrecov, - o_statfs: mds_obd_statfs, - o_iocontrol: mds_iocontrol, - o_create: mds_obd_create, - o_destroy: mds_obd_destroy, - o_llog_init: mds_llog_init, - o_llog_finish: mds_llog_finish, - o_notify: mds_notify, + .o_owner = THIS_MODULE, + .o_connect = mds_connect, + .o_init_export = mds_init_export, + .o_destroy_export = mds_destroy_export, + .o_disconnect = mds_disconnect, + .o_setup = mds_setup, + .o_precleanup = mds_precleanup, + .o_cleanup = mds_cleanup, + .o_postrecov = mds_postrecov, + .o_statfs = mds_obd_statfs, + .o_iocontrol = mds_iocontrol, + .o_create = mds_obd_create, + .o_destroy = mds_obd_destroy, + .o_llog_init = mds_llog_init, + .o_llog_finish = mds_llog_finish, + .o_notify = mds_notify, }; static struct obd_ops mdt_obd_ops = { - o_owner: THIS_MODULE, - o_setup: mdt_setup, - o_cleanup: mdt_cleanup, + .o_owner = THIS_MODULE, + .o_setup = mdt_setup, + .o_cleanup = mdt_cleanup, }; static int __init mds_init(void) diff --git a/lustre/mds/mds_fs.c b/lustre/mds/mds_fs.c index c4d0d11..0c74ec0 100644 --- a/lustre/mds/mds_fs.c +++ b/lustre/mds/mds_fs.c @@ -95,7 +95,8 @@ int mds_client_add(struct obd_device *obd, struct mds_obd *mds, cl_idx, med->med_mcd->mcd_uuid); med->med_idx = cl_idx; - med->med_off = MDS_LR_CLIENT_START + (cl_idx * MDS_LR_CLIENT_SIZE); + med->med_off = le32_to_cpu(mds->mds_server_data->msd_client_start) + + (cl_idx * le16_to_cpu(mds->mds_server_data->msd_client_size)); if (new_client) { struct obd_run_ctxt saved; @@ -193,10 +194,10 @@ static int mds_read_last_rcvd(struct obd_device *obd, struct file *file) ENTRY; /* ensure padding in the struct is the correct size */ - LASSERT (offsetof(struct mds_server_data, msd_padding) + - sizeof(msd->msd_padding) == MDS_LR_SERVER_SIZE); - LASSERT (offsetof(struct mds_client_data, mcd_padding) + - sizeof(mcd->mcd_padding) == MDS_LR_CLIENT_SIZE); + LASSERT(offsetof(struct mds_server_data, msd_padding) + + sizeof(msd->msd_padding) == MDS_LR_SERVER_SIZE); + LASSERT(offsetof(struct mds_client_data, mcd_padding) + + sizeof(mcd->mcd_padding) == MDS_LR_CLIENT_SIZE); OBD_ALLOC_WAIT(msd, sizeof(*msd)); if (!msd) @@ -216,7 +217,7 @@ static int mds_read_last_rcvd(struct obd_device *obd, struct file *file) memcpy(msd->msd_uuid, obd->obd_uuid.uuid,sizeof(msd->msd_uuid)); msd->msd_last_transno = 0; - mount_count = msd->msd_mount_count = 0; + mount_count = msd->msd_mount_count = 0; msd->msd_server_size = cpu_to_le32(MDS_LR_SERVER_SIZE); msd->msd_client_start = cpu_to_le32(MDS_LR_CLIENT_START); msd->msd_client_size = cpu_to_le16(MDS_LR_CLIENT_SIZE); @@ -265,8 +266,9 @@ static int mds_read_last_rcvd(struct obd_device *obd, struct file *file) CDEBUG(D_INODE, "%s: last_rcvd size: %lu\n", obd->obd_name, last_rcvd_size); CDEBUG(D_INODE, "%s: last_rcvd clients: %lu\n", obd->obd_name, - last_rcvd_size <= MDS_LR_CLIENT_START ? 0 : - (last_rcvd_size - MDS_LR_CLIENT_START) / MDS_LR_CLIENT_SIZE); + last_rcvd_size <= le32_to_cpu(msd->msd_client_start) ? 0 : + (last_rcvd_size - le32_to_cpu(msd->msd_client_start)) / + le16_to_cpu(msd->msd_client_size)); /* When we do a clean MDS shutdown, we save the last_transno into * the header. If we find clients with higher last_transno values @@ -647,7 +649,7 @@ int mds_obd_destroy(struct obd_export *exp, struct obdo *oa, down(&parent_inode->i_sem); de = lookup_one_len(fidname, mds->mds_objects_dir, namelen); if (de == NULL || de->d_inode == NULL) { - CERROR("destroying non-existent object "LPU64" %s\n", + CERROR("destroying non-existent object "LPU64" %s\n", oa->o_id, fidname); GOTO(out_dput, rc = IS_ERR(de) ? PTR_ERR(de) : -ENOENT); } diff --git a/lustre/mds/mds_lov.c b/lustre/mds/mds_lov.c index c6b6839..2d0bed0 100644 --- a/lustre/mds/mds_lov.c +++ b/lustre/mds/mds_lov.c @@ -192,16 +192,14 @@ int mds_lov_connect(struct obd_device *obd, char * lov_name) mds->mds_osc_obd = class_name2obd(lov_name); if (!mds->mds_osc_obd) { - CERROR("MDS cannot locate LOV %s\n", - lov_name); + CERROR("MDS cannot locate LOV %s\n", lov_name); mds->mds_osc_obd = ERR_PTR(-ENOTCONN); RETURN(-ENOTCONN); } rc = obd_connect(&conn, mds->mds_osc_obd, &obd->obd_uuid); if (rc) { - CERROR("MDS cannot connect to LOV %s (%d)\n", - lov_name, rc); + CERROR("MDS cannot connect to LOV %s (%d)\n", lov_name, rc); mds->mds_osc_obd = ERR_PTR(rc); RETURN(rc); } @@ -571,8 +569,8 @@ int mds_convert_lov_ea(struct obd_device *obd, struct inode *inode, if (le32_to_cpu(lmm->lmm_magic) == LOV_MAGIC) RETURN(0); - CWARN("converting LOV EA on %lu/%u from V0 to V1\n", - inode->i_ino, inode->i_generation); + CDEBUG(D_INODE, "converting LOV EA on %lu/%u from V0 to V1\n", + inode->i_ino, inode->i_generation); rc = obd_unpackmd(obd->u.mds.mds_osc_exp, &lsm, lmm, lmm_size); if (rc < 0) GOTO(conv_end, rc); diff --git a/lustre/mds/mds_reint.c b/lustre/mds/mds_reint.c index c8e7763..8880a74 100644 --- a/lustre/mds/mds_reint.c +++ b/lustre/mds/mds_reint.c @@ -78,11 +78,10 @@ static void mds_cancel_cookies_cb(struct obd_device *obd, __u64 transno, rc); } else { ///* XXX 0 normally, SENDNOW for debug */); - ctxt = llog_get_context(obd, mlcd->mlcd_cookies[0].lgc_subsys + 1); - rc = llog_cancel(ctxt, lsm, - mlcd->mlcd_cookielen / - sizeof(*mlcd->mlcd_cookies), - mlcd->mlcd_cookies, OBD_LLOG_FL_SENDNOW); + ctxt = llog_get_context(obd,mlcd->mlcd_cookies[0].lgc_subsys+1); + rc = llog_cancel(ctxt, lsm, mlcd->mlcd_cookielen / + sizeof(*mlcd->mlcd_cookies), + mlcd->mlcd_cookies, OBD_LLOG_FL_SENDNOW); if (rc) CERROR("error cancelling %d log cookies: rc %d\n", (int)(mlcd->mlcd_cookielen / diff --git a/lustre/mgmt/.cvsignore b/lustre/mgmt/.cvsignore index 067f05c..c79cb94 100644 --- a/lustre/mgmt/.cvsignore +++ b/lustre/mgmt/.cvsignore @@ -3,7 +3,10 @@ config.log config.status configure Makefile -Makefile.in .deps tags TAGS +autoMakefile.in +autoMakefile +*.ko +*.mod.c diff --git a/lustre/mgmt/Makefile.am b/lustre/mgmt/Makefile.am deleted file mode 100644 index f7307c8..0000000 --- a/lustre/mgmt/Makefile.am +++ /dev/null @@ -1,11 +0,0 @@ -# Copyright (C) 2001 Cluster File Systems, Inc. -# -# This code is issued under the GNU General Public License. -# See the file COPYING in this distribution - -DEFS= - -modulefs_DATA = mgmt_svc.o mgmt_cli.o -EXTRA_PROGRAMS = mgmt_svc mgmt_cli - -include $(top_srcdir)/Rules diff --git a/lustre/mgmt/mgmt_cli.c b/lustre/mgmt/mgmt_cli.c index 5cbcfae..313a9d5 100644 --- a/lustre/mgmt/mgmt_cli.c +++ b/lustre/mgmt/mgmt_cli.c @@ -253,9 +253,9 @@ static int mgmtcli_cleanup(struct obd_device *obd, int flags) } static struct obd_ops mgmtcli_obd_ops = { - o_owner: THIS_MODULE, - o_setup: mgmtcli_setup, - o_cleanup: client_obd_cleanup + .o_owner = THIS_MODULE, + .o_setup = mgmtcli_setup, + .o_cleanup = client_obd_cleanup }; static int __init mgmtcli_init(void) diff --git a/lustre/mgmt/mgmt_svc.c b/lustre/mgmt/mgmt_svc.c index 8743e72..88fbf48 100644 --- a/lustre/mgmt/mgmt_svc.c +++ b/lustre/mgmt/mgmt_svc.c @@ -125,11 +125,11 @@ static int mgmt_cleanup(struct obd_device *obd, int flags) } static struct obd_ops mgmt_obd_ops = { - o_owner: THIS_MODULE, - o_setup: mgmt_setup, - o_cleanup: mgmt_cleanup, - o_connect: class_connect, - o_disconnect: class_disconnect + .o_owner = THIS_MODULE, + .o_setup = mgmt_setup, + .o_cleanup = mgmt_cleanup, + .o_connect = class_connect, + .o_disconnect = class_disconnect }; static int __init mgmt_init(void) diff --git a/lustre/missing b/lustre/missing deleted file mode 100755 index 6a37006..0000000 --- a/lustre/missing +++ /dev/null @@ -1,336 +0,0 @@ -#! /bin/sh -# Common stub for a few missing GNU programs while installing. -# Copyright (C) 1996, 1997, 1999, 2000, 2002 Free Software Foundation, Inc. -# Originally by Fran,cois Pinard , 1996. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -if test $# -eq 0; then - echo 1>&2 "Try \`$0 --help' for more information" - exit 1 -fi - -run=: - -# In the cases where this matters, `missing' is being run in the -# srcdir already. -if test -f configure.ac; then - configure_ac=configure.ac -else - configure_ac=configure.in -fi - -case "$1" in ---run) - # Try to run requested program, and just exit if it succeeds. - run= - shift - "$@" && exit 0 - ;; -esac - -# If it does not exist, or fails to run (possibly an outdated version), -# try to emulate it. -case "$1" in - - -h|--h|--he|--hel|--help) - echo "\ -$0 [OPTION]... PROGRAM [ARGUMENT]... - -Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an -error status if there is no known handling for PROGRAM. - -Options: - -h, --help display this help and exit - -v, --version output version information and exit - --run try to run the given command, and emulate it if it fails - -Supported PROGRAM values: - aclocal touch file \`aclocal.m4' - autoconf touch file \`configure' - autoheader touch file \`config.h.in' - automake touch all \`Makefile.in' files - bison create \`y.tab.[ch]', if possible, from existing .[ch] - flex create \`lex.yy.c', if possible, from existing .c - help2man touch the output file - lex create \`lex.yy.c', if possible, from existing .c - makeinfo touch the output file - tar try tar, gnutar, gtar, then tar without non-portable flags - yacc create \`y.tab.[ch]', if possible, from existing .[ch]" - ;; - - -v|--v|--ve|--ver|--vers|--versi|--versio|--version) - echo "missing 0.4 - GNU automake" - ;; - - -*) - echo 1>&2 "$0: Unknown \`$1' option" - echo 1>&2 "Try \`$0 --help' for more information" - exit 1 - ;; - - aclocal*) - if test -z "$run" && ($1 --version) > /dev/null 2>&1; then - # We have it, but it failed. - exit 1 - fi - - echo 1>&2 "\ -WARNING: \`$1' is missing on your system. You should only need it if - you modified \`acinclude.m4' or \`${configure_ac}'. You might want - to install the \`Automake' and \`Perl' packages. Grab them from - any GNU archive site." - touch aclocal.m4 - ;; - - autoconf) - if test -z "$run" && ($1 --version) > /dev/null 2>&1; then - # We have it, but it failed. - exit 1 - fi - - echo 1>&2 "\ -WARNING: \`$1' is missing on your system. You should only need it if - you modified \`${configure_ac}'. You might want to install the - \`Autoconf' and \`GNU m4' packages. Grab them from any GNU - archive site." - touch configure - ;; - - autoheader) - if test -z "$run" && ($1 --version) > /dev/null 2>&1; then - # We have it, but it failed. - exit 1 - fi - - echo 1>&2 "\ -WARNING: \`$1' is missing on your system. You should only need it if - you modified \`acconfig.h' or \`${configure_ac}'. You might want - to install the \`Autoconf' and \`GNU m4' packages. Grab them - from any GNU archive site." - files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}` - test -z "$files" && files="config.h" - touch_files= - for f in $files; do - case "$f" in - *:*) touch_files="$touch_files "`echo "$f" | - sed -e 's/^[^:]*://' -e 's/:.*//'`;; - *) touch_files="$touch_files $f.in";; - esac - done - touch $touch_files - ;; - - automake*) - if test -z "$run" && ($1 --version) > /dev/null 2>&1; then - # We have it, but it failed. - exit 1 - fi - - echo 1>&2 "\ -WARNING: \`$1' is missing on your system. You should only need it if - you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'. - You might want to install the \`Automake' and \`Perl' packages. - Grab them from any GNU archive site." - find . -type f -name Makefile.am -print | - sed 's/\.am$/.in/' | - while read f; do touch "$f"; done - ;; - - autom4te) - if test -z "$run" && ($1 --version) > /dev/null 2>&1; then - # We have it, but it failed. - exit 1 - fi - - echo 1>&2 "\ -WARNING: \`$1' is needed, and you do not seem to have it handy on your - system. You might have modified some files without having the - proper tools for further handling them. - You can get \`$1Help2man' as part of \`Autoconf' from any GNU - archive site." - - file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'` - test -z "$file" && file=`echo "$*" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'` - if test -f "$file"; then - touch $file - else - test -z "$file" || exec >$file - echo "#! /bin/sh" - echo "# Created by GNU Automake missing as a replacement of" - echo "# $ $@" - echo "exit 0" - chmod +x $file - exit 1 - fi - ;; - - bison|yacc) - echo 1>&2 "\ -WARNING: \`$1' is missing on your system. You should only need it if - you modified a \`.y' file. You may need the \`Bison' package - in order for those modifications to take effect. You can get - \`Bison' from any GNU archive site." - rm -f y.tab.c y.tab.h - if [ $# -ne 1 ]; then - eval LASTARG="\${$#}" - case "$LASTARG" in - *.y) - SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` - if [ -f "$SRCFILE" ]; then - cp "$SRCFILE" y.tab.c - fi - SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` - if [ -f "$SRCFILE" ]; then - cp "$SRCFILE" y.tab.h - fi - ;; - esac - fi - if [ ! -f y.tab.h ]; then - echo >y.tab.h - fi - if [ ! -f y.tab.c ]; then - echo 'main() { return 0; }' >y.tab.c - fi - ;; - - lex|flex) - echo 1>&2 "\ -WARNING: \`$1' is missing on your system. You should only need it if - you modified a \`.l' file. You may need the \`Flex' package - in order for those modifications to take effect. You can get - \`Flex' from any GNU archive site." - rm -f lex.yy.c - if [ $# -ne 1 ]; then - eval LASTARG="\${$#}" - case "$LASTARG" in - *.l) - SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` - if [ -f "$SRCFILE" ]; then - cp "$SRCFILE" lex.yy.c - fi - ;; - esac - fi - if [ ! -f lex.yy.c ]; then - echo 'main() { return 0; }' >lex.yy.c - fi - ;; - - help2man) - if test -z "$run" && ($1 --version) > /dev/null 2>&1; then - # We have it, but it failed. - exit 1 - fi - - echo 1>&2 "\ -WARNING: \`$1' is missing on your system. You should only need it if - you modified a dependency of a manual page. You may need the - \`Help2man' package in order for those modifications to take - effect. You can get \`Help2man' from any GNU archive site." - - file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` - if test -z "$file"; then - file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'` - fi - if [ -f "$file" ]; then - touch $file - else - test -z "$file" || exec >$file - echo ".ab help2man is required to generate this page" - exit 1 - fi - ;; - - makeinfo) - if test -z "$run" && (makeinfo --version) > /dev/null 2>&1; then - # We have makeinfo, but it failed. - exit 1 - fi - - echo 1>&2 "\ -WARNING: \`$1' is missing on your system. You should only need it if - you modified a \`.texi' or \`.texinfo' file, or any other file - indirectly affecting the aspect of the manual. The spurious - call might also be the consequence of using a buggy \`make' (AIX, - DU, IRIX). You might want to install the \`Texinfo' package or - the \`GNU make' package. Grab either from any GNU archive site." - file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` - if test -z "$file"; then - file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` - file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file` - fi - touch $file - ;; - - tar) - shift - if test -n "$run"; then - echo 1>&2 "ERROR: \`tar' requires --run" - exit 1 - fi - - # We have already tried tar in the generic part. - # Look for gnutar/gtar before invocation to avoid ugly error - # messages. - if (gnutar --version > /dev/null 2>&1); then - gnutar "$@" && exit 0 - fi - if (gtar --version > /dev/null 2>&1); then - gtar "$@" && exit 0 - fi - firstarg="$1" - if shift; then - case "$firstarg" in - *o*) - firstarg=`echo "$firstarg" | sed s/o//` - tar "$firstarg" "$@" && exit 0 - ;; - esac - case "$firstarg" in - *h*) - firstarg=`echo "$firstarg" | sed s/h//` - tar "$firstarg" "$@" && exit 0 - ;; - esac - fi - - echo 1>&2 "\ -WARNING: I can't seem to be able to run \`tar' with the given arguments. - You may want to install GNU tar or Free paxutils, or check the - command line arguments." - exit 1 - ;; - - *) - echo 1>&2 "\ -WARNING: \`$1' is needed, and you do not seem to have it handy on your - system. You might have modified some files without having the - proper tools for further handling them. Check the \`README' file, - it often tells you about the needed prerequirements for installing - this package. You may also peek at any GNU archive site, in case - some other package would contain this missing \`$1' program." - exit 1 - ;; -esac - -exit 0 diff --git a/lustre/mkinstalldirs b/lustre/mkinstalldirs deleted file mode 100755 index a08f3ca..0000000 --- a/lustre/mkinstalldirs +++ /dev/null @@ -1,40 +0,0 @@ -#! /bin/sh -# mkinstalldirs --- make directory hierarchy -# Author: Noah Friedman -# Created: 1993-05-16 -# Public domain - -# $Id: mkinstalldirs,v 1.1 2002/05/27 16:48:11 pschwan Exp $ - -errstatus=0 - -for file -do - set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'` - shift - - pathcomp= - for d - do - pathcomp="$pathcomp$d" - case "$pathcomp" in - -* ) pathcomp=./$pathcomp ;; - esac - - if test ! -d "$pathcomp"; then - echo "mkdir $pathcomp" - - mkdir "$pathcomp" || lasterr=$? - - if test ! -d "$pathcomp"; then - errstatus=$lasterr - fi - fi - - pathcomp="$pathcomp/" - done -done - -exit $errstatus - -# mkinstalldirs ends here diff --git a/lustre/obdclass/.cvsignore b/lustre/obdclass/.cvsignore index 49c6100..5d26f00 100644 --- a/lustre/obdclass/.cvsignore +++ b/lustre/obdclass/.cvsignore @@ -3,7 +3,13 @@ config.log config.status configure Makefile -Makefile.in .deps TAGS .*.cmd +autoMakefile.in +autoMakefile +*.ko +*.mod.c +.*.flags +.tmp_versions +.depend diff --git a/lustre/obdclass/Makefile.am b/lustre/obdclass/Makefile.am deleted file mode 100644 index 4451952..0000000 --- a/lustre/obdclass/Makefile.am +++ /dev/null @@ -1,51 +0,0 @@ -DEFS= -MODULE = obdclass - -if LIBLUSTRE - -noinst_LIBRARIES = liblustreclass.a -liblustreclass_a_SOURCES = class_obd.c debug.c genops.c statfs_pack.c uuid.c -liblustreclass_a_SOURCES += lustre_handles.c lustre_peer.c lprocfs_status.c -liblustreclass_a_SOURCES += obdo.c obd_config.c llog.c llog_obd.c llog_cat.c -liblustreclass_a_SOURCES += llog_lvfs.c #llog_ioctl.c rbtree.c -liblustreclass_a_CFLAGS = -fPIC - -class_obd.c: lustre_build_version - -lustre_build_version: - echo '#define LUSTRE_VERSION 32' > $(top_builddir)/include/linux/lustre_build_version.h - echo '#define BUILD_VERSION "1"' >> $(top_builddir)/include/linux/lustre_build_version.h - -else - -class_obd.o: lustre_build_version - -modulefs_DATA = lustre_build_version obdclass.o llog_test.o -EXTRA_PROGRAMS = obdclass llog_test - -obdclass_SOURCES = llog.c llog_cat.c llog_lvfs.c llog_obd.c class_obd.c debug.c genops.c sysctl.c uuid.c llog_ioctl.c -obdclass_SOURCES += lprocfs_status.c lustre_handles.c lustre_peer.c -obdclass_SOURCES += statfs_pack.c obdo.c obd_config.c llog_internal.h - -lustre_build_version: - perl $(top_srcdir)/scripts/version_tag.pl $(top_srcdir) $(top_builddir) > tmpver - echo "#define LUSTRE_RELEASE @RELEASE@" >> tmpver - cmp -s $(top_builddir)/include/linux/lustre_build_version.h tmpver \ - 2> /dev/null && \ - $(RM) tmpver || \ - mv tmpver $(top_builddir)/include/linux/lustre_build_version.h -endif - -include $(top_srcdir)/Rules - -if LINUX25 -# workaround for llog_test -llog_test.o: llog_test.c - $(COMPILE) -UKBUILD_MODNAME -DKBUILD_MODNAME=llog_test -c -o llog_test_tmp.o $< - rm -f llog_test_tmp.c - $(LINUX)/scripts/modpost $(LINUX)/vmlinux llog_test_tmp.o - $(COMPILE) -UKBUILD_MODNAME -UKBUILD_BASENAME -DKBUILD_BASENAME=llog_test \ - -c llog_test_tmp.mod.c - $(LD) -m "`$(LD) --help | awk '/supported emulations/ {print $$4}'`" -r \ - -o llog_test.o llog_test_tmp.o llog_test_tmp.mod.o -endif diff --git a/lustre/obdclass/Makefile.in b/lustre/obdclass/Makefile.in new file mode 100644 index 0000000..d092fc5 --- /dev/null +++ b/lustre/obdclass/Makefile.in @@ -0,0 +1,15 @@ +MODULES := obdclass llog_test + +obdclass-objs := llog.o llog_cat.o llog_lvfs.o llog_obd.o class_obd.o +obdclass-objs += debug.o genops.o sysctl.o uuid.o llog_ioctl.o +obdclass-objs += lprocfs_status.o lustre_handles.o lustre_peer.o +obdclass-objs += statfs_pack.o obdo.o obd_config.o + +ifeq ($(PATCHLEVEL),6) +llog_test-objs := llog-test.o + +$(obj)/llog-test.c: $(obj)/llog_test.c + ln -sf $< $@ +endif + +@INCLUDE_RULES@ diff --git a/lustre/obdclass/class_obd.c b/lustre/obdclass/class_obd.c index 119c782..f525c55 100644 --- a/lustre/obdclass/class_obd.c +++ b/lustre/obdclass/class_obd.c @@ -63,7 +63,9 @@ #include #include #include +#ifdef __KERNEL__ #include +#endif #include #include "llog_internal.h" @@ -601,17 +603,14 @@ int init_obdclass(void) return 0; } +/* liblustre doesn't call cleanup_obdclass, apparently. we carry on in this + * ifdef to the end of the file to cover module and versioning goo.*/ #ifdef __KERNEL__ -static void /*__exit*/ cleanup_obdclass(void) -#else + static void cleanup_obdclass(void) -#endif { -#ifdef __KERNEL__ int i; -#else - int i, leaked; -#endif + int leaked; ENTRY; misc_deregister(&obd_psdev); @@ -625,9 +624,7 @@ static void cleanup_obdclass(void) } obd_cleanup_caches(); -#ifdef __KERNEL__ obd_sysctl_clean(); -#endif #ifdef LPROCFS if (proc_lustre_root) { lprocfs_remove(proc_lustre_root); @@ -638,18 +635,15 @@ static void cleanup_obdclass(void) class_handle_cleanup(); class_exit_uuidlist(); -#ifndef __KERNEL__ leaked = atomic_read(&obd_memory); CDEBUG(leaked ? D_ERROR : D_INFO, "obd mem max: %d leaked: %d\n", obd_memmax, leaked); -#endif EXIT; } /* Check that we're building against the appropriate version of the Lustre * kernel patch */ -#ifdef __KERNEL__ #include #define LUSTRE_MIN_VERSION 28 #define LUSTRE_MAX_VERSION 34 @@ -658,11 +652,7 @@ static void cleanup_obdclass(void) #elif (LUSTRE_KERNEL_VERSION > LUSTRE_MAX_VERSION) # error Cannot continue: Your Lustre sources are older than the kernel patch #endif - #else -# warning "Lib Lustre - no versioning information" -#endif -#ifdef __KERNEL__ MODULE_AUTHOR("Cluster File Systems, Inc. "); MODULE_DESCRIPTION("Lustre Class Driver Build Version: " BUILD_VERSION); MODULE_LICENSE("GPL"); diff --git a/lustre/obdclass/llog_test.c b/lustre/obdclass/llog_test.c index a45e57d..049db79 100644 --- a/lustre/obdclass/llog_test.c +++ b/lustre/obdclass/llog_test.c @@ -652,12 +652,11 @@ static int llog_test_setup(struct obd_device *obd, obd_count len, void *buf) } static struct obd_ops llog_obd_ops = { - o_owner: THIS_MODULE, - o_setup: llog_test_setup, - o_cleanup: llog_test_cleanup, - o_llog_init: llog_test_llog_init, - o_llog_finish: llog_test_llog_finish, - + .o_owner = THIS_MODULE, + .o_setup = llog_test_setup, + .o_cleanup = llog_test_cleanup, + .o_llog_init = llog_test_llog_init, + .o_llog_finish = llog_test_llog_finish, }; static struct lprocfs_vars lprocfs_obd_vars[] = { {0} }; diff --git a/lustre/obdclass/lprocfs_status.c b/lustre/obdclass/lprocfs_status.c index fcfb991..d5ef04c 100644 --- a/lustre/obdclass/lprocfs_status.c +++ b/lustre/obdclass/lprocfs_status.c @@ -542,11 +542,11 @@ static int lprocfs_stats_seq_open(struct inode *inode, struct file *file) } struct file_operations lprocfs_stats_seq_fops = { - owner: THIS_MODULE, - open: lprocfs_stats_seq_open, - read: seq_read, - llseek: seq_lseek, - release: seq_release, + .owner = THIS_MODULE, + .open = lprocfs_stats_seq_open, + .read = seq_read, + .llseek = seq_lseek, + .release = seq_release, }; int lprocfs_register_stats(struct proc_dir_entry *root, const char *name, diff --git a/lustre/obdclass/obd_config.c b/lustre/obdclass/obd_config.c index 41f2258..d5009ef 100644 --- a/lustre/obdclass/obd_config.c +++ b/lustre/obdclass/obd_config.c @@ -45,15 +45,10 @@ */ int class_attach(struct lustre_cfg *lcfg) { - int minor; struct obd_type *type; - int err = 0; - int len; - char *typename; - char *name; - char *uuid; struct obd_device *obd; - int dev; + char *typename, *name, *uuid; + int minor, rc, len, dev, stage = 0; if (!lcfg->lcfg_inllen1 || !lcfg->lcfg_inlbuf1) { CERROR("No type passed!\n"); @@ -95,22 +90,23 @@ int class_attach(struct lustre_cfg *lcfg) CERROR("OBD: unknown type: %s\n", typename); RETURN(-EINVAL); } + stage = 1; obd = class_name2obd(name); if (obd != NULL) { CERROR("obd %s already attached\n", name); - RETURN(-EEXIST); + GOTO(out, rc = -EEXIST); } obd = class_newdev(&dev); if (obd == NULL) - RETURN(-EINVAL); + GOTO(out, rc = -EINVAL); /* have we attached a type to this device */ if (obd->obd_attached || obd->obd_type) { CERROR("OBD: Device %d already typed as %s.\n", obd->obd_minor, MKSTR(obd->obd_type->typ_name)); - RETURN(-EBUSY); + GOTO(out, rc = -EBUSY); } LASSERT(obd == (obd_dev + obd->obd_minor)); @@ -128,49 +124,51 @@ int class_attach(struct lustre_cfg *lcfg) /* XXX belongs in setup not attach */ /* recovery data */ + init_timer(&obd->obd_recovery_timer); spin_lock_init(&obd->obd_processing_task_lock); init_waitqueue_head(&obd->obd_next_transno_waitq); INIT_LIST_HEAD(&obd->obd_recovery_queue); INIT_LIST_HEAD(&obd->obd_delayed_reply_queue); - spin_lock_init (&obd->obd_uncommitted_replies_lock); - INIT_LIST_HEAD (&obd->obd_uncommitted_replies); + spin_lock_init(&obd->obd_uncommitted_replies_lock); + INIT_LIST_HEAD(&obd->obd_uncommitted_replies); len = strlen(name) + 1; OBD_ALLOC(obd->obd_name, len); - if (!obd->obd_name) { - class_put_type(obd->obd_type); - obd->obd_type = NULL; - RETURN(-ENOMEM); - } + if (!obd->obd_name) + GOTO(out, rc = -ENOMEM); memcpy(obd->obd_name, name, len); + stage = 2; len = strlen(uuid); if (len >= sizeof(obd->obd_uuid)) { CERROR("uuid must be < "LPSZ" bytes long\n", sizeof(obd->obd_uuid)); - OBD_FREE(obd->obd_name, strlen(obd->obd_name) + 1); - class_put_type(obd->obd_type); - obd->obd_type = NULL; - RETURN(-EINVAL); + GOTO(out, rc = -EINVAL); } memcpy(obd->obd_uuid.uuid, uuid, len); /* do the attach */ - if (OBP(obd, attach)) - err = OBP(obd,attach)(obd, sizeof *lcfg, lcfg); + if (OBP(obd, attach)) { + rc = OBP(obd,attach)(obd, sizeof *lcfg, lcfg); + if (rc) + GOTO(out, rc = -EINVAL); + } - if (err) { + obd->obd_attached = 1; + type->typ_refcnt++; + CDEBUG(D_IOCTL, "OBD: dev %d attached type %s\n", + obd->obd_minor, typename); + RETURN(0); + out: + switch (stage) { + case 2: OBD_FREE(obd->obd_name, strlen(obd->obd_name) + 1); + case 1: class_put_type(obd->obd_type); obd->obd_type = NULL; - } else { - obd->obd_attached = 1; - type->typ_refcnt++; - CDEBUG(D_IOCTL, "OBD: dev %d attached type %s\n", - obd->obd_minor, typename); } - RETURN(err); + return rc; } int class_setup(struct obd_device *obd, struct lustre_cfg *lcfg) diff --git a/lustre/obdecho/.cvsignore b/lustre/obdecho/.cvsignore index 49c6100..d09de6b 100644 --- a/lustre/obdecho/.cvsignore +++ b/lustre/obdecho/.cvsignore @@ -3,7 +3,13 @@ config.log config.status configure Makefile -Makefile.in .deps +.depend TAGS .*.cmd +autoMakefile.in +autoMakefile +*.ko +*.mod.c +.*.flags +.tmp_versions diff --git a/lustre/obdecho/Makefile.am b/lustre/obdecho/Makefile.am deleted file mode 100644 index b9fa3b8..0000000 --- a/lustre/obdecho/Makefile.am +++ /dev/null @@ -1,20 +0,0 @@ -# Copyright (C) 2001 Cluster File Systems, Inc. -# -# This code is issued under the GNU General Public License. -# See the file COPYING in this distribution - -DEFS= - -if LIBLUSTRE -noinst_LIBRARIES = libobdecho.a -libobdecho_a_SOURCES = echo_client.c -libobdecho_a_CFLAGS = -fPIC -else -MODULE = obdecho -modulefs_DATA = obdecho.o -EXTRA_PROGRAMS = obdecho -LINX= -obdecho_SOURCES = echo.c echo_client.c lproc_echo.c $(LINX) -endif - -include $(top_srcdir)/Rules diff --git a/lustre/obdecho/echo.c b/lustre/obdecho/echo.c index 34d061d..e9be311 100644 --- a/lustre/obdecho/echo.c +++ b/lustre/obdecho/echo.c @@ -33,8 +33,6 @@ #include #include #include -#include -#include #include #include #include @@ -491,18 +489,18 @@ static int echo_cleanup(struct obd_device *obd, int flags) } static struct obd_ops echo_obd_ops = { - o_owner: THIS_MODULE, - o_connect: echo_connect, - o_disconnect: echo_disconnect, - o_destroy_export: echo_destroy_export, - o_create: echo_create, - o_destroy: echo_destroy, - o_getattr: echo_getattr, - o_setattr: echo_setattr, - o_preprw: echo_preprw, - o_commitrw: echo_commitrw, - o_setup: echo_setup, - o_cleanup: echo_cleanup + .o_owner = THIS_MODULE, + .o_connect = echo_connect, + .o_disconnect = echo_disconnect, + .o_destroy_export = echo_destroy_export, + .o_create = echo_create, + .o_destroy = echo_destroy, + .o_getattr = echo_getattr, + .o_setattr = echo_setattr, + .o_preprw = echo_preprw, + .o_commitrw = echo_commitrw, + .o_setup = echo_setup, + .o_cleanup = echo_cleanup }; extern int echo_client_init(void); diff --git a/lustre/obdecho/echo_client.c b/lustre/obdecho/echo_client.c index 5d174fe..67935cb 100644 --- a/lustre/obdecho/echo_client.c +++ b/lustre/obdecho/echo_client.c @@ -794,7 +794,7 @@ static int echo_client_async_page(struct obd_export *exp, int rw, GOTO(out, rc = -ENOMEM); page->private = 0; - list_add_tail(&page->list, &pages); + list_add_tail(&PAGE_LIST(page), &pages); OBD_ALLOC(eap, sizeof(*eap)); if (eap == NULL) @@ -880,9 +880,10 @@ static int echo_client_async_page(struct obd_export *exp, int rw, out: list_for_each_safe(pos, n, &pages) { - struct page *page = list_entry(pos, struct page, list); + struct page *page = list_entry(pos, struct page, + PAGE_LIST_ENTRY); - list_del(&page->list); + list_del(&PAGE_LIST(page)); if (page->private != 0) { eap = (struct echo_async_page *)page->private; if (eap->eap_cookie != NULL) @@ -1435,12 +1436,12 @@ static int echo_client_disconnect(struct obd_export *exp, int flags) } static struct obd_ops echo_obd_ops = { - o_owner: THIS_MODULE, - o_setup: echo_client_setup, - o_cleanup: echo_client_cleanup, - o_iocontrol: echo_client_iocontrol, - o_connect: echo_client_connect, - o_disconnect: echo_client_disconnect + .o_owner = THIS_MODULE, + .o_setup = echo_client_setup, + .o_cleanup = echo_client_cleanup, + .o_iocontrol = echo_client_iocontrol, + .o_connect = echo_client_connect, + .o_disconnect = echo_client_disconnect }; int echo_client_init(void) diff --git a/lustre/obdfilter/.cvsignore b/lustre/obdfilter/.cvsignore index 49c6100..5d26f00 100644 --- a/lustre/obdfilter/.cvsignore +++ b/lustre/obdfilter/.cvsignore @@ -3,7 +3,13 @@ config.log config.status configure Makefile -Makefile.in .deps TAGS .*.cmd +autoMakefile.in +autoMakefile +*.ko +*.mod.c +.*.flags +.tmp_versions +.depend diff --git a/lustre/obdfilter/Makefile.am b/lustre/obdfilter/Makefile.am deleted file mode 100644 index afa74fd..0000000 --- a/lustre/obdfilter/Makefile.am +++ /dev/null @@ -1,19 +0,0 @@ -# Copyright (C) 2001 Cluster File Systems, Inc. -# -# This code is issued under the GNU General Public License. -# See the file COPYING in this distribution - -MODULE = obdfilter -modulefs_DATA = obdfilter.o -EXTRA_PROGRAMS = obdfilter - -COMMON_SRC = filter.c filter_io.c filter_log.c filter_san.c lproc_obdfilter.c \ - filter_internal.h filter_lvb.c - -if LINUX25 -obdfilter_SOURCES = $(COMMON_SRC) filter_io_26.c -else -obdfilter_SOURCES = $(COMMON_SRC) filter_io_24.c -endif - -include $(top_srcdir)/Rules diff --git a/lustre/obdfilter/filter.c b/lustre/obdfilter/filter.c index 4d60890..4809e22 100644 --- a/lustre/obdfilter/filter.c +++ b/lustre/obdfilter/filter.c @@ -626,13 +626,13 @@ static int filter_prep_groups(struct obd_device *obd) GOTO(cleanup_O0, rc); cleanup_O0: - dput(O0_dentry); + f_dput(O0_dentry); cleanup_R: - dput(dentry); + f_dput(dentry); if (rc) GOTO(cleanup, rc); } else { - dput(dentry); + f_dput(dentry); } OBD_ALLOC(filter->fo_last_objids, FILTER_GROUPS * sizeof(__u64)); @@ -1259,7 +1259,8 @@ static int filter_setup(struct obd_device *obd, obd_count len, void *buf) if (!lcfg->lcfg_inlbuf1 || !lcfg->lcfg_inlbuf2) RETURN(-EINVAL); - if (!strcmp(lcfg->lcfg_inlbuf2, "ext3")) { + if (!strcmp(lcfg->lcfg_inlbuf2, "ext3") || + !strcmp(lcfg->lcfg_inlbuf2, "ldiskfs")) { #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)) /* bug 1577: implement async-delete for 2.5 */ str = "errors=remount-ro,asyncdel"; @@ -1406,7 +1407,7 @@ static int filter_precleanup(struct obd_device *obd, int flags) /* Do extra sanity checks for grant accounting. We do this at connect, * disconnect, and statfs RPC time, so it shouldn't be too bad. We can * always get rid of it or turn it off when we know accounting is good. */ -static void filter_grant_sanity_check(struct obd_device *obd, char *func) +static void filter_grant_sanity_check(struct obd_device *obd, const char *func) { struct filter_export_data *fed; struct obd_export *exp; @@ -1745,12 +1746,15 @@ static void filter_destroy_precreated(struct obd_export *exp, struct obdo *oa, LASSERT(oa); memset(&doa, 0, sizeof(doa)); - if (oa->o_valid & OBD_MD_FLGROUP) + if (oa->o_valid & OBD_MD_FLGROUP) { + doa.o_valid |= OBD_MD_FLGROUP; doa.o_gr = oa->o_gr; - else + } else { doa.o_gr = 0; + } doa.o_mode = S_IFREG; - last = filter_last_id(filter, &doa); /* FIXME: object groups */ + + last = filter_last_id(filter, &doa); CWARN("deleting orphan objects from "LPU64" to "LPU64"\n", oa->o_id + 1, last); for (id = oa->o_id + 1; id <= last; id++) { @@ -1758,14 +1762,14 @@ static void filter_destroy_precreated(struct obd_export *exp, struct obdo *oa, filter_destroy(exp, &doa, NULL, NULL); } spin_lock(&filter->fo_objidlock); - filter->fo_last_objids[0] = oa->o_id; /* FIXME: object groups */ + filter->fo_last_objids[doa.o_gr] = oa->o_id; spin_unlock(&filter->fo_objidlock); EXIT; } /* returns a negative error or a nonnegative number of files to create */ static int filter_should_precreate(struct obd_export *exp, struct obdo *oa, - int group) + obd_gr group) { struct obd_device *obd = exp->exp_obd; struct filter_obd *filter = &obd->u.filter; @@ -1838,7 +1842,7 @@ static int filter_precreate(struct obd_device *obd, struct obdo *oa, if (recreate_obj) { __u64 last_id; next_id = oa->o_id; - last_id = filter_last_id(filter, NULL); + last_id = filter_last_id(filter, oa); if (next_id > last_id) { CERROR("Error: Trying to recreate obj greater" "than last id "LPD64" > "LPD64"\n", @@ -1846,7 +1850,7 @@ static int filter_precreate(struct obd_device *obd, struct obdo *oa, RETURN(-EINVAL); } } else - next_id = filter_last_id(filter, NULL) + 1; + next_id = filter_last_id(filter, oa) + 1; CDEBUG(D_INFO, "precreate objid "LPU64"\n", next_id); @@ -1890,7 +1894,7 @@ static int filter_precreate(struct obd_device *obd, struct obdo *oa, } if (!recreate_obj) { - filter_set_last_id(filter, NULL, next_id); + filter_set_last_id(filter, oa, next_id); err = filter_update_last_objid(obd, group, 0); if (err) CERROR("unable to write lastobjid " @@ -2377,56 +2381,56 @@ static struct lvfs_callback_ops filter_lvfs_ops = { }; static struct obd_ops filter_obd_ops = { - o_owner: THIS_MODULE, - o_get_info: filter_get_info, - o_set_info: filter_set_info, - o_setup: filter_setup, - o_precleanup: filter_precleanup, - o_cleanup: filter_cleanup, - o_connect: filter_connect, - o_disconnect: filter_disconnect, - o_statfs: filter_statfs, - o_getattr: filter_getattr, - o_unpackmd: filter_unpackmd, - o_create: filter_create, - o_setattr: filter_setattr, - o_destroy: filter_destroy, - o_brw: filter_brw, - o_punch: filter_truncate, - o_sync: filter_sync, - o_preprw: filter_preprw, - o_commitrw: filter_commitrw, - o_destroy_export: filter_destroy_export, - o_llog_init: filter_llog_init, - o_llog_finish: filter_llog_finish, - o_iocontrol: filter_iocontrol, + .o_owner = THIS_MODULE, + .o_get_info = filter_get_info, + .o_set_info = filter_set_info, + .o_setup = filter_setup, + .o_precleanup = filter_precleanup, + .o_cleanup = filter_cleanup, + .o_connect = filter_connect, + .o_disconnect = filter_disconnect, + .o_statfs = filter_statfs, + .o_getattr = filter_getattr, + .o_unpackmd = filter_unpackmd, + .o_create = filter_create, + .o_setattr = filter_setattr, + .o_destroy = filter_destroy, + .o_brw = filter_brw, + .o_punch = filter_truncate, + .o_sync = filter_sync, + .o_preprw = filter_preprw, + .o_commitrw = filter_commitrw, + .o_destroy_export = filter_destroy_export, + .o_llog_init = filter_llog_init, + .o_llog_finish = filter_llog_finish, + .o_iocontrol = filter_iocontrol, }; static struct obd_ops filter_sanobd_ops = { - o_owner: THIS_MODULE, - o_get_info: filter_get_info, - o_set_info: filter_set_info, - o_setup: filter_san_setup, - o_precleanup: filter_precleanup, - o_cleanup: filter_cleanup, - o_connect: filter_connect, - o_disconnect: filter_disconnect, - o_statfs: filter_statfs, - o_getattr: filter_getattr, - o_unpackmd: filter_unpackmd, - o_create: filter_create, - o_setattr: filter_setattr, - o_destroy: filter_destroy, - o_brw: filter_brw, - o_punch: filter_truncate, - o_sync: filter_sync, - o_preprw: filter_preprw, - o_commitrw: filter_commitrw, - o_san_preprw: filter_san_preprw, - o_destroy_export: filter_destroy_export, - o_llog_init: filter_llog_init, - o_llog_finish: filter_llog_finish, - o_iocontrol: filter_iocontrol, + .o_owner = THIS_MODULE, + .o_get_info = filter_get_info, + .o_set_info = filter_set_info, + .o_setup = filter_san_setup, + .o_precleanup = filter_precleanup, + .o_cleanup = filter_cleanup, + .o_connect = filter_connect, + .o_disconnect = filter_disconnect, + .o_statfs = filter_statfs, + .o_getattr = filter_getattr, + .o_unpackmd = filter_unpackmd, + .o_create = filter_create, + .o_setattr = filter_setattr, + .o_destroy = filter_destroy, + .o_brw = filter_brw, + .o_punch = filter_truncate, + .o_sync = filter_sync, + .o_preprw = filter_preprw, + .o_commitrw = filter_commitrw, + .o_san_preprw = filter_san_preprw, + .o_destroy_export = filter_destroy_export, + .o_llog_init = filter_llog_init, + .o_llog_finish = filter_llog_finish, + .o_iocontrol = filter_iocontrol, }; static int __init obdfilter_init(void) diff --git a/lustre/obdfilter/filter_io_26.c b/lustre/obdfilter/filter_io_26.c index 5ce65c7..c90d371 100644 --- a/lustre/obdfilter/filter_io_26.c +++ b/lustre/obdfilter/filter_io_26.c @@ -95,22 +95,24 @@ static int filter_range_is_mapped(struct inode *inode, obd_size offset, int len) return 1; } -int filter_commitrw_write(struct obd_export *exp, struct obdo *oa, int objcount, - struct obd_ioobj *obj, int niocount, +int filter_commitrw_write(struct obd_export *exp, struct obdo *oa, + int objcount, struct obd_ioobj *obj, int niocount, struct niobuf_local *res, struct obd_trans_info *oti, int rc) { - struct obd_device *obd = exp->exp_obd; - struct obd_run_ctxt saved; + struct bio *bio = NULL; + int blocks_per_page, err; struct niobuf_local *lnb; + struct obd_run_ctxt saved; struct fsfilt_objinfo fso; - struct iattr iattr = { .ia_valid = ATTR_SIZE, .ia_size = 0, }; + struct iattr iattr = { 0 }; struct inode *inode = NULL; - int i, k, cleanup_phase = 0, err; - unsigned long now = jiffies; /* DEBUGGING OST TIMEOUTS */ - int blocks_per_page; - struct dio_request *dreq; - struct bio *bio = NULL; + unsigned long now = jiffies; + int i, k, cleanup_phase = 0; + + struct dio_request *dreq = NULL; + struct obd_device *obd = exp->exp_obd; + ENTRY; LASSERT(oti != NULL); LASSERT(objcount == 1); @@ -124,8 +126,10 @@ int filter_commitrw_write(struct obd_export *exp, struct obdo *oa, int objcount, LASSERT(blocks_per_page <= MAX_BLOCKS_PER_PAGE); OBD_ALLOC(dreq, sizeof(*dreq)); + if (dreq == NULL) RETURN(-ENOMEM); + dreq->bio_list = NULL; init_waitqueue_head(&dreq->wait); atomic_set(&dreq->numreqs, 0); @@ -138,7 +142,9 @@ int filter_commitrw_write(struct obd_export *exp, struct obdo *oa, int objcount, push_ctxt(&saved, &obd->obd_ctxt, NULL); cleanup_phase = 2; - oti->oti_handle = fsfilt_brw_start(obd, objcount, &fso, niocount, res, oti); + oti->oti_handle = fsfilt_brw_start(obd, objcount, &fso, + niocount, res, oti); + if (IS_ERR(oti->oti_handle)) { rc = PTR_ERR(oti->oti_handle); CDEBUG(rc == -ENOSPC ? D_INODE : D_ERROR, @@ -161,13 +167,13 @@ int filter_commitrw_write(struct obd_export *exp, struct obdo *oa, int objcount, filter_range_is_mapped(inode, lnb->offset, lnb->len)) lnb->rc = 0; - if (lnb->rc) /* ENOSPC, network RPC error */ + if (lnb->rc) /* ENOSPC, network RPC error, etc. */ continue; /* get block number for next page */ rc = fsfilt_map_inode_page(obd, inode, lnb->page, dreq->blocks, dreq->created, 1); - if (rc) + if (rc != 0) GOTO(cleanup, rc); for (k = 0; k < blocks_per_page; k++) { @@ -216,26 +222,30 @@ int filter_commitrw_write(struct obd_export *exp, struct obdo *oa, int objcount, bio_put(bio); } - if (rc == 0) { - down(&inode->i_sem); - if (iattr.ia_size > inode->i_size) { - CDEBUG(D_INFO, "setting i_size to "LPU64"\n", - iattr.ia_size); - fsfilt_setattr(obd, res->dentry, oti->oti_handle, - &iattr, 0); - } - up(&inode->i_sem); + down(&inode->i_sem); + if (iattr.ia_size > inode->i_size) { + CDEBUG(D_INFO, "setting i_size to "LPU64"\n", + iattr.ia_size); + + iattr.ia_valid |= ATTR_SIZE; + + fsfilt_setattr(obd, res->dentry, oti->oti_handle, + &iattr, 0); } + up(&inode->i_sem); if (time_after(jiffies, now + 15 * HZ)) CERROR("slow direct_io %lus\n", (jiffies - now) / HZ); rc = filter_finish_transno(exp, oti, rc); + err = fsfilt_commit(obd, inode, oti->oti_handle, obd_sync_filter); if (err) rc = err; + if (obd_sync_filter) LASSERT(oti->oti_transno <= obd->obd_last_committed); + if (time_after(jiffies, now + 15 * HZ)) CERROR("slow commitrw commit %lus\n", (jiffies - now) / HZ); diff --git a/lustre/obdfilter/filter_lvb.c b/lustre/obdfilter/filter_lvb.c index aa08aa5..3ca1fad 100644 --- a/lustre/obdfilter/filter_lvb.c +++ b/lustre/obdfilter/filter_lvb.c @@ -179,15 +179,14 @@ static int filter_lvbo_update(struct ldlm_resource *res, struct lustre_msg *m, lvb->lvb_blocks, dentry->d_inode->i_blocks); lvb->lvb_blocks = dentry->d_inode->i_blocks; - out_dentry: +out_dentry: f_dput(dentry); - out: + +out: up(&res->lr_lvb_sem); return rc; } - - struct ldlm_valblock_ops filter_lvbo = { lvbo_init: filter_lvbo_init, lvbo_update: filter_lvbo_update diff --git a/lustre/osc/.cvsignore b/lustre/osc/.cvsignore index 49c6100..5d26f00 100644 --- a/lustre/osc/.cvsignore +++ b/lustre/osc/.cvsignore @@ -3,7 +3,13 @@ config.log config.status configure Makefile -Makefile.in .deps TAGS .*.cmd +autoMakefile.in +autoMakefile +*.ko +*.mod.c +.*.flags +.tmp_versions +.depend diff --git a/lustre/osc/Makefile.am b/lustre/osc/Makefile.am deleted file mode 100644 index 0cb3bcd..0000000 --- a/lustre/osc/Makefile.am +++ /dev/null @@ -1,19 +0,0 @@ -# Copyright (C) 2001 Cluster File Systems, Inc. -# -# This code is issued under the GNU General Public License. -# See the file COPYING in this distribution - -DEFS= - -if LIBLUSTRE -noinst_LIBRARIES = libosc.a -libosc_a_SOURCES = osc_request.c osc_lib.c osc_create.c osc_internal.h -libosc_a_CFLAGS = -fPIC -else -MODULE = osc -modulefs_DATA = osc.o -EXTRA_PROGRAMS = osc -osc_SOURCES = osc_request.c lproc_osc.c osc_lib.c osc_create.c osc_internal.h -endif - -include $(top_srcdir)/Rules diff --git a/lustre/osc/osc_request.c b/lustre/osc/osc_request.c index 55b690f..8e65721 100644 --- a/lustre/osc/osc_request.c +++ b/lustre/osc/osc_request.c @@ -2569,9 +2569,15 @@ static int osc_iocontrol(unsigned int cmd, struct obd_export *exp, int len, struct obd_ioctl_data *data = karg; int err = 0; ENTRY; - - MOD_INC_USE_COUNT; +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)) + MOD_INC_USE_COUNT; +#else + if (!try_module_get(THIS_MODULE)) { + CERROR("Can't get module. Is it alive?"); + return -EINVAL; + } +#endif switch (cmd) { case OBD_IOC_LOV_GET_CONFIG: { char *buf; @@ -2635,7 +2641,11 @@ static int osc_iocontrol(unsigned int cmd, struct obd_export *exp, int len, GOTO(out, err = -ENOTTY); } out: +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)) MOD_DEC_USE_COUNT; +#else + module_put(THIS_MODULE); +#endif return err; } @@ -2921,80 +2931,85 @@ int osc_cleanup(struct obd_device *obd, int flags) struct obd_ops osc_obd_ops = { - o_owner: THIS_MODULE, - o_setup: osc_setup, - o_cleanup: osc_cleanup, - o_connect: osc_connect, - o_disconnect: osc_disconnect, - o_statfs: osc_statfs, - o_packmd: osc_packmd, - o_unpackmd: osc_unpackmd, - o_create: osc_create, - o_destroy: osc_destroy, - o_getattr: osc_getattr, - o_getattr_async:osc_getattr_async, - o_setattr: osc_setattr, - o_brw: osc_brw, - o_brw_async: osc_brw_async, - .o_prep_async_page = osc_prep_async_page, - .o_queue_async_io = osc_queue_async_io, - .o_set_async_flags = osc_set_async_flags, - .o_queue_group_io = osc_queue_group_io, - .o_trigger_group_io = osc_trigger_group_io, - .o_teardown_async_page = osc_teardown_async_page, - o_punch: osc_punch, - o_sync: osc_sync, - o_enqueue: osc_enqueue, - o_match: osc_match, - o_change_cbdata:osc_change_cbdata, - o_cancel: osc_cancel, - o_cancel_unused:osc_cancel_unused, - o_iocontrol: osc_iocontrol, - o_get_info: osc_get_info, - o_set_info: osc_set_info, - o_import_event: osc_import_event, - o_llog_init: osc_llog_init, - o_llog_finish: osc_llog_finish, + .o_owner = THIS_MODULE, + .o_setup = osc_setup, + .o_cleanup = osc_cleanup, + .o_connect = osc_connect, + .o_disconnect = osc_disconnect, + .o_statfs = osc_statfs, + .o_packmd = osc_packmd, + .o_unpackmd = osc_unpackmd, + .o_create = osc_create, + .o_destroy = osc_destroy, + .o_getattr = osc_getattr, + .o_getattr_async = osc_getattr_async, + .o_setattr = osc_setattr, + .o_brw = osc_brw, + .o_brw_async = osc_brw_async, + .o_prep_async_page = osc_prep_async_page, + .o_queue_async_io = osc_queue_async_io, + .o_set_async_flags = osc_set_async_flags, + .o_queue_group_io = osc_queue_group_io, + .o_trigger_group_io = osc_trigger_group_io, + .o_teardown_async_page = osc_teardown_async_page, + .o_punch = osc_punch, + .o_sync = osc_sync, + .o_enqueue = osc_enqueue, + .o_match = osc_match, + .o_change_cbdata = osc_change_cbdata, + .o_cancel = osc_cancel, + .o_cancel_unused = osc_cancel_unused, + .o_iocontrol = osc_iocontrol, + .o_get_info = osc_get_info, + .o_set_info = osc_set_info, + .o_import_event = osc_import_event, + .o_llog_init = osc_llog_init, + .o_llog_finish = osc_llog_finish, }; #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)) struct obd_ops sanosc_obd_ops = { - o_owner: THIS_MODULE, - o_cleanup: client_obd_cleanup, - o_connect: osc_connect, - o_disconnect: client_disconnect_export, - o_statfs: osc_statfs, - o_packmd: osc_packmd, - o_unpackmd: osc_unpackmd, - o_create: osc_real_create, - o_destroy: osc_destroy, - o_getattr: osc_getattr, - o_getattr_async:osc_getattr_async, - o_setattr: osc_setattr, - o_setup: client_sanobd_setup, - o_brw: sanosc_brw, - o_punch: osc_punch, - o_sync: osc_sync, - o_enqueue: osc_enqueue, - o_match: osc_match, - o_change_cbdata:osc_change_cbdata, - o_cancel: osc_cancel, - o_cancel_unused:osc_cancel_unused, - o_iocontrol: osc_iocontrol, - o_import_event: osc_import_event, - o_llog_init: osc_llog_init, - o_llog_finish: osc_llog_finish, + .o_owner = THIS_MODULE, + .o_cleanup = client_obd_cleanup, + .o_connect = osc_connect, + .o_disconnect = client_disconnect_export, + .o_statfs = osc_statfs, + .o_packmd = osc_packmd, + .o_unpackmd = osc_unpackmd, + .o_create = osc_real_create, + .o_destroy = osc_destroy, + .o_getattr = osc_getattr, + .o_getattr_async = osc_getattr_async, + .o_setattr = osc_setattr, + .o_setup = client_sanobd_setup, + .o_brw = sanosc_brw, + .o_punch = osc_punch, + .o_sync = osc_sync, + .o_enqueue = osc_enqueue, + .o_match = osc_match, + .o_change_cbdata = osc_change_cbdata, + .o_cancel = osc_cancel, + .o_cancel_unused = osc_cancel_unused, + .o_iocontrol = osc_iocontrol, + .o_import_event = osc_import_event, + .o_llog_init = osc_llog_init, + .o_llog_finish = osc_llog_finish, }; #endif int __init osc_init(void) { - struct lprocfs_static_vars lvars, sanlvars; + struct lprocfs_static_vars lvars; +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)) + struct lprocfs_static_vars sanlvars; +#endif int rc; ENTRY; lprocfs_init_vars(osc, &lvars); +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)) lprocfs_init_vars(osc, &sanlvars); +#endif rc = class_register_type(&osc_obd_ops, lvars.module_vars, LUSTRE_OSC_NAME); @@ -3011,6 +3026,7 @@ int __init osc_init(void) RETURN(rc); } +#ifdef __KERNEL__ static void /*__exit*/ osc_exit(void) { #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)) @@ -3019,7 +3035,6 @@ static void /*__exit*/ osc_exit(void) class_unregister_type(LUSTRE_OSC_NAME); } -#ifdef __KERNEL__ MODULE_AUTHOR("Cluster File Systems, Inc. "); MODULE_DESCRIPTION("Lustre Object Storage Client (OSC)"); MODULE_LICENSE("GPL"); diff --git a/lustre/ost/.cvsignore b/lustre/ost/.cvsignore index 49c6100..5d26f00 100644 --- a/lustre/ost/.cvsignore +++ b/lustre/ost/.cvsignore @@ -3,7 +3,13 @@ config.log config.status configure Makefile -Makefile.in .deps TAGS .*.cmd +autoMakefile.in +autoMakefile +*.ko +*.mod.c +.*.flags +.tmp_versions +.depend diff --git a/lustre/ost/Makefile.am b/lustre/ost/Makefile.am deleted file mode 100644 index b2e51c3..0000000 --- a/lustre/ost/Makefile.am +++ /dev/null @@ -1,13 +0,0 @@ -# Copyright (C) 2001 Cluster File Systems, Inc. -# -# This code is issued under the GNU General Public License. -# See the file COPYING in this distribution - -DEFS= - -MODULE = ost -modulefs_DATA = ost.o -EXTRA_PROGRAMS = ost -ost_SOURCES = ost_handler.c lproc_ost.c - -include $(top_srcdir)/Rules diff --git a/lustre/ost/ost_handler.c b/lustre/ost/ost_handler.c index f1c5e45..b778df5 100644 --- a/lustre/ost/ost_handler.c +++ b/lustre/ost/ost_handler.c @@ -1162,7 +1162,7 @@ static int ost_setup(struct obd_device *obd, obd_count len, void *buf) } rc = ptlrpc_start_n_threads(obd, ost->ost_create_service, 1, - "ll_ost_create"); + "ll_ost_creat"); if (rc) GOTO(out_create, rc = -EINVAL); @@ -1203,9 +1203,9 @@ static int ost_cleanup(struct obd_device *obd, int flags) /* use obd ops to offer management infrastructure */ static struct obd_ops ost_obd_ops = { - o_owner: THIS_MODULE, - o_setup: ost_setup, - o_cleanup: ost_cleanup, + .o_owner = THIS_MODULE, + .o_setup = ost_setup, + .o_cleanup = ost_cleanup, }; static int __init ost_init(void) diff --git a/lustre/portals/.cvsignore b/lustre/portals/.cvsignore index c1a9bdf..f30d862 100644 --- a/lustre/portals/.cvsignore +++ b/lustre/portals/.cvsignore @@ -1,9 +1,11 @@ Kernelenv Makefile -Makefile.in +autoMakefile +autoMakefile.in aclocal.m4 autom4te.cache config.log config.status configure -.*.o.cmd +.*.cmd +.depend diff --git a/lustre/portals/Makefile.am b/lustre/portals/Makefile.am deleted file mode 100644 index 1a223f2..0000000 --- a/lustre/portals/Makefile.am +++ /dev/null @@ -1,12 +0,0 @@ -# Copyright (C) 2001 Cluster File Systems, Inc. -# -# This code is issued under the GNU General Public License. -# See the file COPYING in this distribution - -EXTRA_DIST = Rules.linux archdep.m4 include -DIST_SUBDIRS = libcfs portals knals unals utils tests doc router -if LIBLUSTRE -SUBDIRS = portals unals utils -else -SUBDIRS = libcfs portals knals unals utils tests doc router -endif diff --git a/lustre/portals/Rules.linux b/lustre/portals/Rules.linux deleted file mode 100644 index 232a248..0000000 --- a/lustre/portals/Rules.linux +++ /dev/null @@ -1,29 +0,0 @@ -# included in Linux kernel directories -# Rules for module building - -if LINUX25 - -basename=$(shell echo $< | sed -e 's/\.c//g' | sed -e 's/-//g' | sed -e 's/\.o//g' | sed -e 's/^.*\///g') -AM_CPPFLAGS= -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -pipe -mpreferred-stack-boundary=2 -DKBUILD_MODNAME=$(MODULE) -DKBUILD_BASENAME=$(basename) - -$(MODULE).o: $($(MODULE)_OBJECTS) $($(MODULE)_DEPENDENCIES) - $(LD) -m $(MOD_LINK) -r -o $(MODULE)_tmp.o $($(MODULE)_OBJECTS) - rm -f $(MODULE)_tmp.c - $(LINUX)/scripts/modpost $(LINUX)/vmlinux $(MODULE)_tmp.o - $(COMPILE) -UKBUILD_BASENAME -DKBUILD_BASENAME=$(MODULE) -c $(MODULE)_tmp.mod.c - $(LD) -m $(MOD_LINK) -r -o $(MODULE).o $(MODULE)_tmp.o $(MODULE)_tmp.mod.o - -else - -$(MODULE).o: $($(MODULE)_OBJECTS) - $(LD) -m $(MOD_LINK) -r -o $(MODULE).o $($(MODULE)_OBJECTS) - -endif - -tags: - rm -f $(top_srcdir)/TAGS - rm -f $(top_srcdir)/tags - find $(top_srcdir)/../portals/ -name '*.[hc]' | xargs etags -a - find $(top_srcdir) -name '*.[hc]' | grep -v ".orig" | xargs etags -a - find $(top_srcdir)/../portals/ -name '*.[hc]' | xargs ctags -a - find $(top_srcdir) -name '*.[hc]' | grep -v ".orig" | xargs ctags -a diff --git a/lustre/portals/archdep.m4 b/lustre/portals/archdep.m4 index e9eef5e..95c9b4a 100644 --- a/lustre/portals/archdep.m4 +++ b/lustre/portals/archdep.m4 @@ -1,15 +1,46 @@ +# -------- we can't build modules unless srcdir = builddir +if test x$enable_modules != xno ; then +AC_CHECK_FILE([autoMakefile.am],[], + [AC_MSG_ERROR([At this time, Lustre does not support building kernel modules with srcdir != buildir.])]) +fi # -------- in kernel compilation? (2.5 only) ------------- -AC_ARG_ENABLE(inkernel, [ --enable-inkernel set up 2.5 kernel makefiles]) +AC_MSG_CHECKING([if inkernel build support is requested]) +AC_ARG_ENABLE([inkernel], + AC_HELP_STRING([--enable-inkernel], + [set up 2.5 kernel makefiles]), + [],[enable_inkernel=no]) +AC_MSG_RESULT([$enable_inkernel]) AM_CONDITIONAL(INKERNEL, test x$enable_inkernel = xyes) -echo "Makefile for in kernel build: $INKERNEL" -# -------- liblustre compilation -------------- -AC_ARG_WITH(lib, [ --with-lib compile lustre library], host_cpu="lib") +# -------- are we building against an external portals? ------- +AC_MSG_CHECKING([if Cray portals should be used]) +AC_ARG_WITH([cray-portals], + AC_HELP_STRING([--with-cray-portals=path], + [path to cray portals]), + [ + CRAY_PORTALS_INCLUDE="-I$with_cray_portals" + AC_DEFINE(CRAY_PORTALS, 1, [Building with Cray Portals]) + ],[with_cray_portals=no]) +AC_MSG_RESULT([$with_cray_portals]) +AM_CONDITIONAL(CRAY_PORTALS, test x$with_cray_portals != xno) +if test x$enable_tests = xno ; then + AC_MSG_NOTICE([disabling tests]) + enable_tests=no +fi +if test x$enable_utils = xno ; then + AC_MSG_NOTICE([disabling utilities]) + enable_utils=no +fi # -------- set linuxdir ------------ - -AC_ARG_WITH(linux, [ --with-linux=[path] set path to Linux source (default=/usr/src/linux)],LINUX=$with_linux,LINUX=/usr/src/linux) +AC_MSG_CHECKING([for Linux sources]) +AC_ARG_WITH([linux], + AC_HELP_STRING([--with-linux=path], + [set path to Linux source (default=/usr/src/linux)]), + [LINUX=$with_linux], + [LINUX=/usr/src/linux]) +AC_MSG_RESULT([$LINUX]) AC_SUBST(LINUX) if test x$enable_inkernel = xyes ; then echo ln -s `pwd` $LINUX/fs/lustre @@ -17,200 +48,196 @@ if test x$enable_inkernel = xyes ; then ln -s `pwd` $LINUX/fs/lustre fi -# -------------------- -AC_MSG_CHECKING(if you are running user mode linux for $host_cpu ...) -if test $host_cpu = "lib" ; then - host_cpu="lib" - AC_MSG_RESULT(no building Lustre library) -else - if test -e $LINUX/include/asm-um ; then - if test X`ls -id $LINUX/include/asm/ | awk '{print $1}'` = X`ls -id $LINUX/include/asm-um | awk '{print $1}'` ; then - host_cpu="um"; - AC_MSG_RESULT(yes) - else - AC_MSG_RESULT(no (asm doesn't point at asm-um)) - fi +# -------- check for .confg -------- +AC_ARG_WITH([linux-config], + [AC_HELP_STRING([--with-linux-config=path], + [set path to Linux .conf (default=\$LINUX/.config)])], + [LINUX_CONFIG=$with_linux_config], + [LINUX_CONFIG=$LINUX/.config]) +AC_SUBST(LINUX_CONFIG) - else - AC_MSG_RESULT(no (asm-um missing)) - fi -fi +AC_CHECK_FILE([/boot/kernel.h], + [KERNEL_SOURCE_HEADER='/boot/kernel.h'], + [AC_CHECK_FILE([/var/adm/running-kernel.h]), + [KERNEL_SOURCE_HEADER='/var/adm/running-kernel.h']]) -# --------- Linux 25 ------------------ +AC_ARG_WITH([kernel-source-header], + AC_HELP_STRING([--with-kernel-source-header=path], + [Use a different kernel version header. Consult README.kernel-source for details.]), + [KERNEL_SOURCE_HEADER=$with_kernel_source_header]) -AC_MSG_CHECKING(if you are running linux 2.5) -if test -e $LINUX/include/linux/namei.h ; then - linux25="yes" - AC_MSG_RESULT(yes) -else - linux25="no" - AC_MSG_RESULT(no) +# -------------------- +ARCH_UM= +UML_CFLAGS= +if test x$enable_modules != xno ; then + AC_MSG_CHECKING([if you are running user mode linux for $host_cpu]) + if test -e $LINUX/include/asm-um ; then + if test X`ls -id $LINUX/include/asm/ | awk '{print $1}'` = X`ls -id $LINUX/include/asm-um | awk '{print $1}'` ; then + ARCH_UM='ARCH=um' + # see notes in Rules.in + UML_CFLAGS='-O0' + AC_MSG_RESULT(yes) + else + AC_MSG_RESULT([no (asm doesn't point at asm-um)]) + fi + else + AC_MSG_RESULT([no (asm-um missing)]) + fi fi +AC_SUBST(ARCH_UM) +AC_SUBST(UML_CFLAGS) +# --------- Linux 25 ------------------ + +AC_CHECK_FILE([$LINUX/include/linux/namei.h], + [ + linux25="yes" + KMODEXT=".ko" + ],[ + KMODEXT=".o" + linux25="no" + ]) +AC_MSG_CHECKING([if you are using Linux 2.6]) +AC_MSG_RESULT([$linux25]) AM_CONDITIONAL(LINUX25, test x$linux25 = xyes) -echo "Makefiles for in linux 2.5 build: $LINUX25" +AC_SUBST(KMODEXT) # ------- Makeflags ------------------ -AC_MSG_CHECKING(setting make flags system architecture: ) -case ${host_cpu} in - lib ) - AC_MSG_RESULT($host_cpu) - KCFLAGS='-g -Wall ' - KCPPFLAGS='-D__arch_lib__ ' - libdir='${exec_prefix}/lib/lustre' - MOD_LINK=elf_i386 -;; - um ) - AC_MSG_RESULT($host_cpu) - KCFLAGS='-g -Wall -pipe -Wno-trigraphs -Wstrict-prototypes -fno-strict-aliasing -fno-common ' - case ${linux25} in - yes ) - KCPPFLAGS='-D__KERNEL__ -U__i386__ -Ui386 -DUM_FASTCALL -D__arch_um__ -DSUBARCH="i386" -DNESTING=0 -D_LARGEFILE64_SOURCE -Derrno=kernel_errno -DPATCHLEVEL=4 -DMODULE -I$(LINUX)/arch/um/include -I$(LINUX)/arch/um/kernel/tt/include -I$(LINUX)/arch/um/kernel/skas/include -O2 -nostdinc -iwithprefix include' - ;; - * ) - KCPPFLAGS='-D__KERNEL__ -U__i386__ -Ui386 -DUM_FASTCALL -D__arch_um__ -DSUBARCH="i386" -DNESTING=0 -D_LARGEFILE64_SOURCE -Derrno=kernel_errno -DPATCHLEVEL=4 -DMODULE -I$(LINUX)/arch/um/kernel/tt/include -I$(LINUX)/arch/um/include ' - ;; - esac - - MOD_LINK=elf_i386 -;; - i*86 ) - AC_MSG_RESULT($host_cpu) - KCFLAGS='-g -O2 -Wall -Wstrict-prototypes -pipe' - case ${linux25} in - yes ) - KCPPFLAGS='-D__KERNEL__ -DMODULE -march=i686 -I$(LINUX)/include/asm-i386/mach-default -nostdinc -iwithprefix include ' - ;; - * ) - KCPPFLAGS='-D__KERNEL__ -DMODULE ' - ;; - esac - MOD_LINK=elf_i386 -;; - - alphaev6 ) - AC_MSG_RESULT($host_cpu) - KCFLAGS='-g -O2 -Wall -Wstrict-prototypes -Wno-trigraphs -fomit-frame-pointer -fno-strict-aliasing -fno-common -pipe -mno-fp-regs -ffixed-8 -mcpu=ev5 -Wa,-mev6' - KCPPFLAGS='-D__KERNEL__ -DMODULE ' - MOD_LINK=elf64alpha -;; - - alphaev67 ) - AC_MSG_RESULT($host_cpu) - KCFLAGS='-g -O2 -Wall -Wstrict-prototypes -Wno-trigraphs -fomit-frame-pointer -fno-strict-aliasing -fno-common -pipe -mno-fp-regs -ffixed-8 -mcpu=ev5 -Wa,-mev6' - KCPPFLAGS='-D__KERNEL__ -DMODULE ' - MOD_LINK=elf64alpha -;; - - alpha* ) - AC_MSG_RESULT($host_cpu) - KCFLAGS='-g -O2 -Wall -Wstrict-prototypes -Wno-trigraphs -fomit-frame-pointer -fno-strict-aliasing -fno-common -pipe -mno-fp-regs -ffixed-8 -mcpu=ev5 -Wa,-mev5' - KCPPFLAGS='-D__KERNEL__ -DMODULE ' - MOD_LINK=elf64alpha -;; - - ia64 ) - AC_MSG_RESULT($host_cpu) - KCFLAGS='-g -O2 -Wall -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -pipe -ffixed-r13 -mfixed-range=f10-f15,f32-f127 -falign-functions=32 -mb-step' - KCPPFLAGS='-D__KERNEL__ -DMODULE' - MOD_LINK=elf64_ia64 -;; - - x86_64 ) - AC_MSG_RESULT($host_cpu) - KCFLAGS='-g -O2 -Wall -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -fomit-frame-pointer -mno-red-zone -mcmodel=kernel -pipe -fno-reorder-blocks -finline-limit=2000 -fno-strength-reduce -fno-asynchronous-unwind-tables' - KCPPFLAGS='-D__KERNEL__ -DMODULE' - MOD_LINK=elf_x86_64 -;; - - sparc64 ) - AC_MSG_RESULT($host_cpu) - KCFLAGS='-O2 -Wall -Wstrict-prototypes -Wno-trigraphs -fomit-frame-pointer -fno-strict-aliasing -fno-common -Wno-unused -m64 -pipe -mno-fpu -mcpu=ultrasparc -mcmodel=medlow -ffixed-g4 -fcall-used-g5 -fcall-used-g7 -Wno-sign-compare -Wa,--undeclared-regs' - KCPPFLAGS='-D__KERNEL__' - MOD_LINK=elf64_sparc - -;; - - powerpc ) - AC_MSG_RESULT($host_cpu) - KCFLAGS='-O2 -g -Wall -Wstrict-prototypes -Wno-trigraphs -fomit-frame-pointer -fno-strict-aliasing -fno-common -D__powerpc__ -fsigned-char -msoft-float -pipe -ffixed-r2 -Wno-uninitialized -mmultiple -mstring' - KCPPFLAGS='-D__KERNEL__ -DMODULE' - MOD_LINK=elf32ppclinux -;; - - *) - AC_ERROR("Unknown Linux Platform: $host_cpu") -;; -esac - -# ----------- make dep run? ------------------ - -if test $host_cpu != "lib" ; then - AC_MSG_CHECKING(if make dep has been run in kernel source (host $host_cpu) ) - if test -f $LINUX/include/linux/config.h ; then - AC_MSG_RESULT(yes) - else - AC_MSG_ERROR(** cannot find $LINUX/include/linux/config.h. Run make dep in $LINUX.) - fi +CPPFLAGS="$CRAY_PORTALS_INCLUDE $CRAY_PORTALS_COMMANDLINE -I\$(top_srcdir)/include -I\$(top_srcdir)/portals/include" + +# liblustre are all the same +LLCPPFLAGS="-D__arch_lib__ -D_LARGEFILE64_SOURCE=1" +AC_SUBST(LLCPPFLAGS) + +LLCFLAGS="-g -Wall -fPIC" +AC_SUBST(LLCFLAGS) + +# everyone builds against portals and lustre + +if test x$enable_ldiskfs = xyes ; then + AC_DEFINE(CONFIG_LDISKFS_FS_MODULE, 1, [build ldiskfs as a module]) + AC_DEFINE(CONFIG_LDISKFS_FS_XATTR, 1, [enable extended attributes for ldiskfs]) + AC_DEFINE(CONFIG_LDISKFS_FS_POSIX_ACL, 1, [enable posix acls]) + AC_DEFINE(CONFIG_LDISKFS_FS_SECURITY, 1, [enable fs security]) fi +EXTRA_KCFLAGS="-g $CRAY_PORTALS_INCLUDE $CRAY_PORTALS_COMMANDLINE -I$PWD/portals/include -I$PWD/include" + +# these are like AC_TRY_COMPILE, but try to build modules against the +# kernel, inside the kernel-tests directory + +AC_DEFUN([LUSTRE_MODULE_CONFTEST], +[cat >conftest.c <<_ACEOF +$1 +_ACEOF +]) + +AC_DEFUN([LUSTRE_MODULE_COMPILE_IFELSE], +[m4_ifvaln([$1], [LUSTRE_MODULE_CONFTEST([$1])])dnl +rm -f kernel-tests/conftest.o kernel-tests/conftest.mod.c kernel-tests/conftest.ko +AS_IF([AC_TRY_COMMAND(cp conftest.c kernel-tests && make [$2] -f $PWD/kernel-tests/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX EXTRA_CFLAGS="$EXTRA_KCFLAGS" $ARCH_UM SUBDIRS=$PWD/kernel-tests) >/dev/null && AC_TRY_COMMAND([$3])], + [$4], + [_AC_MSG_LOG_CONFTEST +m4_ifvaln([$5],[$5])dnl])dnl +rm -f kernel-tests/conftest.o kernel-tests/conftest.mod.c kernel-tests/conftest.mod.o kernel-tests/conftest.ko m4_ifval([$1], [kernel-tests/conftest.c conftest.c])[]dnl +]) + +AC_DEFUN([LUSTRE_MODULE_TRY_COMPILE], +[LUSTRE_MODULE_COMPILE_IFELSE( + [AC_LANG_PROGRAM([[$1]], [[$2]])], + [modules], + [test -s kernel-tests/conftest.o], + [$3], [$4])]) + +AC_DEFUN([LUSTRE_MODULE_TRY_MAKE], +[LUSTRE_MODULE_COMPILE_IFELSE([AC_LANG_PROGRAM([[$1]], [[$2]])], [$3], [$4], [$5], [$6])]) + # ------------ include paths ------------------ -if test $host_cpu != "lib" ; then - KINCFLAGS="-I\$(top_srcdir)/include -I\$(top_srcdir)/portals/include -I$LINUX/include" -else - KINCFLAGS='-I$(top_srcdir)/include -I$(top_srcdir)/portals/include' -fi -CPPFLAGS="$KINCFLAGS $ARCHCPPFLAGS" - -if test $host_cpu != "lib" ; then -# ------------ autoconf.h ------------------ - AC_MSG_CHECKING(if autoconf.h is in kernel source) - if test -f $LINUX/include/linux/autoconf.h ; then - AC_MSG_RESULT(yes) - else - AC_MSG_ERROR(** cannot find $LINUX/include/linux/autoconf.h. Run make config in $LINUX.) - fi - -# ------------ LINUXRELEASE and moduledir ------------------ - AC_MSG_CHECKING(for Linux release) - - dnl We need to rid ourselves of the nasty [ ] quotes. - changequote(, ) - dnl Get release from version.h - LINUXRELEASE="`sed -ne 's/.*UTS_RELEASE[ \"]*\([0-9.a-zA-Z_-]*\).*/\1/p' $LINUX/include/linux/version.h`" - changequote([, ]) - - moduledir='$(libdir)/modules/'$LINUXRELEASE/kernel - AC_SUBST(moduledir) - - modulefsdir='$(moduledir)/fs/$(PACKAGE)' - AC_SUBST(modulefsdir) - - AC_MSG_RESULT($LINUXRELEASE) - AC_SUBST(LINUXRELEASE) - -# ------------ RELEASE -------------------------------- - AC_MSG_CHECKING(lustre release) - - dnl We need to rid ourselves of the nasty [ ] quotes. - changequote(, ) - dnl Get release from version.h - RELEASE="`sed -ne 's/-/_/g' -e 's/.*UTS_RELEASE[ \"]*\([0-9.a-zA-Z_]*\).*/\1/p' $LINUX/include/linux/version.h`_`date +%Y%m%d%H%M`" - changequote([, ]) - - AC_MSG_RESULT($RELEASE) - AC_SUBST(RELEASE) - -# ---------- modversions? -------------------- - AC_MSG_CHECKING(for MODVERSIONS) - if egrep -e 'MODVERSIONS.*1' $LINUX/include/linux/autoconf.h >/dev/null 2>&1; - then - if test $linux25 != "yes"; then - MFLAGS="-DMODULE -DMODVERSIONS -include $LINUX/include/linux/modversions.h -DEXPORT_SYMTAB" - AC_MSG_RESULT(yes) - fi - fi +if test x$enable_modules != xno ; then + # ------------ .config exists ---------------- + AC_CHECK_FILE([$LINUX_CONFIG],[], + [AC_MSG_ERROR([Kernel config could not be found. If you are building from a kernel-source rpm consult README.kernel-source])]) + + # ----------- make dep run? ------------------ + AC_CHECK_FILES([$LINUX/include/linux/autoconf.h + $LINUX/include/linux/version.h + $LINUX/include/linux/config.h],[], + [AC_MSG_ERROR([Run make config in $LINUX.])]) + + # ------------ rhconfig.h includes runtime-generated bits -- + # red hat kernel-source checks + + # we know this exists after the check above. if the user + # tarred up the tree and ran make dep etc. in it, then + # version.h gets overwritten with a standard linux one. + + if grep rhconfig $LINUX/include/linux/version.h >/dev/null ; then + # This is a clean kernel-source tree, we need to + # enable extensive workarounds to get this to build + # modules + AC_CHECK_FILE([$KERNEL_SOURCE_HEADER], + [if test $KERNEL_SOURCE_HEADER = '/boot/kernel.h' ; then + AC_MSG_WARN([Using /boot/kernel.h from RUNNING kernel.]) + AC_MSG_WARN([If this is not what you want, use --with-kernel-source-header.]) + AC_MSG_WARN([Consult README.kernel-source for details.]) + fi], + [AC_MSG_ERROR([$KERNEL_SOURCE_HEADER not found. Consult README.kernel-source for details.])]) + EXTRA_KCFLAGS="-include $KERNEL_SOURCE_HEADER $EXTRA_KCFLAGS" + fi + + # --- check that we can build modules at all + AC_MSG_CHECKING([that modules can be built]) + LUSTRE_MODULE_TRY_COMPILE([],[], + [ + AC_MSG_RESULT([yes]) + ],[ + AC_MSG_RESULT([no]) + AC_MSG_WARN([Consult config.log for details.]) + AC_MSG_WARN([If you are trying to build with a kernel-source rpm, consult README.kernel-source]) + AC_MSG_ERROR([Kernel modules could not be built.]) + ]) + + # ------------ LINUXRELEASE and moduledir ------------------ + AC_MSG_CHECKING([for Linux release]) + rm -f kernel-tests/conftest.i + LINUXRELEASE= + if test $linux25 = 'yes' ; then + makerule="$PWD/kernel-tests" + else + makerule="_dir_$PWD/kernel-tests" + fi + LUSTRE_MODULE_TRY_MAKE( + [#include ], + [LINUXRELEASE=UTS_RELEASE], + [$makerule LUSTRE_KERNEL_TEST=conftest.i], + [test -s kernel-tests/conftest.i], + [ + # LINUXRELEASE="UTS_RELEASE" + eval $(grep LINUXRELEASE kernel-tests/conftest.i) + ],[ + AC_MSG_RESULT([unknown]) + AC_MSG_ERROR([Could not preprocess test program. Consult config.log for details.]) + ]) + rm -f kernel-tests/conftest.i + if test x$LINUXRELEASE = x ; then + AC_MSG_RESULT([unknown]) + AC_MSG_ERROR([Could not determine Linux release version from linux/version.h.]) + fi + AC_MSG_RESULT([$LINUXRELEASE]) + AC_SUBST(LINUXRELEASE) + + moduledir='$(libdir)/modules/'$LINUXRELEASE/kernel + AC_SUBST(moduledir) + + modulefsdir='$(moduledir)/fs/$(PACKAGE)' + AC_SUBST(modulefsdir) + + # ------------ RELEASE -------------------------------- + AC_MSG_CHECKING([for Lustre release]) + RELEASE="`echo ${LINUXRELEASE} | tr '-' '_'`_`date +%Y%m%d%H%M`" + AC_MSG_RESULT($RELEASE) + AC_SUBST(RELEASE) fi # ---------- Portals flags -------------------- @@ -223,204 +250,328 @@ fi #fi #AC_SUBST(usrprefix) -AC_MSG_CHECKING(if kernel has CPU affinity support) -SET_CPUS_ALLOW="`grep -c set_cpus_allowed $LINUX/kernel/softirq.c`" -if test "$SET_CPUS_ALLOW" != 0 ; then - enable_affinity_temp="-DCPU_AFFINITY=1" - AC_MSG_RESULT(yes) +AC_MSG_CHECKING([for zero-copy TCP support]) +AC_ARG_ENABLE([zerocopy], + AC_HELP_STRING([--disable-zerocopy], + [disable socknal zerocopy]), + [],[enable_zerocopy='yes']) +if test x$enable_zerocopy = xno ; then + AC_MSG_RESULT([no (by request)]) else - enable_affinity_temp="" - AC_MSG_RESULT(no) + ZCCD="`grep -c zccd $LINUX/include/linux/skbuff.h`" + if test "$ZCCD" != 0 ; then + AC_DEFINE(SOCKNAL_ZC, 1, [use zero-copy TCP]) + AC_MSG_RESULT(yes) + else + AC_MSG_RESULT([no (no kernel support)]) + fi fi -AC_MSG_CHECKING(if kernel has zero-copy TCP support) -ZCCD="`grep -c zccd $LINUX/include/linux/skbuff.h`" -if test "$ZCCD" != 0 ; then - enable_zerocopy_temp="-DSOCKNAL_ZC=1" - AC_MSG_RESULT(yes) +AC_MSG_CHECKING([for CPU affinity support]) +AC_ARG_ENABLE([affinity], + AC_HELP_STRING([--disable-affinity], + [disable process/irq affinity]), + [],[enable_affinity='yes']) +if test x$enable_affinity = xno ; then + AC_MSG_RESULT([no (by request)]) else - enable_zerocopy_temp="" - AC_MSG_RESULT(no) + SET_CPUS_ALLOW="`grep -c set_cpus_allowed $LINUX/kernel/softirq.c`" + if test "$SET_CPUS_ALLOW" != 0 ; then + AC_DEFINE(CPU_AFFINITY, 1, [kernel has cpu affinity support]) + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no (no kernel support)]) + fi fi -AC_ARG_ENABLE(zerocopy, [ --disable-zerocopy disable socknal zerocopy],enable_zerocopy="", enable_zerocopy=$enable_zerocopy_temp) -AC_ARG_ENABLE(affinity, [ --disable-affinity disable process/irq affinity],enable_affinity="", enable_affinity=$enable_affinity_temp) ##################################### -AC_MSG_CHECKING(if quadrics kernel headers are present) +AC_MSG_CHECKING([if quadrics kernel headers are present]) if test -d $LINUX/drivers/net/qsnet ; then - AC_MSG_RESULT(yes) - QSWNAL="qswnal" - AC_MSG_CHECKING(for multirail EKC) - if test -f $LINUX/include/elan/epcomms.h; then - AC_MSG_RESULT(supported) - with_quadrics="-DMULTIRAIL_EKC=1" - else - AC_MSG_RESULT(not supported) - with_quadrics="-I$LINUX/drivers/net/qsnet/include" - fi - : + AC_MSG_RESULT([yes]) + QSWNAL="qswnal" + AC_MSG_CHECKING([for multirail EKC]) + if test -f $LINUX/include/elan/epcomms.h; then + AC_MSG_RESULT([supported]) + QSWCPPFLAGS="-DMULTIRAIL_EKC=1" + else + AC_MSG_RESULT([not supported]) + QSWCPPFLAGS="-I$LINUX/drivers/net/qsnet/include" + fi else - AC_MSG_RESULT(no) - QSWNAL="" - with_quadrics="" - : + AC_MSG_RESULT([no]) + QSWNAL="" + QSWCPPFLAGS="" fi -AC_SUBST(with_quadrics) +AC_SUBST(QSWCPPFLAGS) AC_SUBST(QSWNAL) - -# R. Read 5/02 -GMNAL="" -echo "checking with-gm=" ${with_gm} -if test "${with_gm+set}" = set; then - if test "${with_gm}" = yes; then - with_gm="-I/usr/local/gm/include" - else - with_gm="-I$with_gm/include -I$with_gm/drivers -I$with_gm/drivers/linux/gm" - fi - GMNAL="gmnal" -else -# default case - no GM - with_gm="" -fi -AC_SUBST(with_gm) +AM_CONDITIONAL(BUILD_QSWNAL, test x$QSWNAL = "xqswnal") + +AC_MSG_CHECKING([if gm support was requested]) +AC_ARG_WITH([gm], + AC_HELP_STRING([--with-gm=path], + [build gmnal against path]), + [ + case $with_gm in + yes) + AC_MSG_RESULT([yes]) + GMCPPFLAGS="-I/usr/local/gm/include" + GMNAL="gmnal" + ;; + no) + AC_MSG_RESULT([no]) + GMCPPFLAGS="" + GMNAL="" + ;; + *) + AC_MSG_RESULT([yes]) + GMCPPFLAGS="-I$with_gm/include -I$with_gm/drivers -I$with_gm/drivers/linux/gm" + GMNAL="gmnal" + ;; + esac + ],[ + AC_MSG_RESULT([no]) + GMCPPFLAGS="" + GMNAL="" + ]) +AC_SUBST(GMCPPFLAGS) AC_SUBST(GMNAL) - +AM_CONDITIONAL(BUILD_GMNAL, test x$GMNAL = "xgmnal") #fixme: where are the default IB includes? default_ib_include_dir=/usr/local/ib/include an_ib_include_file=vapi.h -AC_ARG_WITH(ib, [ --with-ib=[yes/no/path] Path to IB includes], with_ib=$withval, with_ib=$default_ib) -AC_MSG_CHECKING(if IB headers are present) -if test "$with_ib" = yes; then - with_ib=$default_ib_include_dir -fi -if test "$with_ib" != no -a -f ${with_ib}/${an_ib_include_file}; then - AC_MSG_RESULT(yes) - IBNAL="ibnal" - with_ib="-I${with_ib}" -else - AC_MSG_RESULT(no) - IBNAL="" - with_ib="" -fi +AC_MSG_CHECKING([if ib nal support was requested]) +AC_ARG_WITH([ib], + AC_HELP_STRING([--with-ib=yes/no/path], + [Path to IB includes]), + [ + case $with_ib in + yes) + AC_MSG_RESULT([yes]) + IBCPPFLAGS="-I/usr/local/ib/include" + IBNAL="ibnal" + ;; + no) + AC_MSG_RESULT([no]) + IBCPPFLAGS="" + IBNAL="" + ;; + *) + AC_MSG_RESULT([yes]) + IBCPPFLAGS="-I$with_ib" + IBNAL="" + ;; + esac + ],[ + AC_MSG_RESULT([no]) + IBFLAGS="" + IBNAL="" + ]) AC_SUBST(IBNAL) -AC_SUBST(with_ib) - +AC_SUBST(IBCPPFLAGS) +AM_CONDITIONAL(BUILD_IBNAL, test x$IBNAL = "xibnal") def_scamac=/opt/scali/include -AC_ARG_WITH(scamac, [ --with-scamac=[yes/no/path] Path to ScaMAC includes (default=/opt/scali/include)], with_scamac=$withval, with_scamac=$def_scamac) -AC_MSG_CHECKING(if ScaMAC headers are present) -if test "$with_scamac" = yes; then - with_scamac=$def_scamac -fi -if test "$with_scamac" != no -a -f ${with_scamac}/scamac.h; then - AC_MSG_RESULT(yes) - SCIMACNAL="scimacnal" - with_scamac="-I${with_scamac} -I${with_scamac}/icm" -else - AC_MSG_RESULT(no) - SCIMACNAL="" - with_scamac="" -fi - -AC_SUBST(with_scamac) +AC_MSG_CHECKING([if ScaMAC support was requested]) +AC_ARG_WITH([scamac], + AC_HELP_STRING([--with-scamac=yes/no/path], + [Path to ScaMAC includes (default=/opt/scali/include)]), + [ + case $with_scamac in + yes) + AC_MSG_RESULT([yes]) + SCIMACCPPFLAGS="-I/opt/scali/include" + SCIMACNAL="scimacnal" + ;; + no) + AC_MSG_RESULT([no]) + SCIMACCPPFLAGS="" + SCIMACNAL="" + ;; + *) + AC_MSG_RESULT([yes]) + SCIMACCPPFLAGS="-I$with_scamac -I$with_scamac/icm" + SCIMACNAL="scimacnal" + ;; + esac + ],[ + AC_MSG_RESULT([no]) + SCIMACCPPFLAGS="" + SCIMACNAL="" + ]) +AC_SUBST(SCIMACCPPFLAGS) AC_SUBST(SCIMACNAL) +AM_CONDITIONAL(BUILD_SCIMACNAL, test x$SCIMACNAL = "xscimacnal") +# if test "$with_scamac" != no -a -f ${with_scamac}/scamac.h; then -CFLAGS="$KCFLAGS" -CPPFLAGS="$KINCFLAGS $KCPPFLAGS $MFLAGS $enable_zerocopy $enable_affinity $with_quadrics $with_gm $with_scamac $with_ib" -if test $host_cpu == "lib" ; then -CPPFLAGS="$CPPFLAGS -fPIC -D_LARGEFILE64_SOURCE=1 -g" -fi - -AM_CONDITIONAL(LIBLUSTRE, test x$host_cpu = xlib) AC_SUBST(MOD_LINK) AC_SUBST(LINUX25) -AM_CONDITIONAL(LIBLUSTRE, test x$host_cpu = xlib) # ---------- Red Hat 2.4.18 has iobuf->dovary -------------- # But other kernels don't AC_MSG_CHECKING([if struct kiobuf has a dovary field]) -AC_TRY_COMPILE([#define __KERNEL__ - #include ], - [struct kiobuf iobuf; - iobuf.dovary = 1;], - [AC_MSG_RESULT([yes]) - CPPFLAGS="$CPPFLAGS -DHAVE_KIOBUF_DOVARY"], - [AC_MSG_RESULT([no])]) +LUSTRE_MODULE_TRY_COMPILE( + [ + #include + ],[ + struct kiobuf iobuf; + iobuf.dovary = 1; + ],[ + AC_MSG_RESULT([yes]) + AC_DEFINE(HAVE_KIOBUF_DOVARY, 1, [struct kiobuf has a dovary field]) + ],[ + AC_MSG_RESULT([no]) + ]) + +# ----------- 2.6.4 no longer has page->list --------------- +AC_MSG_CHECKING([if struct page has a list field]) +LUSTRE_MODULE_TRY_COMPILE( + [ + #include + ],[ + struct page page; + &page.list; + ],[ + AC_MSG_RESULT([yes]) + AC_DEFINE(HAVE_PAGE_LIST, 1, [struct page has a list field]) + ],[ + AC_MSG_RESULT([no]) + ]) # ---------- Red Hat 2.4.20 backports some 2.5 bits -------- # This needs to run after we've defined the KCPPFLAGS -AC_MSG_CHECKING(for kernel version) -AC_TRY_COMPILE([#define __KERNEL__ - #include ], - [struct task_struct p; - p.sighand = NULL;], - [RH_2_4_20=1], - [RH_2_4_20=0]) - -if test $RH_2_4_20 = 1; then - AC_MSG_RESULT(redhat-2.4.20) - CPPFLAGS="$CPPFLAGS -DCONFIG_RH_2_4_20" -else - AC_MSG_RESULT($LINUXRELEASE) -fi +AC_MSG_CHECKING([for kernel version]) +LUSTRE_MODULE_TRY_COMPILE( + [ + #include + ],[ + struct task_struct p; + p.sighand = NULL; + ],[ + AC_DEFINE(CONFIG_RH_2_4_20, 1, [this kernel contains Red Hat 2.4.20 patches]) + AC_MSG_RESULT([redhat-2.4.20]) + ],[ + AC_MSG_RESULT([$LINUXRELEASE]) + ]) # ---------- Red Hat 2.4.21 backports some more 2.5 bits -------- -AC_MSG_CHECKING(if kernel defines PDE) +AC_MSG_CHECKING([if kernel defines PDE]) HAVE_PDE="`grep -c 'proc_dir_entry..PDE' $LINUX/include/linux/proc_fs.h`" if test "$HAVE_PDE" != 0 ; then - CPPFLAGS="$CPPFLAGS -DHAVE_PDE" - AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_PDE, 1, [the kernel defines PDE]) + AC_MSG_RESULT([yes]) else - AC_MSG_RESULT(no) + AC_MSG_RESULT([no]) fi -AC_MSG_CHECKING(if kernel passes struct file to direct_IO) +AC_MSG_CHECKING([if kernel passes struct file to direct_IO]) HAVE_DIO_FILE="`grep -c 'direct_IO.*struct file' $LINUX/include/linux/fs.h`" if test "$HAVE_DIO_FILE" != 0 ; then - CPPFLAGS="$CPPFLAGS -DHAVE_DIO_FILE" - AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_DIO_FILE, 1, [the kernel passes struct file to direct_IO]) + AC_MSG_RESULT(yes) else - AC_MSG_RESULT(no) + AC_MSG_RESULT(no) fi -# --- Check that ext3 and ext3 xattr are enabled in the kernel -if test "$host_cpu" != "lib" ; then - AC_MSG_CHECKING([that ext3 is enabled in the kernel]) - AC_TRY_COMPILE([ -#define __KERNEL__ -#include - ], +if test x$enable_modules != xno ; then + # ---------- modules? ------------------------ + AC_MSG_CHECKING([for module support]) + LUSTRE_MODULE_TRY_COMPILE( [ -#ifdef CONFIG_EXT3_FS - return 0; -#else -#error CONFIG_EXT3_FS not #defined -#endif - ],[AC_MSG_RESULT([yes])], - [AC_MSG_RESULT([no]) - AC_MSG_ERROR([Lustre requires that ext3 is enabled in the kernel (CONFIG_EXT3_FS)]) + #include + ],[ + #ifndef CONFIG_MODULES + #error CONFIG_MODULES not #defined + #endif + ],[ + AC_MSG_RESULT([yes]) + ],[ + AC_MSG_RESULT([no]) + AC_MSG_ERROR([module support is required to build Lustre kernel modules.]) + ]) + + # ---------- modversions? -------------------- + AC_MSG_CHECKING([for MODVERSIONS]) + LUSTRE_MODULE_TRY_COMPILE( + [ + #include + ],[ + #ifndef CONFIG_MODVERSIONS + #error CONFIG_MODVERSIONS not #defined + #endif + ],[ + AC_MSG_RESULT([yes]) + ],[ + AC_MSG_RESULT([no]) + ]) + + # ------------ preempt ----------------------- + AC_MSG_CHECKING([if preempt is enabled]) + LUSTRE_MODULE_TRY_COMPILE( + [ + #include + ],[ + #ifndef CONFIG_PREEMPT + #error CONFIG_PREEMPT is not #defined + #endif + ],[ + AC_MSG_RESULT([yes]) + AC_MSG_ERROR([Lustre does not support kernels with preempt enabled.]) + ],[ + AC_MSG_RESULT([no]) ]) -# disable this check until our xattr patches define it! -# AC_MSG_CHECKING([that extended attributes for ext3 are enabled in the kernel]) -# AC_TRY_COMPILE([ -##define __KERNEL__ -##include -# ], -# [ -##ifdef CONFIG_EXT3_FS_XATTR -# return 0; -##else -##error CONFIG_EXT3_FS_XATTR not #defined -##endif -# ],[AC_MSG_RESULT([yes])], -# [AC_MSG_RESULT([no]) -# AC_MSG_ERROR([Lustre requires that extended attributes for ext3 are enabled in the kernel (CONFIG_EXT3_FS_XATTR)]) -# ]) + + if test $BACKINGFS = 'ext3' ; then + # --- Check that ext3 and ext3 xattr are enabled in the kernel + AC_MSG_CHECKING([that ext3 is enabled in the kernel]) + LUSTRE_MODULE_TRY_COMPILE( + [ + #include + ],[ + #ifndef CONFIG_EXT3_FS + #ifndef CONFIG_EXT3_FS_MODULE + #error CONFIG_EXT3_FS not #defined + #endif + #endif + ],[ + AC_MSG_RESULT([yes]) + ],[ + AC_MSG_RESULT([no]) + AC_MSG_ERROR([Lustre requires that ext3 is enabled in the kernel (CONFIG_EXT3_FS)]) + ]) + + AC_MSG_CHECKING([that extended attributes for ext3 are enabled in the kernel]) + LUSTRE_MODULE_TRY_COMPILE( + [ + #include + ],[ + #ifndef CONFIG_EXT3_FS_XATTR + #error CONFIG_EXT3_FS_XATTR not #defined + #endif + ],[ + AC_MSG_RESULT([yes]) + ],[ + AC_MSG_RESULT([no]) + AC_MSG_WARN([Lustre requires that extended attributes for ext3 are enabled in the kernel (CONFIG_EXT3_FS_XATTR.)]) + AC_MSG_WARN([This build may fail.]) + ]) + fi # BACKINGFS = ext3 fi + +CPPFLAGS="-include \$(top_builddir)/include/config.h $CPPFLAGS" +EXTRA_KCFLAGS="-include $PWD/include/config.h $EXTRA_KCFLAGS" +AC_SUBST(EXTRA_KCFLAGS) + +#echo "KCPPFLAGS: $KCPPFLAGS" +#echo "KCFLAGS: $KCFLAGS" +#echo "LLCPPFLAGS: $LLCPPFLAGS" +#echo "LLCFLAGS: $LLCFLAGS" +#echo "MOD_LINK: $MOD_LINK" +#echo "CFLAGS: $CFLAGS" +#echo "CPPFLAGS: $CPPFLAGS" diff --git a/lustre/portals/build.m4 b/lustre/portals/build.m4 index 8c55b20..93a370f 100644 --- a/lustre/portals/build.m4 +++ b/lustre/portals/build.m4 @@ -1,5 +1,9 @@ # ---------- other tests and settings --------- +AC_CHECK_TYPE([spinlock_t], + [AC_DEFINE(HAVE_SPINLOCK_T, 1, [spinlock_t is defined])], + [], + [#include ]) # --------- unsigned long long sane? ------- @@ -28,6 +32,9 @@ pkgexampledir='${prefix}/usr/lib/$(PACKAGE)/examples' AC_SUBST(pkgexampledir) pymoddir='${prefix}/usr/lib/${PACKAGE}/python/Lustre' AC_SUBST(pymoddir) +# for substitution in lconf +PYMOD_DIR="/usr/lib/$PACKAGE/python" +AC_SUBST(PYMOD_DIR) modulenetdir='$(moduledir)/net/$(PACKAGE)' AC_SUBST(modulenetdir) @@ -35,14 +42,15 @@ AC_SUBST(modulenetdir) # ---------- BAD gcc? ------------ AC_PROG_RANLIB AC_PROG_CC -AC_MSG_CHECKING(for buggy compiler) +AC_MSG_CHECKING([for buggy compiler]) CC_VERSION=`$CC -v 2>&1 | grep "^gcc version"` bad_cc() { + AC_MSG_RESULT([buggy compiler found!]) echo echo " '$CC_VERSION'" echo " has been known to generate bad code, " echo " please get an updated compiler." - AC_MSG_ERROR(sorry) + AC_MSG_ERROR([sorry]) } TMP_VERSION=`echo $CC_VERSION | cut -c 1-16` if test "$TMP_VERSION" = "gcc version 2.95"; then @@ -61,7 +69,7 @@ case "$CC_VERSION" in bad_cc ;; *) - AC_MSG_RESULT(no known problems) + AC_MSG_RESULT([no known problems]) ;; esac # end ------ BAD gcc? ------------ @@ -70,29 +78,30 @@ esac # this doesn't seem to work on older autoconf # AC_CHECK_LIB(readline, readline,,) -AC_ARG_ENABLE(readline, [ --enable-readline use readline library],, - enable_readline="yes") - -if test "$enable_readline" = "yes" ; then - LIBREADLINE="-lreadline -lncurses" - HAVE_LIBREADLINE="-DHAVE_LIBREADLINE=1" +AC_MSG_CHECKING([for readline support]) +AC_ARG_ENABLE(readline, + AC_HELP_STRING([--disable-readline], + [do not use readline library]), + [],[enable_readline='yes']) +AC_MSG_RESULT([$enable_readline]) +if test x$enable_readline = xyes ; then + LIBREADLINE="-lreadline -lncurses" + AC_DEFINE(HAVE_LIBREADLINE, 1, [readline library is available]) else - LIBREADLINE="" - HAVE_LIBREADLINE="" + LIBREADLINE="" fi AC_SUBST(LIBREADLINE) -AC_SUBST(HAVE_LIBREADLINE) -AC_ARG_ENABLE(efence, [ --enable-efence use efence library],, - enable_efence="no") - +AC_MSG_CHECKING([if efence debugging support is requested]) +AC_ARG_ENABLE(efence, + AC_HELP_STRING([--enable-efence], + [use efence library]), + [],[enable_efence='no']) +AC_MSG_RESULT([$enable_efence]) if test "$enable_efence" = "yes" ; then - LIBEFENCE="-lefence" - HAVE_LIBEFENCE="-DHAVE_LIBEFENCE=1" + LIBEFENCE="-lefence" + AC_DEFINE(HAVE_LIBEFENCE, 1, [libefence support is requested]) else - LIBEFENCE="" - HAVE_LIBEFENCE="" + LIBEFENCE="" fi AC_SUBST(LIBEFENCE) -AC_SUBST(HAVE_LIBEFENCE) - diff --git a/lustre/portals/configure.in b/lustre/portals/configure.in deleted file mode 100644 index bacf532..0000000 --- a/lustre/portals/configure.in +++ /dev/null @@ -1,34 +0,0 @@ -# This version is here to make autoconf happy; the name is a file which is -# "unique" to this directory so that configure knows where it should run. -AC_INIT(knals/Makefile.am, 3.0) -AC_CANONICAL_SYSTEM -# Copyright (C) 2001 Cluster File Systems, Inc. -# -# This code is issued under the GNU General Public License. -# See the file COPYING in this distribution - -# Automake variables. Steal the version number from packaging/intersync.spec -AM_INIT_AUTOMAKE(portals, builtin([esyscmd], [sed -ne '/.*define IVERSION /{ s/.*IVERSION //; p; }' libcfs/module.c])) -# AM_MAINTAINER_MODE - -sinclude(build.m4) -sinclude(archdep.m4) - -if test x$enable_inkernel = xyes ; then -cp Kernelenv.mk Kernelenv.in -cp Makefile.mk Makefile.in -cp libcfs/Makefile.mk libcfs/Makefile.in -cp portals/Makefile.mk portals/Makefile.in -cp knals/Makefile.mk knals/Makefile.in -cp knals/socknal/Makefile.mk knals/socknal/Makefile.in -cp router/Makefile.mk router/Makefile.in -fi - -AM_CONFIG_HEADER(include/config.h) - -AC_OUTPUT([Makefile Kernelenv libcfs/Makefile portals/Makefile \ - unals/Makefile knals/Makefile router/Makefile \ - knals/socknal/Makefile knals/gmnal/Makefile knals/qswnal/Makefile \ - knals/scimacnal/Makefile knals/ibnal/Makefile\ - utils/Makefile tests/Makefile doc/Makefile ]) - diff --git a/lustre/portals/include/Makefile.am b/lustre/portals/include/Makefile.am deleted file mode 100644 index 2cf7f99..0000000 --- a/lustre/portals/include/Makefile.am +++ /dev/null @@ -1,8 +0,0 @@ -# Copyright (C) 2001 Cluster File Systems, Inc. -# -# This code is issued under the GNU General Public License. -# See the file COPYING in this distribution - -SUBDIRS = portals linux -EXTRA_DIST = config.h.in -include $(top_srcdir)/Rules diff --git a/lustre/portals/include/config.h.in b/lustre/portals/include/config.h.in deleted file mode 100644 index f295154..0000000 --- a/lustre/portals/include/config.h.in +++ /dev/null @@ -1,61 +0,0 @@ -/* portals/include/config.h.in. Generated from configure.in by autoheader. */ - -/* Use the Pinger */ -#undef ENABLE_PINGER - -/* Define to 1 if you have the header file. */ -#undef HAVE_INTTYPES_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_MEMORY_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_STDINT_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_STDLIB_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_STRINGS_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_STRING_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_SYS_STAT_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_SYS_TYPES_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_UNISTD_H - -/* IOCTL Buffer Size */ -#undef OBD_MAX_IOCTL_BUFFER - -/* Name of package */ -#undef PACKAGE - -/* Define to the address where bug reports for this package should be sent. */ -#undef PACKAGE_BUGREPORT - -/* Define to the full name of this package. */ -#undef PACKAGE_NAME - -/* Define to the full name and version of this package. */ -#undef PACKAGE_STRING - -/* Define to the one symbol short name of this package. */ -#undef PACKAGE_TARNAME - -/* Define to the version of this package. */ -#undef PACKAGE_VERSION - -/* The size of a `unsigned long long', as computed by sizeof. */ -#undef SIZEOF_UNSIGNED_LONG_LONG - -/* Define to 1 if you have the ANSI C header files. */ -#undef STDC_HEADERS - -/* Version number of package */ -#undef VERSION diff --git a/lustre/portals/include/linux/Makefile.am b/lustre/portals/include/linux/Makefile.am deleted file mode 100644 index 6a65cb5..0000000 --- a/lustre/portals/include/linux/Makefile.am +++ /dev/null @@ -1,10 +0,0 @@ -# Copyright (C) 2001 Cluster File Systems, Inc. -# -# This code is issued under the GNU General Public License. -# See the file COPYING in this distribution - -include $(top_srcdir)/Rules - -linuxincludedir = $(includedir)/linux - -linuxinclude_HEADERS=kp30.h portals_lib.h diff --git a/lustre/portals/include/linux/kp30.h b/lustre/portals/include/linux/kp30.h index 4c3e85f..b27eaa0 100644 --- a/lustre/portals/include/linux/kp30.h +++ b/lustre/portals/include/linux/kp30.h @@ -4,6 +4,7 @@ #ifndef _KP30_INCLUDED #define _KP30_INCLUDED +#include #define PORTAL_DEBUG #ifndef offsetof @@ -12,158 +13,6 @@ #define LOWEST_BIT_SET(x) ((x) & ~((x) - 1)) -/* - * Debugging - */ -extern unsigned int portal_subsystem_debug; -extern unsigned int portal_stack; -extern unsigned int portal_debug; -extern unsigned int portal_printk; -extern unsigned int portal_cerror; -/* Debugging subsystems (32 bits, non-overlapping) */ -#define S_UNDEFINED 0x00000001 -#define S_MDC 0x00000002 -#define S_MDS 0x00000004 -#define S_OSC 0x00000008 -#define S_OST 0x00000010 -#define S_CLASS 0x00000020 -#define S_LOG 0x00000040 -#define S_LLITE 0x00000080 -#define S_RPC 0x00000100 -#define S_MGMT 0x00000200 -#define S_PORTALS 0x00000400 -#define S_SOCKNAL 0x00000800 -#define S_QSWNAL 0x00001000 -#define S_PINGER 0x00002000 -#define S_FILTER 0x00004000 -#define S_PTLBD 0x00008000 -#define S_ECHO 0x00010000 -#define S_LDLM 0x00020000 -#define S_LOV 0x00040000 -#define S_GMNAL 0x00080000 -#define S_PTLROUTER 0x00100000 -#define S_COBD 0x00200000 -#define S_IBNAL 0x00400000 - -/* If you change these values, please keep portals/utils/debug.c - * up to date! */ - -/* Debugging masks (32 bits, non-overlapping) */ -#define D_TRACE 0x00000001 /* ENTRY/EXIT markers */ -#define D_INODE 0x00000002 -#define D_SUPER 0x00000004 -#define D_EXT2 0x00000008 /* anything from ext2_debug */ -#define D_MALLOC 0x00000010 /* print malloc, free information */ -#define D_CACHE 0x00000020 /* cache-related items */ -#define D_INFO 0x00000040 /* general information */ -#define D_IOCTL 0x00000080 /* ioctl related information */ -#define D_BLOCKS 0x00000100 /* ext2 block allocation */ -#define D_NET 0x00000200 /* network communications */ -#define D_WARNING 0x00000400 /* CWARN(...) == CDEBUG (D_WARNING, ...) */ -#define D_BUFFS 0x00000800 -#define D_OTHER 0x00001000 -#define D_DENTRY 0x00002000 -#define D_PORTALS 0x00004000 /* ENTRY/EXIT markers */ -#define D_PAGE 0x00008000 /* bulk page handling */ -#define D_DLMTRACE 0x00010000 -#define D_ERROR 0x00020000 /* CERROR(...) == CDEBUG (D_ERROR, ...) */ -#define D_EMERG 0x00040000 /* CEMERG(...) == CDEBUG (D_EMERG, ...) */ -#define D_HA 0x00080000 /* recovery and failover */ -#define D_RPCTRACE 0x00100000 /* for distributed debugging */ -#define D_VFSTRACE 0x00200000 -#define D_READA 0x00400000 /* read-ahead */ - -#ifdef __KERNEL__ -# include /* THREAD_SIZE */ -#else -# ifndef THREAD_SIZE /* x86_64 has THREAD_SIZE in userspace */ -# define THREAD_SIZE 8192 -# endif -#endif - -#define LUSTRE_TRACE_SIZE (THREAD_SIZE >> 5) - -#ifdef __KERNEL__ -# ifdef __ia64__ -# define CDEBUG_STACK (THREAD_SIZE - \ - ((unsigned long)__builtin_dwarf_cfa() & \ - (THREAD_SIZE - 1))) -# else -# define CDEBUG_STACK (THREAD_SIZE - \ - ((unsigned long)__builtin_frame_address(0) & \ - (THREAD_SIZE - 1))) -# endif - -#define CHECK_STACK(stack) \ - do { \ - if ((stack) > 3*THREAD_SIZE/4 && (stack) > portal_stack) { \ - portals_debug_msg(DEBUG_SUBSYSTEM, D_WARNING, \ - __FILE__, __FUNCTION__, __LINE__, \ - (stack),"maximum lustre stack %u\n",\ - portal_stack = (stack)); \ - /*panic("LBUG");*/ \ - } \ - } while (0) -#else /* __KERNEL__ */ -#define CHECK_STACK(stack) do { } while(0) -#define CDEBUG_STACK (0L) -#endif /* __KERNEL__ */ - -#if 1 -#define CDEBUG(mask, format, a...) \ -do { \ - if (portal_cerror == 0) \ - break; \ - CHECK_STACK(CDEBUG_STACK); \ - if (((mask) & (D_ERROR | D_EMERG | D_WARNING)) || \ - (portal_debug & (mask) && \ - portal_subsystem_debug & DEBUG_SUBSYSTEM)) \ - portals_debug_msg(DEBUG_SUBSYSTEM, mask, \ - __FILE__, __FUNCTION__, __LINE__, \ - CDEBUG_STACK, format, ## a); \ -} while (0) - -#define CWARN(format, a...) CDEBUG(D_WARNING, format, ## a) -#define CERROR(format, a...) CDEBUG(D_ERROR, format, ## a) -#define CEMERG(format, a...) CDEBUG(D_EMERG, format, ## a) - -#define GOTO(label, rc) \ -do { \ - long GOTO__ret = (long)(rc); \ - CDEBUG(D_TRACE,"Process leaving via %s (rc=%lu : %ld : %lx)\n", \ - #label, (unsigned long)GOTO__ret, (signed long)GOTO__ret,\ - (signed long)GOTO__ret); \ - goto label; \ -} while (0) - -#define RETURN(rc) \ -do { \ - typeof(rc) RETURN__ret = (rc); \ - CDEBUG(D_TRACE, "Process leaving (rc=%lu : %ld : %lx)\n", \ - (long)RETURN__ret, (long)RETURN__ret, (long)RETURN__ret);\ - return RETURN__ret; \ -} while (0) - -#define ENTRY \ -do { \ - CDEBUG(D_TRACE, "Process entered\n"); \ -} while (0) - -#define EXIT \ -do { \ - CDEBUG(D_TRACE, "Process leaving\n"); \ -} while(0) -#else -#define CDEBUG(mask, format, a...) do { } while (0) -#define CWARN(format, a...) do { } while (0) -#define CERROR(format, a...) printk("<3>" format, ## a) -#define CEMERG(format, a...) printk("<0>" format, ## a) -#define GOTO(label, rc) do { (void)(rc); goto label; } while (0) -#define RETURN(rc) return (rc) -#define ENTRY do { } while (0) -#define EXIT do { } while (0) -#endif - #ifdef __KERNEL__ # include # include @@ -172,7 +21,7 @@ do { \ # include # include # include -# include +# include # include # include @@ -353,188 +202,6 @@ do { \ #endif /******************************************************************************/ -/* Kernel Portals Router interface */ - -typedef void (*kpr_fwd_callback_t)(void *arg, int error); // completion callback - -/* space for routing targets to stash "stuff" in a forwarded packet */ -typedef union { - long long _alignment; - void *_space[16]; /* scale with CPU arch */ -} kprfd_scratch_t; - -/* Kernel Portals Routing Forwarded message Descriptor */ -typedef struct { - struct list_head kprfd_list; /* stash in queues (routing target can use) */ - ptl_nid_t kprfd_target_nid; /* final destination NID */ - ptl_nid_t kprfd_gateway_nid; /* gateway NID */ - ptl_hdr_t *kprfd_hdr; /* header in wire byte order */ - int kprfd_nob; /* # payload bytes */ - int kprfd_niov; /* # payload frags */ - ptl_kiov_t *kprfd_kiov; /* payload fragments */ - void *kprfd_router_arg; /* originating NAL's router arg */ - kpr_fwd_callback_t kprfd_callback; /* completion callback */ - void *kprfd_callback_arg; /* completion callback arg */ - kprfd_scratch_t kprfd_scratch; /* scratchpad for routing targets */ -} kpr_fwd_desc_t; - -typedef void (*kpr_fwd_t)(void *arg, kpr_fwd_desc_t *fwd); -typedef void (*kpr_notify_t)(void *arg, ptl_nid_t peer, int alive); - -/* NAL's routing interface (Kernel Portals Routing Nal Interface) */ -typedef const struct { - int kprni_nalid; /* NAL's id */ - void *kprni_arg; /* Arg to pass when calling into NAL */ - kpr_fwd_t kprni_fwd; /* NAL's forwarding entrypoint */ - kpr_notify_t kprni_notify; /* NAL's notification entrypoint */ -} kpr_nal_interface_t; - -/* Router's routing interface (Kernel Portals Routing Router Interface) */ -typedef const struct { - /* register the calling NAL with the router and get back the handle for - * subsequent calls */ - int (*kprri_register) (kpr_nal_interface_t *nal_interface, - void **router_arg); - - /* ask the router to find a gateway that forwards to 'nid' and is a - * peer of the calling NAL; assume caller will send 'nob' bytes of - * payload there */ - int (*kprri_lookup) (void *router_arg, ptl_nid_t nid, int nob, - ptl_nid_t *gateway_nid); - - /* hand a packet over to the router for forwarding */ - kpr_fwd_t kprri_fwd_start; - - /* hand a packet back to the router for completion */ - void (*kprri_fwd_done) (void *router_arg, kpr_fwd_desc_t *fwd, - int error); - - /* notify the router about peer state */ - void (*kprri_notify) (void *router_arg, ptl_nid_t peer, - int alive, time_t when); - - /* the calling NAL is shutting down */ - void (*kprri_shutdown) (void *router_arg); - - /* deregister the calling NAL with the router */ - void (*kprri_deregister) (void *router_arg); - -} kpr_router_interface_t; - -/* Convenient struct for NAL to stash router interface/args */ -typedef struct { - kpr_router_interface_t *kpr_interface; - void *kpr_arg; -} kpr_router_t; - -/* Router's control interface (Kernel Portals Routing Control Interface) */ -typedef const struct { - int (*kprci_add_route)(int gateway_nal, ptl_nid_t gateway_nid, - ptl_nid_t lo_nid, ptl_nid_t hi_nid); - int (*kprci_del_route)(int gateway_nal, ptl_nid_t gateway_nid, - ptl_nid_t lo_nid, ptl_nid_t hi_nid); - int (*kprci_get_route)(int index, int *gateway_nal, - ptl_nid_t *gateway, - ptl_nid_t *lo_nid, ptl_nid_t *hi_nid, - int *alive); - int (*kprci_notify)(int gateway_nal, ptl_nid_t gateway_nid, - int alive, time_t when); -} kpr_control_interface_t; - -extern kpr_control_interface_t kpr_control_interface; -extern kpr_router_interface_t kpr_router_interface; - -static inline int -kpr_register (kpr_router_t *router, kpr_nal_interface_t *nalif) -{ - int rc; - - router->kpr_interface = PORTAL_SYMBOL_GET (kpr_router_interface); - if (router->kpr_interface == NULL) - return (-ENOENT); - - rc = (router->kpr_interface)->kprri_register (nalif, &router->kpr_arg); - if (rc != 0) - router->kpr_interface = NULL; - - PORTAL_SYMBOL_PUT (kpr_router_interface); - return (rc); -} - -static inline int -kpr_routing (kpr_router_t *router) -{ - return (router->kpr_interface != NULL); -} - -static inline int -kpr_lookup (kpr_router_t *router, ptl_nid_t nid, int nob, ptl_nid_t *gateway_nid) -{ - if (!kpr_routing (router)) - return (-ENETUNREACH); - - return (router->kpr_interface->kprri_lookup(router->kpr_arg, nid, nob, - gateway_nid)); -} - -static inline void -kpr_fwd_init (kpr_fwd_desc_t *fwd, ptl_nid_t nid, ptl_hdr_t *hdr, - int nob, int niov, ptl_kiov_t *kiov, - kpr_fwd_callback_t callback, void *callback_arg) -{ - fwd->kprfd_target_nid = nid; - fwd->kprfd_gateway_nid = nid; - fwd->kprfd_hdr = hdr; - fwd->kprfd_nob = nob; - fwd->kprfd_niov = niov; - fwd->kprfd_kiov = kiov; - fwd->kprfd_callback = callback; - fwd->kprfd_callback_arg = callback_arg; -} - -static inline void -kpr_fwd_start (kpr_router_t *router, kpr_fwd_desc_t *fwd) -{ - if (!kpr_routing (router)) - fwd->kprfd_callback (fwd->kprfd_callback_arg, -ENETUNREACH); - else - router->kpr_interface->kprri_fwd_start (router->kpr_arg, fwd); -} - -static inline void -kpr_fwd_done (kpr_router_t *router, kpr_fwd_desc_t *fwd, int error) -{ - LASSERT (kpr_routing (router)); - router->kpr_interface->kprri_fwd_done (router->kpr_arg, fwd, error); -} - -static inline void -kpr_notify (kpr_router_t *router, - ptl_nid_t peer, int alive, time_t when) -{ - if (!kpr_routing (router)) - return; - - router->kpr_interface->kprri_notify(router->kpr_arg, peer, alive, when); -} - -static inline void -kpr_shutdown (kpr_router_t *router) -{ - if (kpr_routing (router)) - router->kpr_interface->kprri_shutdown (router->kpr_arg); -} - -static inline void -kpr_deregister (kpr_router_t *router) -{ - if (!kpr_routing (router)) - return; - router->kpr_interface->kprri_deregister (router->kpr_arg); - router->kpr_interface = NULL; -} - -/******************************************************************************/ #ifdef PORTALS_PROFILING #define prof_enum(FOO) PROF__##FOO @@ -634,6 +301,7 @@ extern void kportal_blockallsigs (void); #endif # include # include +# include # include # ifndef DEBUG_SUBSYSTEM # define DEBUG_SUBSYSTEM S_UNDEFINED @@ -650,6 +318,7 @@ extern void kportal_blockallsigs (void); # define printk(format, args...) printf (format, ## args) # define PORTAL_ALLOC(ptr, size) do { (ptr) = malloc(size); } while (0); # define PORTAL_FREE(a, b) do { free(a); } while (0); +void portals_debug_dumplog(void); # define portals_debug_msg(subsys, mask, file, fn, line, stack, format, a...) \ printf("%02x:%06x (@%lu %s:%s,l. %d %d %lu): " format, \ (subsys), (mask), (long)time(0), file, fn, line, \ @@ -766,76 +435,10 @@ struct portals_device_userstate * USER LEVEL STUFF BELOW */ -#define PORTALS_CFG_VERSION 0x00010001; - -struct portals_cfg { - __u32 pcfg_version; - __u32 pcfg_command; - - __u32 pcfg_nal; - __u32 pcfg_flags; - - __u32 pcfg_gw_nal; - __u64 pcfg_nid; - __u64 pcfg_nid2; - __u64 pcfg_nid3; - __u32 pcfg_id; - __u32 pcfg_misc; - __u32 pcfg_fd; - __u32 pcfg_count; - __u32 pcfg_size; - __u32 pcfg_wait; - - __u32 pcfg_plen1; /* buffers in userspace */ - char *pcfg_pbuf1; - __u32 pcfg_plen2; /* buffers in userspace */ - char *pcfg_pbuf2; -}; - -#define PCFG_INIT(pcfg, cmd) \ -do { \ - memset(&pcfg, 0, sizeof(pcfg)); \ - pcfg.pcfg_version = PORTALS_CFG_VERSION; \ - pcfg.pcfg_command = (cmd); \ - \ -} while (0) - #define PORTAL_IOCTL_VERSION 0x00010007 #define PING_SYNC 0 #define PING_ASYNC 1 -struct portal_ioctl_data { - __u32 ioc_len; - __u32 ioc_version; - __u64 ioc_nid; - __u64 ioc_nid2; - __u64 ioc_nid3; - __u32 ioc_count; - __u32 ioc_nal; - __u32 ioc_nal_cmd; - __u32 ioc_fd; - __u32 ioc_id; - - __u32 ioc_flags; - __u32 ioc_size; - - __u32 ioc_wait; - __u32 ioc_timeout; - __u32 ioc_misc; - - __u32 ioc_inllen1; - char *ioc_inlbuf1; - __u32 ioc_inllen2; - char *ioc_inlbuf2; - - __u32 ioc_plen1; /* buffers in userspace */ - char *ioc_pbuf1; - __u32 ioc_plen2; /* buffers in userspace */ - char *ioc_pbuf2; - - char ioc_bulk[0]; -}; - struct portal_ioctl_hdr { __u32 ioc_len; __u32 ioc_version; @@ -1051,7 +654,7 @@ extern ptl_handle_ni_t kibnal_ni; extern ptl_handle_ni_t kscimacnal_ni; #endif -#define PTL_NALFMT_SIZE 16 +#define PTL_NALFMT_SIZE 26 /* %u:%u.%u.%u.%u (10+4+4+4+3+1) */ #define NAL_MAX_NR (NAL_ENUM_END_MARKER - 1) @@ -1082,7 +685,6 @@ struct lustre_peer { ptl_handle_ni_t peer_ni; }; - /* module.c */ typedef int (*nal_cmd_handler_t)(struct portals_cfg *, void * private); int kportal_nal_register(int nal, nal_cmd_handler_t handler, void * private); diff --git a/lustre/portals/include/linux/kpr.h b/lustre/portals/include/linux/kpr.h index 51d2d2f..ee50b59 100644 --- a/lustre/portals/include/linux/kpr.h +++ b/lustre/portals/include/linux/kpr.h @@ -1,6 +1,6 @@ /* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*- - * vim:expandtab:shiftwidth=8:tabstop=8: - */ + * * vim:expandtab:shiftwidth=8:tabstop=8: + * */ #ifndef _KPR_H #define _KPR_H @@ -81,6 +81,21 @@ typedef struct { void *kpr_arg; } kpr_router_t; +/* Router's control interface (Kernel Portals Routing Control Interface) */ +typedef const struct { + int (*kprci_add_route)(int gateway_nal, ptl_nid_t gateway_nid, + ptl_nid_t lo_nid, ptl_nid_t hi_nid); + int (*kprci_del_route)(int gateway_nal, ptl_nid_t gateway_nid, + ptl_nid_t lo_nid, ptl_nid_t hi_nid); + int (*kprci_get_route)(int index, int *gateway_nal, + ptl_nid_t *gateway, + ptl_nid_t *lo_nid, ptl_nid_t *hi_nid, + int *alive); + int (*kprci_notify)(int gateway_nal, ptl_nid_t gateway_nid, + int alive, time_t when); +} kpr_control_interface_t; + +extern kpr_control_interface_t kpr_control_interface; extern kpr_router_interface_t kpr_router_interface; static inline int diff --git a/lustre/portals/include/linux/libcfs.h b/lustre/portals/include/linux/libcfs.h index 99d3877..efdc8fe 100644 --- a/lustre/portals/include/linux/libcfs.h +++ b/lustre/portals/include/linux/libcfs.h @@ -6,28 +6,6 @@ #define PORTAL_DEBUG -#ifdef __linux__ -# include -# if defined(__powerpc__) && !defined(__KERNEL__) -# define __KERNEL__ -# include -# undef __KERNEL__ -# else -# include -# endif -#else -# include -typedef u_int32_t __u32; -typedef u_int64_t __u64; -#endif - -#ifdef __KERNEL__ -# include -#else -# include -# define do_gettimeofday(tv) gettimeofday(tv, NULL); -#endif - #ifndef offsetof # define offsetof(typ,memb) ((int)((char *)&(((typ *)0)->memb))) #endif @@ -220,11 +198,6 @@ do { \ \ } while (0) -typedef int (nal_cmd_handler_fn)(struct portals_cfg *, void *); -int libcfs_nal_cmd_register(int nal, nal_cmd_handler_fn *handler, void *arg); -int libcfs_nal_cmd(struct portals_cfg *pcfg); -void libcfs_nal_cmd_unregister(int nal); - struct portal_ioctl_data { __u32 ioc_len; __u32 ioc_version; @@ -257,7 +230,6 @@ struct portal_ioctl_data { char ioc_bulk[0]; }; - #ifdef __KERNEL__ #include diff --git a/lustre/portals/include/linux/portals_compat25.h b/lustre/portals/include/linux/portals_compat25.h index 43618589..9ab4020 100644 --- a/lustre/portals/include/linux/portals_compat25.h +++ b/lustre/portals/include/linux/portals_compat25.h @@ -40,6 +40,9 @@ # define RECALC_SIGPENDING recalc_sigpending() # define CURRENT_SECONDS CURRENT_TIME +# define kernel_text_address(addr) is_kernel_text_address(addr) +extern int is_kernel_text_address(unsigned long addr); + #else /* 2.4.x */ # define SIGNAL_MASK_LOCK(task, flags) \ @@ -51,17 +54,30 @@ # define RECALC_SIGPENDING recalc_sigpending(current) # define CURRENT_SECONDS CURRENT_TIME +# define kernel_text_address(addr) is_kernel_text_address(addr) +extern int is_kernel_text_address(unsigned long addr); + #endif #if defined(__arch_um__) && (LINUX_VERSION_CODE < KERNEL_VERSION(2,4,20)) -# define THREAD_NAME(comm, fmt, a...) \ - sprintf(comm, fmt "|%d", ## a, current->thread.extern_pid) +# define THREAD_NAME(comm, len, fmt, a...) \ + snprintf(comm, len, fmt "|%d", ## a, current->thread.extern_pid) #elif defined(__arch_um__) && (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)) -# define THREAD_NAME(comm, fmt, a...) \ - sprintf(comm, fmt "|%d", ## a, current->thread.mode.tt.extern_pid) +# define THREAD_NAME(comm, len, fmt, a...) \ + snprintf(comm, len,fmt"|%d", ## a,current->thread.mode.tt.extern_pid) +#else +# define THREAD_NAME(comm, len, fmt, a...) \ + snprintf(comm, len, fmt, ## a) +#endif + +#ifdef HAVE_PAGE_LIST +/* 2.4 alloc_page users can use page->list */ +#define PAGE_LIST_ENTRY list +#define PAGE_LIST(page) ((page)->list) #else -# define THREAD_NAME(comm, fmt, a...) \ - sprintf(comm, fmt, ## a) +/* 2.6 alloc_page users can use page->lru */ +#define PAGE_LIST_ENTRY lru +#define PAGE_LIST(page) ((page)->lru) #endif #endif /* _PORTALS_COMPAT_H */ diff --git a/lustre/portals/include/portals/Makefile.am b/lustre/portals/include/portals/Makefile.am deleted file mode 100644 index c61b084..0000000 --- a/lustre/portals/include/portals/Makefile.am +++ /dev/null @@ -1,10 +0,0 @@ -# Copyright (C) 2001 Cluster File Systems, Inc. -# -# This code is issued under the GNU General Public License. -# See the file COPYING in this distribution - -SUBDIRS = base -include $(top_srcdir)/Rules - -pkginclude_HEADERS=api-support.h api.h arg-blocks.h defines.h errno.h internal.h lib-dispatch.h lib-nal.h lib-p30.h lib-types.h myrnal.h nal.h p30.h ppid.h ptlctl.h stringtab.h types.h nalids.h list.h bridge.h ipmap.h procbridge.h lltrace.h - diff --git a/lustre/portals/include/portals/lib-p30.h b/lustre/portals/include/portals/lib-p30.h index e9e4635..b1a6e04 100644 --- a/lustre/portals/include/portals/lib-p30.h +++ b/lustre/portals/include/portals/lib-p30.h @@ -245,10 +245,14 @@ lib_me_free(nal_cb_t *nal, lib_me_t *me) static inline lib_msg_t * lib_msg_alloc(nal_cb_t *nal) { - /* NEVER called with statelock held */ + /* NEVER called with statelock held; may be in interrupt... */ lib_msg_t *msg; - PORTAL_ALLOC(msg, sizeof(*msg)); + if (in_interrupt()) + PORTAL_ALLOC_ATOMIC(msg, sizeof(*msg)); + else + PORTAL_ALLOC(msg, sizeof(*msg)); + if (msg != NULL) { /* NULL pointers, clear flags etc */ memset (msg, 0, sizeof (*msg)); diff --git a/lustre/portals/knals/.cvsignore b/lustre/portals/knals/.cvsignore index 89a4aa6..f5fd0b0 100644 --- a/lustre/portals/knals/.cvsignore +++ b/lustre/portals/knals/.cvsignore @@ -1,3 +1,5 @@ Makefile -Makefile.in -.*.o.cmd +autoMakefile +autoMakefile.in +.*.cmd +.depend diff --git a/lustre/portals/knals/Makefile.am b/lustre/portals/knals/Makefile.am deleted file mode 100644 index df6ee5c..0000000 --- a/lustre/portals/knals/Makefile.am +++ /dev/null @@ -1,7 +0,0 @@ -# Copyright (C) 2001 Cluster File Systems, Inc. -# -# This code is issued under the GNU General Public License. -# See the file COPYING in this distribution - -DIST_SUBDIRS= socknal qswnal gmnal scimacnal ibnal -SUBDIRS= socknal @QSWNAL@ @GMNAL@ @SCIMACNAL@ @IBNAL@ diff --git a/lustre/portals/knals/gmnal/.cvsignore b/lustre/portals/knals/gmnal/.cvsignore index e995588..642e2e6 100644 --- a/lustre/portals/knals/gmnal/.cvsignore +++ b/lustre/portals/knals/gmnal/.cvsignore @@ -1,3 +1,10 @@ .deps Makefile -Makefile.in +autoMakefile.in +autoMakefile +*.ko +*.mod.c +.*.cmd +.*.flags +.tmp_versions +.depend diff --git a/lustre/portals/knals/gmnal/Makefile.am b/lustre/portals/knals/gmnal/Makefile.am deleted file mode 100644 index bac4680..0000000 --- a/lustre/portals/knals/gmnal/Makefile.am +++ /dev/null @@ -1,13 +0,0 @@ -# Copyright (C) 2001 Cluster File Systems, Inc. -# -# This code is issued under the GNU General Public License. -# See the file COPYING in this distribution - -include ../../Rules.linux - -MODULE = kgmnal -modulenet_DATA = kgmnal.o -EXTRA_PROGRAMS = kgmnal - -DEFS = -DGM_KERNEL -kgmnal_SOURCES = gmnal.h gmnal_api.c gmnal_cb.c gmnal_comm.c gmnal_utils.c gmnal_module.c diff --git a/lustre/portals/knals/ibnal/.cvsignore b/lustre/portals/knals/ibnal/.cvsignore index e995588..48b17e9 100644 --- a/lustre/portals/knals/ibnal/.cvsignore +++ b/lustre/portals/knals/ibnal/.cvsignore @@ -1,3 +1,10 @@ .deps Makefile -Makefile.in +autoMakefile.in +autoMakefile +*.ko +*.mod.c +.*.flags +.*.cmd +.tmp_versions +.depend diff --git a/lustre/portals/knals/ibnal/Makefile.am b/lustre/portals/knals/ibnal/Makefile.am deleted file mode 100644 index 84818dc..0000000 --- a/lustre/portals/knals/ibnal/Makefile.am +++ /dev/null @@ -1,10 +0,0 @@ -include ../../Rules.linux - -MODULE = kibnal -modulenet_DATA = kibnal.o -EXTRA_PROGRAMS = kibnal - - -DEFS = -CPPFLAGS=@CPPFLAGS@ @with_ib@ -kibnal_SOURCES = ibnal.h ibnal.c ibnal_cb.c diff --git a/lustre/portals/knals/ibnal/ibnal.h b/lustre/portals/knals/ibnal/ibnal.h index ff5aeb3..4a1f0d7 100644 --- a/lustre/portals/knals/ibnal/ibnal.h +++ b/lustre/portals/knals/ibnal/ibnal.h @@ -29,6 +29,7 @@ #include #include #include +#include // Infiniband VAPI/EVAPI header files // Mellanox MT23108 VAPI diff --git a/lustre/portals/knals/qswnal/.cvsignore b/lustre/portals/knals/qswnal/.cvsignore index e995588..48b17e9 100644 --- a/lustre/portals/knals/qswnal/.cvsignore +++ b/lustre/portals/knals/qswnal/.cvsignore @@ -1,3 +1,10 @@ .deps Makefile -Makefile.in +autoMakefile.in +autoMakefile +*.ko +*.mod.c +.*.flags +.*.cmd +.tmp_versions +.depend diff --git a/lustre/portals/knals/qswnal/Makefile.am b/lustre/portals/knals/qswnal/Makefile.am deleted file mode 100644 index 3eb4dd5..0000000 --- a/lustre/portals/knals/qswnal/Makefile.am +++ /dev/null @@ -1,17 +0,0 @@ -# Copyright (C) 2001 Cluster File Systems, Inc. -# -# This code is issued under the GNU General Public License. -# See the file COPYING in this distribution - -include ../../Rules.linux - -MODULE = kqswnal -modulenet_DATA = kqswnal.o -EXTRA_PROGRAMS = kqswnal - - -#CFLAGS:= @KCFLAGS@ -#CPPFLAGS:=@KCPPFLAGS@ -DEFS = -CPPFLAGS=@CPPFLAGS@ @with_quadrics@ -kqswnal_SOURCES = qswnal.c qswnal_cb.c qswnal.h diff --git a/lustre/portals/knals/qswnal/qswnal.h b/lustre/portals/knals/qswnal/qswnal.h index 5ebf30a..bedc6e0 100644 --- a/lustre/portals/knals/qswnal/qswnal.h +++ b/lustre/portals/knals/qswnal/qswnal.h @@ -71,8 +71,10 @@ #define DEBUG_SUBSYSTEM S_QSWNAL #include +#include #include #include +#include #define KQSW_CHECKSUM 0 #if KQSW_CHECKSUM diff --git a/lustre/portals/knals/qswnal/qswnal_cb.c b/lustre/portals/knals/qswnal/qswnal_cb.c index 157dc70..731357e 100644 --- a/lustre/portals/knals/qswnal/qswnal_cb.c +++ b/lustre/portals/knals/qswnal/qswnal_cb.c @@ -85,6 +85,9 @@ kqswnal_printf (nal_cb_t * nal, const char *fmt, ...) CDEBUG (D_NET, "%s", msg); } +#if (defined(CONFIG_SPARC32) || defined(CONFIG_SPARC64)) +# error "Can't save/restore irq contexts in different procedures" +#endif static void kqswnal_cli(nal_cb_t *nal, unsigned long *flags) diff --git a/lustre/portals/knals/scimacnal/.cvsignore b/lustre/portals/knals/scimacnal/.cvsignore index e995588..48b17e9 100644 --- a/lustre/portals/knals/scimacnal/.cvsignore +++ b/lustre/portals/knals/scimacnal/.cvsignore @@ -1,3 +1,10 @@ .deps Makefile -Makefile.in +autoMakefile.in +autoMakefile +*.ko +*.mod.c +.*.flags +.*.cmd +.tmp_versions +.depend diff --git a/lustre/portals/knals/scimacnal/Makefile.am b/lustre/portals/knals/scimacnal/Makefile.am deleted file mode 100644 index 6da31f0..0000000 --- a/lustre/portals/knals/scimacnal/Makefile.am +++ /dev/null @@ -1,11 +0,0 @@ -# This code is issued under the GNU General Public License. -# See the file COPYING in this distribution - -include ../../Rules.linux - -MODULE = kscimacnal -modulenet_DATA = kscimacnal.o -EXTRA_PROGRAMS = kscimacnal - -DEFS = -kscimacnal_SOURCES = scimacnal.c scimacnal_cb.c scimacnal.h diff --git a/lustre/portals/knals/scimacnal/scimacnal.h b/lustre/portals/knals/scimacnal/scimacnal.h index 6949557..f132769 100644 --- a/lustre/portals/knals/scimacnal/scimacnal.h +++ b/lustre/portals/knals/scimacnal/scimacnal.h @@ -34,6 +34,7 @@ #define DEBUG_SUBSYSTEM S_UNDEFINED #include +#include #include #include diff --git a/lustre/portals/knals/socknal/.cvsignore b/lustre/portals/knals/socknal/.cvsignore index 95973d6..5ed596b 100644 --- a/lustre/portals/knals/socknal/.cvsignore +++ b/lustre/portals/knals/socknal/.cvsignore @@ -1,4 +1,10 @@ .deps Makefile -Makefile.in -.*.o.cmd +.*.cmd +autoMakefile.in +autoMakefile +*.ko +*.mod.c +.*.flags +.tmp_versions +.depend diff --git a/lustre/portals/knals/socknal/Makefile.am b/lustre/portals/knals/socknal/Makefile.am deleted file mode 100644 index acdba5e..0000000 --- a/lustre/portals/knals/socknal/Makefile.am +++ /dev/null @@ -1,17 +0,0 @@ -# Copyright (C) 2001 Cluster File Systems, Inc. -# -# This code is issued under the GNU General Public License. -# See the file COPYING in this distribution - -include ../../Rules.linux - -MODULE = ksocknal -modulenet_DATA = ksocknal.o -EXTRA_PROGRAMS = ksocknal - -# If you don't build with -O2, your modules won't insert, becahse htonl is -# just special that way. -AM_CFLAGS = -O2 - -DEFS = -ksocknal_SOURCES = socknal.c socknal_cb.c socknal.h diff --git a/lustre/portals/knals/socknal/socknal.h b/lustre/portals/knals/socknal/socknal.h index a768ae5..194ac98 100644 --- a/lustre/portals/knals/socknal/socknal.h +++ b/lustre/portals/knals/socknal/socknal.h @@ -61,8 +61,10 @@ #include #include +#include #include #include +#include #include #if CONFIG_SMP @@ -105,6 +107,9 @@ # define sk_prot prot # define sk_sndbuf sndbuf # define sk_socket socket +#endif + +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0)) # define sk_wmem_queued wmem_queued #endif diff --git a/lustre/portals/knals/socknal/socknal_cb.c b/lustre/portals/knals/socknal/socknal_cb.c index c89e20e..f02cbda 100644 --- a/lustre/portals/knals/socknal/socknal_cb.c +++ b/lustre/portals/knals/socknal/socknal_cb.c @@ -24,6 +24,9 @@ */ #include "socknal.h" +#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,5,0)) +# include +#endif /* * LIB functions follow @@ -90,6 +93,8 @@ ksocknal_cli(nal_cb_t *nal, unsigned long *flags) { ksock_nal_data_t *data = nal->nal_data; + /* OK to ignore 'flags'; we're only ever serialise threads and + * never need to lock out interrupts */ spin_lock(&data->ksnd_nal_cb_lock); } diff --git a/lustre/portals/libcfs/.cvsignore b/lustre/portals/libcfs/.cvsignore index 7fa686f..df12db6 100644 --- a/lustre/portals/libcfs/.cvsignore +++ b/lustre/portals/libcfs/.cvsignore @@ -1,5 +1,12 @@ .deps Makefile -Makefile.in link-stamp -.*.o.cmd +.*.cmd +autoMakefile.in +autoMakefile +sources +*.ko +*.mod.c +.*.flags +.tmp_versions +.depend diff --git a/lustre/portals/libcfs/Makefile.am b/lustre/portals/libcfs/Makefile.am deleted file mode 100644 index cf9220b..0000000 --- a/lustre/portals/libcfs/Makefile.am +++ /dev/null @@ -1,29 +0,0 @@ -# Copyright (C) 2001, 2002 Cluster File Systems, Inc. -# -# This code is issued under the GNU General Public License. -# See the file COPYING in this distribution - - -MODULE = portals -modulenet_DATA = portals.o -EXTRA_PROGRAMS = portals - -LIBLINKS := lib-dispatch.c lib-eq.c lib-init.c lib-md.c lib-me.c lib-move.c lib-msg.c lib-ni.c lib-pid.c -APILINKS := api-eq.c api-errno.c api-init.c api-me.c api-ni.c api-wrap.c -LINKS = $(APILINKS) $(LIBLINKS) -DISTCLEANFILES = $(LINKS) link-stamp *.orig *.rej - -$(LINKS): link-stamp -link-stamp: - -list='$(LIBLINKS)'; for f in $$list; do echo $$f ; ln -sf $(srcdir)/../portals/$$f .; done - -list='$(APILINKS)'; for f in $$list; do echo $$f ; ln -sf $(srcdir)/../portals/$$f .; done - echo timestamp > link-stamp - -DEFS = -portals_SOURCES = $(LINKS) module.c proc.c debug.c lwt.c - -# Don't distribute any patched files. -dist-hook: - list='$(EXT2C)'; for f in $$list; do rm -f $(distdir)/$$f; done - -include ../Rules.linux diff --git a/lustre/portals/libcfs/Makefile.in b/lustre/portals/libcfs/Makefile.in index 6f9c981..5d2688e 100644 --- a/lustre/portals/libcfs/Makefile.in +++ b/lustre/portals/libcfs/Makefile.in @@ -1,4 +1,9 @@ -MODULES = libcfs +MODULES = portals libcfs-objs := debug.o lwt.o module.o proc.o +api-sources := $(wildcard @LUSTRE@/portals/portals/api-*.c) +lib-sources := $(wildcard @LUSTRE@/portals/portals/lib-*.c) + +portals-objs += $(libcfs-objs) $(patsubst %.c,%.o,$(notdir $(api-sources) $(lib-sources))) + @INCLUDE_RULES@ diff --git a/lustre/portals/libcfs/autoMakefile.am b/lustre/portals/libcfs/autoMakefile.am index 192c3ef..50adb3f 100644 --- a/lustre/portals/libcfs/autoMakefile.am +++ b/lustre/portals/libcfs/autoMakefile.am @@ -4,8 +4,17 @@ # See the file COPYING in this distribution if MODULES -modulenet_DATA := libcfs$(KMODEXT) +modulenet_DATA := portals$(KMODEXT) endif +sources: + rm -f sources + @for i in $(api-sources) $(lib-sources) ; do \ + echo ln -sf $$i . ; \ + ln -sf $$i . || exit 1 ; \ + done + touch sources + MOSTLYCLEANFILES = *.o *.ko *.mod.c -DIST_SOURCES = $(libcfs-objs:%.o=%.c) +CLEANFILES = sources lib-*.c api-*.c +DIST_SOURCES = $(portals-objs:%.o=%.c) diff --git a/lustre/portals/libcfs/debug.c b/lustre/portals/libcfs/debug.c index 538b7a2..a9c1adc 100644 --- a/lustre/portals/libcfs/debug.c +++ b/lustre/portals/libcfs/debug.c @@ -45,11 +45,39 @@ #include #include #include +#include # define DEBUG_SUBSYSTEM S_PORTALS #include #include +#include + +#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,5,0)) +#include +#endif + +unsigned int portal_subsystem_debug = ~0 - (S_PORTALS | S_QSWNAL | S_SOCKNAL | + S_GMNAL | S_IBNAL); +EXPORT_SYMBOL(portal_subsystem_debug); + +unsigned int portal_debug = (D_WARNING | D_DLMTRACE | D_ERROR | D_EMERG | D_HA | + D_RPCTRACE | D_VFSTRACE); +EXPORT_SYMBOL(portal_debug); + +unsigned int portal_cerror = 1; +EXPORT_SYMBOL(portal_cerror); + +unsigned int portal_printk; +EXPORT_SYMBOL(portal_printk); + +unsigned int portal_stack; +EXPORT_SYMBOL(portal_stack); + +#ifdef __KERNEL__ +atomic_t portal_kmemory = ATOMIC_INIT(0); +EXPORT_SYMBOL(portal_kmemory); +#endif #define DEBUG_OVERFLOW 1024 static char *debug_buf = NULL; @@ -671,7 +699,7 @@ __s32 portals_debug_copy_to_user(char *buf, unsigned long len) rc = -ENOMEM; goto cleanup; } - list_add(&page->list, &my_pages); + list_add(&PAGE_LIST(page), &my_pages); } spin_lock_irqsave(&portals_debug_lock, flags); @@ -696,7 +724,7 @@ __s32 portals_debug_copy_to_user(char *buf, unsigned long len) unsigned long to_copy; void *addr; - page = list_entry(pos, struct page, list); + page = list_entry(pos, struct page, PAGE_LIST_ENTRY); to_copy = min(total - off, PAGE_SIZE); if (to_copy == 0) { off = 0; @@ -725,7 +753,7 @@ finish_partial: off = 0; list_for_each(pos, &my_pages) { unsigned long to_copy; - page = list_entry(pos, struct page, list); + page = list_entry(pos, struct page, PAGE_LIST_ENTRY); to_copy = min(copied - off, PAGE_SIZE); rc = copy_to_user(buf + off, kmap(page), to_copy); @@ -742,8 +770,8 @@ finish_partial: cleanup: list_for_each_safe(pos, n, &my_pages) { - page = list_entry(pos, struct page, list); - list_del(&page->list); + page = list_entry(pos, struct page, PAGE_LIST_ENTRY); + list_del(&PAGE_LIST(page)); __free_page(page); } return rc; @@ -934,20 +962,26 @@ void portals_run_lbug_upcall(char *file, const char *fn, const int line) char *portals_nid2str(int nal, ptl_nid_t nid, char *str) { switch(nal){ +/* XXX this could be a nal method of some sort, 'cept it's config + * dependent whether (say) socknal NIDs are actually IP addresses... */ +#ifndef CRAY_PORTALS case TCPNAL: /* userspace NAL */ case SOCKNAL: - sprintf(str, "%u:%d.%d.%d.%d", (__u32)(nid >> 32), - HIPQUAD(nid)); + snprintf(str, PTL_NALFMT_SIZE - 1, "%u:%u.%u.%u.%u", + (__u32)(nid >> 32), HIPQUAD(nid)); break; case QSWNAL: case GMNAL: case IBNAL: case SCIMACNAL: - sprintf(str, "%u:%u", (__u32)(nid >> 32), (__u32)nid); + snprintf(str, PTL_NALFMT_SIZE - 1, "%u:%u", + (__u32)(nid >> 32), (__u32)nid); break; +#endif default: - return NULL; + snprintf(str, PTL_NALFMT_SIZE - 1, "?%d? %llx", + nal, (long long)nid); } return str; } @@ -958,8 +992,6 @@ spinlock_t stack_backtrace_lock = SPIN_LOCK_UNLOCKED; #if defined(__arch_um__) -extern int is_kernel_text_address(unsigned long addr); - char *portals_debug_dumpstack(void) { asm("int $3"); @@ -968,33 +1000,45 @@ char *portals_debug_dumpstack(void) #elif defined(__i386__) -extern int is_kernel_text_address(unsigned long addr); +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)) extern int lookup_symbol(unsigned long address, char *buf, int buflen); +const char *kallsyms_lookup(unsigned long addr, + unsigned long *symbolsize, + unsigned long *offset, + char **modname, char *namebuf) +{ + int rc = lookup_symbol(addr, namebuf, 128); + if (rc == -ENOSYS) + return NULL; + return namebuf; +} +#endif char *portals_debug_dumpstack(void) { - unsigned long esp = current->thread.esp; + unsigned long esp = current->thread.esp, addr; unsigned long *stack = (unsigned long *)&esp; + char *buf = stack_backtrace, *pbuf = buf; int size; - unsigned long addr; - char *buf = stack_backtrace; - char *pbuf = buf; - static char buffer[512]; - int rc = 0; /* User space on another CPU? */ - if ((esp ^ (unsigned long)current) & (PAGE_MASK<<1)){ + if ((esp ^ (unsigned long)current) & (PAGE_MASK << 1)){ buf[0] = '\0'; goto out; } size = sprintf(pbuf, " Call Trace: "); pbuf += size; - while (((long) stack & (THREAD_SIZE-1)) != 0) { + while (((long) stack & (THREAD_SIZE - 1)) != 0) { addr = *stack++; - if (is_kernel_text_address(addr)) { - rc = lookup_symbol(addr, buffer, 512); - if (rc == -ENOSYS) { + if (kernel_text_address(addr)) { + const char *sym_name; + char *modname, buffer[128]; + unsigned long junk, offset; + + sym_name = kallsyms_lookup(addr, &junk, &offset, + &modname, buffer); + if (sym_name == NULL) { if (buf + LUSTRE_TRACE_SIZE <= pbuf + 12) break; size = sprintf(pbuf, "[<%08lx>] ", addr); @@ -1004,7 +1048,7 @@ char *portals_debug_dumpstack(void) <= pbuf + strlen(buffer) + 28 + 1) break; size = sprintf(pbuf, "([<%08lx>] %s (0x%p)) ", - addr, buffer, stack-1); + addr, buffer, stack - 1); } pbuf += size; } diff --git a/lustre/portals/libcfs/module.c b/lustre/portals/libcfs/module.c index 2f5a852..f46c855 100644 --- a/lustre/portals/libcfs/module.c +++ b/lustre/portals/libcfs/module.c @@ -47,6 +47,7 @@ #include #include #include +#include #include #define PORTAL_MINOR 240 @@ -59,7 +60,7 @@ struct nal_cmd_handler { }; static struct nal_cmd_handler nal_cmd[NAL_MAX_NR + 1]; -struct semaphore nal_cmd_sem; +static DECLARE_MUTEX(nal_cmd_sem); #ifdef PORTAL_DEBUG void kportal_assertion_failed(char *expr, char *file, const char *func, @@ -799,11 +800,6 @@ EXPORT_SYMBOL(PtlFini); EXPORT_SYMBOL(PtlPut); EXPORT_SYMBOL(PtlGet); EXPORT_SYMBOL(ptl_err_str); -EXPORT_SYMBOL(portal_subsystem_debug); -EXPORT_SYMBOL(portal_debug); -EXPORT_SYMBOL(portal_stack); -EXPORT_SYMBOL(portal_printk); -EXPORT_SYMBOL(portal_cerror); EXPORT_SYMBOL(PtlEQWait); EXPORT_SYMBOL(PtlEQFree); EXPORT_SYMBOL(PtlEQGet); @@ -822,13 +818,12 @@ EXPORT_SYMBOL(lib_parse); EXPORT_SYMBOL(lib_fake_reply_msg); EXPORT_SYMBOL(lib_init); EXPORT_SYMBOL(lib_fini); -EXPORT_SYMBOL(portal_kmemory); +EXPORT_SYMBOL(dispatch_name); EXPORT_SYMBOL(kportal_daemonize); EXPORT_SYMBOL(kportal_blockallsigs); EXPORT_SYMBOL(kportal_nal_register); EXPORT_SYMBOL(kportal_nal_unregister); EXPORT_SYMBOL(kportal_assertion_failed); -EXPORT_SYMBOL(dispatch_name); EXPORT_SYMBOL(kportal_get_ni); EXPORT_SYMBOL(kportal_put_ni); EXPORT_SYMBOL(kportal_nal_cmd); diff --git a/lustre/portals/portals/.cvsignore b/lustre/portals/portals/.cvsignore index 95973d6..5ed596b 100644 --- a/lustre/portals/portals/.cvsignore +++ b/lustre/portals/portals/.cvsignore @@ -1,4 +1,10 @@ .deps Makefile -Makefile.in -.*.o.cmd +.*.cmd +autoMakefile.in +autoMakefile +*.ko +*.mod.c +.*.flags +.tmp_versions +.depend diff --git a/lustre/portals/portals/Makefile.am b/lustre/portals/portals/Makefile.am deleted file mode 100644 index d17db61..0000000 --- a/lustre/portals/portals/Makefile.am +++ /dev/null @@ -1,14 +0,0 @@ -# Copyright (C) 2002 Cluster File Systems, Inc. -# -# This code is issued under the GNU General Public License. -# See the file COPYING in this distribution - - -CPPFLAGS= -INCLUDES=-I$(top_srcdir)/portals/include -I$(top_srcdir)/include -noinst_LIBRARIES= libportals.a -libportals_a_SOURCES= api-eq.c api-init.c api-me.c api-errno.c api-ni.c api-wrap.c lib-dispatch.c lib-init.c lib-me.c lib-msg.c lib-eq.c lib-md.c lib-move.c lib-ni.c lib-pid.c - -if LIBLUSTRE -libportals_a_CFLAGS= -fPIC -endif diff --git a/lustre/portals/portals/Makefile.in b/lustre/portals/portals/Makefile.in index 6ce334b..71067ac 100644 --- a/lustre/portals/portals/Makefile.in +++ b/lustre/portals/portals/Makefile.in @@ -1,6 +1,6 @@ -MODULES := portals -portals-objs := api-eq.o api-init.o api-me.o api-errno.o api-ni.o api-wrap.o -portals-objs += lib-dispatch.o lib-init.o lib-me.o lib-msg.o lib-eq.o lib-md.o -portals-objs += lib-move.o lib-ni.o lib-pid.o module.o +#MODULES := portals +#portals-objs := api-eq.o api-init.o api-me.o api-errno.o api-ni.o api-wrap.o +#portals-objs += lib-dispatch.o lib-init.o lib-me.o lib-msg.o lib-eq.o lib-md.o +#portals-objs += lib-move.o lib-ni.o lib-pid.o @INCLUDE_RULES@ diff --git a/lustre/portals/portals/Makefile.mk b/lustre/portals/portals/Makefile.mk index 7822846..de01765 100644 --- a/lustre/portals/portals/Makefile.mk +++ b/lustre/portals/portals/Makefile.mk @@ -9,4 +9,4 @@ obj-y += portals.o portals-objs := lib-dispatch.o lib-eq.o lib-init.o lib-md.o lib-me.o \ lib-move.o lib-msg.o lib-ni.o lib-pid.o \ api-eq.o api-errno.o api-init.o api-me.o api-ni.o \ - api-wrap.o + api-wrap.o module.o diff --git a/lustre/portals/portals/api-init.c b/lustre/portals/portals/api-init.c index b811391..0a64864 100644 --- a/lustre/portals/portals/api-init.c +++ b/lustre/portals/portals/api-init.c @@ -26,17 +26,6 @@ #include int ptl_init; -unsigned int portal_subsystem_debug = ~0 - (S_PORTALS | S_QSWNAL | S_SOCKNAL | - S_GMNAL | S_IBNAL); -unsigned int portal_debug = (D_WARNING | D_DLMTRACE | D_ERROR | D_EMERG | D_HA | - D_RPCTRACE | D_VFSTRACE); -unsigned int portal_cerror = 1; -unsigned int portal_printk; -unsigned int portal_stack; - -#ifdef __KERNEL__ -atomic_t portal_kmemory = ATOMIC_INIT(0); -#endif int __p30_initialized; int __p30_myr_initialized; diff --git a/lustre/portals/portals/autoMakefile.am b/lustre/portals/portals/autoMakefile.am index bf7a107..22565dd 100644 --- a/lustre/portals/portals/autoMakefile.am +++ b/lustre/portals/portals/autoMakefile.am @@ -16,11 +16,11 @@ libportals_a_CPPFLAGS = $(LLCPPFLAGS) libportals_a_CFLAGS = $(LLCFLAGS) endif -if MODULES -modulenet_DATA = portals$(KMODEXT) -endif # MODULES +#if MODULES +#modulenet_DATA = portals$(KMODEXT) +#endif # MODULES endif # CRAY_PORTALS MOSTLYCLEANFILES = *.o *.ko *.mod.c -DIST_SOURCES = $(portals-objs:%.o=%.c) +#DIST_SOURCES = $(portals-objs:%.o=%.c) diff --git a/lustre/portals/router/.cvsignore b/lustre/portals/router/.cvsignore index 95973d6..5ed596b 100644 --- a/lustre/portals/router/.cvsignore +++ b/lustre/portals/router/.cvsignore @@ -1,4 +1,10 @@ .deps Makefile -Makefile.in -.*.o.cmd +.*.cmd +autoMakefile.in +autoMakefile +*.ko +*.mod.c +.*.flags +.tmp_versions +.depend diff --git a/lustre/portals/router/Makefile.am b/lustre/portals/router/Makefile.am deleted file mode 100644 index 1c8087b..0000000 --- a/lustre/portals/router/Makefile.am +++ /dev/null @@ -1,16 +0,0 @@ -# Copyright (C) 2001 Cluster File Systems, Inc. -# -# This code is issued under the GNU General Public License. -# See the file COPYING in this distribution - -include ../Rules.linux - -MODULE = kptlrouter -modulenet_DATA = kptlrouter.o -EXTRA_PROGRAMS = kptlrouter - - -#CFLAGS:= @KCFLAGS@ -#CPPFLAGS:=@KCPPFLAGS@ -DEFS = -kptlrouter_SOURCES = router.c proc.c router.h diff --git a/lustre/portals/router/router.h b/lustre/portals/router/router.h index ea25439..309025b3 100644 --- a/lustre/portals/router/router.h +++ b/lustre/portals/router/router.h @@ -39,6 +39,7 @@ #define DEBUG_SUBSYSTEM S_PTLROUTER #include +#include #include #include diff --git a/lustre/portals/tests/.cvsignore b/lustre/portals/tests/.cvsignore index d0c4c88..e034130 100644 --- a/lustre/portals/tests/.cvsignore +++ b/lustre/portals/tests/.cvsignore @@ -1,4 +1,10 @@ Makefile -Makefile.in .deps -.*.o.cmd +.*.cmd +autoMakefile.in +autoMakefile +*.ko +*.mod.c +.*.flags +.tmp_versions +.depend diff --git a/lustre/portals/tests/Makefile.am b/lustre/portals/tests/Makefile.am deleted file mode 100644 index 7b47ae0..0000000 --- a/lustre/portals/tests/Makefile.am +++ /dev/null @@ -1,23 +0,0 @@ -# Copyright (C) 2001 Cluster File Systems, Inc. -# -# This code is issued under the GNU General Public License. -# See the file COPYING in this distribution - -include ../Rules.linux - -LDFLAGS = -m "`$(LD) --help | awk '/supported emulations/ {print $$4}'`" -r -LINK = $(LD) $(LDFLAGS) -o $@ -DEFS = -LIBS = -MODULE = $(basename) -EXTRA_DIST = startserver.sh startclient.sh stopserver.sh stopclient.sh - -noinst_PROGRAMS = pingsrv.o pingcli.o spingsrv.o spingcli.o - -pingsrv_o_SOURCES = ping_srv.c ping.h - -pingcli_o_SOURCES = ping_cli.c ping.h - -spingsrv_o_SOURCES = sping_srv.c ping.h - -spingcli_o_SOURCES = sping_cli.c ping.h diff --git a/lustre/portals/unals/Makefile.am b/lustre/portals/unals/Makefile.am index 6035ca1..4c842a1 100644 --- a/lustre/portals/unals/Makefile.am +++ b/lustre/portals/unals/Makefile.am @@ -1,9 +1,8 @@ -CPPFLAGS= -INCLUDES=-I$(top_srcdir)/portals/include -I$(top_srcdir)/include -I$(srcdir) +if LIBLUSTRE noinst_LIBRARIES = libtcpnal.a +endif + pkginclude_HEADERS = pqtimer.h dispatch.h table.h timer.h connection.h ipmap.h bridge.h procbridge.h libtcpnal_a_SOURCES = debug.c pqtimer.c select.c table.c pqtimer.h dispatch.h table.h timer.h address.c procapi.c proclib.c connection.c tcpnal.c connection.h - -if LIBLUSTRE -libtcpnal_a_CFLAGS = -fPIC -endif +libtcpnal_a_CPPFLAGS = $(LLCPPFLAGS) +libtcpnal_a_CFLAGS = $(LLCFLAGS) diff --git a/lustre/portals/utils/Makefile.am b/lustre/portals/utils/Makefile.am index 925406f..15c1774 100644 --- a/lustre/portals/utils/Makefile.am +++ b/lustre/portals/utils/Makefile.am @@ -3,21 +3,21 @@ # This code is issued under the GNU General Public License. # See the file COPYING in this distribution -COMPILE = $(CC) -Wall -g -I$(srcdir)/../include -LINK = $(CC) -o $@ +## $(srcdir)/../ for , ../../ for generated +#COMPILE = $(CC) -Wall -g -I$(srcdir)/../include -I../../include +#LINK = $(CC) -o $@ if LIBLUSTRE - noinst_LIBRARIES = libuptlctl.a libuptlctl_a_SOURCES = portals.c debug.c l_ioctl.c parser.c parser.h -libuptlctl_a_CFLAGS = -fPIC - -else +libuptlctl_a_CPPFLAGS = $(LLCPPFLAGS) +libuptlctl_a_CFLAGS = $(LLCFLAGS) +endif sbin_PROGRAMS = acceptor ptlctl debugctl routerstat wirecheck gmnalnid lib_LIBRARIES = libptlctl.a -acceptor_SOURCES = acceptor.c # -lefence +acceptor_SOURCES = acceptor.c wirecheck_SOURCES = wirecheck.c @@ -34,4 +34,3 @@ debugctl_LDADD = -L. -lptlctl $(LIBREADLINE) $(LIBEFENCE) debugctl_DEPENDENCIES = libptlctl.a routerstat_SOURCES = routerstat.c -endif diff --git a/lustre/portals/utils/acceptor.c b/lustre/portals/utils/acceptor.c index 29b8d1e..f6367d4 100644 --- a/lustre/portals/utils/acceptor.c +++ b/lustre/portals/utils/acceptor.c @@ -11,9 +11,7 @@ #include #include #include -#include #include - #include #include diff --git a/lustre/portals/utils/gmnalnid.c b/lustre/portals/utils/gmnalnid.c index ff6631c..e45fae4 100644 --- a/lustre/portals/utils/gmnalnid.c +++ b/lustre/portals/utils/gmnalnid.c @@ -29,9 +29,7 @@ #include #include #include -#include #include - #include #include diff --git a/lustre/portals/utils/parser.c b/lustre/portals/utils/parser.c index db5292d..82b4022 100644 --- a/lustre/portals/utils/parser.c +++ b/lustre/portals/utils/parser.c @@ -28,12 +28,16 @@ #include #include -#include #ifdef HAVE_LIBREADLINE #define READLINE_LIBRARY #include + +/* completion_matches() is #if 0-ed out in modern glibc */ +#ifndef completion_matches +# define completion_matches rl_completion_matches +#endif #endif -//extern char **completion_matches __P((char *, rl_compentry_func_t *)); + extern void using_history(void); extern void stifle_history(int); extern void add_history(char *); @@ -221,14 +225,15 @@ static char **command_completion(char * text, int start, int end) char * pos; match_tbl = top_level; + for (table = find_cmd(rl_line_buffer, match_tbl, &pos); - table; - table = find_cmd(pos, match_tbl, &pos)) { + table; table = find_cmd(pos, match_tbl, &pos)) + { if (*(pos - 1) == ' ') match_tbl = table->pc_sub_cmd; } - return(completion_matches(text, command_generator)); + return completion_matches(text, command_generator); } #endif diff --git a/lustre/portals/utils/portals.c b/lustre/portals/utils/portals.c index fb031ae..f078099 100644 --- a/lustre/portals/utils/portals.c +++ b/lustre/portals/utils/portals.c @@ -34,7 +34,7 @@ #include #include #include -#include +#include #ifdef __CYGWIN__ @@ -61,7 +61,7 @@ unsigned int portal_debug; unsigned int portal_printk; unsigned int portal_stack; -unsigned int portal_cerror; +unsigned int portal_cerror = 1; static unsigned int g_nal = 0; diff --git a/lustre/ptlbd/.cvsignore b/lustre/ptlbd/.cvsignore index e995588..8d9434e 100644 --- a/lustre/ptlbd/.cvsignore +++ b/lustre/ptlbd/.cvsignore @@ -1,3 +1,9 @@ .deps Makefile -Makefile.in +autoMakefile.in +autoMakefile +*.ko +*.mod.c +.*.flags +.tmp_versions +.depend diff --git a/lustre/ptlbd/Makefile.am b/lustre/ptlbd/Makefile.am deleted file mode 100644 index bfaeb25..0000000 --- a/lustre/ptlbd/Makefile.am +++ /dev/null @@ -1,14 +0,0 @@ -# Copyright (C) 2002 Cluster File Systems, Inc. -# -# This code is issued under the GNU General Public License. -# See the file COPYING in this distribution - -DEFS= - -MODULE = ptlbd -modulefs_DATA = ptlbd.o -EXTRA_PROGRAMS = ptlbd - -ptlbd_SOURCES = blk.c client.c main.c rpc.c server.c - -include $(top_srcdir)/Rules diff --git a/lustre/ptlbd/autoMakefile.am b/lustre/ptlbd/autoMakefile.am index 0446dc8..6b76199 100644 --- a/lustre/ptlbd/autoMakefile.am +++ b/lustre/ptlbd/autoMakefile.am @@ -3,9 +3,11 @@ # This code is issued under the GNU General Public License. # See the file COPYING in this distribution +if MODULES if !LINUX25 modulefs_DATA = ptlbd$(KMODEXT) endif +endif MOSTLYCLEANFILES = *.o *.ko *.mod.c DIST_SOURCES = $(ptlbd-objs:%.o=%.c) diff --git a/lustre/ptlbd/blk.c b/lustre/ptlbd/blk.c index ccef070..77c0dd8 100644 --- a/lustre/ptlbd/blk.c +++ b/lustre/ptlbd/blk.c @@ -255,10 +255,10 @@ static void ptlbd_request(request_queue_t *q) } static struct block_device_operations ptlbd_ops = { - .owner = THIS_MODULE, - .open = ptlbd_open, + .owner = THIS_MODULE, + .open = ptlbd_open, + .ioctl = ptlbd_ioctl, .release = ptlbd_release, - .ioctl = ptlbd_ioctl, }; int ptlbd_blk_init(void) diff --git a/lustre/ptlbd/client.c b/lustre/ptlbd/client.c index 2ccf00e..94fc1f2 100644 --- a/lustre/ptlbd/client.c +++ b/lustre/ptlbd/client.c @@ -191,11 +191,11 @@ out_req: static struct obd_ops ptlbd_cl_obd_ops = { - o_owner: THIS_MODULE, - o_setup: ptlbd_cl_setup, - o_cleanup: ptlbd_cl_cleanup, - o_connect: ptlbd_cl_connect, - o_disconnect: ptlbd_cl_disconnect, + .o_owner = THIS_MODULE, + .o_setup = ptlbd_cl_setup, + .o_cleanup = ptlbd_cl_cleanup, + .o_connect = ptlbd_cl_connect, + .o_disconnect = ptlbd_cl_disconnect, }; static struct lprocfs_vars lprocfs_obd_vars[] = { {0} }; diff --git a/lustre/ptlbd/server.c b/lustre/ptlbd/server.c index daa0b3c..f25b811 100644 --- a/lustre/ptlbd/server.c +++ b/lustre/ptlbd/server.c @@ -98,11 +98,11 @@ static int ptlbd_sv_cleanup(struct obd_device *obd, int flags) } static struct obd_ops ptlbd_sv_obd_ops = { - o_owner: THIS_MODULE, - o_setup: ptlbd_sv_setup, - o_cleanup: ptlbd_sv_cleanup, - o_connect: class_connect, - o_disconnect: class_disconnect, + .o_owner = THIS_MODULE, + .o_setup = ptlbd_sv_setup, + .o_cleanup = ptlbd_sv_cleanup, + .o_connect = class_connect, + .o_disconnect = class_disconnect, }; static struct lprocfs_vars lprocfs_obd_vars[] = { {0} }; diff --git a/lustre/ptlrpc/.cvsignore b/lustre/ptlrpc/.cvsignore index cf51f30..7496232 100644 --- a/lustre/ptlrpc/.cvsignore +++ b/lustre/ptlrpc/.cvsignore @@ -3,8 +3,14 @@ config.log config.status configure Makefile -Makefile.in .deps tags TAGS .*.cmd +autoMakefile.in +autoMakefile +*.ko +*.mod.c +.*.flags +.tmp_versions +.depend diff --git a/lustre/ptlrpc/Makefile.am b/lustre/ptlrpc/Makefile.am deleted file mode 100644 index 4822d33..0000000 --- a/lustre/ptlrpc/Makefile.am +++ /dev/null @@ -1,41 +0,0 @@ -# Copyright (C) 2001 Cluster File Systems, Inc. -# -# This code is issued under the GNU General Public License. -# See the file COPYING in this distribution - -DEFS= - -LDLM_COMM_SOURCES= $(top_srcdir)/ldlm/l_lock.c $(top_srcdir)/ldlm/ldlm_lock.c \ - $(top_srcdir)/ldlm/ldlm_resource.c $(top_srcdir)/ldlm/ldlm_lib.c \ - $(top_srcdir)/ldlm/ldlm_plain.c $(top_srcdir)/ldlm/ldlm_extent.c \ - $(top_srcdir)/ldlm/ldlm_request.c $(top_srcdir)/ldlm/ldlm_lockd.c \ - $(top_srcdir)/ldlm/ldlm_internal.h - -COMMON_SOURCES = client.c recover.c connection.c niobuf.c pack_generic.c \ - events.c ptlrpc_module.c service.c pinger.c recov_thread.c llog_net.c \ - llog_client.c llog_server.c import.c ptlrpcd.c ptlrpc_internal.h \ - $(LDLM_COMM_SOURCES) - -if LIBLUSTRE - -noinst_LIBRARIES = libptlrpc.a -libptlrpc_a_CFLAGS = -fPIC -libptlrpc_a_SOURCES = $(COMMON_SOURCES) - -else - -MODULE = ptlrpc -modulefs_DATA = ptlrpc.o -EXTRA_PROGRAMS = ptlrpc - -ptlrpc_SOURCES = $(top_srcdir)/ldlm/ldlm_flock.c $(COMMON_SOURCES) \ - lproc_ptlrpc.c - -endif - -ptlrpc_DEPENDENCIES=symlinks - -symlinks: - ln -sf $(subst /ldlm/,/ptlrpc/,$(addsuffix .o,$(basename $(LDLMSOURCES)))) ../ldlm - -include $(top_srcdir)/Rules diff --git a/lustre/ptlrpc/Makefile.in b/lustre/ptlrpc/Makefile.in index 6b27d3e7..bd319a4 100644 --- a/lustre/ptlrpc/Makefile.in +++ b/lustre/ptlrpc/Makefile.in @@ -8,11 +8,11 @@ ptlrpc-objs := $(LDLM)l_lock.o $(LDLM)ldlm_lock.o ptlrpc-objs += $(LDLM)ldlm_resource.o $(LDLM)ldlm_lib.o ptlrpc-objs += $(LDLM)ldlm_plain.o $(LDLM)ldlm_extent.o ptlrpc-objs += $(LDLM)ldlm_request.o $(LDLM)ldlm_lockd.o -ptlrpc-objs += $(LDLM)ldlm_flock.o $(LDLM)ldlm_inodebits.o +ptlrpc-objs += $(LDLM)ldlm_flock.o ptlrpc-objs += client.o recover.o connection.o niobuf.o pack_generic.o ptlrpc-objs += events.o ptlrpc_module.o service.o pinger.o recov_thread.o ptlrpc-objs += llog_net.o llog_client.o llog_server.o import.o ptlrpcd.o -ptlrpc-objs += pers.o lproc_ptlrpc.o +ptlrpc-objs += lproc_ptlrpc.o default: all diff --git a/lustre/ptlrpc/autoMakefile.am b/lustre/ptlrpc/autoMakefile.am index 96dcfe3..bac9ea4 100644 --- a/lustre/ptlrpc/autoMakefile.am +++ b/lustre/ptlrpc/autoMakefile.am @@ -7,11 +7,11 @@ LDLM_COMM_SOURCES= $(top_srcdir)/ldlm/l_lock.c $(top_srcdir)/ldlm/ldlm_lock.c \ $(top_srcdir)/ldlm/ldlm_resource.c $(top_srcdir)/ldlm/ldlm_lib.c \ $(top_srcdir)/ldlm/ldlm_plain.c $(top_srcdir)/ldlm/ldlm_extent.c \ $(top_srcdir)/ldlm/ldlm_request.c $(top_srcdir)/ldlm/ldlm_lockd.c \ - $(top_srcdir)/ldlm/ldlm_internal.h $(top_srcdir)/ldlm/ldlm_inodebits.c + $(top_srcdir)/ldlm/ldlm_internal.h COMMON_SOURCES = client.c recover.c connection.c niobuf.c pack_generic.c \ events.c ptlrpc_module.c service.c pinger.c recov_thread.c llog_net.c \ - llog_client.c llog_server.c import.c ptlrpcd.c pers.c \ + llog_client.c llog_server.c import.c ptlrpcd.c \ ptlrpc_internal.h $(LDLM_COMM_SOURCES) if LIBLUSTRE diff --git a/lustre/ptlrpc/client.c b/lustre/ptlrpc/client.c index 45bae96..1887589 100644 --- a/lustre/ptlrpc/client.c +++ b/lustre/ptlrpc/client.c @@ -409,9 +409,9 @@ static int ptlrpc_check_reply(struct ptlrpc_request *req) if (req->rq_net_err && !req->rq_timedout) { spin_unlock_irqrestore (&req->rq_lock, flags); - ptlrpc_expire_one_request(req); + rc = ptlrpc_expire_one_request(req); spin_lock_irqsave (&req->rq_lock, flags); - GOTO(out, rc = 0); + GOTO(out, rc); } if (req->rq_err) { @@ -631,6 +631,9 @@ int ptlrpc_check_set(struct ptlrpc_request_set *set) if (req->rq_phase == RQ_PHASE_INTERPRET) GOTO(interpret, req->rq_status); + if (req->rq_net_err && !req->rq_timedout) + ptlrpc_expire_one_request(req); + if (req->rq_err) { ptlrpc_unregister_reply(req); if (req->rq_status == 0) @@ -663,10 +666,6 @@ int ptlrpc_check_set(struct ptlrpc_request_set *set) } if (req->rq_phase == RQ_PHASE_RPC) { - if (req->rq_net_err && !req->rq_timedout) { - ptlrpc_expire_one_request(req); - continue; - } if (req->rq_waiting || req->rq_resend) { int status; diff --git a/lustre/ptlrpc/connection.c b/lustre/ptlrpc/connection.c index 466916b..c6a4163 100644 --- a/lustre/ptlrpc/connection.c +++ b/lustre/ptlrpc/connection.c @@ -84,7 +84,8 @@ struct ptlrpc_connection *ptlrpc_get_connection(struct ptlrpc_peer *peer, /* FIXME: this should be a slab once we can validate slab addresses * without OOPSing */ - OBD_ALLOC(c, sizeof(*c)); + OBD_ALLOC_GFP(c, sizeof(*c), GFP_ATOMIC); + if (c == NULL) GOTO(out, c); diff --git a/lustre/ptlrpc/pack_generic.c b/lustre/ptlrpc/pack_generic.c index f424e53..f369733 100644 --- a/lustre/ptlrpc/pack_generic.c +++ b/lustre/ptlrpc/pack_generic.c @@ -27,7 +27,7 @@ #define DEBUG_SUBSYSTEM S_RPC #ifndef __KERNEL__ -#include +# include #endif #include diff --git a/lustre/ptlrpc/pinger.c b/lustre/ptlrpc/pinger.c index ad1d502..551ec6f 100644 --- a/lustre/ptlrpc/pinger.c +++ b/lustre/ptlrpc/pinger.c @@ -38,9 +38,6 @@ static DECLARE_MUTEX(pinger_sem); static struct list_head pinger_imports = LIST_HEAD_INIT(pinger_imports); -#ifdef __KERNEL__ -static struct ptlrpc_thread *pinger_thread = NULL; - int ptlrpc_ping(struct obd_import *imp) { struct ptlrpc_request *req; @@ -67,6 +64,7 @@ int ptlrpc_ping(struct obd_import *imp) RETURN(rc); } +#ifdef __KERNEL__ static int ptlrpc_pinger_main(void *arg) { struct ptlrpc_svc_data *data = (struct ptlrpc_svc_data *)arg; @@ -82,7 +80,9 @@ static int ptlrpc_pinger_main(void *arg) RECALC_SIGPENDING; SIGNAL_MASK_UNLOCK(current, flags); - THREAD_NAME(current->comm, "%s", data->name); + LASSERTF(strlen(data->name) < sizeof(current->comm), + "name %d > len %d\n",strlen(data->name),sizeof(current->comm)); + THREAD_NAME(current->comm, sizeof(current->comm) - 1, "%s", data->name); unlock_kernel(); /* Record that the thread is running */ @@ -170,6 +170,8 @@ static int ptlrpc_pinger_main(void *arg) return 0; } +static struct ptlrpc_thread *pinger_thread = NULL; + int ptlrpc_start_pinger(void) { struct l_wait_info lwi = { 0 }; @@ -279,7 +281,8 @@ void ptlrpc_pinger_wake_up() #endif } -#else +#else /* !__KERNEL__ */ + /* XXX * the current implementation of pinger in liblustre is not optimized */ diff --git a/lustre/ptlrpc/recov_thread.c b/lustre/ptlrpc/recov_thread.c index 3d66eae..490dc36 100644 --- a/lustre/ptlrpc/recov_thread.c +++ b/lustre/ptlrpc/recov_thread.c @@ -232,8 +232,8 @@ static int log_commit_thread(void *arg) SIGNAL_MASK_UNLOCK(current, flags); spin_lock(&lcm->lcm_thread_lock); - THREAD_NAME(current->comm, "ll_log_commit_%d", - atomic_read(&lcm->lcm_thread_total)); + THREAD_NAME(current->comm, sizeof(current->comm) - 1, + "ll_log_comt_%02d", atomic_read(&lcm->lcm_thread_total)); atomic_inc(&lcm->lcm_thread_total); spin_unlock(&lcm->lcm_thread_lock); unlock_kernel(); diff --git a/lustre/ptlrpc/service.c b/lustre/ptlrpc/service.c index 939e9dd..8b63519 100644 --- a/lustre/ptlrpc/service.c +++ b/lustre/ptlrpc/service.c @@ -663,7 +663,9 @@ static int ptlrpc_main(void *arg) RECALC_SIGPENDING; SIGNAL_MASK_UNLOCK(current, flags); - THREAD_NAME(current->comm, "%s", data->name); + LASSERTF(strlen(data->name) < sizeof(current->comm), + "name %d > len %d\n",strlen(data->name),sizeof(current->comm)); + THREAD_NAME(current->comm, sizeof(current->comm) - 1, "%s", data->name); unlock_kernel(); /* Record that the thread is running */ @@ -673,7 +675,7 @@ static int ptlrpc_main(void *arg) spin_lock_irqsave(&svc->srv_lock, flags); svc->srv_nthreads++; spin_unlock_irqrestore(&svc->srv_lock, flags); - + /* XXX maintain a list of all managed devices: insert here */ while ((thread->t_flags & SVC_STOPPING) == 0 || @@ -681,7 +683,7 @@ static int ptlrpc_main(void *arg) /* Don't exit while there are replies to be handled */ struct l_wait_info lwi = LWI_TIMEOUT(svc->srv_rqbd_timeout, ptlrpc_retry_rqbds, svc); - + l_wait_event_exclusive (svc->srv_waitq, ((thread->t_flags & SVC_STOPPING) != 0 && svc->srv_n_difficult_replies == 0) || @@ -690,7 +692,7 @@ static int ptlrpc_main(void *arg) !list_empty (&svc->srv_reply_queue) || (!list_empty (&svc->srv_request_queue) && (svc->srv_n_difficult_replies == 0 || - svc->srv_n_active_reqs < + svc->srv_n_active_reqs < (svc->srv_nthreads - 1))), &lwi); @@ -743,7 +745,7 @@ static void ptlrpc_stop_thread(struct ptlrpc_service *svc, spin_lock_irqsave(&svc->srv_lock, flags); list_del(&thread->t_link); spin_unlock_irqrestore(&svc->srv_lock, flags); - + OBD_FREE(thread, sizeof(*thread)); } @@ -754,7 +756,7 @@ void ptlrpc_stop_all_threads(struct ptlrpc_service *svc) spin_lock_irqsave(&svc->srv_lock, flags); while (!list_empty(&svc->srv_threads)) { - thread = list_entry(svc->srv_threads.next, + thread = list_entry(svc->srv_threads.next, struct ptlrpc_thread, t_link); spin_unlock_irqrestore(&svc->srv_lock, flags); @@ -765,6 +767,7 @@ void ptlrpc_stop_all_threads(struct ptlrpc_service *svc) spin_unlock_irqrestore(&svc->srv_lock, flags); } +/* @base_name should be 12 characters or less - 3 will be added on */ int ptlrpc_start_n_threads(struct obd_device *dev, struct ptlrpc_service *svc, int num_threads, char *base_name) { diff --git a/lustre/scripts/.cvsignore b/lustre/scripts/.cvsignore index 104ddf7..9db437f 100644 --- a/lustre/scripts/.cvsignore +++ b/lustre/scripts/.cvsignore @@ -7,3 +7,4 @@ Makefile Makefile.in .deps TAGS +version_tag.pl diff --git a/lustre/scripts/Makefile.am b/lustre/scripts/Makefile.am index 4da183e..5e57916 100644 --- a/lustre/scripts/Makefile.am +++ b/lustre/scripts/Makefile.am @@ -3,7 +3,7 @@ # This code is issued under the GNU General Public License. # See the file COPYING in this distribution -EXTRA_DIST = license-status maketags.sh lustre.spec version_tag.pl \ +EXTRA_DIST = license-status maketags.sh lustre.spec version_tag.pl.in \ $(initd_SCRIPTS) lustre.spec.in lustre-kernel-2.4.spec.in \ lmake linux-merge-config.awk linux-merge-modules.awk \ linux-rhconfig.h @@ -11,5 +11,3 @@ EXTRA_DIST = license-status maketags.sh lustre.spec version_tag.pl \ initddir = $(sysconfdir)/init.d initd_SCRIPTS = lustre -include $(top_srcdir)/Rules - diff --git a/lustre/scripts/land1.sh b/lustre/scripts/land1.sh index 16f6b20..76ca062 100755 --- a/lustre/scripts/land1.sh +++ b/lustre/scripts/land1.sh @@ -93,4 +93,4 @@ else fi echo "done" -echo "Test, commit and then run land2.sh (no arguments)" +echo "Build, test, commit and then run land2.sh (no arguments)" diff --git a/lustre/scripts/lbuild b/lustre/scripts/lbuild index 2c76308..1cd283e 100755 --- a/lustre/scripts/lbuild +++ b/lustre/scripts/lbuild @@ -270,6 +270,7 @@ patch_linux() popd >/dev/null echo "Full patch has been saved in ${FULL_PATCH##*/}." echo "Replacing .config files..." + [ -d linux/configs ] || mkdir linux/configs rm -f linux/configs/* cp -v lustre/kernel_patches/kernel_configs/kernel-${VERSION}-${TARGET}*.config linux/configs/ } diff --git a/lustre/scripts/lmake b/lustre/scripts/lmake index a79f89b..9f92230 100755 --- a/lustre/scripts/lmake +++ b/lustre/scripts/lmake @@ -275,20 +275,34 @@ patch_kernel() popd >/dev/null } +set_make() +{ + MAKE="make -s CC=$CC" + if [ "$ARCH" ] ; then + MAKE="$MAKE ARCH=$ARCH" + fi + MAKE_J="$MAKE -j $JOBS" +} + depend_kernel() { (( $DEPEND_KERNEL )) || return 0 # we need to override $CC at make time, since there is no # configure - MAKE="make -s CC=$CC" + set_make pushd "$TOPDIR/linux" >/dev/null echo "Overriding EXTRAVERSION in kernel..." perl -p -i -e "s/^EXTRAVERSION.*/EXTRAVERSION = -${EXTRA_VERSION}${TARGET_CONFIG}/" Makefile echo "Making depend in $PWD..." $MAKE mrproper || fatal 1 "Error running make mrproper" cp "$CONFIG_FILE" .config - $MAKE oldconfig_nonint || fatal 1 "Error running make oldconfig" - $MAKE -j $JOBS dep || fatal 1 "Error running make dep" + if grep -q oldconfig_nonint Makefile ; then + OLDCONFIG='oldconfig_nonint' + else + OLDCONFIG='oldconfig' + fi + $MAKE $OLDCONFIG || fatal 1 "Error running make oldconfig" + $MAKE_J dep || fatal 1 "Error running make dep" $MAKE include/linux/version.h || fatal 1 "Error making include/linux/version.h" } @@ -297,17 +311,17 @@ build_kernel() (( $BUILD_KERNEL )) || return 0 # we need to override $CC at make time, since there is no # configure - MAKE="make -s CC=$CC" + set_make echo "Building kernel in $PWD..." case "$TARGET_ARCH" in i386 | i586 | i686 | athlon | x86_64) - $MAKE -j $JOBS -s bzImage || fatal 1 "Error making bzImage." + $MAKE_J bzImage || fatal 1 "Error making bzImage." ;; *) - $MAKE -j $JOBS -s boot || fatal 1 "Error making boot." + $MAKE_J boot || fatal 1 "Error making boot." ;; esac - $MAKE -j $JOBS -s modules || fatal 1 "Error building modules." + $MAKE_J modules || fatal 1 "Error building modules." popd >/dev/null } @@ -326,8 +340,9 @@ configure_lustre() build_lustre() { (( $BUILD_LUSTRE )) || return 0 + set_make pushd "$TOPDIR" >/dev/null - make -j $JOBS -s || fatal 1 "Error building Lustre." + $MAKE_J || fatal 1 "Error building Lustre." popd >/dev/null } diff --git a/lustre/scripts/lustre-kernel-2.4.spec.in b/lustre/scripts/lustre-kernel-2.4.spec.in index 0ff57ea..a7d2764 100644 --- a/lustre/scripts/lustre-kernel-2.4.spec.in +++ b/lustre/scripts/lustre-kernel-2.4.spec.in @@ -21,6 +21,7 @@ Summary: The Linux kernel (the core of the Linux operating system) %define nptlarchs %{all_x86} #define nptlarchs noarch %define rhbuild @RHBUILD@ +%define linux26 @LINUX26@ # disable build root strip policy %define __spec_install_post /usr/lib/rpm/brp-compress || : @@ -105,8 +106,11 @@ Second, per-architecture exclusions (ifarch) %{expand: %%define kernel_conflicts ppp <= 2.3.15, pcmcia-cs <= 3.1.20, isdn4k-utils <= 3.0, mount < 2.10r-5, nfs-utils < 0.3.1, cipe < 1.4.5, tux < 2.1.0, kudzu <= 0.92, e2fsprogs < 1.22, initscripts < 5.84, dev < 3.2-7, iptables < 1.2.5-3, bcm5820 < 1.81, nvidia-rh72 <= 1.0, oprofile < 0.4} +%if %{rhbuild} %define BOOT_kernel_prereq fileutils, modutils >= 2.4.18 %define kernel_prereq %{BOOT_kernel_prereq}, initscripts >= 5.83, mkinitrd >= 3.2.6 +%endif + %ifarch ia64 %define initrd_dir /boot/efi/redhat %else @@ -139,11 +143,13 @@ BuildConflicts: rhbuildsys(DiscFree) < 500Mb Provides: kernel-drm = 4.1.0, kernel-drm = 4.2.0, kernel-drm = 4.3.0, kernel-drm = 4.2.99.3 %endif Autoreqprov: no +%if %{rhbuild} Prereq: %{kernel_prereq} Conflicts: %{kernel_conflicts} BuildPreReq: patch >= 2.5.4, bash >= 2.03, sh-utils, gnupg, tar BuildPreReq: bzip2, findutils, dev, gzip, m4 +%endif Vendor: Cluster File Systems, Inc. URL: http://www.kernel.org/ @@ -195,8 +201,10 @@ Provides: module-info, kernel = %{version} %ifarch %{all_x86} ia64 x86_64 Provides: kernel-drm = 4.1.0, kernel-drm = 4.2.0, kernel-drm = 4.3.0, kernel-drm = 4.2.99.3 %endif +%if %{rhbuild} Prereq: %{kernel_prereq} Conflicts: %{kernel_conflicts} +%endif %description smp This package includes a SMP version of the Linux kernel. It is @@ -212,9 +220,11 @@ Provides: module-info, kernel = %{version} %ifarch %{all_x86} ia64 x86_64 Provides: kernel-drm = 4.1.0, kernel-drm = 4.2.0, kernel-drm = 4.3.0, kernel-drm = 4.2.99.3 %endif +%if %{rhbuild} Prereq: %{kernel_prereq} Conflicts: %{kernel_conflicts} Obsoletes: kernel-enterprise <= 2.4.10 +%endif %description bigmem This package includes a kernel that has appropriate configuration options @@ -224,8 +234,10 @@ enabled for Pentium III machines with 4 Gigabyte of memory or more. Summary: The version of the Linux kernel used on installation boot disks. Group: System Environment/Kernel Provides: kernel = %{version} +%if %{rhbuild} Prereq: %{BOOT_kernel_prereq} Conflicts: %{kernel_conflicts} +%endif %description BOOT This package includes a trimmed down version of the Linux kernel. @@ -237,8 +249,10 @@ turned off because of the size constraints. Summary: The Linux kernel used on installation boot disks for SMP machines. Group: System Environment/Kernel Provides: kernel = %{version} +%if %{rhbuild} Prereq: %{BOOT_kernel_prereq} Conflicts: %{kernel_conflicts} +%endif %description BOOTsmp This package includes a trimmed down version of the Linux kernel. This @@ -251,8 +265,10 @@ machines that have trouble coming up to life with the uniprocessor kernel. Summary: The Linux Kernel compiled for the Alpha Jensen platform. Group: System Environment/Kernel Provides: kernel = %{version} +%if %{rhbuild} Prereq: %{kernel_prereq} Conflicts: %{kernel_conflicts} +%endif %description jensen This package includes a kernel that has appropriate configuration @@ -429,11 +445,21 @@ ln -sf linux-%{KVERREL} $RPM_BUILD_ROOT/usr/src/linux #clean up the destination make -s mrproper -C $RPM_BUILD_ROOT/usr/src/linux-%{KVERREL} -rm -rf $RPM_BUILD_ROOT/usr/src/linux-%{KVERREL}/configs/* +rm -rf $RPM_BUILD_ROOT/usr/src/linux-%{KVERREL}/configs +mkdir -p $RPM_BUILD_ROOT/usr/src/linux-%{KVERREL}/configs cp ../kernel_patches/kernel_configs/kernel-%{kversion}-@LUSTRE_TARGET@*.config $RPM_BUILD_ROOT/usr/src/linux-%{KVERREL}/configs cp ../kernel_patches/kernel_configs/kernel-%{kversion}-@LUSTRE_TARGET@-%{_target_cpu}%{dashtargetboard}.config $RPM_BUILD_ROOT/usr/src/linux-%{KVERREL}/.config -make -s oldconfig_nonint -C $RPM_BUILD_ROOT/usr/src/linux-%{KVERREL} +if grep -q oldconfig_nonint $RPM_BUILD_ROOT/usr/src/linux-%{KVERREL}/Makefile ; then + OLDCONFIG='oldconfig_nonint' +else + OLDCONFIG='oldconfig' +fi +make -s $OLDCONFIG -C $RPM_BUILD_ROOT/usr/src/linux-%{KVERREL} +%if %{linux26} +make -s include/asm -C $RPM_BUILD_ROOT/usr/src/linux-%{KVERREL} +%else make -s symlinks -C $RPM_BUILD_ROOT/usr/src/linux-%{KVERREL} +%endif make -s include/linux/version.h -C $RPM_BUILD_ROOT/usr/src/linux-%{KVERREL} #this generates modversions info which we want to include and we may as @@ -733,7 +759,6 @@ exit 0 /usr/src/linux-%{KVERREL}/Makefile /usr/src/linux-%{KVERREL}/README /usr/src/linux-%{KVERREL}/REPORTING-BUGS -/usr/src/linux-%{KVERREL}/Rules.make /usr/src/linux-%{KVERREL}/arch %ifarch sparc /usr/src/linux-%{KVERREL}/arch/sparc64 @@ -775,6 +800,15 @@ exit 0 %ifarch alpha sparc /usr/src/linux-%{KVERREL}/include/math-emu %endif +%if %{linux26} +%dir /usr/src/linux-%{KVERREL}/crypto +%dir /usr/src/linux-%{KVERREL}/kdb +/usr/src/linux-%{KVERREL}/Makefile.suse +%dir /usr/src/linux-%{KVERREL}/rpmify +%dir /usr/src/linux-%{KVERREL}/security +%else +/usr/src/linux-%{KVERREL}/Rules.make +%endif %endif %files doc @@ -785,10 +819,10 @@ exit 0 %defattr(-, root, root) %doc lustre/COPYING lustre/BUGS lustre/ChangeLog lustre/README lustre/doc/lustre.pdf /sbin/* -%{_sbindir}/* -%{_bindir}/* -%{_libdir}/lustre/python -%{_sysconfdir}/init.d/lustre +/usr/sbin/* +/usr/bin/* +/usr/lib/lustre/python +/etc/init.d/lustre /usr/include/lustre /lib/lib*.a diff --git a/lustre/scripts/lustre.spec.in b/lustre/scripts/lustre.spec.in index 33e169a..329ef4c 100644 --- a/lustre/scripts/lustre.spec.in +++ b/lustre/scripts/lustre.spec.in @@ -1,5 +1,5 @@ # lustre.spec -%define version 1.2.1.6 +%define version @VERSION@ %define kversion @LINUXRELEASE@ %define linuxdir @LINUX@ %define enable_doc @ENABLE_DOC@ @@ -72,7 +72,7 @@ rm -rf $RPM_BUILD_ROOT # Set an explicit path to our Linux tree, if we can. cd $RPM_BUILD_DIR/lustre-%{version} -./configure --with-linux='%{linuxdir}' %{disable_doc} +./configure --with-linux='%{linuxdir}' %{disable_doc} --disable-liblustre make %install diff --git a/lustre/scripts/merge1.sh b/lustre/scripts/merge1.sh index 9bdc9b5..244c8d1 100755 --- a/lustre/scripts/merge1.sh +++ b/lustre/scripts/merge1.sh @@ -70,4 +70,4 @@ else echo "No conflicts found" rm -f $CONFLICTS fi -echo "Test, commit and then run merge2.sh (no arguments)" +echo "Build, test, commit and then run merge2.sh (no arguments)" diff --git a/lustre/scripts/version_tag.pl b/lustre/scripts/version_tag.pl deleted file mode 100644 index 334d2d6..0000000 --- a/lustre/scripts/version_tag.pl +++ /dev/null @@ -1,188 +0,0 @@ -#!/usr/bin/perl -# -*- Mode: perl; indent-tabs-mode: nil; cperl-indent-level: 4 -*- - -use strict; -use diagnostics; -use IO::File; -use Time::Local; - -my $pristine = 1; -my $kernver; - -# Use the CVS tag first otherwise use the portals version -sub get_tag() -{ - my $tag; - my $line; - - my $tagfile = new IO::File; - if (!$tagfile->open("CVS/Tag")) { - my $verfile = new IO::File; - if (!$verfile->open("portals/include/config.h")) { - return "UNKNOWN"; - } - while(defined($line = <$verfile>)) { - $line =~ /\#define VERSION "(.*)"/; - if ($1) { - $tag = $1; - last; - } - } - $verfile->close(); - return $tag - } else { - my $tmp = <$tagfile>; - $tagfile->close(); - - $tmp =~ m/T(.*)/; - return $1; - } -} - -sub get_latest_mtime() -{ - my %months=("Jan" => 0, "Feb" => 1, "Mar" => 2, "Apr" => 3, "May" => 4, - "Jun" => 5, "Jul" => 6, "Aug" => 7, "Sep" => 8, "Oct" => 9, - "Nov" => 10, "Dec" => 11); - - my $last_mtime = 0; - my @entries = `find . -name Entries`; - my $entry_file; - foreach $entry_file (@entries) { - chomp($entry_file); - my $entry = new IO::File; - if (!$entry->open($entry_file)) { - die "unable to open $entry_file: $!\n"; - } - my $line; - while (defined($line = <$entry>)) { - chomp($line); - #print "line: $line\n"; - my ($junk, $file, $version, $date) = split(/\//, $line); - - #print "junk: $junk\nfile: $file\nver: $version\ndate: $date\n"; - #print "last_mtime: " . localtime($last_mtime) . "\n"; - - if ($junk eq "D" || - $file eq "lustre.spec.in" || - $file !~ m/\.(c|h|am|in)$/) { - next; - } - - my $cur_dir = $entry_file; - $cur_dir =~ s/\/CVS\/Entries$//; - my @statbuf = stat("$cur_dir/$file"); - my $mtime = $statbuf[9]; - if (!defined($mtime)) { - next; - } - my $local_date = gmtime($mtime); - if ($local_date ne $date && - $file ne "lustre.spec.in") { - #print "$file : " . localtime($mtime) . "\n"; - $pristine = 0; - } - - if ($mtime > $last_mtime) { - $last_mtime = $mtime; - } - - if ($date) { - my @t = split(/ +/, $date); - if (int(@t) != 5) { - #print "skipping: $date\n"; - next; - } - my ($hours, $min, $sec) = split(/:/, $t[3]); - my ($mon, $mday, $year) = ($t[1], $t[2], $t[4]); - my $secs = 0; - $mon = $months{$mon}; - $secs = timelocal($sec, $min, $hours, $mday, $mon, $year); - if ($secs > $last_mtime) { - $last_mtime = $secs; - } - } - } - $entry->close(); - } - return $last_mtime; -} - -sub get_linuxdir() -{ - my $config = new IO::File; - my ($line, $dir); - if (!$config->open("Makefile")) { - die "Run ./configure first\n"; - } - while (defined($line = <$config>)) { - chomp($line); - if ($line =~ /LINUX :?= (.*)/) { - $dir = $1; - last; - } - } - $config->close(); - my $ver = new IO::File; - if (!$ver->open("$dir/include/linux/version.h")) { - die "Run make dep on $dir\n"; - } - while(defined($line = <$ver>)) { - $line =~ /\#define UTS_RELEASE "(.*)"/; - if ($1) { - $kernver = $1; - last; - } - } - $ver->close(); - chomp($kernver); - $dir =~ s/\//\./g; - return $dir; -} - -sub generate_ver($$$) -{ - my $tag = shift; - my $mtime = shift; - my $linuxdir = shift; - - #print "localtime: " . localtime($mtime) . "\n"; - - my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = - localtime($mtime); - $year += 1900; - $mon++; - my $show_last = sprintf("%04d%02d%02d%02d%02d%02d", $year, $mon, $mday, - $hour, $min, $sec); - - print "#define BUILD_VERSION \""; - if ($pristine) { - print "$tag-$show_last-PRISTINE-$linuxdir-$kernver\"\n"; - } else { - print "$tag-$show_last-CHANGED-$linuxdir-$kernver\"\n"; - } -} -chomp(my $cwd = `pwd`); - -# ARGV[0] = srcdir -# ARGV[1] = builddir - -# for get_latest_mtime and get_tag you need to be in srcdir - -if ($ARGV[0]) { - chdir($ARGV[0]); -} -my $tag = get_tag(); -my $mtime = get_latest_mtime(); - -# for get_linuxdir you need to be in builddir - -if ($ARGV[1]) { - chdir($cwd); - chdir($ARGV[1]); -} -my $linuxdir = get_linuxdir(); - -generate_ver($tag, $mtime, $linuxdir); - -exit(0); diff --git a/lustre/smfs/.cvsignore b/lustre/smfs/.cvsignore index 49c6100..e31a39b 100644 --- a/lustre/smfs/.cvsignore +++ b/lustre/smfs/.cvsignore @@ -3,7 +3,12 @@ config.log config.status configure Makefile -Makefile.in .deps TAGS .*.cmd +autoMakefile.in +autoMakefile +*.ko +*.mod.c +.*.flags +.tmp_versions diff --git a/lustre/smfs/Makefile.am b/lustre/smfs/Makefile.am deleted file mode 100644 index 529d029..0000000 --- a/lustre/smfs/Makefile.am +++ /dev/null @@ -1,16 +0,0 @@ -# Copyright (C) 2001 Cluster File Systems, Inc. -# -# This code is issued under the GNU General Public License. -# See the file COPYING in this distribution - - -DEFS= - -MODULE = smfs -modulefs_DATA = smfs.o -EXTRA_PROGRAMS = smfs - -smfs_SOURCES = super.c options.c inode.c cache.c dir.c sysctl.c file.c -smfs_SOURCES += symlink.c sm_fs.c kml.c reint.c journal.c journal_ext3.c -smfs_SOURCES += smfs_llog.c -include $(top_srcdir)/Rules diff --git a/lustre/smfs/autoMakefile.am b/lustre/smfs/autoMakefile.am index 3b277a9..eca9004 100644 --- a/lustre/smfs/autoMakefile.am +++ b/lustre/smfs/autoMakefile.am @@ -3,9 +3,11 @@ # This code is issued under the GNU General Public License. # See the file COPYING in this distribution +if MODULES if SMFS modulefs_DATA = smfs$(KMODEXT) endif +endif MOSTLYCLEANFILES = *.o *.ko *.mod.c DIST_SOURCES = $(smfs-objs:%.o=%.c) kml_idl.h smfs_internal.h smfs_support.h diff --git a/lustre/snapfs/.cvsignore b/lustre/snapfs/.cvsignore index 49c6100..e31a39b 100644 --- a/lustre/snapfs/.cvsignore +++ b/lustre/snapfs/.cvsignore @@ -3,7 +3,12 @@ config.log config.status configure Makefile -Makefile.in .deps TAGS .*.cmd +autoMakefile.in +autoMakefile +*.ko +*.mod.c +.*.flags +.tmp_versions diff --git a/lustre/snapfs/Makefile.am b/lustre/snapfs/Makefile.am deleted file mode 100644 index 63a57a0..0000000 --- a/lustre/snapfs/Makefile.am +++ /dev/null @@ -1,19 +0,0 @@ -# Copyright (C) 2001 Cluster File Systems, Inc. -# -# This code is issued under the GNU General Public License. -# See the file COPYING in this distribution - - -DEFS= -SUBDIRS = . utils - -MODULE = snapfs -modulefs_DATA = snapfs.o -EXTRA_PROGRAMS = snapfs - -snapfs_SOURCES = cache.c clonefs.c dcache.c dir.c dotsnap.c file.c -snapfs_SOURCES += filter.c inode.c journal_ext3.c psdev.c -snapfs_SOURCES += snap.c snaptable.c super.c symlink.c sysctl.c options.c - - -include $(top_srcdir)/Rules diff --git a/lustre/snapfs/autoMakefile.am b/lustre/snapfs/autoMakefile.am index e5a57a9..8d2f79e 100644 --- a/lustre/snapfs/autoMakefile.am +++ b/lustre/snapfs/autoMakefile.am @@ -5,9 +5,11 @@ SUBDIRS = . utils +if MODULES if SNAPFS modulefs_DATA = snapfs$(KMODEXT) endif +endif MOSTLYCLEANFILES = *.o *.ko *.mod.c DIST_SOURCES = $(snapfs-objs:%.o=%.c) snapfs_internal.h snapfs_support.h diff --git a/lustre/snapfs/utils/Makefile.am b/lustre/snapfs/utils/Makefile.am index e6fcc25..1487ee1 100644 --- a/lustre/snapfs/utils/Makefile.am +++ b/lustre/snapfs/utils/Makefile.am @@ -1,13 +1,8 @@ # Administration utilities Makefile -#CPPFLAGS = $(HAVE_LIBREADLINE) -I$(top_srcdir)/utils -I$(top_srcdir)/portals/include -I$(srcdir)/../ -Wall -L../../portals/utils -#CFLAGS:= -g -O2 -DEFS= -CFLAGS:=-g -O2 -I$(top_srcdir)/utils -I$(top_srcdir)/portals/include -I$(srcdir)/../ -Wall -L../../portals/utils -CPPFLAGS = $(HAVE_LIBREADLINE) -KFLAGS:= +if SNAPFS noinst_PROGRAMS = snapconf snapconf_LDADD := $(LIBREADLINE) -ltermcap -snapconf_SOURCES = parser.c snapctl.c snapconf.c parser.h snapctl.h -include $(top_srcdir)/Rules +endif +snapconf_SOURCES = parser.c snapctl.c snapconf.c parser.h snapctl.h diff --git a/lustre/snapfs/utils/parser.c b/lustre/snapfs/utils/parser.c index a2bbe20..da73223 100644 --- a/lustre/snapfs/utils/parser.c +++ b/lustre/snapfs/utils/parser.c @@ -34,7 +34,7 @@ /* completion_matches() is #if 0-ed out in modern glibc */ #ifndef completion_matches -#define completion_matches rl_completion_matches +# define completion_matches rl_completion_matches #endif extern void using_history(void); extern void stifle_history(int); @@ -248,18 +248,19 @@ static char * command_generator(const char * text, int state) /* probably called by readline */ static char **command_completion(char * text, int start, int end) { - command_t * table; + command_t * table; char * pos; match_tbl = top_level; + for (table = find_cmd(rl_line_buffer, match_tbl, &pos); - table; - table = find_cmd(pos, match_tbl, &pos)) { + table; table = find_cmd(pos, match_tbl, &pos)) + { if (*(pos - 1) == ' ') match_tbl = table->pc_sub_cmd; } - return(completion_matches(text, command_generator)); + return completion_matches(text, command_generator); } #endif diff --git a/lustre/tests/.RC_CURRENT.tag b/lustre/tests/.RC_CURRENT.tag index 3b1a02e..7382334 100644 --- a/lustre/tests/.RC_CURRENT.tag +++ b/lustre/tests/.RC_CURRENT.tag @@ -1 +1 @@ -RC_1_3_0_14 +RC_1_3_0_19 diff --git a/lustre/tests/Makefile.am b/lustre/tests/Makefile.am index d37259c..f313234 100644 --- a/lustre/tests/Makefile.am +++ b/lustre/tests/Makefile.am @@ -1,11 +1,11 @@ # Lustre test Makefile -DEFS= -CPPFLAGS = -I. -I$(top_srcdir)/portals/include/ -I$(top_srcdir)/include -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -CFLAGS := -g -Wall +AM_CPPFLAGS = $(LLCPPFLAGS) -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 +AM_CFLAGS = $(LLCFLAGS) # LDADD = -lldap # LDADD := -lreadline -ltermcap # -lefence EXTRA_DIST = $(pkgexample_SCRIPTS) $(noinst_SCRIPTS) $(noinst_DATA) \ sanity.sh rundbench +if TESTS pkgexample_SCRIPTS = llmount.sh llmountcleanup.sh llecho.sh llechocleanup.sh pkgexample_SCRIPTS += local.sh echo.sh uml.sh lov.sh noinst_DATA = @@ -22,6 +22,7 @@ noinst_PROGRAMS += small_write multiop sleeptest ll_sparseness_verify noinst_PROGRAMS += ll_sparseness_write mrename ll_dirstripe_verify # noinst_PROGRAMS += ldaptest bin_PROGRAMS = mcreate munlink mkdirmany iopentest1 iopentest2 +endif # TESTS # ldaptest_SOURCES = ldaptest.c tchmod_SOURCES = tchmod.c @@ -62,8 +63,7 @@ o_directory_SOURCES = o_directory.c utime_SOURCES = utime.c cmknod_SOURCES = cmknod.c mkdirdeep_SOURCES = mkdirdeep.c -mkdirdeep_LDADD=-L$(top_builddir)/portals/utils -lptlctl -mkdirdeep_CPPFLAGS=-I$(top_srcdir)/portals/include +mkdirdeep_LDADD=-L$(top_builddir)/portals/utils -lptlctl $(LIBREADLINE) small_write_SOURCES = small_write.c sleeptest_SOURCES = sleeptest.c #write_append_truncate_SOURCES=write_append_truncate.c @@ -75,5 +75,3 @@ sleeptest_SOURCES = sleeptest.c ll_sparseness_verify_SOURCES = ll_sparseness_verify.c ll_sparseness_write_SOURCES = ll_sparseness_write.c ll_dirstripe_verify_SOURCE = ll_dirstripe_verify.c - -include $(top_srcdir)/Rules diff --git a/lustre/tests/cmknod.c b/lustre/tests/cmknod.c index fa42e2b..c8659e4 100644 --- a/lustre/tests/cmknod.c +++ b/lustre/tests/cmknod.c @@ -46,7 +46,7 @@ int main( int argc, char **argv) fprintf(stderr, "%s: created device other than requested: (%d,%d) instead of (%d,%d)\n", prog, major(st.st_rdev),minor(st.st_rdev),major(device),minor(device)); return 4; } - if ( ! (st.st_mode | S_IFBLK) ) { + if (!S_ISBLK(st.st_mode)) { fprintf(stderr, "%s: created device of different type. Requested block device, got mode %o\n", prog, st.st_mode); return 5; } @@ -76,7 +76,7 @@ int main( int argc, char **argv) fprintf(stderr, "%s: created device other than requested: (%d,%d) instead of (%d,%d)\n", prog, major(st.st_rdev),minor(st.st_rdev),major(device),minor(device)); return 9; } - if ( ! (st.st_mode | S_IFCHR) ) { + if (!S_ISCHR(st.st_mode)) { fprintf(stderr, "%s: created device of different type. Requested char device, got mode %o\n", prog, st.st_mode); return 10; } diff --git a/lustre/tests/createdestroy.c b/lustre/tests/createdestroy.c index f1e7f4b..cec369b 100644 --- a/lustre/tests/createdestroy.c +++ b/lustre/tests/createdestroy.c @@ -1,3 +1,6 @@ +/* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*- + * vim:expandtab:shiftwidth=8:tabstop=8: + */ #include #include #include @@ -95,44 +98,44 @@ static int get_verbose(char *func, const char *arg) int main(int argc, char *argv[]) { char filename[1024]; - int verbose = 0; + int verbose = 0; unsigned long count, i; - int threads = 0; - char *end; - int rc; + int threads = 0; + char *end; + int rc = 0; if (argc < 3 || argc > 5) { fprintf(stderr, - "usage: %s [verbose [threads]]\n", - argv[0]); + "usage: %s [verbose [threads]]\n", + argv[0]); exit(1); } count = strtoul(argv[2], &end, 0); - if (*end) { + if (*end) { fprintf(stderr, "%s: error: bad iteration count '%s'\n", argv[0], argv[1]); - exit(2); - } - if (argc == 4) { - verbose = get_verbose(argv[0], argv[3]); - if (verbose == BAD_VERBOSE) - exit(2); - } - if (argc == 5) { - threads = strtoul(argv[4], &end, 0); - if (*end) { - fprintf(stderr, "%s: error: bad thread count '%s'\n", - argv[0], argv[1]); - exit(2); - } - } + exit(2); + } + if (argc == 4) { + verbose = get_verbose(argv[0], argv[3]); + if (verbose == BAD_VERBOSE) + exit(2); + } + if (argc == 5) { + threads = strtoul(argv[4], &end, 0); + if (*end) { + fprintf(stderr, "%s: error: bad thread count '%s'\n", + argv[0], argv[1]); + exit(2); + } + } for (i = 1; i <= threads; i++) { rc = fork(); if (rc < 0) { fprintf(stderr, "%s: error: #%ld - %s\n", - cmdname(argv[0]), i, strerror(rc = errno)); + cmdname(argv[0]), i, strerror(rc = errno)); break; } else if (rc == 0) { thread = i; @@ -143,7 +146,7 @@ int main(int argc, char *argv[]) rc = 0; } - if (threads && thread == 0) { /* parent process */ + if (threads && thread == 0) { /* parent process */ int live_threads = threads; while (live_threads > 0) { @@ -178,47 +181,47 @@ int main(int argc, char *argv[]) live_threads--; } } - } else { + } else { struct timeval start, end, next_time; - unsigned long next_count; - double diff; - - gettimeofday(&start, NULL); - next_time.tv_sec = start.tv_sec - verbose; - next_time.tv_usec = start.tv_usec; - - for (i = 0, next_count = verbose; i < count; i++) { - if (threads) - sprintf(filename, "%s-%d-%ld", - argv[1], thread, i); - else - sprintf(filename, "%s-%ld", argv[1], i); - - rc = mknod(filename, S_IFREG, 0); - if (rc < 0) { - fprintf(stderr, "%s: error: mknod(%s): %s\n", - cmdname(argv[0]), filename, - strerror(errno)); - rc = errno; - break; - } - if (unlink(filename) < 0) { - fprintf(stderr, "%s: error: unlink(%s): %s\n", - cmdname(argv[0]), filename, - strerror(errno)); - rc = errno; - break; - } - if (be_verbose(verbose, &next_time,i,&next_count,count)) - printf("%s: number %ld\n", cmdname(argv[0]), i); - } - - gettimeofday(&end, NULL); + unsigned long next_count; + double diff; + + gettimeofday(&start, NULL); + next_time.tv_sec = start.tv_sec - verbose; + next_time.tv_usec = start.tv_usec; + + for (i = 0, next_count = verbose; i < count; i++) { + if (threads) + sprintf(filename, "%s-%d-%ld", + argv[1], thread, i); + else + sprintf(filename, "%s-%ld", argv[1], i); + + rc = mknod(filename, S_IFREG, 0); + if (rc < 0) { + fprintf(stderr, "%s: error: mknod(%s): %s\n", + cmdname(argv[0]), filename, + strerror(errno)); + rc = errno; + break; + } + if (unlink(filename) < 0) { + fprintf(stderr, "%s: error: unlink(%s): %s\n", + cmdname(argv[0]), filename, + strerror(errno)); + rc = errno; + break; + } + if (be_verbose(verbose, &next_time,i,&next_count,count)) + printf("%s: number %ld\n", cmdname(argv[0]), i); + } + + gettimeofday(&end, NULL); diff = difftime(&end, &start); - printf("%s: %ldx2 files in %.4gs (%.4g ops/s): rc = %d: %s", - cmdname(argv[0]), i, diff, (double)i * 2 / diff, - rc, ctime(&end.tv_sec)); - } + printf("%s: %ldx2 files in %.4gs (%.4g ops/s): rc = %d: %s", + cmdname(argv[0]), i, diff, (double)i * 2 / diff, + rc, ctime(&end.tv_sec)); + } return rc; } diff --git a/lustre/tests/createmany.c b/lustre/tests/createmany.c index f426488..1d62b20 100644 --- a/lustre/tests/createmany.c +++ b/lustre/tests/createmany.c @@ -22,7 +22,7 @@ void usage(char *prog) int main(int argc, char ** argv) { int i, rc = 0, do_open = 0, do_link = 0; - char format[4096], *fmt, *tgt; + char format[4096], *fmt, *tgt = NULL; char filename[4096]; long start, last, end; long begin = 0, count; diff --git a/lustre/tests/fsx.c b/lustre/tests/fsx.c index 8524c91..12027d0 100644 --- a/lustre/tests/fsx.c +++ b/lustre/tests/fsx.c @@ -96,7 +96,6 @@ char *temp_buf; /* a pointer to the current data */ char *fname; /* name of our test file */ char logfile[1024]; /* name of our log file */ char goodfile[1024]; /* name of our test file */ -int fd; /* fd for our test file */ off_t file_size = 0; off_t biggest = 0; @@ -384,12 +383,125 @@ check_buffers(unsigned offset, unsigned size) } } +struct test_file { + char *path; + int fd; +} *test_files = NULL; + +int num_test_files = 0; +enum fd_iteration_policy { + FD_SINGLE, + FD_ROTATE, + FD_RANDOM, +}; +int fd_policy = FD_RANDOM; +int fd_last = 0; + +struct test_file * +get_tf(void) +{ + unsigned index = 0; + + switch (fd_policy) { + case FD_ROTATE: + index = fd_last++; + break; + case FD_RANDOM: + index = random(); + break; + case FD_SINGLE: + index = 0; + break; + default: + prt("unknown policy"); + exit(1); + break; + } + return &test_files[ index % num_test_files ]; +} + +void +assign_fd_policy(char *policy) +{ + if (!strcmp(policy, "random")) + fd_policy = FD_RANDOM; + else if (!strcmp(policy, "rotate")) + fd_policy = FD_ROTATE; + else { + prt("unknown -I policy: '%s'\n", policy); + exit(1); + } +} + +int +get_fd(void) +{ + struct test_file *tf = get_tf(); + return tf->fd; +} + +static const char *basename(const char *path) +{ + char *c = strrchr(path, '/'); + + return c ? c++ : path; +} + +void +open_test_files(char **argv, int argc) +{ + struct test_file *tf; + int i; + + num_test_files = argc; + if (num_test_files == 1) + fd_policy = FD_SINGLE; + + test_files = calloc(num_test_files, sizeof(*test_files)); + if (test_files == NULL) { + prterr("reallocating space for test files"); + exit(1); + } + + for (i = 0, tf = test_files; i < num_test_files; i++, tf++) { + + tf->path = argv[i]; + tf->fd = open(tf->path, O_RDWR|(lite ? 0 : O_CREAT|O_TRUNC), + 0666); + if (tf->fd < 0) { + prterr(tf->path); + exit(91); + } + } + + if (quiet || fd_policy == FD_SINGLE) + return; + + for (i = 0, tf = test_files; i < num_test_files; i++, tf++) + prt("fd %d: %s\n", i, tf->path); +} + +void +close_test_files(void) +{ + int i; + struct test_file *tf; + + for (i = 0, tf = test_files; i < num_test_files; i++, tf++) { + if (close(tf->fd)) { + prterr("close"); + report_failure(99); + } + } +} + void check_size(void) { struct stat statbuf; off_t size_by_seek; + int fd = get_fd(); if (fstat(fd, &statbuf)) { prterr("check_size: fstat"); @@ -410,6 +522,7 @@ void check_trunc_hack(void) { struct stat statbuf; + int fd = get_fd(); ftruncate(fd, (off_t)0); ftruncate(fd, (off_t)100000); @@ -421,6 +534,71 @@ check_trunc_hack(void) ftruncate(fd, 0); } +static char *tf_buf = NULL; +static int max_tf_len = 0; + +void +alloc_tf_buf(void) +{ + char dummy = '\0'; + int highest = num_test_files - 1; + int len; + + len = snprintf(&dummy, 0, "%u ", highest); + if (len < 0) { + prterr("finding max tf_buf"); + exit(1); + } + tf_buf = malloc(len + 1); + if (tf_buf == NULL) { + prterr("allocating tf_buf"); + exit(1); + } + max_tf_len = sprintf(tf_buf, "%u ", highest); +} + +char * +fill_tf_buf(struct test_file *tf) +{ + if (tf_buf == NULL) + alloc_tf_buf(); + + sprintf(tf_buf,"%u ", tf - test_files); + return tf_buf; +} + +void +output_line(struct test_file *tf, int op, unsigned long offset, + unsigned long size, struct timeval *tv) +{ + char *tf_num = ""; + + char *ops[] = { + [OP_READ] = "read", + [OP_WRITE] = "write", + [OP_TRUNCATE] = "trunc from", + [OP_MAPREAD] = "mapread", + [OP_MAPWRITE] = "mapwrite", + }; + + if (fd_policy != FD_SINGLE) + tf_num = fill_tf_buf(tf); + + /* W. */ + if (!(!quiet && ((progressinterval && + testcalls % progressinterval == 0) || + (debug && + (monitorstart == -1 || + (offset + size > monitorstart && + (monitorend == -1 || offset <= monitorend))))))) + return; + + prt("%06lu %lu.%06lu %*s%-10s %#08x %s %#08x\t(0x%x bytes)\n", + testcalls, tv->tv_sec, tv->tv_usec, max_tf_len, + tf_num, ops[op], + offset, op == OP_TRUNCATE ? " to " : "thru", + offset + size - 1, size); +} void doread(unsigned offset, unsigned size) @@ -428,6 +606,8 @@ doread(unsigned offset, unsigned size) struct timeval t; off_t ret; unsigned iret; + struct test_file *tf = get_tf(); + int fd = tf->fd; offset -= offset % readbdy; gettimeofday(&t, NULL); @@ -449,15 +629,8 @@ doread(unsigned offset, unsigned size) if (testcalls <= simulatedopcount) return; - if (!quiet && ((progressinterval && - testcalls % progressinterval == 0) || - (debug && - (monitorstart == -1 || - (offset + size > monitorstart && - (monitorend == -1 || offset <= monitorend)))))) - prt("%06lu %lu.%06lu read %#08x thru %#08x\t(0x%x bytes)\n", - testcalls, t.tv_sec, t.tv_usec, offset, offset + size - 1, - size); + output_line(tf, OP_READ, offset, size, &t); + ret = lseek(fd, (off_t)offset, SEEK_SET); if (ret == (off_t)-1) { prterr("doread: lseek"); @@ -490,6 +663,8 @@ domapread(unsigned offset, unsigned size) unsigned pg_offset; unsigned map_size; char *p; + struct test_file *tf = get_tf(); + int fd = tf->fd; offset -= offset % readbdy; gettimeofday(&t, NULL); @@ -511,15 +686,7 @@ domapread(unsigned offset, unsigned size) if (testcalls <= simulatedopcount) return; - if (!quiet && ((progressinterval && - testcalls % progressinterval == 0) || - (debug && - (monitorstart == -1 || - (offset + size > monitorstart && - (monitorend == -1 || offset <= monitorend)))))) - prt("%06lu %lu.%06lu mapread %#08x thru %#08x\t(0x%x bytes)\n", - testcalls, t.tv_sec, t.tv_usec, offset, offset + size - 1, - size); + output_line(tf, OP_MAPREAD, offset, size, &t); pg_offset = offset & page_mask; map_size = pg_offset + size; @@ -578,6 +745,8 @@ dowrite(unsigned offset, unsigned size) struct timeval t; off_t ret; unsigned iret; + struct test_file *tf = get_tf(); + int fd = tf->fd; offset -= offset % writebdy; gettimeofday(&t, NULL); @@ -604,15 +773,8 @@ dowrite(unsigned offset, unsigned size) if (testcalls <= simulatedopcount) return; - if (!quiet && ((progressinterval && - testcalls % progressinterval == 0) || - (debug && - (monitorstart == -1 || - (offset + size > monitorstart && - (monitorend == -1 || offset <= monitorend)))))) - prt("%06lu %lu.%06lu write %#08x thru %#08x\t(0x%x bytes)\n", - testcalls, t.tv_sec, t.tv_usec, offset, offset + size - 1, - size); + output_line(tf, OP_WRITE, offset, size, &t); + ret = lseek(fd, (off_t)offset, SEEK_SET); if (ret == (off_t)-1) { prterr("dowrite: lseek"); @@ -645,6 +807,8 @@ domapwrite(unsigned offset, unsigned size) unsigned map_size; off_t cur_filesize; char *p; + struct test_file *tf = get_tf(); + int fd = tf->fd; offset -= offset % writebdy; gettimeofday(&t, NULL); @@ -672,15 +836,7 @@ domapwrite(unsigned offset, unsigned size) if (testcalls <= simulatedopcount) return; - if (!quiet && ((progressinterval && - testcalls % progressinterval == 0) || - (debug && - (monitorstart == -1 || - (offset + size > monitorstart && - (monitorend == -1 || offset <= monitorend)))))) - prt("%06lu %lu.%06lu mapwrite %#08x thru %#08x\t(0x%x bytes)\n", - testcalls, t.tv_sec, t.tv_usec, offset, offset + size - 1, - size); + output_line(tf, OP_MAPWRITE, offset, size, &t); if (file_size > cur_filesize) { if (ftruncate(fd, file_size) == -1) { @@ -748,6 +904,8 @@ dotruncate(unsigned size) { struct timeval t; int oldsize = file_size; + struct test_file *tf = get_tf(); + int fd = tf->fd; size -= size % truncbdy; gettimeofday(&t, NULL); @@ -766,11 +924,8 @@ dotruncate(unsigned size) if (testcalls <= simulatedopcount) return; - if ((progressinterval && testcalls % progressinterval == 0) || - (debug && (monitorstart == -1 || monitorend == -1 || - size <= monitorend))) - prt("%06lu %lu.%06lu trunc from %#08x to %#08x\n", - testcalls, t.tv_sec, t.tv_usec, oldsize, size); + output_line(tf, OP_TRUNCATE, oldsize, size, &t); + if (ftruncate(fd, (off_t)size) == -1) { prt("ftruncate1: %x\n", size); prterr("dotruncate: ftruncate"); @@ -787,6 +942,7 @@ void writefileimage() { ssize_t iret; + int fd = get_fd(); if (lseek(fd, (off_t)0, SEEK_SET) == (off_t)-1) { prterr("writefileimage: lseek"); @@ -813,6 +969,7 @@ void docloseopen(void) { struct timeval t; + struct test_file *tf = get_tf(); if (testcalls <= simulatedopcount) return; @@ -823,7 +980,7 @@ docloseopen(void) if (debug) prt("%06lu %lu.%06lu close/open\n", testcalls, t.tv_sec, t.tv_usec); - if (close(fd)) { + if (close(tf->fd)) { prterr("docloseopen: close"); report_failure(180); } @@ -831,8 +988,8 @@ docloseopen(void) gettimeofday(&t, NULL); prt(" %lu.%06lu close done\n", t.tv_sec, t.tv_usec); } - fd = open(fname, O_RDWR, 0); - if (fd < 0) { + tf->fd = open(tf->path, O_RDWR, 0); + if (tf->fd < 0) { prterr("docloseopen: open"); report_failure(181); } @@ -930,7 +1087,7 @@ usage(void) "fsx [-dnqLOW] [-b opnum] [-c Prob] [-l flen] [-m " "start:end] [-o oplen] [-p progressinterval] [-r readbdy] [-s style] [-t " "truncbdy] [-w writebdy] [-D startingop] [-N numops] [-P dirpath] [-S seed] " -"fname\n" +"[ -I random|rotate ] fname [additional paths to fname..]\n" " -b opnum: beginning operation number (default 1)\n" " -c P: 1 in P chance of file close+open at each op (default infinity)\n" " -d: debug output for all operations [-d -d = more debugging]\n" @@ -953,6 +1110,9 @@ usage(void) " -S seed: for random # generator (default 1) 0 gets timestamp\n" " -W: mapped write operations DISabled\n" " -R: read() system calls only (mapped reads disabled)\n" +" -I: When multiple paths to the file are given each operation uses" +" a different path. Iterate through them in order with 'rotate'" +" or chose then at 'random'. (defaults to random)\n" " fname: this filename is REQUIRED (no default)\n"); exit(90); } @@ -991,14 +1151,6 @@ getnum(char *s, char **e) return (ret); } - -static const char *basename(const char *path) -{ - char *c = strrchr(path, '/'); - - return c ? c++ : path; -} - int main(int argc, char **argv) { @@ -1014,7 +1166,8 @@ main(int argc, char **argv) setvbuf(stdout, (char *)0, _IOLBF, 0); /* line buffered stdout */ - while ((ch = getopt(argc, argv, "b:c:dl:m:no:p:qr:s:t:w:D:LN:OP:RS:W")) + while ((ch = getopt(argc, argv, + "b:c:dl:m:no:p:qr:s:t:w:D:I:LN:OP:RS:W")) != EOF) switch (ch) { case 'b': @@ -1097,6 +1250,9 @@ main(int argc, char **argv) if (debugstart < 1) usage(); break; + case 'I': + assign_fd_policy(optarg); + break; case 'L': lite = 1; break; @@ -1139,7 +1295,7 @@ main(int argc, char **argv) } argc -= optind; argv += optind; - if (argc != 1) + if (argc < 1) usage(); fname = argv[0]; @@ -1156,11 +1312,9 @@ main(int argc, char **argv) initstate(seed, state, 256); setstate(state); - fd = open(fname, O_RDWR|(lite ? 0 : O_CREAT|O_TRUNC), 0666); - if (fd < 0) { - prterr(fname); - exit(91); - } + + open_test_files(argv, argc); + strncat(goodfile, dirpath ? basename(fname) : fname, 256); strcat (goodfile, ".fsxgood"); fsxgoodfd = open(goodfile, O_RDWR|O_CREAT|O_TRUNC, 0666); @@ -1177,6 +1331,7 @@ main(int argc, char **argv) } if (lite) { off_t ret; + int fd = get_fd(); file_size = maxfilelen = lseek(fd, (off_t)0, SEEK_END); if (file_size == (off_t)-1) { prterr(fname); @@ -1199,6 +1354,7 @@ main(int argc, char **argv) memset(temp_buf, '\0', maxoplen); if (lite) { /* zero entire existing file */ ssize_t written; + int fd = get_fd(); written = write(fd, good_buf, (size_t)maxfilelen); if (written != maxfilelen) { @@ -1217,10 +1373,7 @@ main(int argc, char **argv) while (numops == -1 || numops--) test(); - if (close(fd)) { - prterr("close"); - report_failure(99); - } + close_test_files(); prt("All operations completed A-OK!\n"); exit(0); diff --git a/lustre/tests/ll_dirstripe_verify.c b/lustre/tests/ll_dirstripe_verify.c index a4ce6d1..bfbe7bc 100644 --- a/lustre/tests/ll_dirstripe_verify.c +++ b/lustre/tests/ll_dirstripe_verify.c @@ -118,7 +118,7 @@ int compare(struct lov_user_md *lum_dir, struct lov_user_md *lum_file1, int main(int argc, char **argv) { DIR * dir; - struct lov_user_md *lum_dir, *lum_file1, *lum_file2=NULL; + struct lov_user_md *lum_dir, *lum_file1 = NULL, *lum_file2 = NULL; int rc; int lum_size; char *fname; diff --git a/lustre/tests/mkdirmany.c b/lustre/tests/mkdirmany.c index 26c3016..0f7a1b6 100755 --- a/lustre/tests/mkdirmany.c +++ b/lustre/tests/mkdirmany.c @@ -10,7 +10,7 @@ int main(int argc, char ** argv) { - int i, rc, count; + int i, rc = 0, count; char dirname[4096]; if (argc < 3) { @@ -25,7 +25,7 @@ int main(int argc, char ** argv) count = strtoul(argv[2], NULL, 0); - for (i=0 ; i < count ; i++) { + for (i = 0; i < count; i++) { sprintf(dirname, "%s-%d", argv[1], i); rc = mkdir(dirname, 0444); if (rc) { diff --git a/lustre/tests/mount2.sh b/lustre/tests/mount2.sh deleted file mode 100644 index eaed7e3..0000000 --- a/lustre/tests/mount2.sh +++ /dev/null @@ -1,34 +0,0 @@ -#!/bin/bash - -config=${1:-mount2.xml} - -SRCDIR=`dirname $0` -PATH=$SRCDIR:$SRCDIR/../utils:$PATH -LMC="${LMC:-lmc} -m $config" -TMP=${TMP:-/tmp} - -MDSDEV=${MDSDEV:-$TMP/mds1-`hostname`} -MDSSIZE=${MDSSIZE:-50000} -MOUNT=${MOUNT:-/mnt/lustre} -MOUNT1=${MOUNT1:-${MOUNT}1} -MOUNT2=${MOUNT2:-${MOUNT}2} -FSTYPE=${FSTYPE:-ext3} - -OSTDEV=${OSTDEV:-$TMP/ost1-`hostname`} -OSTSIZE=${OSTSIZE:-200000} - -rm -f $config - -# create nodes -${LMC} --add node --node localhost || exit 10 -${LMC} --add net --node localhost --nid localhost --nettype tcp || exit 11 - -# configure mds server -${LMC} --add mds --node localhost --mds mds1 --fstype $FSTYPE --dev $MDSDEV --size $MDSSIZE || exit 20 - -# configure ost -${LMC} --add ost --node localhost --ost ost1 --fstype $FSTYPE --dev $OSTDEV --size $OSTSIZE || exit 30 - -# create client config -${LMC} --add mtpt --node localhost --path $MOUNT1 --mds mds1 --ost ost1 || exit 40 -${LMC} --add mtpt --node localhost --path $MOUNT2 --mds mds1 --ost ost1 || exit 40 diff --git a/lustre/tests/mount2lov.sh b/lustre/tests/mount2lov.sh deleted file mode 100644 index 1840d19..0000000 --- a/lustre/tests/mount2lov.sh +++ /dev/null @@ -1,38 +0,0 @@ -#!/bin/bash - -config=${1:-mount2.xml} - -SRCDIR=`dirname $0` -PATH=$SRCDIR:$SRCDIR/../utils:$PATH -LMC="${LMC:-lmc} -m $config" -TMP=${TMP:-/tmp} - -MDSDEV=${MDSDEV:-$TMP/mds1-`hostname`} -MDSSIZE=${MDSSIZE:-50000} -FSTYPE=${FSTYPE:-ext3} - -OSTDEV1=${OSTDEV1:-$TMP/ost1-`hostname`} -OSTDEV2=${OSTDEV2:-$TMP/ost2-`hostname`} -OSTDEV3=${OSTDEV3:-$TMP/ost3-`hostname`} -OSTSIZE=${OSTSIZE:-100000} - -STRIPE_BYTES=65536 -STRIPES_PER_OBJ=2 # 0 means stripe over all OSTs - -rm -f $config - -# create nodes -${LMC} --add net --node localhost --nid localhost --nettype tcp || exit 1 - -# configure MDS server -${LMC} --add mds --node localhost --mds mds1 --fstype $FSTYPE --dev $MDSDEV --size $MDSSIZE || exit 10 - -# configure OSTs -${LMC} --add lov --lov lov1 --mds mds1 --stripe_sz $STRIPE_BYTES --stripe_cnt $STRIPES_PER_OBJ --stripe_pattern 0 || exit 20 -${LMC} --add ost --node localhost --lov lov1 --fstype $FSTYPE --dev $OSTDEV1 --size $OSTSIZE || exit 21 -${LMC} --add ost --node localhost --lov lov1 --fstype $FSTYPE --dev $OSTDEV2 --size $OSTSIZE || exit 22 -${LMC} --add ost --node localhost --lov lov1 --fstype $FSTYPE --dev $OSTDEV3 --size $OSTSIZE || exit 23 - -# create client config -${LMC} --add mtpt --node localhost --path /mnt/lustre1 --mds mds1 --ost lov1 || exit 40 -${LMC} --add mtpt --node localhost --path /mnt/lustre2 --mds mds1 --ost lov1 || exit 41 diff --git a/lustre/tests/multiop.c b/lustre/tests/multiop.c index de59be6..0402aff 100755 --- a/lustre/tests/multiop.c +++ b/lustre/tests/multiop.c @@ -1,3 +1,6 @@ +/* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*- + * vim:expandtab:shiftwidth=8:tabstop=8: + */ #define _GNU_SOURCE /* pull in O_DIRECTORY in bits/fcntl.h */ #include #include @@ -47,22 +50,22 @@ void null_handler(int unused) { } static const char * pop_arg(int argc, char *argv[]) { - static int cur_arg = 3; + static int cur_arg = 3; - if (cur_arg >= argc) - return NULL; + if (cur_arg >= argc) + return NULL; - return argv[cur_arg++]; + return argv[cur_arg++]; } #define POP_ARG() (pop_arg(argc, argv)) int main(int argc, char **argv) { char *fname, *commands; - const char *newfile; + const char *newfile; struct stat st; - size_t mmap_len, i; - unsigned char *mmap_ptr = NULL, junk = 0; + size_t mmap_len = 0, i; + unsigned char *mmap_ptr = NULL, junk = 0; int fd = -1; if (argc < 3) { @@ -84,7 +87,7 @@ int main(int argc, char **argv) perror("close"); exit(1); } - fd = -1; + fd = -1; break; case 'd': if (mkdir(fname, 0755) == -1) { @@ -92,54 +95,54 @@ int main(int argc, char **argv) exit(1); } break; - case 'D': - if (open(fname, O_DIRECTORY) == -1) { - perror("open(O_DIRECTORY)"); - exit(1); - } - break; - case 'l': - newfile = POP_ARG(); - if (!newfile) - newfile = fname; - if (symlink(fname, newfile)) { - perror("symlink()"); - exit(1); - } - break; - case 'L': - newfile = POP_ARG(); - if (!newfile) - newfile = fname; - if (link(fname, newfile)) { - perror("symlink()"); - exit(1); - } - break; + case 'D': + if (open(fname, O_DIRECTORY) == -1) { + perror("open(O_DIRECTORY)"); + exit(1); + } + break; + case 'l': + newfile = POP_ARG(); + if (!newfile) + newfile = fname; + if (symlink(fname, newfile)) { + perror("symlink()"); + exit(1); + } + break; + case 'L': + newfile = POP_ARG(); + if (!newfile) + newfile = fname; + if (link(fname, newfile)) { + perror("symlink()"); + exit(1); + } + break; case 'm': if (mknod(fname, S_IFREG | 0644, 0) == -1) { perror("mknod(S_IFREG|0644, 0)"); exit(1); } break; - case 'M': - mmap_len = st.st_size; - mmap_ptr = mmap(NULL, mmap_len, PROT_WRITE | PROT_READ, - MAP_SHARED, fd, 0); - if (mmap_ptr == MAP_FAILED) { - perror("mmap"); - exit(1); - } - break; - case 'N': - newfile = POP_ARG(); - if (!newfile) - newfile = fname; - if (rename (fname, newfile)) { - perror("rename()"); - exit(1); - } - break; + case 'M': + mmap_len = st.st_size; + mmap_ptr = mmap(NULL, mmap_len, PROT_WRITE | PROT_READ, + MAP_SHARED, fd, 0); + if (mmap_ptr == MAP_FAILED) { + perror("mmap"); + exit(1); + } + break; + case 'N': + newfile = POP_ARG(); + if (!newfile) + newfile = fname; + if (rename (fname, newfile)) { + perror("rename()"); + exit(1); + } + break; case 'O': fd = open(fname, O_CREAT|O_RDWR, 0644); if (fd == -1) { @@ -154,23 +157,23 @@ int main(int argc, char **argv) exit(1); } break; - case 'r': { - char buf; - if (read(fd, &buf, 1) == -1) { - perror("read"); - exit(1); - } - } + case 'r': { + char buf; + if (read(fd, &buf, 1) == -1) { + perror("read"); + exit(1); + } + } case 'S': if (fstat(fd, &st) == -1) { perror("fstat"); exit(1); } break; - case 'R': - for (i = 0; i < mmap_len && mmap_ptr; i += 4096) - junk += mmap_ptr[i]; - break; + case 'R': + for (i = 0; i < mmap_len && mmap_ptr; i += 4096) + junk += mmap_ptr[i]; + break; case 's': if (stat(fname, &st) == -1) { perror("stat"); @@ -195,39 +198,39 @@ int main(int argc, char **argv) exit(1); } break; - case 'U': - if (munmap(mmap_ptr, mmap_len)) { - perror("munmap"); - exit(1); - } - break; - case 'w': - if (write(fd, "w", 1) == -1) { - perror("write"); - exit(1); - } - break; - case 'W': - for (i = 0; i < mmap_len && mmap_ptr; i += 4096) - mmap_ptr[i] += junk++; - break; - case 'y': - if (fsync(fd) == -1) { - perror("fsync"); - exit(1); - } - break; - case 'Y': - if (fdatasync(fd) == -1) { - perror("fdatasync"); - exit(1); - } - case 'z': - if (lseek(fd, 0, SEEK_SET) == -1) { - perror("lseek"); - exit(1); - } - break; + case 'U': + if (munmap(mmap_ptr, mmap_len)) { + perror("munmap"); + exit(1); + } + break; + case 'w': + if (write(fd, "w", 1) == -1) { + perror("write"); + exit(1); + } + break; + case 'W': + for (i = 0; i < mmap_len && mmap_ptr; i += 4096) + mmap_ptr[i] += junk++; + break; + case 'y': + if (fsync(fd) == -1) { + perror("fsync"); + exit(1); + } + break; + case 'Y': + if (fdatasync(fd) == -1) { + perror("fdatasync"); + exit(1); + } + case 'z': + if (lseek(fd, 0, SEEK_SET) == -1) { + perror("lseek"); + exit(1); + } + break; default: fprintf(stderr, "unknown command \"%c\"\n", *commands); fprintf(stderr, usage, argv[0]); diff --git a/lustre/tests/munlink.c b/lustre/tests/munlink.c index 62c2765..2390cd9 100755 --- a/lustre/tests/munlink.c +++ b/lustre/tests/munlink.c @@ -11,7 +11,7 @@ int main(int argc, char ** argv) { - int rc, i; + int rc = 0, i; if (argc < 2) { printf("Usage %s filename {filename ...}\n", argv[0]); diff --git a/lustre/tests/oos.sh b/lustre/tests/oos.sh index 5a2646a..4e6b261 100755 --- a/lustre/tests/oos.sh +++ b/lustre/tests/oos.sh @@ -49,12 +49,14 @@ fi # flush cache to OST(s) so avail numbers are correct sync; sleep 1 ; sync -for AVAIL in /proc/fs/lustre/osc/OSC*MNT*/kbytesavail; do - [ `cat $AVAIL` -lt 400 ] && OSCFULL=full +for OSC in /proc/fs/lustre/osc/OSC*MNT*; do + AVAIL=`cat $OSC/kbytesavail` + GRANT=`cat $OSC/cur_grant_bytes` + [ $(($AVAIL - $GRANT / 1024)) -lt 400 ] && OSCFULL=full done if [ -z "$OSCFULL" ]; then echo "no OSTs are close to full" - grep "[0-9]" /proc/fs/lustre/osc/OSC*MNT*/{kbytesavail,cur*} + grep [0-9] /proc/fs/lustre/osc/OSC*MNT*/{kbytesavail,cur*} SUCCESS=0 fi diff --git a/lustre/tests/oos2.sh b/lustre/tests/oos2.sh index 22c6893..c9755cb 100644 --- a/lustre/tests/oos2.sh +++ b/lustre/tests/oos2.sh @@ -54,12 +54,14 @@ fi # flush cache to OST(s) so avail numbers are correct sync; sleep 1 ; sync -for AVAIL in /proc/fs/lustre/osc/OSC*MNT*/kbytesavail; do - [ `cat $AVAIL` -lt 400 ] && OSCFULL=full +for OSC in /proc/fs/lustre/osc/OSC*MNT*; do + AVAIL=`cat $OSC/kbytesavail` + GRANT=`cat $OSC/cur_grant_bytes` + [ $(($AVAIL - $GRANT / 1024)) -lt 400 ] && OSCFULL=full done if [ -z "$OSCFULL" ]; then echo "no OSTs are close to full" - grep "[0-9]" /proc/fs/lustre/osc/OSC*MNT*/{kbytesavail,cur*} |tee -a $LOG + grep [0-9] /proc/fs/lustre/osc/OSC*MNT*/{kbytesavail,cur*} |tee -a $LOG SUCCESS=0 fi diff --git a/lustre/tests/openfile.c b/lustre/tests/openfile.c index 0c5081d..1cb36ea 100644 --- a/lustre/tests/openfile.c +++ b/lustre/tests/openfile.c @@ -61,7 +61,7 @@ int main(int argc, char** argv) int flag_set=0; int file_set=0; char c; - char* cloned_flags; + char* cloned_flags = NULL; if (argc == 1) Usage_and_abort(); diff --git a/lustre/tests/recovery-small-upcall.sh b/lustre/tests/recovery-small-upcall.sh index 02e9f69..b1ad60c 100755 --- a/lustre/tests/recovery-small-upcall.sh +++ b/lustre/tests/recovery-small-upcall.sh @@ -1,3 +1,4 @@ #!/bin/sh LUSTRE=`dirname $0`/.. -$LUSTRE/utils/lctl --device %$3 recover || logger -p kern.info recovery failed: $@ +PATH=$LUSTRE/utils:$PATH +lctl --device %$3 recover || logger -p kern.info recovery failed: $@ diff --git a/lustre/tests/recovery-small.sh b/lustre/tests/recovery-small.sh index b30bee7..241feec 100755 --- a/lustre/tests/recovery-small.sh +++ b/lustre/tests/recovery-small.sh @@ -75,13 +75,13 @@ unset REFORMAT test_1() { drop_request "mcreate $MOUNT/1" || return 1 - drop_reply "mcreate $MOUNT/2" || return 2 + drop_reint_reply "mcreate $MOUNT/2" || return 2 } run_test 1 "mcreate: drop req, drop rep" test_2() { drop_request "tchmod 111 $MOUNT/2" || return 1 - drop_reply "tchmod 666 $MOUNT/2" || return 2 + drop_reint_reply "tchmod 666 $MOUNT/2" || return 2 } run_test 2 "chmod: drop req, drop rep" @@ -100,26 +100,26 @@ run_test 4 "open: drop req, drop rep" test_5() { drop_request "mv $MOUNT/resolv.conf $MOUNT/renamed" || return 1 - drop_reply "mv $MOUNT/renamed $MOUNT/renamed-again" || return 2 + drop_reint_reply "mv $MOUNT/renamed $MOUNT/renamed-again" || return 2 do_facet client "checkstat -v $MOUNT/renamed-again" || return 3 } run_test 5 "rename: drop req, drop rep" test_6() { drop_request "mlink $MOUNT/renamed-again $MOUNT/link1" || return 1 - drop_reply "mlink $MOUNT/renamed-again $MOUNT/link2" || return 2 + drop_reint_reply "mlink $MOUNT/renamed-again $MOUNT/link2" || return 2 } run_test 6 "link: drop req, drop rep" test_7() { drop_request "munlink $MOUNT/link1" || return 1 - drop_reply "munlink $MOUNT/link2" || return 2 + drop_reint_reply "munlink $MOUNT/link2" || return 2 } run_test 7 "unlink: drop req, drop rep" #bug 1423 test_8() { - drop_reply "touch $MOUNT/renamed" || return 1 + drop_reint_reply "touch $MOUNT/renamed" || return 1 } run_test 8 "touch: drop rep (bug 1423)" @@ -215,21 +215,23 @@ test_16() { sysctl -w lustre.fail_loc=0x80000504 cancel_lru_locks OSC # will get evicted here - do_facet client "diff /etc/termcap $MOUNT/termcap" && return 1 + do_facet client "cmp /etc/termcap $MOUNT/termcap" && return 1 sysctl -w lustre.fail_loc=0 - do_facet client "diff /etc/termcap $MOUNT/termcap" || return 2 + # give recovery a chance to finish (shouldn't take long) + sleep 1 + do_facet client "cmp /etc/termcap $MOUNT/termcap" || return 2 } run_test 16 "timeout bulk put, evict client (2732)" test_17() { -# OBD_FAIL_PTLRPC_BULK_GET_NET 0x0503 | OBD_FAIL_ONCE +#define OBD_FAIL_PTLRPC_BULK_GET_NET 0x0503 | OBD_FAIL_ONCE # will get evicted here sysctl -w lustre.fail_loc=0x80000503 do_facet client cp /etc/termcap $MOUNT && return 1 - do_facet client "diff /etc/termcap $MOUNT/termcap" && return 1 + do_facet client "cmp /etc/termcap $MOUNT/termcap" && return 1 sysctl -w lustre.fail_loc=0 - do_facet client "diff /etc/termcap $MOUNT/termcap" || return 2 + do_facet client "cmp /etc/termcap $MOUNT/termcap" || return 2 } run_test 17 "timeout bulk get, evict client (2732)" @@ -321,12 +323,10 @@ test_20a() { # bug 2983 - ldlm_handle_enqueue cleanup cancel_lru_locks OSC #define OBD_FAIL_LDLM_ENQUEUE_EXTENT_ERR 0x308 do_facet ost sysctl -w lustre.fail_loc=0x80000308 - set -vx kill -USR1 $MULTI_PID wait $MULTI_PID rc=$? [ $rc -eq 0 ] && error "multiop didn't fail enqueue: rc $rc" || true - set +vx } run_test 20a "ldlm_handle_enqueue error (should return error)" diff --git a/lustre/tests/replay-single.sh b/lustre/tests/replay-single.sh index 9108569..3425372 100755 --- a/lustre/tests/replay-single.sh +++ b/lustre/tests/replay-single.sh @@ -16,7 +16,6 @@ init_test_env $@ # Skip these tests ALWAYS_EXCEPT="" - gen_config() { rm -f $XMLCONFIG add_mds mds --dev $MDSDEV --size $MDSSIZE @@ -63,6 +62,7 @@ setup() { [ "$DAEMONFILE" ] && $LCTL debug_daemon start $DAEMONFILE $DAEMONSIZE start mds $MDSLCONFARGS --reformat zconf_mount `hostname` $MOUNT + echo 0x3f0410 > /proc/sys/portals/debug } $SETUP @@ -831,6 +831,7 @@ test_42() { facet_failover ost # osc is evicted, fs is smaller + set -vx blocks_after=`df $MOUNT | tail -1 | awk '{ print $1 }'` if [ "$blocks_after" = "Filesystem" ]; then echo "df failed, assuming caused by OST failout" @@ -841,6 +842,7 @@ test_42() { sleep $((TIMEOUT * 2)) unlinkmany $DIR/$tfile-%d 400 400 $CHECKSTAT -t file $DIR/$tfile-* && return 2 || true + set +vx } run_test 42 "recovery after ost failure" diff --git a/lustre/tests/runas.c b/lustre/tests/runas.c index 1e859aa..f1df775 100644 --- a/lustre/tests/runas.c +++ b/lustre/tests/runas.c @@ -32,8 +32,8 @@ int main(int argc, char **argv) int gid_is_set = 0; int uid_is_set = 0; int clear_supp_groups = 0; - uid_t user_id; - gid_t grp_id; + uid_t user_id = 0; + gid_t grp_id = 0; if (argc == 1) Usage_and_abort(name); diff --git a/lustre/tests/sanity.sh b/lustre/tests/sanity.sh index fa0a05a..60f4805 100644 --- a/lustre/tests/sanity.sh +++ b/lustre/tests/sanity.sh @@ -10,6 +10,9 @@ ONLY=${ONLY:-"$*"} # bug number for skipped test: ALWAYS_EXCEPT=${ALWAYS_EXCEPT:-""} # UPDATE THE COMMENT ABOVE WITH BUG NUMBERS WHEN CHANGING ALWAYS_EXCEPT! +case `uname -r` in +2.6.*) ALWAYS_EXCEPT="$ALWAYS_EXCEPT 54c" # bug 3117 +esac [ "$ALWAYS_EXCEPT$EXCEPT" ] && echo "Skipping tests: $ALWAYS_EXCEPT $EXCEPT" @@ -1241,14 +1244,31 @@ count_ost_writes() { cat /proc/fs/lustre/osc/*/stats | awk -vwrites=0 '/ost_write/ { writes += $2 } END { print writes; }' } -start_kupdated() { + +# decent default +WRITEBACK_SAVE=500 + +start_writeback() { # in 2.6, restore /proc/sys/vm/dirty_writeback_centisecs - kill -CONT `pidof kupdated` + if [ -f /proc/sys/vm/dirty_writeback_centisecs ]; then + echo $WRITEBACK_SAVE > /proc/sys/vm/dirty_writeback_centisecs + else + # if file not here, we are a 2.4 kernel + kill -CONT `pidof kupdated` + fi } -stop_kupdated() { +stop_writeback() { + # setup the trap first, so someone cannot exit the test at the + # exact wrong time and mess up a machine + trap start_writeback EXIT # in 2.6, save and 0 /proc/sys/vm/dirty_writeback_centisecs - kill -STOP `pidof kupdated` - trap start_kupdated EXIT + if [ -f /proc/sys/vm/dirty_writeback_centisecs ]; then + WRITEBACK_SAVE=`cat /proc/sys/vm/dirty_writeback_centisecs` + echo 0 > /proc/sys/vm/dirty_writeback_centisecs + else + # if file not here, we are a 2.4 kernel + kill -STOP `pidof kupdated` + fi } # ensure that all stripes have some grant before we test client-side cache @@ -1266,7 +1286,7 @@ setup_test42() { test_42a() { setup_test42 cancel_lru_locks OSC - stop_kupdated + stop_writeback sync; sleep 1; sync # just to be safe BEFOREWRITES=`count_ost_writes` grep [0-9] /proc/fs/lustre/osc/OSC*MNT*/cur_grant_bytes @@ -1274,14 +1294,14 @@ test_42a() { AFTERWRITES=`count_ost_writes` [ $BEFOREWRITES -eq $AFTERWRITES ] || \ error "$BEFOREWRITES < $AFTERWRITES" - start_kupdated + start_writeback } run_test 42a "ensure that we don't flush on close ==============" test_42b() { setup_test42 cancel_lru_locks OSC - stop_kupdated + stop_writeback sync dd if=/dev/zero of=$DIR/f42b bs=1024 count=100 BEFOREWRITES=`count_ost_writes` @@ -1295,7 +1315,7 @@ test_42b() { [ $BEFOREWRITES -eq $AFTERWRITES ] || error "$BEFOREWRITES < $AFTERWRITES on sync" dmesg | grep 'error from obd_brw_async' && error 'error writing back' - start_kupdated + start_writeback return 0 } run_test 42b "test destroy of file with cached dirty data ======" @@ -1318,7 +1338,7 @@ trunc_test() { file=$DIR/$test offset=$2 cancel_lru_locks OSC - stop_kupdated + stop_writeback # prime the file with 0,EOF PW to match touch $file $TRUNCATE $file 0 @@ -1329,7 +1349,7 @@ trunc_test() { $TRUNCATE $file $offset cancel_lru_locks OSC AFTERWRITES=`count_ost_writes` - start_kupdated + start_writeback } test_42c() { @@ -1447,7 +1467,7 @@ test_45() { f="$DIR/f45" # Obtain grants from OST if it supports it echo blah > ${f}_grant - stop_kupdated + stop_writeback sync do_dirty_record "echo blah > $f" [ $before -eq $after ] && error "write wasn't cached" @@ -1461,7 +1481,7 @@ test_45() { [ $before -eq $after ] && error "write wasn't cached" do_dirty_record "cancel_lru_locks OSC" [ $before -gt $after ] || error "lock cancellation didn't lower dirty count" - start_kupdated + start_writeback } run_test 45 "osc io page accounting ============================" @@ -1475,14 +1495,14 @@ page_size() { # offset 31 and 31's raw 31 offset. it also found general redirtying bugs. test_46() { f="$DIR/f46" - stop_kupdated + stop_writeback sync dd if=/dev/zero of=$f bs=`page_size` seek=31 count=1 sync dd conv=notrunc if=/dev/zero of=$f bs=`page_size` seek=63 count=1 dd conv=notrunc if=/dev/zero of=$f bs=`page_size` seek=31 count=1 sync - start_kupdated + start_writeback } run_test 46 "dirtying a previously written page ================" @@ -1600,8 +1620,7 @@ test_53() { run_test 53 "verify that MDS and OSTs agree on pre-creation ====" test_54a() { - $SOCKETSERVER $DIR/socket & - sleep 1 + $SOCKETSERVER $DIR/socket $SOCKETCLIENT $DIR/socket || error $MUNLINK $DIR/socket } diff --git a/lustre/tests/sanityN.sh b/lustre/tests/sanityN.sh index f475dda..e884b73 100644 --- a/lustre/tests/sanityN.sh +++ b/lustre/tests/sanityN.sh @@ -322,6 +322,12 @@ test_15() { # bug 974 - ENOSPC } run_test 15 "test out-of-space with multiple writers ===========" +test_16() { + ./fsx -R -W -c 50 -p 100 -N 2500 \ + $MOUNT1/fsxfile $MOUNT2/fsxfile +} +run_test 16 "2500 iterations of dual-mount fsx =================" + log "cleanup: ======================================================" rm -rf $DIR1/[df][0-9]* $DIR1/lnk || true diff --git a/lustre/tests/socketserver b/lustre/tests/socketserver index 25bbb6e..e2fd66a 100755 --- a/lustre/tests/socketserver +++ b/lustre/tests/socketserver @@ -15,6 +15,14 @@ listen(Server,SOMAXCONN) || die "listen: $!"; logmsg "server started on $NAME"; +my $rc = fork(); +if ($rc > 0) { #parent + exit(); +} elsif ($rc < 0) { # error + logmsg "fork failed: $rc"; + exit(); +} + accept(Client,Server); logmsg "connection on $NAME"; print Client "from server\n"; diff --git a/lustre/tests/stat.c b/lustre/tests/stat.c index 4ef6bbe..f27957d 100644 --- a/lustre/tests/stat.c +++ b/lustre/tests/stat.c @@ -145,6 +145,9 @@ void print_human_fstype(struct statfs *statfsbuf) case S_MAGIC_ROMFS: type = strdup("romfs"); break; + case S_MAGIC_LUSTRE: + type = strdup("lustre"); + break; #elif __GNU__ case FSTYPE_UFS: type = strdup("ufs"); @@ -290,12 +293,21 @@ void print_human_access(struct stat *statbuf) printf (access); } +/* trick gcc into being unable to recognize the %c format so it doesn't + * issue its inane warning about %c and two-digit year representations. */ +static size_t strftime_wrapper(char *s, size_t max, const char *fmt, + struct tm *tm) { + return strftime(s, max, fmt, tm); +} + void print_human_time(time_t *t) { char str[40]; - - if (strftime(str, 40, "%c", localtime(t)) > 0) printf(str); - else printf("Cannot calculate human readable time, sorry"); + + if (strftime_wrapper(str, 40, "%c", localtime(t)) > 0) + printf(str); + else + printf("Cannot calculate human readable time, sorry"); } /* print statfs info */ @@ -307,7 +319,7 @@ void print_statfs(char *pformat, char m, char *filename, void *data, SECURITY_ID int rv; unsigned int sbuflen = sizeof(sbuf); #endif - + switch(m) { case 'n': strcat(pformat, "s"); diff --git a/lustre/tests/stat_fs.h b/lustre/tests/stat_fs.h index a07fc12..c5fa3b4 100644 --- a/lustre/tests/stat_fs.h +++ b/lustre/tests/stat_fs.h @@ -31,6 +31,7 @@ #define S_MAGIC_REISERFS 0x52654973 #define S_MAGIC_CRAMFS 0x28cd3d45 #define S_MAGIC_ROMFS 0x7275 +#define S_MAGIC_LUSTRE 0x0BD00BD0 #elif defined (__GNU__) #include #endif diff --git a/lustre/tests/statmany.c b/lustre/tests/statmany.c index edfa47b..7d4d2c9 100644 --- a/lustre/tests/statmany.c +++ b/lustre/tests/statmany.c @@ -44,7 +44,7 @@ static int usage(char *prog, FILE *out) int main(int argc, char ** argv) { - long i, count, iter = LONG_MAX, mode, offset; + long i, count, iter = LONG_MAX, mode = 0, offset; long int start, length = LONG_MAX, last, rc = 0; char parent[4096], *t; char c, *prog = argv[0], *base; diff --git a/lustre/tests/test-framework.sh b/lustre/tests/test-framework.sh index 36eceb9..791b523 100644 --- a/lustre/tests/test-framework.sh +++ b/lustre/tests/test-framework.sh @@ -39,6 +39,7 @@ init_test_env() { export LMC=${LMC:-"lmc"} export LCTL=${LCTL:-"$LUSTRE/utils/lctl"} export CHECKSTAT="${CHECKSTAT:-checkstat} " + export FSYTPE=${FSTYPE:-"ext3"} # Paths on remote nodes, if different export RLUSTRE=${RLUSTRE:-$LUSTRE} @@ -297,14 +298,14 @@ add_mds() { shift rm -f ${facet}active add_facet $facet - do_lmc --add mds --node ${facet}_facet --mds ${facet}_svc $* + do_lmc --add mds --node ${facet}_facet --mds ${facet}_svc --fstype $FSTYPE $* } add_mdsfailover() { facet=$1 shift add_facet ${facet}failover --lustre_upcall $UPCALL - do_lmc --add mds --node ${facet}failover_facet --mds ${facet}_svc $* + do_lmc --add mds --node ${facet}failover_facet --mds ${facet}_svc --fstype $FSTYPE $* } add_ost() { @@ -312,14 +313,14 @@ add_ost() { shift rm -f ${facet}active add_facet $facet - do_lmc --add ost --node ${facet}_facet --ost ${facet}_svc $* + do_lmc --add ost --node ${facet}_facet --ost ${facet}_svc --fstype $FSTYPE $* } add_ostfailover() { facet=$1 shift add_facet ${facet}failover - do_lmc --add ost --failover --node ${facet}failover_facet --ost ${facet}_svc $* + do_lmc --add ost --failover --node ${facet}failover_facet --ost ${facet}_svc --fstype $FSTYPE $* } add_lov() { @@ -404,6 +405,15 @@ drop_reply() { return $RC } +drop_reint_reply() { +# OBD_FAIL_MDS_REINT_NET_REP + RC=0 + do_facet mds "echo 0x119 > /proc/sys/lustre/fail_loc" + do_facet client "$@" || RC=$? + do_facet mds "echo 0 > /proc/sys/lustre/fail_loc" + return $RC +} + pause_bulk() { #define OBD_FAIL_OST_BRW_PAUSE_BULK 0x214 RC=0 diff --git a/lustre/utils/Makefile.am b/lustre/utils/Makefile.am index 0a3f785..1f7a8b5 100644 --- a/lustre/utils/Makefile.am +++ b/lustre/utils/Makefile.am @@ -1,24 +1,12 @@ # Administration utilities Makefile -DEFS= -SUBDIRS = Lustre - -CFLAGS:=-g -O2 -I$(top_srcdir)/utils -I$(top_srcdir)/portals/include -I$(srcdir)/../include -Wall -L../portals/utils -CPPFLAGS = $(HAVE_LIBREADLINE) - -if LIBLUSTRE -bin_SCRIPTS = lrun - -EXTRA_DIST = $(sbin_SCRIPTS) - -include $(top_srcdir)/Rules +SUBDIRS = Lustre -else +AM_CFLAGS=$(LLCFLAGS) +AM_CPPFLAGS=$(LLCPPFLAGS) +AM_LDFLAGS := -L$(top_builddir)/portals/utils -KFLAGS:= -lctl_LDADD := $(LIBREADLINE) -lptlctl -lfs_LDADD := $(LIBREADLINE) parser.o liblustreapi.a -lptlctl obd.o -lload_LDADD := -lptlctl +if UTILS rootsbin_SCRIPTS = mount.lustre sbin_PROGRAMS = lctl obdio obdbarrier lload wirecheck wiretest llmount sbin_SCRIPTS = lconf lmc llanalyze llstat.pl llobdstat.pl lactive load_ldap.sh lrun @@ -26,6 +14,14 @@ sbin_SCRIPTS += lwizard bin_SCRIPTS = lfind lstripe bin_PROGRAMS = lfs lib_LIBRARIES = liblustreapi.a +if LIBLUSTRE +sbin_SCRIPTS += lrun +endif # LIBLUSTRE +endif # UTILS + +lctl_LDADD := $(LIBREADLINE) -lptlctl +lfs_LDADD := $(LIBREADLINE) parser.o liblustreapi.a -lptlctl obd.o +lload_LDADD := $(LIBREADLINE) -lptlctl liblustreapi_a_SOURCES = liblustreapi.c wirecheck_SOURCES = wirecheck.c wiretest_SOURCES = wiretest.c @@ -35,18 +31,14 @@ obdio_SOURCES = obdio.c obdiolib.c obdiolib.h obdbarrier_SOURCES = obdbarrier.c obdiolib.c obdiolib.h lfs_SOURCES = lfs.c llmount_SOURCES = llmount.c -llmount_LDADD = -lptlctl +llmount_LDADD = $(LIBREADLINE) -lptlctl EXTRA_DIST = $(bin_SCRIPTS) $(sbin_SCRIPTS) -include $(top_srcdir)/Rules - # NOTE: this should only be run on i386. newwiretest: wirehdr.c wirecheck cp wirehdr.c wiretest.c ./wirecheck >> wiretest.c mount.lustre$(EXEEXT): llmount - cp llmount mount.lustre - -endif + cp $< $@ diff --git a/lustre/utils/lconf b/lustre/utils/lconf index 2b3f0e2..8c2658d 100755 --- a/lustre/utils/lconf +++ b/lustre/utils/lconf @@ -39,11 +39,13 @@ PYMOD_DIR = "/usr/lib/lustre/python" def development_mode(): base = os.path.dirname(sys.argv[0]) - if os.access(base+"/Makefile.am", os.R_OK): + if os.access(base+"/Makefile", os.R_OK): return 1 return 0 -if not development_mode(): +if development_mode(): + sys.path.append('../utils') +else: sys.path.append(PYMOD_DIR) import Lustre @@ -699,13 +701,14 @@ def do_find_file(base, mod): return module def find_module(src_dir, dev_dir, modname): - mod = '%s.o' % (modname) - module = src_dir +'/'+ dev_dir +'/'+ mod - try: - if os.access(module, os.R_OK): - return module - except OSError: - pass + modbase = src_dir +'/'+ dev_dir +'/'+ modname + for modext in '.ko', '.o': + module = modbase + modext + try: + if os.access(module, os.R_OK): + return module + except OSError: + pass return None # is the path a block device? @@ -730,7 +733,7 @@ def mkfs(dev, devsize, fstype, jsize, isize, mkfsoptions, isblock=1): # devsize is in 1k, and fs block count is in 4k block_cnt = devsize/4 - if fstype in ('ext3', 'extN'): + if fstype in ('ext3', 'extN', 'ldiskfs'): # ext3 journal size is in megabytes if jsize == 0: if devsize == 0: @@ -764,7 +767,7 @@ def mkfs(dev, devsize, fstype, jsize, isize, mkfsoptions, isblock=1): if ret: panic("Unable to build fs:", dev, string.join(out)) # enable hash tree indexing on fsswe - if fstype in ('ext3', 'extN'): + if fstype in ('ext3', 'extN', 'ldiskfs'): htree = 'echo "feature FEATURE_C5" | debugfs -w' (ret, out) = run (htree, dev) if ret: @@ -1415,6 +1418,8 @@ class MDSDEV(Module): self.add_lustre_module('osc', 'osc') self.add_lustre_module('lov', 'lov') self.add_lustre_module('mds', 'mds') + if self.fstype == 'ldiskfs': + self.add_lustre_module('ldiskfs', 'ldiskfs') if self.fstype: self.add_lustre_module('lvfs', 'fsfilt_%s' % (self.fstype)) @@ -1600,6 +1605,8 @@ class OSD(Module): # modules self.add_lustre_module('ost', 'ost') # FIXME: should we default to ext3 here? + if self.fstype == 'ldiskfs': + self.add_lustre_module('ldiskfs', 'ldiskfs') if self.fstype: self.add_lustre_module('lvfs' , 'fsfilt_%s' % (self.fstype)) self.add_lustre_module(self.osdtype, self.osdtype) @@ -2351,6 +2358,7 @@ def setupModulePath(cmd, portals_dir = PORTALS_DIR): base = os.path.dirname(cmd) if development_mode(): if not config.lustre: + debug('using objdir module paths') config.lustre = (os.path.join(base, "..")) # normalize the portals dir, using command line arg if set if config.portals: diff --git a/lustre/utils/lfs.c b/lustre/utils/lfs.c index ab354af..658a921 100644 --- a/lustre/utils/lfs.c +++ b/lustre/utils/lfs.c @@ -51,27 +51,28 @@ static int lfs_catinfo(int argc, char **argv); /* all avaialable commands */ command_t cmdlist[] = { {"setstripe", lfs_setstripe, 0, - "To create a new file with a specific striping pattern, or to set default striping pattern on an existing directory\n" + "Create a new file with a specific striping pattern or\n" + "Set the default striping pattern on an existing directory\n" "usage: setstripe \n" "\tstripe size: Number of bytes in each stripe (0 default)\n" "\tstripe start: OST index of first stripe (-1 default)\n" - "\tstripe count: Number of OSTs to stripe over (0 default)"}, + "\tstripe count: Number of OSTs to stripe over (0 default, -1 all)"}, {"find", lfs_find, 0, - "To list the extended attributes for a given filename or files in a directory " - "or recursively for all files in a directory tree.\n" + "To list the extended attributes for a given filename or files in a\n" + "directory or recursively for all files in a directory tree.\n" "usage: find [--obd ] [--quiet | --verbose] [--recursive] ..."}, {"getstripe", lfs_getstripe, 0, "To list the striping pattern for given filename.\n" "usage:getstripe "}, {"check", lfs_check, 0, - "Display the status of MDS or OSTs (as specified in the command) " + "Display the status of MDS or OSTs (as specified in the command)\n" "or all the servers (MDS and OSTs).\n" "usage: check "}, {"catinfo", lfs_catinfo, 0, "Show information of specified type logs.\n" - "usage: catinfo [node name]" - "keywords are one of followings: config, deletions.\n" - "client node name must be provided when use keyword config."}, + "usage: catinfo {keyword} [node name]\n" + "\tkeywords are one of followings: config, deletions.\n" + "\tnode name must be provided when use keyword config."}, {"osts", lfs_osts, 0, "osts"}, {"help", Parser_help, 0, "help"}, {"exit", Parser_quit, 0, "quit"}, @@ -220,7 +221,7 @@ static int lfs_osts(int argc, char **argv) } else { mnt = getmntent(fp); while (feof(fp) == 0 && ferror(fp) ==0) { - if (strcmp(mnt->mnt_type, "lustre_lite") == 0) { + if (llapi_is_lustre_mnttype(mnt->mnt_type)) { rc = op_find(mnt->mnt_dir, obduuid, 0, 0, 0); if (rc) fprintf(stderr, "error: lfs osts failed for %s\n", @@ -271,19 +272,19 @@ static int lfs_check(int argc, char **argv) } else { mnt = getmntent(fp); while (feof(fp) == 0 && ferror(fp) ==0) { - if (strcmp(mnt->mnt_type, "lustre_lite") == 0) + if (llapi_is_lustre_mnttype(mnt->mnt_type)) break; mnt = getmntent(fp); } endmntent(fp); } - + rc = op_check(type_num,obd_type_p,mnt->mnt_dir); if (rc) fprintf(stderr, "error: %s: %s status failed\n", argv[0],argv[1]); - + return rc; } @@ -293,7 +294,7 @@ static int lfs_catinfo(int argc, char **argv) FILE *fp; struct mntent *mnt = NULL; int rc; - + if (argc < 2 || (!strcmp(argv[1],"config") && argc < 3)) return CMD_HELP; @@ -302,12 +303,12 @@ static int lfs_catinfo(int argc, char **argv) fp = setmntent(MOUNTED, "r"); if (fp == NULL) { - fprintf(stderr, "setmntent(%s): %s:", MOUNTED, + fprintf(stderr, "setmntent(%s): %s:", MOUNTED, strerror(errno)); } else { mnt = getmntent(fp); while (feof(fp) == 0 && ferror(fp) == 0) { - if (strcmp(mnt->mnt_type, "lustre_lite") == 0) + if (llapi_is_lustre_mnttype(mnt->mnt_type)) break; mnt = getmntent(fp); } @@ -332,13 +333,13 @@ int main(int argc, char **argv) int rc; setlinebuf(stdout); - + ptl_initialize(argc, argv); if (obd_initialize(argc, argv) < 0) exit(2); if (dbg_initialize(argc, argv) < 0) exit(3); - + Parser_init("lfs > ", cmdlist); if (argc > 1) { diff --git a/lustre/utils/liblustreapi.c b/lustre/utils/liblustreapi.c index 987550c..254d7a0 100644 --- a/lustre/utils/liblustreapi.c +++ b/lustre/utils/liblustreapi.c @@ -74,7 +74,7 @@ int op_create_file(char *name, long stripe_size, int stripe_offset, lum.lmm_stripe_count = stripe_count; fd = open(name, O_CREAT | O_RDWR | O_LOV_DELAY_CREATE, 0644); - if (errno == EISDIR) + if (errno == EISDIR) fd = open(name, O_DIRECTORY | O_RDONLY); if (fd < 0) { @@ -259,9 +259,9 @@ void lov_dump_user_lmm_v1(struct lov_user_md_v1 *lum, char *dname, char *fname, printf("count: %d, size: %d, offset: %d\n\n", lum->lmm_stripe_count, lum->lmm_stripe_size, (short int)lum->lmm_stripe_offset); - } + } return; - } + } if (header && (obdstripe == 1)) { printf("lmm_magic: 0x%08X\n", lum->lmm_magic); @@ -273,18 +273,16 @@ void lov_dump_user_lmm_v1(struct lov_user_md_v1 *lum, char *dname, char *fname, } if (body) { - long long oid; - if ((!quiet) && (obdstripe == 1)) printf("\tobdidx\t\t objid\t\tobjid\t\t group\n"); for (i = 0; i < lum->lmm_stripe_count; i++) { int idx = lum->lmm_objects[i].l_ost_idx; - oid = lum->lmm_objects[i].l_object_id; + long long oid = lum->lmm_objects[i].l_object_id; + long long gr = lum->lmm_objects[i].l_object_gr; if ((obdindex == OBD_NOT_FOUND) || (obdindex == idx)) - printf("\t%6u\t%14llu\t%#13llx\t%14lld%s\n", - idx, oid, oid, - (long long)lum->lmm_objects[i].l_object_gr, + printf("\t%6u\t%14llu\t%#13llx\t%14llu%s\n", + idx, oid, oid, gr, obdindex == idx ? " *" : ""); } printf("\n"); @@ -349,7 +347,7 @@ int get_file_stripe(char *path, struct lov_user_md *lum) } static int process_file(DIR *dir, char *dname, char *fname, - struct find_param *param) + struct find_param *param) { int rc; @@ -419,9 +417,8 @@ static int process_dir(DIR *dir, char *dname, struct find_param *param) rc = ioctl(dirfd(dir), LL_IOC_LOV_GETSTRIPE, (void *)param->lum); if (rc) { if (errno == ENODATA) { - if (!param->obduuid && !param->quiet) - printf("%s/%s has no stripe info\n", - dname, ""); + if (!param->obduuid && param->verbose) + printf("%s/%s has no stripe info\n", dname, ""); rc = 0; } else { err_msg("IOC_MDC_GETSTRIPE ioctl failed"); @@ -561,12 +558,11 @@ out: int op_check(int type_num, char **obd_type, char *dir) { + char buf[MAX_STRING_SIZE]; + FILE *fp = fopen(DEVICES_LIST, "r"); int rc = 0; int i; - char buf[MAX_STRING_SIZE]; - FILE *fp = fopen(DEVICES_LIST, "r"); - if (fp == NULL) { fprintf(stderr, "error: %s could not open file " DEVICES_LIST " .\n", strerror(rc = errno)); @@ -576,44 +572,46 @@ int op_check(int type_num, char **obd_type, char *dir) while (fgets(buf, sizeof(buf), fp) != NULL) { char *obd_type_name = NULL; char *obd_name = NULL; - char rawbuf[OBD_MAX_IOCTL_BUFFER]; char *bufl = rawbuf; char *bufp = buf; int max = sizeof(rawbuf); struct obd_ioctl_data datal; struct obd_statfs osfs_buffer; - - while(bufp[0] == ' ') bufp += 1; + + while(bufp[0] == ' ') + ++bufp; + for(i = 0; i < 3; i++) { obd_type_name = strsep(&bufp, " "); } obd_name = strsep(&bufp, " "); - memset (&osfs_buffer, 0, sizeof (osfs_buffer)); + memset(&osfs_buffer, 0, sizeof (osfs_buffer)); memset(bufl, 0, sizeof(rawbuf)); datal.ioc_pbuf1 = (char *)&osfs_buffer; - datal.ioc_plen1 = sizeof (osfs_buffer); + datal.ioc_plen1 = sizeof(osfs_buffer); - for (i=0;ilmd_magic = LMD_MAGIC; lmd->lmd_server_nid = PTL_NID_ANY; lmd->lmd_local_nid = PTL_NID_ANY; @@ -194,7 +194,7 @@ set_local(struct lustre_mount_data *lmd) if (rc != 0) { fprintf(stderr, "%s: can't read Elan ID from /proc\n", progname); - + return -1; } } diff --git a/lustre/utils/parser.c b/lustre/utils/parser.c index a2bbe20..26f66d8 100644 --- a/lustre/utils/parser.c +++ b/lustre/utils/parser.c @@ -34,7 +34,7 @@ /* completion_matches() is #if 0-ed out in modern glibc */ #ifndef completion_matches -#define completion_matches rl_completion_matches +# define completion_matches rl_completion_matches #endif extern void using_history(void); extern void stifle_history(int); @@ -248,18 +248,19 @@ static char * command_generator(const char * text, int state) /* probably called by readline */ static char **command_completion(char * text, int start, int end) { - command_t * table; + command_t * table; char * pos; match_tbl = top_level; + for (table = find_cmd(rl_line_buffer, match_tbl, &pos); - table; - table = find_cmd(pos, match_tbl, &pos)) { + table; table = find_cmd(pos, match_tbl, &pos)) + { if (*(pos - 1) == ' ') match_tbl = table->pc_sub_cmd; } - return(completion_matches(text, command_generator)); + return completion_matches(text, command_generator); } #endif