-header-guards-2.6-suse.patch
ext3-wantedi-2.6-suse.patch
ext3-san-jdike-2.6-suse.patch
iopen-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
Kernelenv
Makefile
-Makefile.in
+autoMakefile
+autoMakefile.in
aclocal.m4
autom4te.cache
config.log
config.status
configure
-.*.o.cmd
+.*.cmd
+.depend
+++ /dev/null
-# 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
+++ /dev/null
-# 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
+# -------- 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
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 <linux/version.h>],
+ [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 --------------------
#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 <linux/iobuf.h>],
- [struct kiobuf iobuf;
- iobuf.dovary = 1;],
- [AC_MSG_RESULT([yes])
- CPPFLAGS="$CPPFLAGS -DHAVE_KIOBUF_DOVARY"],
- [AC_MSG_RESULT([no])])
+LUSTRE_MODULE_TRY_COMPILE(
+ [
+ #include <linux/iobuf.h>
+ ],[
+ 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 <linux/mm.h>
+ ],[
+ 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 <linux/sched.h>],
- [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 <linux/sched.h>
+ ],[
+ 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 <linux/config.h>
- ],
+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 <linux/config.h>
+ ],[
+ #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 <linux/config.h>
+ ],[
+ #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 <linux/config.h>
+ ],[
+ #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 <linux/config.h>
-# ],
-# [
-##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 <linux/config.h>
+ ],[
+ #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 <linux/config.h>
+ ],[
+ #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"
# ---------- other tests and settings ---------
+AC_CHECK_TYPE([spinlock_t],
+ [AC_DEFINE(HAVE_SPINLOCK_T, 1, [spinlock_t is defined])],
+ [],
+ [#include <linux/spinlock.h>])
# --------- unsigned long long sane? -------
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)
# ---------- 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
bad_cc
;;
*)
- AC_MSG_RESULT(no known problems)
+ AC_MSG_RESULT([no known problems])
;;
esac
# end ------ BAD gcc? ------------
# 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)
-
+++ /dev/null
-# 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 ])
-
+++ /dev/null
-# 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
+++ /dev/null
-/* portals/include/config.h.in. Generated from configure.in by autoheader. */
-
-/* Use the Pinger */
-#undef ENABLE_PINGER
-
-/* Define to 1 if you have the <inttypes.h> header file. */
-#undef HAVE_INTTYPES_H
-
-/* Define to 1 if you have the <memory.h> header file. */
-#undef HAVE_MEMORY_H
-
-/* Define to 1 if you have the <stdint.h> header file. */
-#undef HAVE_STDINT_H
-
-/* Define to 1 if you have the <stdlib.h> header file. */
-#undef HAVE_STDLIB_H
-
-/* Define to 1 if you have the <strings.h> header file. */
-#undef HAVE_STRINGS_H
-
-/* Define to 1 if you have the <string.h> header file. */
-#undef HAVE_STRING_H
-
-/* Define to 1 if you have the <sys/stat.h> header file. */
-#undef HAVE_SYS_STAT_H
-
-/* Define to 1 if you have the <sys/types.h> header file. */
-#undef HAVE_SYS_TYPES_H
-
-/* Define to 1 if you have the <unistd.h> 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
+++ /dev/null
-# 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
#ifndef _KP30_INCLUDED
#define _KP30_INCLUDED
+#include <linux/libcfs.h>
#define PORTAL_DEBUG
#ifndef offsetof
#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 <linux/sched.h> /* 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 <linux/vmalloc.h>
# include <linux/time.h>
# include <linux/highmem.h>
# include <linux/module.h>
# include <linux/version.h>
-# include <portals/lib-nal.h>
+# include <portals/p30.h>
# include <linux/smp_lock.h>
# include <asm/atomic.h>
#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
#endif
# include <unistd.h>
# include <time.h>
+# include <limits.h>
# include <asm/types.h>
# ifndef DEBUG_SUBSYSTEM
# define DEBUG_SUBSYSTEM S_UNDEFINED
# 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, \
* 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;
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)
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);
/* -*- 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
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
#define PORTAL_DEBUG
-#ifdef __linux__
-# include <asm/types.h>
-# if defined(__powerpc__) && !defined(__KERNEL__)
-# define __KERNEL__
-# include <asm/timex.h>
-# undef __KERNEL__
-# else
-# include <asm/timex.h>
-# endif
-#else
-# include <sys/types.h>
-typedef u_int32_t __u32;
-typedef u_int64_t __u64;
-#endif
-
-#ifdef __KERNEL__
-# include <linux/time.h>
-#else
-# include <sys/time.h>
-# define do_gettimeofday(tv) gettimeofday(tv, NULL);
-#endif
-
#ifndef offsetof
# define offsetof(typ,memb) ((int)((char *)&(((typ *)0)->memb)))
#endif
\
} 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;
char ioc_bulk[0];
};
-
#ifdef __KERNEL__
#include <linux/list.h>
# 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) \
# 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 */
+++ /dev/null
-# 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
-
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));
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));
Makefile
-Makefile.in
-.*.o.cmd
+autoMakefile
+autoMakefile.in
+.*.cmd
+.depend
+++ /dev/null
-# 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@
.deps
Makefile
-Makefile.in
+autoMakefile.in
+autoMakefile
+*.ko
+*.mod.c
+.*.cmd
+.*.flags
+.tmp_versions
+.depend
+++ /dev/null
-# 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
.deps
Makefile
-Makefile.in
+autoMakefile.in
+autoMakefile
+*.ko
+*.mod.c
+.*.flags
+.*.cmd
+.tmp_versions
+.depend
+++ /dev/null
-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
#include <portals/p30.h>
#include <portals/lib-p30.h>
#include <linux/kp30.h>
+#include <linux/kpr.h>
// Infiniband VAPI/EVAPI header files
// Mellanox MT23108 VAPI
.deps
Makefile
-Makefile.in
+autoMakefile.in
+autoMakefile
+*.ko
+*.mod.c
+.*.flags
+.*.cmd
+.tmp_versions
+.depend
+++ /dev/null
-# 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
#define DEBUG_SUBSYSTEM S_QSWNAL
#include <linux/kp30.h>
+#include <linux/kpr.h>
#include <portals/p30.h>
#include <portals/lib-p30.h>
+#include <portals/nal.h>
#define KQSW_CHECKSUM 0
#if KQSW_CHECKSUM
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)
.deps
Makefile
-Makefile.in
+autoMakefile.in
+autoMakefile
+*.ko
+*.mod.c
+.*.flags
+.*.cmd
+.tmp_versions
+.depend
+++ /dev/null
-# 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
#define DEBUG_SUBSYSTEM S_UNDEFINED
#include <linux/kp30.h>
+#include <linux/kpr.h>
#include <portals/p30.h>
#include <portals/lib-p30.h>
.deps
Makefile
-Makefile.in
-.*.o.cmd
+.*.cmd
+autoMakefile.in
+autoMakefile
+*.ko
+*.mod.c
+.*.flags
+.tmp_versions
+.depend
+++ /dev/null
-# 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
#include <linux/kp30.h>
#include <linux/portals_compat25.h>
+#include <linux/kpr.h>
#include <portals/p30.h>
#include <portals/lib-p30.h>
+#include <portals/nal.h>
#include <portals/socknal.h>
#if CONFIG_SMP
# 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
*/
#include "socknal.h"
+#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,5,0))
+# include <linux/syscalls.h>
+#endif
/*
* LIB functions follow
{
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);
}
.deps
Makefile
-Makefile.in
link-stamp
-.*.o.cmd
+.*.cmd
+autoMakefile.in
+autoMakefile
+sources
+*.ko
+*.mod.c
+.*.flags
+.tmp_versions
+.depend
+++ /dev/null
-# 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
-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@
# 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)
#include <asm/uaccess.h>
#include <asm/segment.h>
#include <linux/miscdevice.h>
+#include <linux/version.h>
# define DEBUG_SUBSYSTEM S_PORTALS
#include <linux/kp30.h>
#include <linux/portals_compat25.h>
+#include <linux/libcfs.h>
+
+#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,5,0))
+#include <linux/kallsyms.h>
+#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;
rc = -ENOMEM;
goto cleanup;
}
- list_add(&page->list, &my_pages);
+ list_add(&PAGE_LIST(page), &my_pages);
}
spin_lock_irqsave(&portals_debug_lock, flags);
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;
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);
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;
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;
}
#if defined(__arch_um__)
-extern int is_kernel_text_address(unsigned long addr);
-
char *portals_debug_dumpstack(void)
{
asm("int $3");
#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);
<= pbuf + strlen(buffer) + 28 + 1)
break;
size = sprintf(pbuf, "([<%08lx>] %s (0x%p)) ",
- addr, buffer, stack-1);
+ addr, buffer, stack - 1);
}
pbuf += size;
}
#include <portals/lib-p30.h>
#include <portals/p30.h>
#include <linux/kp30.h>
+#include <linux/kpr.h>
#include <linux/portals_compat25.h>
#define PORTAL_MINOR 240
};
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,
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);
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);
.deps
Makefile
-Makefile.in
-.*.o.cmd
+.*.cmd
+autoMakefile.in
+autoMakefile
+*.ko
+*.mod.c
+.*.flags
+.tmp_versions
+.depend
+++ /dev/null
-# 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
-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@
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
#include <portals/api-support.h>
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;
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)
.deps
Makefile
-Makefile.in
-.*.o.cmd
+.*.cmd
+autoMakefile.in
+autoMakefile
+*.ko
+*.mod.c
+.*.flags
+.tmp_versions
+.depend
+++ /dev/null
-# 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
#define DEBUG_SUBSYSTEM S_PTLROUTER
#include <linux/kp30.h>
+#include <linux/kpr.h>
#include <portals/p30.h>
#include <portals/lib-p30.h>
Makefile
-Makefile.in
.deps
-.*.o.cmd
+.*.cmd
+autoMakefile.in
+autoMakefile
+*.ko
+*.mod.c
+.*.flags
+.tmp_versions
+.depend
+++ /dev/null
-# 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
-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)
-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)
# 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 <portals/*.h>, ../../ for generated <config.h>
+#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
debugctl_DEPENDENCIES = libptlctl.a
routerstat_SOURCES = routerstat.c
-endif
#include <fcntl.h>
#include <sys/ioctl.h>
#include <unistd.h>
-#include <asm/byteorder.h>
#include <syslog.h>
-
#include <errno.h>
#include <portals/api-support.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <unistd.h>
-#include <asm/byteorder.h>
#include <syslog.h>
-
#include <errno.h>
#include <portals/api-support.h>
#include <sys/param.h>
#include <assert.h>
-#include <config.h>
#ifdef HAVE_LIBREADLINE
#define READLINE_LIBRARY
#include <readline/readline.h>
+
+/* 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 *);
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
#include <unistd.h>
#include <time.h>
#include <stdarg.h>
-#include <asm/byteorder.h>
+#include <endian.h>
#ifdef __CYGWIN__
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;
config.log
config.status
config.cache
+config.guess
+config.sub
configure
Makefile
-Makefile.in
+autoMakefile
+autoMakefile.in
.deps
tags
TAGS
cscope.out
autom4te-2.53.cache
autom4te.cache
-.*.o.cmd
+depcomp
+compile
+.*.cmd
.mergeinfo-*
+Rules
+missing
+mkinstalldirs
+install-sh
+.depend
+.tmp_versions
- 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. <info@clusterfs.com>
* version 1.2.1
+++ /dev/null
-# 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}
+++ /dev/null
-# 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
-
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:
-#!/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 <<EOF
+$cmd is $1. version $required is required to build Lustre.
+
+CFS provides RPMs which can be installed alongside your existing autoconf/make
+RPMs, if you are nervous about upgrading. See
+
+ftp://ftp.lustre.org/pub/other/autolustre/README.autolustre
+
+You may be able to download a new version from:
+http://ftp.gnu.org/gnu/$cmd/$cmd-$required.tar.gz
+EOF
+ [ "$cmd" = "autoconf" -a "$required" = "2.57" ] && cat >&2 <<EOF
+
+or
+
+ftp://fr2.rpmfind.net/linux/redhat/9/en/os/i386/RedHat/RPMS/autoconf-2.57-3.noarch.rpm
+EOF
+ [ "$cmd" = "automake" -a "$required" = "1.7.8" ] && cat >&2 <<EOF
+
+or
+
+ftp://fr2.rpmfind.net/linux/fedora/core/1/i386/os/Fedora/RPMS/automake-1.7.8-1.noarch.rpm
+EOF
+ exit 1
+}
+
+check_version() {
+ local cmd
+ local required
+ local version
+
+ cmd=$1
+ required=$2
+ echo -n "checking for $cmd $required... "
+ if ! $cmd --version >/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}
.deps
Makefile
-Makefile.in
+autoMakefile.in
+autoMakefile
+*.ko
+*.mod.c
+.*.cmd
+.*.flags
+.tmp_versions
+.depend
+++ /dev/null
-# 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
}
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)
ldapschema_SCRIPTS = lustre.schema
pkglibdir = '${exec_prefix}/usr/lib/$(PACKAGE)'
pkglib_DATA = top.ldif lustre2ldif.xsl
-
-include $(top_srcdir)/Rules
-
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)
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
+])
dist-hook:
rm -rf $(distdir)/figs/CVS
-
-include $(top_srcdir)/Rules
config.status
configure
config.h
+config.h.in
stamp-h
stamp-h1
stamp-h.in
SUBDIRS = linux lustre
EXTRA_DIST = config.h.in ioctl.h liblustre.h
-include $(top_srcdir)/Rules
+
+++ /dev/null
-/* include/config.h.in. Generated from configure.in by autoheader. */
-
-/* Use the Pinger */
-#undef ENABLE_PINGER
-
-/* Define to 1 if you have the <inttypes.h> header file. */
-#undef HAVE_INTTYPES_H
-
-/* Define to 1 if you have the <memory.h> header file. */
-#undef HAVE_MEMORY_H
-
-/* Define to 1 if you have the <stdint.h> header file. */
-#undef HAVE_STDINT_H
-
-/* Define to 1 if you have the <stdlib.h> header file. */
-#undef HAVE_STDLIB_H
-
-/* Define to 1 if you have the <strings.h> header file. */
-#undef HAVE_STRINGS_H
-
-/* Define to 1 if you have the <string.h> header file. */
-#undef HAVE_STRING_H
-
-/* Define to 1 if you have the <sys/stat.h> header file. */
-#undef HAVE_SYS_STAT_H
-
-/* Define to 1 if you have the <sys/types.h> header file. */
-#undef HAVE_SYS_TYPES_H
-
-/* Define to 1 if you have the <unistd.h> 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
#ifndef LIBLUSTRE_H__
#define LIBLUSTRE_H__
-#include <asm/byteorder.h>
#include <sys/mman.h>
+#include <asm/byteorder.h>
#ifndef __CYGWIN__
#include <stdint.h>
#include <asm/page.h>
#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);
/* 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;}
#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)
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)
#define SIGNAL_MASK_ASSERT()
#define KERN_INFO
+#include <sys/time.h>
+#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;
free(l);
}
-#define time_after(a, b) \
-({ \
- 1; \
-})
-
typedef struct { volatile int counter; } atomic_t;
#define atomic_read(a) ((a)->counter)
#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 */
# include <linux/types.h>
# include <linux/list.h>
# include <linux/string.h> /* for strncpy, below */
-# include <asm/byteorder.h>
# include <linux/fs.h> /* to check for FMODE_EXEC, lest we redefine */
#else
#ifdef __CYGWIN__
#ifndef _LUSTRE_LIB_H
#define _LUSTRE_LIB_H
-#include <config.h>
-
#ifndef __KERNEL__
# include <string.h>
# include <sys/types.h>
#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
#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__
#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)
{
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);
pkginclude_HEADERS = lustre_user.h liblustreapi.h
+
+EXTRA_DIST = $(pkginclude_HEADERS)
#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 <lustre/lustre_user.h>
+/* 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
#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
+++ /dev/null
-#!/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
--- /dev/null
+#
+# 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
--- /dev/null
+#
+# 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
+ * 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 <linux/kernel.h>
+#include <linux/sched.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
-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 @@
*/
/* 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;
#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
/*
* 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);
+++ /dev/null
-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);
--- /dev/null
+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");
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;
}
#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;
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...
*/
break;
}
goto return_base;
-@@ -643,6 +680,25 @@
+@@ -643,6 +680,27 @@
* Check the cached dentry for staleness.
*/
dentry = nd->dentry;
+ }
+ 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;
}
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)
{
}
int path_walk(const char * name, struct nameidata *nd)
-@@ -677,6 +735,12 @@
+@@ -677,6 +737,12 @@
return __path_walk(name, nd);
}
/* 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 */
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;
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.
*/
{
struct dentry * dentry;
struct inode *inode;
-@@ -810,13 +887,16 @@
+@@ -810,13 +889,16 @@
goto out;
}
dentry = inode->i_op->lookup(inode, new);
unlock_kernel();
if (!dentry)
-@@ -828,6 +908,12 @@
+@@ -828,6 +910,12 @@
return dentry;
}
/* 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);
access:
return ERR_PTR(-EACCES);
}
-@@ -880,6 +966,23 @@
+@@ -880,6 +968,23 @@
return err;
}
/*
* 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;
}
{
int error;
-@@ -990,12 +1094,15 @@
+@@ -990,12 +1096,15 @@
goto exit_lock;
error = -EACCES; /* shouldn't it be ENOSYS? */
unlock_kernel();
exit_lock:
up(&dir->i_zombie);
-@@ -1004,6 +1111,11 @@
+@@ -1004,6 +1113,11 @@
return error;
}
/*
* open_namei()
*
-@@ -1018,7 +1130,8 @@
+@@ -1018,7 +1132,8 @@
* for symlinks (where the permissions are checked later).
* SMP-safe
*/
{
int acc_mode, error = 0;
struct inode *inode;
-@@ -1028,11 +1141,14 @@
+@@ -1028,11 +1143,14 @@
acc_mode = ACC_MODE(flag);
if (error)
return error;
dentry = nd->dentry;
-@@ -1042,6 +1158,10 @@
+@@ -1042,6 +1160,10 @@
/*
* Create - we need to know the parent.
*/
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);
do_last:
error = PTR_ERR(dentry);
-@@ -1066,11 +1186,12 @@
+@@ -1066,11 +1188,12 @@
goto exit;
}
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);
}
put_write_access(inode);
if (error)
-@@ -1190,8 +1311,10 @@
+@@ -1190,8 +1313,10 @@
return 0;
exit_dput:
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);
dput(dentry);
if (error)
return error;
-@@ -1232,13 +1358,20 @@
+@@ -1232,13 +1360,20 @@
}
dir = nd->dentry;
down(&dir->d_inode->i_sem);
{
struct dentry *dentry;
-@@ -1246,7 +1379,7 @@
+@@ -1246,7 +1381,7 @@
dentry = ERR_PTR(-EEXIST);
if (nd->last_type != LAST_NORM)
goto fail;
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);
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);
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);
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);
path_release(&nd);
out:
putname(tmp);
-@@ -1480,8 +1631,16 @@
+@@ -1480,8 +1641,16 @@
error = -EBUSY;
goto exit1;
}
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;
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);
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);
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,
{
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,
{
int error;
-@@ -1902,9 +2083,18 @@
+@@ -1902,9 +2101,18 @@
if (newnd.last_type != LAST_NORM)
goto exit2;
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;
}
dput(new_dentry);
exit4:
dput(old_dentry);
-@@ -1980,20 +2170,26 @@
+@@ -1980,20 +2188,26 @@
}
static inline int
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)
{
}
/* get the link contents into pagecache */
-@@ -2059,7 +2261,7 @@
+@@ -2059,7 +2279,7 @@
{
struct page *page = NULL;
char *s = page_getlink(dentry, &page);
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;
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 <asm/uaccess.h>
/*
* 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
{
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;
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;
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;
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;
path_release(&nd);
}
return error;
-@@ -222,7 +234,7 @@
+@@ -222,7 +232,7 @@
if (f) {
struct dentry * dentry = f->f_dentry;
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;
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 &&
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;
path_release(&nd);
}
return error;
-@@ -354,12 +368,14 @@
+@@ -354,12 +366,14 @@
{
struct nameidata nd;
int error;
path_release(&nd);
}
return error;
-@@ -374,7 +390,7 @@
+@@ -374,7 +388,7 @@
if (f) {
struct dentry * dentry = f->f_dentry;
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 <linux/gdb.h>
#include <linux/mount.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
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;
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 */
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);
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);
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
-header-guards-2.6-suse.patch
ext3-wantedi-2.6-suse.patch
ext3-san-jdike-2.6-suse.patch
iopen-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
-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=""
Makefile
Makefile.in
.*.cmd
+.*.flags
+.tmp_versions
# 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
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);
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);
}
}
} 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,
rc = ptlrpc_queue_wait(req);
if (rc != 0)
rc = ldlm_handle_ast_error(lock, req, rc, "completion");
+
ptlrpc_req_finished(req);
RETURN(rc);
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
## 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)
$(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
/* -*- 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.
*
/* -*- 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.
*
}
fd->fd_flags &= ~O_LOV_DELAY_CREATE;
+ lli->lli_open_flags = flags;
+
out_release:
request = it->d.lustre.it_data;
ptlrpc_req_finished(request);
/* -*- 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.
*
#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;
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;
}
if (init_obdclass() ||
init_lib_portals() ||
ptlrpc_init() ||
- ldlm_init() ||
mdc_init() ||
lov_init() ||
osc_init())
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");
* 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 */
/* -*- 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.
*
/* -*- 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.
*
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);
default:
LBUG();
}
-
+
RETURN(0);
}
-.deps
Makefile
Makefile.in
+.deps
+echo_test
+recovery_small
+replay_ost_single
+replay_single
+sanity
## 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
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)
test_lock_cancel_LDADD := $(LLIB_EXEC) -lmpi -llam
endif
-include $(top_srcdir)/Rules
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"))
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;
}
config.status
configure
Makefile
-Makefile.in
.deps
TAGS
+autoMakefile.in
+autoMakefile
+*.ko
+*.mod.c
.*.cmd
+.*.flags
+.tmp_versions
+.depend
+++ /dev/null
-# 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
}
struct address_space_operations ll_dir_aops = {
- readpage: ll_dir_readpage,
+ .readpage = ll_dir_readpage,
};
/*
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);
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);
rc = ptlrpc_queue_wait(req);
- ptlrpc_req_finished(req);
+ ptlrpc_req_finished(req);
out_ping:
obd_ioctl_freedata(buf, len);
return rc;
int rc, len = 0;
char *bufs[2], *str;
int lens[2], size;
-
+
rc = obd_ioctl_getdata(&buf, &len, (void *)arg);
if (rc)
RETURN(rc);
obd_ioctl_freedata(buf, len);
RETURN(-EINVAL);
}
-
+
lens[0] = data->ioc_inllen1;
bufs[0] = data->ioc_inlbuf1;
if (data->ioc_inllen2) {
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);
}
}
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
};
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",
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);
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 */
#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
};
/* 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);
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);
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))
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);
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)
{
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);
}
(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);
}
}
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;
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))
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;
}
}
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;
{ .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));
}
}
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
};
}
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
};
}
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
};
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);
}
}
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,
};
+
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)
/* 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)
}
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
};
.deps
Makefile
-Makefile.in
.*.cmd
+autoMakefile.in
+autoMakefile
+*.ko
+*.mod.c
+.*.flags
+.tmp_versions
+.depend
+++ /dev/null
-# 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
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) {
/* 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
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);
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;
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);
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)
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;
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,
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;
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);
}
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);
} else if (keylen >= strlen("lovdesc") && strcmp(key, "lovdesc") == 0) {
struct lov_desc *desc_ret = val;
*desc_ret = lov->desc;
-
+
RETURN(0);
}
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)
if (lov_size > size)
size = lov_size;
}
+
return size;
}
EXPORT_SYMBOL(lov_merge_size);
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)
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;
}
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
+++ /dev/null
-# 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
#include <linux/ext3_fs.h>
#include <linux/ext3_jbd.h>
#include <linux/version.h>
-/* XXX ugh */
#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0))
- #include <linux/ext3_xattr.h>
+#include <linux/ext3_xattr.h>
#else
- #include <linux/../../fs/ext3/xattr.h>
+#include <ext3/xattr.h>
#endif
+
#include <linux/kp30.h>
#include <linux/lustre_fsfilt.h>
#include <linux/obd.h>
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;
}
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)
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)
config.status
configure
Makefile
-Makefile.in
.deps
TAGS
.*.cmd
+autoMakefile.in
+autoMakefile
+*.ko
+*.mod.c
+.*.flags
+.tmp_versions
+.depend
+++ /dev/null
-# 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
ldlm_change_cbdata(class_exp2obd(exp)->obd_namespace, &res_id, it,
data);
+
EXIT;
return 0;
}
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 "
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);
}
#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;
}
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: {
}
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)
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. <info@clusterfs.com>");
MODULE_DESCRIPTION("Lustre Metadata Client");
MODULE_LICENSE("GPL");
config.status
configure
Makefile
-Makefile.in
.deps
TAGS
.*.cmd
+autoMakefile.in
+autoMakefile
+*.ko
+*.mod.c
+.*.o.flags
+.tmp_versions
+.depend
+++ /dev/null
-# 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
}
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);
/* 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)
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;
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)
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);
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
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);
}
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);
}
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);
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 /
config.status
configure
Makefile
-Makefile.in
.deps
tags
TAGS
+autoMakefile.in
+autoMakefile
+*.ko
+*.mod.c
+++ /dev/null
-# 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
}
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)
}
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)
+++ /dev/null
-#! /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 <pinard@iro.umontreal.ca>, 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
+++ /dev/null
-#! /bin/sh
-# mkinstalldirs --- make directory hierarchy
-# Author: Noah Friedman <friedman@prep.ai.mit.edu>
-# 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
config.status
configure
Makefile
-Makefile.in
.deps
TAGS
.*.cmd
+autoMakefile.in
+autoMakefile
+*.ko
+*.mod.c
+.*.flags
+.tmp_versions
+.depend
+++ /dev/null
-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
--- /dev/null
+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@
#include <linux/obd_class.h>
#include <linux/lustre_debug.h>
#include <linux/lprocfs_status.h>
+#ifdef __KERNEL__
#include <linux/lustre_build_version.h>
+#endif
#include <portals/list.h>
#include "llog_internal.h"
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);
}
obd_cleanup_caches();
-#ifdef __KERNEL__
obd_sysctl_clean();
-#endif
#ifdef LPROCFS
if (proc_lustre_root) {
lprocfs_remove(proc_lustre_root);
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 <linux/lustre_version.h>
#define LUSTRE_MIN_VERSION 28
#define LUSTRE_MAX_VERSION 34
#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. <info@clusterfs.com>");
MODULE_DESCRIPTION("Lustre Class Driver Build Version: " BUILD_VERSION);
MODULE_LICENSE("GPL");
}
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} };
}
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,
*/
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");
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));
/* 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)
config.status
configure
Makefile
-Makefile.in
.deps
+.depend
TAGS
.*.cmd
+autoMakefile.in
+autoMakefile
+*.ko
+*.mod.c
+.*.flags
+.tmp_versions
+++ /dev/null
-# 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
#include <linux/stat.h>
#include <linux/sched.h>
#include <linux/smp_lock.h>
-#include <linux/ext2_fs.h>
-#include <linux/quotaops.h>
#include <linux/proc_fs.h>
#include <linux/init.h>
#include <asm/unistd.h>
}
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);
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)
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)
}
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)
config.status
configure
Makefile
-Makefile.in
.deps
TAGS
.*.cmd
+autoMakefile.in
+autoMakefile
+*.ko
+*.mod.c
+.*.flags
+.tmp_versions
+.depend
+++ /dev/null
-# 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
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));
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";
/* 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;
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++) {
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;
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",
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);
}
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 "
};
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)
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);
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);
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,
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++) {
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);
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
config.status
configure
Makefile
-Makefile.in
.deps
TAGS
.*.cmd
+autoMakefile.in
+autoMakefile
+*.ko
+*.mod.c
+.*.flags
+.tmp_versions
+.depend
+++ /dev/null
-# 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
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;
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;
}
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);
RETURN(rc);
}
+#ifdef __KERNEL__
static void /*__exit*/ osc_exit(void)
{
#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0))
class_unregister_type(LUSTRE_OSC_NAME);
}
-#ifdef __KERNEL__
MODULE_AUTHOR("Cluster File Systems, Inc. <info@clusterfs.com>");
MODULE_DESCRIPTION("Lustre Object Storage Client (OSC)");
MODULE_LICENSE("GPL");
config.status
configure
Makefile
-Makefile.in
.deps
TAGS
.*.cmd
+autoMakefile.in
+autoMakefile
+*.ko
+*.mod.c
+.*.flags
+.tmp_versions
+.depend
+++ /dev/null
-# 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
}
rc = ptlrpc_start_n_threads(obd, ost->ost_create_service, 1,
- "ll_ost_create");
+ "ll_ost_creat");
if (rc)
GOTO(out_create, rc = -EINVAL);
/* 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)
Kernelenv
Makefile
-Makefile.in
+autoMakefile
+autoMakefile.in
aclocal.m4
autom4te.cache
config.log
config.status
configure
-.*.o.cmd
+.*.cmd
+.depend
+++ /dev/null
-# 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
+++ /dev/null
-# 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
+# -------- 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
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 <linux/version.h>],
+ [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 --------------------
#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 <linux/iobuf.h>],
- [struct kiobuf iobuf;
- iobuf.dovary = 1;],
- [AC_MSG_RESULT([yes])
- CPPFLAGS="$CPPFLAGS -DHAVE_KIOBUF_DOVARY"],
- [AC_MSG_RESULT([no])])
+LUSTRE_MODULE_TRY_COMPILE(
+ [
+ #include <linux/iobuf.h>
+ ],[
+ 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 <linux/mm.h>
+ ],[
+ 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 <linux/sched.h>],
- [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 <linux/sched.h>
+ ],[
+ 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 <linux/config.h>
- ],
+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 <linux/config.h>
+ ],[
+ #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 <linux/config.h>
+ ],[
+ #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 <linux/config.h>
+ ],[
+ #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 <linux/config.h>
-# ],
-# [
-##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 <linux/config.h>
+ ],[
+ #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 <linux/config.h>
+ ],[
+ #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"
# ---------- other tests and settings ---------
+AC_CHECK_TYPE([spinlock_t],
+ [AC_DEFINE(HAVE_SPINLOCK_T, 1, [spinlock_t is defined])],
+ [],
+ [#include <linux/spinlock.h>])
# --------- unsigned long long sane? -------
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)
# ---------- 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
bad_cc
;;
*)
- AC_MSG_RESULT(no known problems)
+ AC_MSG_RESULT([no known problems])
;;
esac
# end ------ BAD gcc? ------------
# 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)
-
+++ /dev/null
-# 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 ])
-
+++ /dev/null
-# 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
+++ /dev/null
-/* portals/include/config.h.in. Generated from configure.in by autoheader. */
-
-/* Use the Pinger */
-#undef ENABLE_PINGER
-
-/* Define to 1 if you have the <inttypes.h> header file. */
-#undef HAVE_INTTYPES_H
-
-/* Define to 1 if you have the <memory.h> header file. */
-#undef HAVE_MEMORY_H
-
-/* Define to 1 if you have the <stdint.h> header file. */
-#undef HAVE_STDINT_H
-
-/* Define to 1 if you have the <stdlib.h> header file. */
-#undef HAVE_STDLIB_H
-
-/* Define to 1 if you have the <strings.h> header file. */
-#undef HAVE_STRINGS_H
-
-/* Define to 1 if you have the <string.h> header file. */
-#undef HAVE_STRING_H
-
-/* Define to 1 if you have the <sys/stat.h> header file. */
-#undef HAVE_SYS_STAT_H
-
-/* Define to 1 if you have the <sys/types.h> header file. */
-#undef HAVE_SYS_TYPES_H
-
-/* Define to 1 if you have the <unistd.h> 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
+++ /dev/null
-# 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
#ifndef _KP30_INCLUDED
#define _KP30_INCLUDED
+#include <linux/libcfs.h>
#define PORTAL_DEBUG
#ifndef offsetof
#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 <linux/sched.h> /* 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 <linux/vmalloc.h>
# include <linux/time.h>
# include <linux/highmem.h>
# include <linux/module.h>
# include <linux/version.h>
-# include <portals/lib-nal.h>
+# include <portals/p30.h>
# include <linux/smp_lock.h>
# include <asm/atomic.h>
#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
#endif
# include <unistd.h>
# include <time.h>
+# include <limits.h>
# include <asm/types.h>
# ifndef DEBUG_SUBSYSTEM
# define DEBUG_SUBSYSTEM S_UNDEFINED
# 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, \
* 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;
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)
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);
/* -*- 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
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
#define PORTAL_DEBUG
-#ifdef __linux__
-# include <asm/types.h>
-# if defined(__powerpc__) && !defined(__KERNEL__)
-# define __KERNEL__
-# include <asm/timex.h>
-# undef __KERNEL__
-# else
-# include <asm/timex.h>
-# endif
-#else
-# include <sys/types.h>
-typedef u_int32_t __u32;
-typedef u_int64_t __u64;
-#endif
-
-#ifdef __KERNEL__
-# include <linux/time.h>
-#else
-# include <sys/time.h>
-# define do_gettimeofday(tv) gettimeofday(tv, NULL);
-#endif
-
#ifndef offsetof
# define offsetof(typ,memb) ((int)((char *)&(((typ *)0)->memb)))
#endif
\
} 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;
char ioc_bulk[0];
};
-
#ifdef __KERNEL__
#include <linux/list.h>
# 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) \
# 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 */
+++ /dev/null
-# 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
-
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));
Makefile
-Makefile.in
-.*.o.cmd
+autoMakefile
+autoMakefile.in
+.*.cmd
+.depend
+++ /dev/null
-# 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@
.deps
Makefile
-Makefile.in
+autoMakefile.in
+autoMakefile
+*.ko
+*.mod.c
+.*.cmd
+.*.flags
+.tmp_versions
+.depend
+++ /dev/null
-# 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
.deps
Makefile
-Makefile.in
+autoMakefile.in
+autoMakefile
+*.ko
+*.mod.c
+.*.flags
+.*.cmd
+.tmp_versions
+.depend
+++ /dev/null
-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
#include <portals/p30.h>
#include <portals/lib-p30.h>
#include <linux/kp30.h>
+#include <linux/kpr.h>
// Infiniband VAPI/EVAPI header files
// Mellanox MT23108 VAPI
.deps
Makefile
-Makefile.in
+autoMakefile.in
+autoMakefile
+*.ko
+*.mod.c
+.*.flags
+.*.cmd
+.tmp_versions
+.depend
+++ /dev/null
-# 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
#define DEBUG_SUBSYSTEM S_QSWNAL
#include <linux/kp30.h>
+#include <linux/kpr.h>
#include <portals/p30.h>
#include <portals/lib-p30.h>
+#include <portals/nal.h>
#define KQSW_CHECKSUM 0
#if KQSW_CHECKSUM
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)
.deps
Makefile
-Makefile.in
+autoMakefile.in
+autoMakefile
+*.ko
+*.mod.c
+.*.flags
+.*.cmd
+.tmp_versions
+.depend
+++ /dev/null
-# 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
#define DEBUG_SUBSYSTEM S_UNDEFINED
#include <linux/kp30.h>
+#include <linux/kpr.h>
#include <portals/p30.h>
#include <portals/lib-p30.h>
.deps
Makefile
-Makefile.in
-.*.o.cmd
+.*.cmd
+autoMakefile.in
+autoMakefile
+*.ko
+*.mod.c
+.*.flags
+.tmp_versions
+.depend
+++ /dev/null
-# 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
#include <linux/kp30.h>
#include <linux/portals_compat25.h>
+#include <linux/kpr.h>
#include <portals/p30.h>
#include <portals/lib-p30.h>
+#include <portals/nal.h>
#include <portals/socknal.h>
#if CONFIG_SMP
# 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
*/
#include "socknal.h"
+#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,5,0))
+# include <linux/syscalls.h>
+#endif
/*
* LIB functions follow
{
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);
}
.deps
Makefile
-Makefile.in
link-stamp
-.*.o.cmd
+.*.cmd
+autoMakefile.in
+autoMakefile
+sources
+*.ko
+*.mod.c
+.*.flags
+.tmp_versions
+.depend
+++ /dev/null
-# 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
-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@
# 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)
#include <asm/uaccess.h>
#include <asm/segment.h>
#include <linux/miscdevice.h>
+#include <linux/version.h>
# define DEBUG_SUBSYSTEM S_PORTALS
#include <linux/kp30.h>
#include <linux/portals_compat25.h>
+#include <linux/libcfs.h>
+
+#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,5,0))
+#include <linux/kallsyms.h>
+#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;
rc = -ENOMEM;
goto cleanup;
}
- list_add(&page->list, &my_pages);
+ list_add(&PAGE_LIST(page), &my_pages);
}
spin_lock_irqsave(&portals_debug_lock, flags);
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;
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);
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;
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;
}
#if defined(__arch_um__)
-extern int is_kernel_text_address(unsigned long addr);
-
char *portals_debug_dumpstack(void)
{
asm("int $3");
#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);
<= pbuf + strlen(buffer) + 28 + 1)
break;
size = sprintf(pbuf, "([<%08lx>] %s (0x%p)) ",
- addr, buffer, stack-1);
+ addr, buffer, stack - 1);
}
pbuf += size;
}
#include <portals/lib-p30.h>
#include <portals/p30.h>
#include <linux/kp30.h>
+#include <linux/kpr.h>
#include <linux/portals_compat25.h>
#define PORTAL_MINOR 240
};
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,
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);
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);
.deps
Makefile
-Makefile.in
-.*.o.cmd
+.*.cmd
+autoMakefile.in
+autoMakefile
+*.ko
+*.mod.c
+.*.flags
+.tmp_versions
+.depend
+++ /dev/null
-# 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
-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@
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
#include <portals/api-support.h>
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;
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)
.deps
Makefile
-Makefile.in
-.*.o.cmd
+.*.cmd
+autoMakefile.in
+autoMakefile
+*.ko
+*.mod.c
+.*.flags
+.tmp_versions
+.depend
+++ /dev/null
-# 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
#define DEBUG_SUBSYSTEM S_PTLROUTER
#include <linux/kp30.h>
+#include <linux/kpr.h>
#include <portals/p30.h>
#include <portals/lib-p30.h>
Makefile
-Makefile.in
.deps
-.*.o.cmd
+.*.cmd
+autoMakefile.in
+autoMakefile
+*.ko
+*.mod.c
+.*.flags
+.tmp_versions
+.depend
+++ /dev/null
-# 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
-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)
# 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 <portals/*.h>, ../../ for generated <config.h>
+#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
debugctl_DEPENDENCIES = libptlctl.a
routerstat_SOURCES = routerstat.c
-endif
#include <fcntl.h>
#include <sys/ioctl.h>
#include <unistd.h>
-#include <asm/byteorder.h>
#include <syslog.h>
-
#include <errno.h>
#include <portals/api-support.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <unistd.h>
-#include <asm/byteorder.h>
#include <syslog.h>
-
#include <errno.h>
#include <portals/api-support.h>
#include <sys/param.h>
#include <assert.h>
-#include <config.h>
#ifdef HAVE_LIBREADLINE
#define READLINE_LIBRARY
#include <readline/readline.h>
+
+/* 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 *);
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
#include <unistd.h>
#include <time.h>
#include <stdarg.h>
-#include <asm/byteorder.h>
+#include <endian.h>
#ifdef __CYGWIN__
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;
.deps
Makefile
-Makefile.in
+autoMakefile.in
+autoMakefile
+*.ko
+*.mod.c
+.*.flags
+.tmp_versions
+.depend
+++ /dev/null
-# 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
# 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)
}
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)
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} };
}
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} };
config.status
configure
Makefile
-Makefile.in
.deps
tags
TAGS
.*.cmd
+autoMakefile.in
+autoMakefile
+*.ko
+*.mod.c
+.*.flags
+.tmp_versions
+.depend
+++ /dev/null
-# 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
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
$(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
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) {
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)
}
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;
/* 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);
#define DEBUG_SUBSYSTEM S_RPC
#ifndef __KERNEL__
-#include <liblustre.h>
+# include <liblustre.h>
#endif
#include <linux/obd_support.h>
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;
RETURN(rc);
}
+#ifdef __KERNEL__
static int ptlrpc_pinger_main(void *arg)
{
struct ptlrpc_svc_data *data = (struct ptlrpc_svc_data *)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 */
return 0;
}
+static struct ptlrpc_thread *pinger_thread = NULL;
+
int ptlrpc_start_pinger(void)
{
struct l_wait_info lwi = { 0 };
#endif
}
-#else
+#else /* !__KERNEL__ */
+
/* XXX
* the current implementation of pinger in liblustre is not optimized
*/
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();
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 */
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 ||
/* 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) ||
!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);
spin_lock_irqsave(&svc->srv_lock, flags);
list_del(&thread->t_link);
spin_unlock_irqrestore(&svc->srv_lock, flags);
-
+
OBD_FREE(thread, sizeof(*thread));
}
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);
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)
{
Makefile.in
.deps
TAGS
+version_tag.pl
# 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
initddir = $(sysconfdir)/init.d
initd_SCRIPTS = lustre
-include $(top_srcdir)/Rules
-
fi
echo "done"
-echo "Test, commit and then run land2.sh (no arguments)"
+echo "Build, test, commit and then run land2.sh (no arguments)"
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/
}
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"
}
(( $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
}
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
}
%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 || :
%{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
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/
%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
%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
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.
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
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
#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
/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
%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
%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
# lustre.spec
-%define version 1.2.1.6
+%define version @VERSION@
%define kversion @LINUXRELEASE@
%define linuxdir @LINUX@
%define enable_doc @ENABLE_DOC@
# 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
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)"
+++ /dev/null
-#!/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);
config.status
configure
Makefile
-Makefile.in
.deps
TAGS
.*.cmd
+autoMakefile.in
+autoMakefile
+*.ko
+*.mod.c
+.*.flags
+.tmp_versions
+++ /dev/null
-# 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
# 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
config.status
configure
Makefile
-Makefile.in
.deps
TAGS
.*.cmd
+autoMakefile.in
+autoMakefile
+*.ko
+*.mod.c
+.*.flags
+.tmp_versions
+++ /dev/null
-# 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
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
# 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
/* 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);
/* 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
-RC_1_3_0_14
+RC_1_3_0_19
# 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 =
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
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
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
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;
}
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;
}
+/* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*-
+ * vim:expandtab:shiftwidth=8:tabstop=8:
+ */
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
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 <filename> <count> [verbose [threads]]\n",
- argv[0]);
+ "usage: %s <filename> <count> [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;
rc = 0;
}
- if (threads && thread == 0) { /* parent process */
+ if (threads && thread == 0) { /* parent process */
int live_threads = threads;
while (live_threads > 0) {
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;
}
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;
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;
}
}
+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");
check_trunc_hack(void)
{
struct stat statbuf;
+ int fd = get_fd();
ftruncate(fd, (off_t)0);
ftruncate(fd, (off_t)100000);
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)
struct timeval t;
off_t ret;
unsigned iret;
+ struct test_file *tf = get_tf();
+ int fd = tf->fd;
offset -= offset % readbdy;
gettimeofday(&t, NULL);
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");
unsigned pg_offset;
unsigned map_size;
char *p;
+ struct test_file *tf = get_tf();
+ int fd = tf->fd;
offset -= offset % readbdy;
gettimeofday(&t, NULL);
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;
struct timeval t;
off_t ret;
unsigned iret;
+ struct test_file *tf = get_tf();
+ int fd = tf->fd;
offset -= offset % writebdy;
gettimeofday(&t, NULL);
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");
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);
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) {
{
struct timeval t;
int oldsize = file_size;
+ struct test_file *tf = get_tf();
+ int fd = tf->fd;
size -= size % truncbdy;
gettimeofday(&t, NULL);
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");
writefileimage()
{
ssize_t iret;
+ int fd = get_fd();
if (lseek(fd, (off_t)0, SEEK_SET) == (off_t)-1) {
prterr("writefileimage: lseek");
docloseopen(void)
{
struct timeval t;
+ struct test_file *tf = get_tf();
if (testcalls <= simulatedopcount)
return;
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);
}
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);
}
"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"
" -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);
}
return (ret);
}
-
-static const char *basename(const char *path)
-{
- char *c = strrchr(path, '/');
-
- return c ? c++ : path;
-}
-
int
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':
if (debugstart < 1)
usage();
break;
+ case 'I':
+ assign_fd_policy(optarg);
+ break;
case 'L':
lite = 1;
break;
}
argc -= optind;
argv += optind;
- if (argc != 1)
+ if (argc < 1)
usage();
fname = argv[0];
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);
}
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);
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) {
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);
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;
int main(int argc, char ** argv)
{
- int i, rc, count;
+ int i, rc = 0, count;
char dirname[4096];
if (argc < 3) {
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) {
+++ /dev/null
-#!/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
+++ /dev/null
-#!/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
+/* -*- 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 <stdio.h>
#include <fcntl.h>
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) {
perror("close");
exit(1);
}
- fd = -1;
+ fd = -1;
break;
case 'd':
if (mkdir(fname, 0755) == -1) {
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) {
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");
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]);
int main(int argc, char ** argv)
{
- int rc, i;
+ int rc = 0, i;
if (argc < 2) {
printf("Usage %s filename {filename ...}\n", argv[0]);
# 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
# 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
int flag_set=0;
int file_set=0;
char c;
- char* cloned_flags;
+ char* cloned_flags = NULL;
if (argc == 1)
Usage_and_abort();
#!/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: $@
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"
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)"
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)"
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)"
# Skip these tests
ALWAYS_EXCEPT=""
-
gen_config() {
rm -f $XMLCONFIG
add_mds mds --dev $MDSDEV --size $MDSSIZE
[ "$DAEMONFILE" ] && $LCTL debug_daemon start $DAEMONFILE $DAEMONSIZE
start mds $MDSLCONFARGS --reformat
zconf_mount `hostname` $MOUNT
+ echo 0x3f0410 > /proc/sys/portals/debug
}
$SETUP
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"
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"
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);
# 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"
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
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
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`
[ $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 ======"
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
$TRUNCATE $file $offset
cancel_lru_locks OSC
AFTERWRITES=`count_ost_writes`
- start_kupdated
+ start_writeback
}
test_42c() {
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"
[ $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 ============================"
# 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 ================"
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
}
}
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
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";
case S_MAGIC_ROMFS:
type = strdup("romfs");
break;
+ case S_MAGIC_LUSTRE:
+ type = strdup("lustre");
+ break;
#elif __GNU__
case FSTYPE_UFS:
type = strdup("ufs");
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 */
int rv;
unsigned int sbuflen = sizeof(sbuf);
#endif
-
+
switch(m) {
case 'n':
strcat(pformat, "s");
#define S_MAGIC_REISERFS 0x52654973
#define S_MAGIC_CRAMFS 0x28cd3d45
#define S_MAGIC_ROMFS 0x7275
+#define S_MAGIC_LUSTRE 0x0BD00BD0
#elif defined (__GNU__)
#include <hurd/hurd_types.h>
#endif
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;
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}
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() {
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() {
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
# 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
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
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 $< $@
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
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?
# 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:
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:
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))
# 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)
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:
/* 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 <filename|dirname> <stripe size> <stripe start> <stripe count>\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 <uuid>] [--quiet | --verbose] [--recursive] <dir|file> ..."},
{"getstripe", lfs_getstripe, 0,
"To list the striping pattern for given filename.\n"
"usage:getstripe <filename>"},
{"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 <osts|mds|servers>"},
{"catinfo", lfs_catinfo, 0,
"Show information of specified type logs.\n"
- "usage: catinfo <keyword> [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"},
} 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",
} 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;
}
FILE *fp;
struct mntent *mnt = NULL;
int rc;
-
+
if (argc < 2 || (!strcmp(argv[1],"config") && argc < 3))
return CMD_HELP;
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);
}
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) {
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) {
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);
}
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");
}
static int process_file(DIR *dir, char *dname, char *fname,
- struct find_param *param)
+ struct find_param *param)
{
int rc;
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");
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));
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;i<type_num;i++)
+ for (i = 0; i < type_num; i++)
if (strcmp(obd_type_name, obd_type[i]) == 0) {
datal.ioc_inlbuf1 = obd_name;
- datal.ioc_inllen1 = strlen(obd_name) + 1;
+ datal.ioc_inllen1 = strlen(obd_name) + 1;
obd_ioctl_pack(&datal,&bufl,max);
- rc = ioctl(dirfd(opendir(dir)), OBD_IOC_PING,bufl);
+ rc = ioctl(dirfd(opendir(dir)), OBD_IOC_PING,
+ bufl);
if (rc) {
- fprintf(stderr, "error: check %s: %s\n",
+ fprintf(stderr, "error: check %s: %s\n",
obd_name, strerror(rc = errno));
} else {
printf("%s active.\n",obd_name);
}
}
- }
+ }
fclose(fp);
return rc;
}
char key[30];
DIR *root;
int rc;
-
+
sprintf(key, "%s", keyword);
memset(raw, 0, sizeof(buf));
memset(out, 0, sizeof(out));
data.ioc_pbuf1 = out;
data.ioc_plen1 = sizeof(out);
rc = obd_ioctl_pack(&data, &buf, sizeof(raw));
- if (rc)
+ if (rc)
return rc;
-
+
root = opendir(dir);
if (root == NULL) {
err_msg("open %s failed", dir);
return errno;
}
- rc = ioctl(dirfd(root), OBD_IOC_LLOG_CATINFO, buf);
+ rc = ioctl(dirfd(root), OBD_IOC_LLOG_CATINFO, buf);
if (rc)
err_msg("ioctl OBD_IOC_CATINFO failed");
else
fprintf(stdout, "%s", data.ioc_pbuf1);
-
+
closedir(root);
return rc;
}
-
+
+int llapi_is_lustre_mnttype(char *type)
+{
+ return (strcmp(type,"lustre") == 0 || strcmp(type,"lustre_lite") == 0);
+}
int
init_options(struct lustre_mount_data *lmd)
{
- memset(lmd, 0, sizeof(lmd));
+ memset(lmd, 0, sizeof(*lmd));
lmd->lmd_magic = LMD_MAGIC;
lmd->lmd_server_nid = PTL_NID_ANY;
lmd->lmd_local_nid = PTL_NID_ANY;
if (rc != 0) {
fprintf(stderr, "%s: can't read Elan ID from /proc\n",
progname);
-
+
return -1;
}
}
/* 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);
/* 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