Whamcloud - gitweb
Land b1_2_26 onto b1_2 (20040423_1204) - 2.6 build fixes
authoradilger <adilger>
Fri, 23 Apr 2004 19:33:55 +0000 (19:33 +0000)
committeradilger <adilger>
Fri, 23 Apr 2004 19:33:55 +0000 (19:33 +0000)
b=3118, b=3116, b=3064, b=3219, b=2410, b=3258

290 files changed:
ldiskfs/kernel_patches/series/ldiskfs-2.6-suse.series
lnet/.cvsignore
lnet/Makefile.am [deleted file]
lnet/Rules.linux [deleted file]
lnet/archdep.m4
lnet/build.m4
lnet/configure.in [deleted file]
lnet/include/Makefile.am [deleted file]
lnet/include/config.h.in [deleted file]
lnet/include/linux/Makefile.am [deleted file]
lnet/include/linux/kp30.h
lnet/include/linux/kpr.h
lnet/include/linux/libcfs.h
lnet/include/linux/portals_compat25.h
lnet/include/lnet/Makefile.am [deleted file]
lnet/include/lnet/lib-lnet.h
lnet/include/lnet/lib-p30.h
lnet/klnds/.cvsignore
lnet/klnds/Makefile.am [deleted file]
lnet/klnds/gmlnd/.cvsignore
lnet/klnds/gmlnd/Makefile.am [deleted file]
lnet/klnds/iblnd/.cvsignore
lnet/klnds/iblnd/Makefile.am [deleted file]
lnet/klnds/iblnd/ibnal.h
lnet/klnds/qswlnd/.cvsignore
lnet/klnds/qswlnd/Makefile.am [deleted file]
lnet/klnds/qswlnd/qswlnd.h
lnet/klnds/qswlnd/qswlnd_cb.c
lnet/klnds/scimaclnd/.cvsignore
lnet/klnds/scimaclnd/Makefile.am [deleted file]
lnet/klnds/scimaclnd/scimacnal.h
lnet/klnds/socklnd/.cvsignore
lnet/klnds/socklnd/Makefile.am [deleted file]
lnet/klnds/socklnd/socklnd.h
lnet/klnds/socklnd/socklnd_cb.c
lnet/libcfs/.cvsignore
lnet/libcfs/Makefile.am [deleted file]
lnet/libcfs/Makefile.in
lnet/libcfs/autoMakefile.am
lnet/libcfs/debug.c
lnet/libcfs/module.c
lnet/lnet/.cvsignore
lnet/lnet/Makefile.am [deleted file]
lnet/lnet/Makefile.in
lnet/lnet/Makefile.mk
lnet/lnet/api-init.c
lnet/lnet/autoMakefile.am
lnet/router/.cvsignore
lnet/router/Makefile.am [deleted file]
lnet/router/router.h
lnet/tests/.cvsignore
lnet/tests/Makefile.am [deleted file]
lnet/ulnds/Makefile.am
lnet/ulnds/socklnd/Makefile.am
lnet/utils/Makefile.am
lnet/utils/acceptor.c
lnet/utils/gmlndnid.c
lnet/utils/parser.c
lnet/utils/portals.c
lustre/.cvsignore
lustre/ChangeLog
lustre/Makefile.am [deleted file]
lustre/Rules [deleted file]
lustre/autoMakefile.am
lustre/autogen.sh
lustre/cobd/.cvsignore
lustre/cobd/Makefile.am [deleted file]
lustre/cobd/cache_obd.c
lustre/conf/Makefile.am
lustre/configure.in
lustre/doc/Makefile.am
lustre/include/.cvsignore
lustre/include/Makefile.am
lustre/include/config.h.in [deleted file]
lustre/include/liblustre.h
lustre/include/linux/lustre_compat25.h
lustre/include/linux/lustre_idl.h
lustre/include/linux/lustre_lib.h
lustre/include/linux/lustre_net.h
lustre/include/linux/obd.h
lustre/include/linux/obd_class.h
lustre/include/lustre/Makefile.am
lustre/include/lustre/liblustreapi.h
lustre/include/lustre/lustre_user.h
lustre/install-sh [deleted file]
lustre/kernel_patches/kernel_configs/kernel-2.6.4-2.6-suse-i686-smp.config [new file with mode: 0644]
lustre/kernel_patches/kernel_configs/kernel-2.6.4-2.6-suse-i686.config [new file with mode: 0644]
lustre/kernel_patches/patches/bproc-patch-2.4.20
lustre/kernel_patches/patches/export_symbols-2.6-suse.patch
lustre/kernel_patches/patches/kernel_text_address-2.6-suse.patch [deleted file]
lustre/kernel_patches/patches/md_path_lookup-2.6-suse [new file with mode: 0644]
lustre/kernel_patches/patches/vfs_intent-2.4.21-suse2.patch
lustre/kernel_patches/series/2.6-suse.series
lustre/kernel_patches/series/ldiskfs-2.6-suse.series
lustre/kernel_patches/targets/2.6-suse.target
lustre/ldlm/.cvsignore
lustre/ldlm/Makefile.am
lustre/ldlm/ldlm_lib.c
lustre/ldlm/ldlm_lockd.c
lustre/liblustre/Makefile.am
lustre/liblustre/dir.c
lustre/liblustre/file.c
lustre/liblustre/llite_lib.c
lustre/liblustre/llite_lib.h
lustre/liblustre/namei.c
lustre/liblustre/rw.c
lustre/liblustre/tests/.cvsignore
lustre/liblustre/tests/Makefile.am
lustre/liblustre/tests/echo_test.c
lustre/llite/.cvsignore
lustre/llite/Makefile.am [deleted file]
lustre/llite/dir.c
lustre/llite/file.c
lustre/llite/llite_internal.h
lustre/llite/llite_lib.c
lustre/llite/llite_nfs.c
lustre/llite/namei.c
lustre/llite/rw24.c
lustre/llite/rw26.c
lustre/llite/special.c
lustre/llite/super.c
lustre/llite/super25.c
lustre/llite/symlink.c
lustre/lov/.cvsignore
lustre/lov/Makefile.am [deleted file]
lustre/lov/lov_obd.c
lustre/lov/lov_pack.c
lustre/lvfs/.cvsignore
lustre/lvfs/Makefile.am [deleted file]
lustre/lvfs/fsfilt_ext3.c
lustre/lvfs/fsfilt_reiserfs.c
lustre/mdc/.cvsignore
lustre/mdc/Makefile.am [deleted file]
lustre/mdc/mdc_locks.c
lustre/mdc/mdc_request.c
lustre/mds/.cvsignore
lustre/mds/Makefile.am [deleted file]
lustre/mds/handler.c
lustre/mds/mds_fs.c
lustre/mds/mds_lov.c
lustre/mds/mds_reint.c
lustre/mgmt/.cvsignore
lustre/mgmt/Makefile.am [deleted file]
lustre/mgmt/mgmt_cli.c
lustre/mgmt/mgmt_svc.c
lustre/missing [deleted file]
lustre/mkinstalldirs [deleted file]
lustre/obdclass/.cvsignore
lustre/obdclass/Makefile.am [deleted file]
lustre/obdclass/Makefile.in [new file with mode: 0644]
lustre/obdclass/class_obd.c
lustre/obdclass/llog_test.c
lustre/obdclass/lprocfs_status.c
lustre/obdclass/obd_config.c
lustre/obdecho/.cvsignore
lustre/obdecho/Makefile.am [deleted file]
lustre/obdecho/echo.c
lustre/obdecho/echo_client.c
lustre/obdfilter/.cvsignore
lustre/obdfilter/Makefile.am [deleted file]
lustre/obdfilter/filter.c
lustre/obdfilter/filter_io_26.c
lustre/obdfilter/filter_lvb.c
lustre/osc/.cvsignore
lustre/osc/Makefile.am [deleted file]
lustre/osc/osc_request.c
lustre/ost/.cvsignore
lustre/ost/Makefile.am [deleted file]
lustre/ost/ost_handler.c
lustre/portals/.cvsignore
lustre/portals/Makefile.am [deleted file]
lustre/portals/Rules.linux [deleted file]
lustre/portals/archdep.m4
lustre/portals/build.m4
lustre/portals/configure.in [deleted file]
lustre/portals/include/Makefile.am [deleted file]
lustre/portals/include/config.h.in [deleted file]
lustre/portals/include/linux/Makefile.am [deleted file]
lustre/portals/include/linux/kp30.h
lustre/portals/include/linux/kpr.h
lustre/portals/include/linux/libcfs.h
lustre/portals/include/linux/portals_compat25.h
lustre/portals/include/portals/Makefile.am [deleted file]
lustre/portals/include/portals/lib-p30.h
lustre/portals/knals/.cvsignore
lustre/portals/knals/Makefile.am [deleted file]
lustre/portals/knals/gmnal/.cvsignore
lustre/portals/knals/gmnal/Makefile.am [deleted file]
lustre/portals/knals/ibnal/.cvsignore
lustre/portals/knals/ibnal/Makefile.am [deleted file]
lustre/portals/knals/ibnal/ibnal.h
lustre/portals/knals/qswnal/.cvsignore
lustre/portals/knals/qswnal/Makefile.am [deleted file]
lustre/portals/knals/qswnal/qswnal.h
lustre/portals/knals/qswnal/qswnal_cb.c
lustre/portals/knals/scimacnal/.cvsignore
lustre/portals/knals/scimacnal/Makefile.am [deleted file]
lustre/portals/knals/scimacnal/scimacnal.h
lustre/portals/knals/socknal/.cvsignore
lustre/portals/knals/socknal/Makefile.am [deleted file]
lustre/portals/knals/socknal/socknal.h
lustre/portals/knals/socknal/socknal_cb.c
lustre/portals/libcfs/.cvsignore
lustre/portals/libcfs/Makefile.am [deleted file]
lustre/portals/libcfs/Makefile.in
lustre/portals/libcfs/autoMakefile.am
lustre/portals/libcfs/debug.c
lustre/portals/libcfs/module.c
lustre/portals/portals/.cvsignore
lustre/portals/portals/Makefile.am [deleted file]
lustre/portals/portals/Makefile.in
lustre/portals/portals/Makefile.mk
lustre/portals/portals/api-init.c
lustre/portals/portals/autoMakefile.am
lustre/portals/router/.cvsignore
lustre/portals/router/Makefile.am [deleted file]
lustre/portals/router/router.h
lustre/portals/tests/.cvsignore
lustre/portals/tests/Makefile.am [deleted file]
lustre/portals/unals/Makefile.am
lustre/portals/utils/Makefile.am
lustre/portals/utils/acceptor.c
lustre/portals/utils/gmnalnid.c
lustre/portals/utils/parser.c
lustre/portals/utils/portals.c
lustre/ptlbd/.cvsignore
lustre/ptlbd/Makefile.am [deleted file]
lustre/ptlbd/autoMakefile.am
lustre/ptlbd/blk.c
lustre/ptlbd/client.c
lustre/ptlbd/server.c
lustre/ptlrpc/.cvsignore
lustre/ptlrpc/Makefile.am [deleted file]
lustre/ptlrpc/Makefile.in
lustre/ptlrpc/autoMakefile.am
lustre/ptlrpc/client.c
lustre/ptlrpc/connection.c
lustre/ptlrpc/pack_generic.c
lustre/ptlrpc/pinger.c
lustre/ptlrpc/recov_thread.c
lustre/ptlrpc/service.c
lustre/scripts/.cvsignore
lustre/scripts/Makefile.am
lustre/scripts/land1.sh
lustre/scripts/lbuild
lustre/scripts/lmake
lustre/scripts/lustre-kernel-2.4.spec.in
lustre/scripts/lustre.spec.in
lustre/scripts/merge1.sh
lustre/scripts/version_tag.pl [deleted file]
lustre/smfs/.cvsignore
lustre/smfs/Makefile.am [deleted file]
lustre/smfs/autoMakefile.am
lustre/snapfs/.cvsignore
lustre/snapfs/Makefile.am [deleted file]
lustre/snapfs/autoMakefile.am
lustre/snapfs/utils/Makefile.am
lustre/snapfs/utils/parser.c
lustre/tests/.RC_CURRENT.tag
lustre/tests/Makefile.am
lustre/tests/cmknod.c
lustre/tests/createdestroy.c
lustre/tests/createmany.c
lustre/tests/fsx.c
lustre/tests/ll_dirstripe_verify.c
lustre/tests/mkdirmany.c
lustre/tests/mount2.sh [deleted file]
lustre/tests/mount2lov.sh [deleted file]
lustre/tests/multiop.c
lustre/tests/munlink.c
lustre/tests/oos.sh
lustre/tests/oos2.sh
lustre/tests/openfile.c
lustre/tests/recovery-small-upcall.sh
lustre/tests/recovery-small.sh
lustre/tests/replay-single.sh
lustre/tests/runas.c
lustre/tests/sanity.sh
lustre/tests/sanityN.sh
lustre/tests/socketserver
lustre/tests/stat.c
lustre/tests/stat_fs.h
lustre/tests/statmany.c
lustre/tests/test-framework.sh
lustre/utils/Makefile.am
lustre/utils/lconf
lustre/utils/lfs.c
lustre/utils/liblustreapi.c
lustre/utils/llmount.c
lustre/utils/parser.c

index 65e8dcd..cff99dd 100644 (file)
@@ -1,4 +1,3 @@
-header-guards-2.6-suse.patch
 ext3-wantedi-2.6-suse.patch
 ext3-san-jdike-2.6-suse.patch
 iopen-2.6-suse.patch 
@@ -8,4 +7,3 @@ ext3-init-generation-2.6-suse.patch
 ext3-ea-in-inode-2.6-suse.patch
 export-ext3-2.6-suse.patch
 ext3-include-fixes-2.6-suse.patch
-ext3-xattr-header-move-2.6.suse.patch
index c1a9bdf..f30d862 100644 (file)
@@ -1,9 +1,11 @@
 Kernelenv
 Makefile
-Makefile.in
+autoMakefile
+autoMakefile.in
 aclocal.m4
 autom4te.cache
 config.log
 config.status
 configure
-.*.o.cmd
+.*.cmd
+.depend
diff --git a/lnet/Makefile.am b/lnet/Makefile.am
deleted file mode 100644 (file)
index 1a223f2..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-# Copyright (C) 2001  Cluster File Systems, Inc.
-#
-# This code is issued under the GNU General Public License.
-# See the file COPYING in this distribution
-
-EXTRA_DIST = Rules.linux archdep.m4 include 
-DIST_SUBDIRS = libcfs portals knals unals utils tests doc router
-if LIBLUSTRE
-SUBDIRS = portals unals utils
-else
-SUBDIRS = libcfs portals knals unals utils tests doc router
-endif
diff --git a/lnet/Rules.linux b/lnet/Rules.linux
deleted file mode 100644 (file)
index 232a248..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-# included in Linux kernel directories
-# Rules for module building
-
-if LINUX25
-
-basename=$(shell echo $< | sed -e 's/\.c//g' | sed -e 's/-//g' | sed -e 's/\.o//g' | sed -e 's/^.*\///g')
-AM_CPPFLAGS= -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -pipe -mpreferred-stack-boundary=2  -DKBUILD_MODNAME=$(MODULE) -DKBUILD_BASENAME=$(basename)
-
-$(MODULE).o: $($(MODULE)_OBJECTS) $($(MODULE)_DEPENDENCIES)
-       $(LD) -m $(MOD_LINK) -r -o $(MODULE)_tmp.o $($(MODULE)_OBJECTS)
-       rm -f $(MODULE)_tmp.c
-       $(LINUX)/scripts/modpost $(LINUX)/vmlinux $(MODULE)_tmp.o
-       $(COMPILE) -UKBUILD_BASENAME -DKBUILD_BASENAME=$(MODULE) -c $(MODULE)_tmp.mod.c
-       $(LD) -m $(MOD_LINK) -r -o $(MODULE).o $(MODULE)_tmp.o $(MODULE)_tmp.mod.o
-
-else
-
-$(MODULE).o: $($(MODULE)_OBJECTS)
-       $(LD) -m $(MOD_LINK) -r -o $(MODULE).o $($(MODULE)_OBJECTS)
-
-endif
-
-tags:
-       rm -f $(top_srcdir)/TAGS
-       rm -f $(top_srcdir)/tags
-       find $(top_srcdir)/../portals/ -name '*.[hc]' | xargs etags -a
-       find $(top_srcdir) -name '*.[hc]' | grep -v ".orig" | xargs etags -a
-       find $(top_srcdir)/../portals/ -name '*.[hc]' | xargs ctags -a
-       find $(top_srcdir) -name '*.[hc]' | grep -v ".orig" | xargs ctags -a
index e9eef5e..95c9b4a 100644 (file)
@@ -1,15 +1,46 @@
+# -------- we can't build modules unless srcdir = builddir
+if test x$enable_modules != xno ; then
+AC_CHECK_FILE([autoMakefile.am],[],
+       [AC_MSG_ERROR([At this time, Lustre does not support building kernel modules with srcdir != buildir.])])
+fi
 
 # -------- in kernel compilation? (2.5 only) -------------
-AC_ARG_ENABLE(inkernel, [  --enable-inkernel set up 2.5 kernel makefiles])
+AC_MSG_CHECKING([if inkernel build support is requested])
+AC_ARG_ENABLE([inkernel],
+       AC_HELP_STRING([--enable-inkernel],
+                      [set up 2.5 kernel makefiles]),
+       [],[enable_inkernel=no])
+AC_MSG_RESULT([$enable_inkernel])
 AM_CONDITIONAL(INKERNEL, test x$enable_inkernel = xyes)
-echo "Makefile for in kernel build: $INKERNEL"
 
-# -------- liblustre compilation --------------
-AC_ARG_WITH(lib, [  --with-lib compile lustre library], host_cpu="lib")
+# -------- are we building against an external portals? -------
+AC_MSG_CHECKING([if Cray portals should be used])
+AC_ARG_WITH([cray-portals],
+       AC_HELP_STRING([--with-cray-portals=path],
+                      [path to cray portals]),
+       [
+               CRAY_PORTALS_INCLUDE="-I$with_cray_portals"
+               AC_DEFINE(CRAY_PORTALS, 1, [Building with Cray Portals])
+       ],[with_cray_portals=no])
+AC_MSG_RESULT([$with_cray_portals])
+AM_CONDITIONAL(CRAY_PORTALS, test x$with_cray_portals != xno)
+if test x$enable_tests = xno ; then
+       AC_MSG_NOTICE([disabling tests])
+       enable_tests=no
+fi
+if test x$enable_utils = xno ; then
+       AC_MSG_NOTICE([disabling utilities])
+       enable_utils=no
+fi
 
 # -------- set linuxdir ------------
-
-AC_ARG_WITH(linux, [  --with-linux=[path] set path to Linux source (default=/usr/src/linux)],LINUX=$with_linux,LINUX=/usr/src/linux)
+AC_MSG_CHECKING([for Linux sources])
+AC_ARG_WITH([linux],
+       AC_HELP_STRING([--with-linux=path],
+                      [set path to Linux source (default=/usr/src/linux)]),
+       [LINUX=$with_linux],
+       [LINUX=/usr/src/linux])
+AC_MSG_RESULT([$LINUX])
 AC_SUBST(LINUX)
 if test x$enable_inkernel = xyes ; then
         echo ln -s `pwd` $LINUX/fs/lustre
@@ -17,200 +48,196 @@ if test x$enable_inkernel = xyes ; then
         ln -s `pwd` $LINUX/fs/lustre
 fi
 
-#  --------------------
-AC_MSG_CHECKING(if you are running user mode linux for $host_cpu ...)
-if test $host_cpu = "lib" ; then 
-        host_cpu="lib"
-       AC_MSG_RESULT(no building Lustre library)
-else
-  if test -e $LINUX/include/asm-um ; then
-    if test  X`ls -id $LINUX/include/asm/ | awk '{print $1}'` = X`ls -id $LINUX/include/asm-um | awk '{print $1}'` ; then
-       host_cpu="um";
-       AC_MSG_RESULT(yes)
-    else
-       AC_MSG_RESULT(no (asm doesn't point at asm-um))
-    fi
+# -------- check for .confg --------
+AC_ARG_WITH([linux-config],
+       [AC_HELP_STRING([--with-linux-config=path],
+                       [set path to Linux .conf (default=\$LINUX/.config)])],
+       [LINUX_CONFIG=$with_linux_config],
+       [LINUX_CONFIG=$LINUX/.config])
+AC_SUBST(LINUX_CONFIG)
 
-  else 
-        AC_MSG_RESULT(no (asm-um missing))
-  fi
-fi
+AC_CHECK_FILE([/boot/kernel.h],
+       [KERNEL_SOURCE_HEADER='/boot/kernel.h'],
+       [AC_CHECK_FILE([/var/adm/running-kernel.h]),
+               [KERNEL_SOURCE_HEADER='/var/adm/running-kernel.h']])
 
-# --------- Linux 25 ------------------
+AC_ARG_WITH([kernel-source-header],
+       AC_HELP_STRING([--with-kernel-source-header=path],
+                       [Use a different kernel version header.  Consult README.kernel-source for details.]),
+       [KERNEL_SOURCE_HEADER=$with_kernel_source_header])
 
-AC_MSG_CHECKING(if you are running linux 2.5)
-if test -e $LINUX/include/linux/namei.h ; then
-        linux25="yes"
-        AC_MSG_RESULT(yes)
-else
-        linux25="no"
-        AC_MSG_RESULT(no)
+#  --------------------
+ARCH_UM=
+UML_CFLAGS=
+if test x$enable_modules != xno ; then
+       AC_MSG_CHECKING([if you are running user mode linux for $host_cpu])
+       if test -e $LINUX/include/asm-um ; then
+               if test  X`ls -id $LINUX/include/asm/ | awk '{print $1}'` = X`ls -id $LINUX/include/asm-um | awk '{print $1}'` ; then
+                       ARCH_UM='ARCH=um'
+                       # see notes in Rules.in
+                       UML_CFLAGS='-O0'
+                       AC_MSG_RESULT(yes)
+               else
+                       AC_MSG_RESULT([no (asm doesn't point at asm-um)])
+               fi
+       else
+               AC_MSG_RESULT([no (asm-um missing)])
+       fi
 fi
+AC_SUBST(ARCH_UM)
+AC_SUBST(UML_CFLAGS)
+# --------- Linux 25 ------------------
+
+AC_CHECK_FILE([$LINUX/include/linux/namei.h],
+       [
+               linux25="yes"
+               KMODEXT=".ko"
+       ],[
+               KMODEXT=".o"
+               linux25="no"
+       ])
+AC_MSG_CHECKING([if you are using Linux 2.6])
+AC_MSG_RESULT([$linux25])
 AM_CONDITIONAL(LINUX25, test x$linux25 = xyes)
-echo "Makefiles for in linux 2.5 build: $LINUX25"
+AC_SUBST(KMODEXT)
 
 # -------  Makeflags ------------------
 
-AC_MSG_CHECKING(setting make flags system architecture: )
-case ${host_cpu} in
-       lib )
-       AC_MSG_RESULT($host_cpu)
-       KCFLAGS='-g -Wall '
-       KCPPFLAGS='-D__arch_lib__ '
-       libdir='${exec_prefix}/lib/lustre'
-        MOD_LINK=elf_i386
-;;
-       um )
-       AC_MSG_RESULT($host_cpu)
-       KCFLAGS='-g -Wall -pipe -Wno-trigraphs -Wstrict-prototypes -fno-strict-aliasing -fno-common '
-        case ${linux25} in
-                yes )
-                KCPPFLAGS='-D__KERNEL__ -U__i386__ -Ui386 -DUM_FASTCALL -D__arch_um__ -DSUBARCH="i386" -DNESTING=0 -D_LARGEFILE64_SOURCE  -Derrno=kernel_errno -DPATCHLEVEL=4 -DMODULE -I$(LINUX)/arch/um/include -I$(LINUX)/arch/um/kernel/tt/include -I$(LINUX)/arch/um/kernel/skas/include -O2 -nostdinc -iwithprefix include'
-        ;;
-                * )
-                KCPPFLAGS='-D__KERNEL__ -U__i386__ -Ui386 -DUM_FASTCALL -D__arch_um__ -DSUBARCH="i386" -DNESTING=0 -D_LARGEFILE64_SOURCE  -Derrno=kernel_errno -DPATCHLEVEL=4 -DMODULE -I$(LINUX)/arch/um/kernel/tt/include -I$(LINUX)/arch/um/include '
-        ;;
-        esac
-
-        MOD_LINK=elf_i386
-;;
-       i*86 )
-       AC_MSG_RESULT($host_cpu)
-        KCFLAGS='-g -O2 -Wall -Wstrict-prototypes -pipe'
-        case ${linux25} in
-                yes )
-                KCPPFLAGS='-D__KERNEL__ -DMODULE -march=i686 -I$(LINUX)/include/asm-i386/mach-default -nostdinc -iwithprefix include '
-        ;;
-                * )
-                KCPPFLAGS='-D__KERNEL__ -DMODULE '
-        ;;
-        esac
-        MOD_LINK=elf_i386
-;;
-
-       alphaev6 )
-       AC_MSG_RESULT($host_cpu)
-        KCFLAGS='-g -O2  -Wall -Wstrict-prototypes -Wno-trigraphs -fomit-frame-pointer -fno-strict-aliasing -fno-common -pipe -mno-fp-regs -ffixed-8 -mcpu=ev5 -Wa,-mev6'
-        KCPPFLAGS='-D__KERNEL__ -DMODULE '
-        MOD_LINK=elf64alpha
-;;
-
-       alphaev67 )
-       AC_MSG_RESULT($host_cpu)
-        KCFLAGS='-g -O2  -Wall -Wstrict-prototypes -Wno-trigraphs -fomit-frame-pointer -fno-strict-aliasing -fno-common -pipe -mno-fp-regs -ffixed-8 -mcpu=ev5 -Wa,-mev6'
-        KCPPFLAGS='-D__KERNEL__ -DMODULE '
-        MOD_LINK=elf64alpha
-;;
-
-       alpha* )
-       AC_MSG_RESULT($host_cpu)
-        KCFLAGS='-g -O2  -Wall -Wstrict-prototypes -Wno-trigraphs -fomit-frame-pointer -fno-strict-aliasing -fno-common -pipe -mno-fp-regs -ffixed-8 -mcpu=ev5 -Wa,-mev5'
-        KCPPFLAGS='-D__KERNEL__ -DMODULE '
-        MOD_LINK=elf64alpha
-;;
-
-       ia64 )
-       AC_MSG_RESULT($host_cpu)
-        KCFLAGS='-g -O2 -Wall -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -pipe -ffixed-r13 -mfixed-range=f10-f15,f32-f127 -falign-functions=32 -mb-step'
-       KCPPFLAGS='-D__KERNEL__ -DMODULE'
-        MOD_LINK=elf64_ia64
-;;
-
-       x86_64 )
-       AC_MSG_RESULT($host_cpu)
-        KCFLAGS='-g -O2 -Wall -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -fomit-frame-pointer -mno-red-zone -mcmodel=kernel -pipe -fno-reorder-blocks -finline-limit=2000 -fno-strength-reduce -fno-asynchronous-unwind-tables'
-       KCPPFLAGS='-D__KERNEL__ -DMODULE'
-        MOD_LINK=elf_x86_64
-;;
-
-       sparc64 )
-       AC_MSG_RESULT($host_cpu)
-        KCFLAGS='-O2 -Wall -Wstrict-prototypes -Wno-trigraphs -fomit-frame-pointer -fno-strict-aliasing -fno-common -Wno-unused -m64 -pipe -mno-fpu -mcpu=ultrasparc -mcmodel=medlow -ffixed-g4 -fcall-used-g5 -fcall-used-g7 -Wno-sign-compare -Wa,--undeclared-regs'
-        KCPPFLAGS='-D__KERNEL__'
-        MOD_LINK=elf64_sparc
-
-;;
-
-       powerpc )
-       AC_MSG_RESULT($host_cpu)
-        KCFLAGS='-O2 -g -Wall -Wstrict-prototypes -Wno-trigraphs -fomit-frame-pointer -fno-strict-aliasing -fno-common -D__powerpc__ -fsigned-char -msoft-float -pipe -ffixed-r2 -Wno-uninitialized -mmultiple -mstring'
-        KCPPFLAGS='-D__KERNEL__ -DMODULE'
-        MOD_LINK=elf32ppclinux
-;;
-
-        *)
-       AC_ERROR("Unknown Linux Platform: $host_cpu")
-;;
-esac
-
-# ----------- make dep run? ------------------
-
-if test $host_cpu != "lib" ; then 
-  AC_MSG_CHECKING(if make dep has been run in kernel source (host $host_cpu) )
-  if test -f $LINUX/include/linux/config.h ; then
-  AC_MSG_RESULT(yes)
- else
-  AC_MSG_ERROR(** cannot find $LINUX/include/linux/config.h. Run make dep in $LINUX.)
-  fi
+CPPFLAGS="$CRAY_PORTALS_INCLUDE $CRAY_PORTALS_COMMANDLINE -I\$(top_srcdir)/include -I\$(top_srcdir)/portals/include"
+
+# liblustre are all the same
+LLCPPFLAGS="-D__arch_lib__ -D_LARGEFILE64_SOURCE=1"
+AC_SUBST(LLCPPFLAGS)
+
+LLCFLAGS="-g -Wall -fPIC"
+AC_SUBST(LLCFLAGS)
+
+# everyone builds against portals and lustre
+
+if test x$enable_ldiskfs = xyes ; then
+       AC_DEFINE(CONFIG_LDISKFS_FS_MODULE, 1, [build ldiskfs as a module])
+       AC_DEFINE(CONFIG_LDISKFS_FS_XATTR, 1, [enable extended attributes for ldiskfs])
+       AC_DEFINE(CONFIG_LDISKFS_FS_POSIX_ACL, 1, [enable posix acls])
+       AC_DEFINE(CONFIG_LDISKFS_FS_SECURITY, 1, [enable fs security])
 fi
 
+EXTRA_KCFLAGS="-g $CRAY_PORTALS_INCLUDE $CRAY_PORTALS_COMMANDLINE -I$PWD/portals/include -I$PWD/include"
+
+# these are like AC_TRY_COMPILE, but try to build modules against the
+# kernel, inside the kernel-tests directory
+
+AC_DEFUN([LUSTRE_MODULE_CONFTEST],
+[cat >conftest.c <<_ACEOF
+$1
+_ACEOF
+])
+
+AC_DEFUN([LUSTRE_MODULE_COMPILE_IFELSE],
+[m4_ifvaln([$1], [LUSTRE_MODULE_CONFTEST([$1])])dnl
+rm -f kernel-tests/conftest.o kernel-tests/conftest.mod.c kernel-tests/conftest.ko
+AS_IF([AC_TRY_COMMAND(cp conftest.c kernel-tests && make [$2] -f $PWD/kernel-tests/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX EXTRA_CFLAGS="$EXTRA_KCFLAGS" $ARCH_UM SUBDIRS=$PWD/kernel-tests) >/dev/null && AC_TRY_COMMAND([$3])],
+       [$4],
+       [_AC_MSG_LOG_CONFTEST
+m4_ifvaln([$5],[$5])dnl])dnl
+rm -f kernel-tests/conftest.o kernel-tests/conftest.mod.c kernel-tests/conftest.mod.o kernel-tests/conftest.ko m4_ifval([$1], [kernel-tests/conftest.c conftest.c])[]dnl
+])
+
+AC_DEFUN([LUSTRE_MODULE_TRY_COMPILE],
+[LUSTRE_MODULE_COMPILE_IFELSE(
+       [AC_LANG_PROGRAM([[$1]], [[$2]])],
+       [modules],
+       [test -s kernel-tests/conftest.o],
+       [$3], [$4])])
+
+AC_DEFUN([LUSTRE_MODULE_TRY_MAKE],
+[LUSTRE_MODULE_COMPILE_IFELSE([AC_LANG_PROGRAM([[$1]], [[$2]])], [$3], [$4], [$5], [$6])])
+
 # ------------ include paths ------------------
 
-if test $host_cpu != "lib" ; then 
-    KINCFLAGS="-I\$(top_srcdir)/include -I\$(top_srcdir)/portals/include -I$LINUX/include"
-else
-    KINCFLAGS='-I$(top_srcdir)/include -I$(top_srcdir)/portals/include'
-fi
-CPPFLAGS="$KINCFLAGS $ARCHCPPFLAGS"
-
-if test $host_cpu != "lib" ; then 
-# ------------ autoconf.h ------------------
-  AC_MSG_CHECKING(if autoconf.h is in kernel source)
-  if test -f $LINUX/include/linux/autoconf.h ; then
-      AC_MSG_RESULT(yes)
-  else
-      AC_MSG_ERROR(** cannot find $LINUX/include/linux/autoconf.h. Run make config in $LINUX.)
-  fi
-
-# ------------ LINUXRELEASE and moduledir ------------------
-  AC_MSG_CHECKING(for Linux release)
-  
-  dnl We need to rid ourselves of the nasty [ ] quotes.
-  changequote(, )
-  dnl Get release from version.h
-  LINUXRELEASE="`sed -ne 's/.*UTS_RELEASE[ \"]*\([0-9.a-zA-Z_-]*\).*/\1/p' $LINUX/include/linux/version.h`"
-  changequote([, ])
-  
-  moduledir='$(libdir)/modules/'$LINUXRELEASE/kernel
-  AC_SUBST(moduledir)
-  
-  modulefsdir='$(moduledir)/fs/$(PACKAGE)'
-  AC_SUBST(modulefsdir)
-  
-  AC_MSG_RESULT($LINUXRELEASE)
-  AC_SUBST(LINUXRELEASE)
-
-# ------------ RELEASE --------------------------------
-  AC_MSG_CHECKING(lustre release)
-  
-  dnl We need to rid ourselves of the nasty [ ] quotes.
-  changequote(, )
-  dnl Get release from version.h
-  RELEASE="`sed -ne 's/-/_/g' -e 's/.*UTS_RELEASE[ \"]*\([0-9.a-zA-Z_]*\).*/\1/p' $LINUX/include/linux/version.h`_`date +%Y%m%d%H%M`"
-  changequote([, ])
-
-  AC_MSG_RESULT($RELEASE)
-  AC_SUBST(RELEASE)
-
-# ---------- modversions? --------------------
-  AC_MSG_CHECKING(for MODVERSIONS)
-  if egrep -e 'MODVERSIONS.*1' $LINUX/include/linux/autoconf.h >/dev/null 2>&1;
-  then
-       if test $linux25 != "yes"; then
-                MFLAGS="-DMODULE -DMODVERSIONS -include $LINUX/include/linux/modversions.h -DEXPORT_SYMTAB"
-                AC_MSG_RESULT(yes)
-        fi
-  fi
+if test x$enable_modules != xno ; then
+       # ------------ .config exists ----------------
+       AC_CHECK_FILE([$LINUX_CONFIG],[],
+               [AC_MSG_ERROR([Kernel config could not be found.  If you are building from a kernel-source rpm consult README.kernel-source])])
+
+       # ----------- make dep run? ------------------
+       AC_CHECK_FILES([$LINUX/include/linux/autoconf.h
+                       $LINUX/include/linux/version.h
+                       $LINUX/include/linux/config.h],[],
+               [AC_MSG_ERROR([Run make config in $LINUX.])])
+
+       # ------------ rhconfig.h includes runtime-generated bits --
+       # red hat kernel-source checks
+
+       # we know this exists after the check above.  if the user
+       # tarred up the tree and ran make dep etc. in it, then
+       # version.h gets overwritten with a standard linux one.
+
+       if grep rhconfig $LINUX/include/linux/version.h >/dev/null ; then
+               # This is a clean kernel-source tree, we need to
+               # enable extensive workarounds to get this to build
+               # modules
+               AC_CHECK_FILE([$KERNEL_SOURCE_HEADER],
+                       [if test $KERNEL_SOURCE_HEADER = '/boot/kernel.h' ; then
+                               AC_MSG_WARN([Using /boot/kernel.h from RUNNING kernel.])
+                               AC_MSG_WARN([If this is not what you want, use --with-kernel-source-header.])
+                               AC_MSG_WARN([Consult README.kernel-source for details.])
+                       fi],
+                       [AC_MSG_ERROR([$KERNEL_SOURCE_HEADER not found.  Consult README.kernel-source for details.])])
+               EXTRA_KCFLAGS="-include $KERNEL_SOURCE_HEADER $EXTRA_KCFLAGS"
+       fi
+
+       # --- check that we can build modules at all
+       AC_MSG_CHECKING([that modules can be built])
+       LUSTRE_MODULE_TRY_COMPILE([],[],
+               [
+                       AC_MSG_RESULT([yes])
+               ],[
+                       AC_MSG_RESULT([no])
+                       AC_MSG_WARN([Consult config.log for details.])
+                       AC_MSG_WARN([If you are trying to build with a kernel-source rpm, consult README.kernel-source])
+                       AC_MSG_ERROR([Kernel modules could not be built.])
+               ])
+
+       # ------------ LINUXRELEASE and moduledir ------------------
+       AC_MSG_CHECKING([for Linux release])
+       rm -f kernel-tests/conftest.i
+       LINUXRELEASE=
+       if test $linux25 = 'yes' ; then
+               makerule="$PWD/kernel-tests"
+       else
+               makerule="_dir_$PWD/kernel-tests"
+       fi
+       LUSTRE_MODULE_TRY_MAKE(
+               [#include <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 --------------------
@@ -223,204 +250,328 @@ fi
 #fi
 #AC_SUBST(usrprefix)
 
-AC_MSG_CHECKING(if kernel has CPU affinity support)
-SET_CPUS_ALLOW="`grep -c set_cpus_allowed $LINUX/kernel/softirq.c`"
-if test "$SET_CPUS_ALLOW" != 0 ; then
-  enable_affinity_temp="-DCPU_AFFINITY=1"
-  AC_MSG_RESULT(yes)
+AC_MSG_CHECKING([for zero-copy TCP support])
+AC_ARG_ENABLE([zerocopy],
+       AC_HELP_STRING([--disable-zerocopy],
+                      [disable socknal zerocopy]),
+       [],[enable_zerocopy='yes'])
+if test x$enable_zerocopy = xno ; then
+       AC_MSG_RESULT([no (by request)])
 else
-  enable_affinity_temp=""
-  AC_MSG_RESULT(no)
+       ZCCD="`grep -c zccd $LINUX/include/linux/skbuff.h`"
+       if test "$ZCCD" != 0 ; then
+               AC_DEFINE(SOCKNAL_ZC, 1, [use zero-copy TCP])
+               AC_MSG_RESULT(yes)
+       else
+               AC_MSG_RESULT([no (no kernel support)])
+       fi
 fi
 
-AC_MSG_CHECKING(if kernel has zero-copy TCP support)
-ZCCD="`grep -c zccd $LINUX/include/linux/skbuff.h`"
-if test "$ZCCD" != 0 ; then
-  enable_zerocopy_temp="-DSOCKNAL_ZC=1"
-  AC_MSG_RESULT(yes)
+AC_MSG_CHECKING([for CPU affinity support])
+AC_ARG_ENABLE([affinity],
+       AC_HELP_STRING([--disable-affinity],
+                      [disable process/irq affinity]),
+       [],[enable_affinity='yes'])
+if test x$enable_affinity = xno ; then
+       AC_MSG_RESULT([no (by request)])
 else
-  enable_zerocopy_temp=""
-  AC_MSG_RESULT(no)
+       SET_CPUS_ALLOW="`grep -c set_cpus_allowed $LINUX/kernel/softirq.c`"
+       if test "$SET_CPUS_ALLOW" != 0 ; then
+               AC_DEFINE(CPU_AFFINITY, 1, [kernel has cpu affinity support])
+               AC_MSG_RESULT([yes])
+       else
+               AC_MSG_RESULT([no (no kernel support)])
+       fi
 fi
 
-AC_ARG_ENABLE(zerocopy, [  --disable-zerocopy disable socknal zerocopy],enable_zerocopy="", enable_zerocopy=$enable_zerocopy_temp)
 
-AC_ARG_ENABLE(affinity, [  --disable-affinity disable process/irq affinity],enable_affinity="", enable_affinity=$enable_affinity_temp)
 #####################################
 
-AC_MSG_CHECKING(if quadrics kernel headers are present)
+AC_MSG_CHECKING([if quadrics kernel headers are present])
 if test -d $LINUX/drivers/net/qsnet ; then
-  AC_MSG_RESULT(yes)
-  QSWNAL="qswnal"
-  AC_MSG_CHECKING(for multirail EKC)
-  if test -f $LINUX/include/elan/epcomms.h; then
-       AC_MSG_RESULT(supported)
-       with_quadrics="-DMULTIRAIL_EKC=1"
-  else
-       AC_MSG_RESULT(not supported)
-       with_quadrics="-I$LINUX/drivers/net/qsnet/include"
-  fi
-  :
+       AC_MSG_RESULT([yes])
+       QSWNAL="qswnal"
+       AC_MSG_CHECKING([for multirail EKC])
+       if test -f $LINUX/include/elan/epcomms.h; then
+               AC_MSG_RESULT([supported])
+               QSWCPPFLAGS="-DMULTIRAIL_EKC=1"
+       else
+               AC_MSG_RESULT([not supported])
+               QSWCPPFLAGS="-I$LINUX/drivers/net/qsnet/include"
+       fi
 else
-  AC_MSG_RESULT(no)
-  QSWNAL=""
-  with_quadrics=""
-  :
+       AC_MSG_RESULT([no])
+       QSWNAL=""
+       QSWCPPFLAGS=""
 fi
-AC_SUBST(with_quadrics)
+AC_SUBST(QSWCPPFLAGS)
 AC_SUBST(QSWNAL)
-
-# R. Read 5/02
-GMNAL=""
-echo "checking with-gm=" ${with_gm}
-if test "${with_gm+set}" = set; then
-  if test "${with_gm}" = yes; then
-    with_gm="-I/usr/local/gm/include"
-  else
-    with_gm="-I$with_gm/include -I$with_gm/drivers -I$with_gm/drivers/linux/gm"
-  fi
-  GMNAL="gmnal"
-else
-# default case - no GM
-  with_gm=""
-fi
-AC_SUBST(with_gm)
+AM_CONDITIONAL(BUILD_QSWNAL, test x$QSWNAL = "xqswnal")
+
+AC_MSG_CHECKING([if gm support was requested])
+AC_ARG_WITH([gm],
+       AC_HELP_STRING([--with-gm=path],
+                      [build gmnal against path]),
+       [
+               case $with_gm in 
+                       yes)
+                               AC_MSG_RESULT([yes])
+                               GMCPPFLAGS="-I/usr/local/gm/include"
+                               GMNAL="gmnal"
+                               ;;
+                       no)
+                               AC_MSG_RESULT([no])
+                               GMCPPFLAGS=""
+                               GMNAL=""
+                               ;;
+                       *)
+                               AC_MSG_RESULT([yes])
+                               GMCPPFLAGS="-I$with_gm/include -I$with_gm/drivers -I$with_gm/drivers/linux/gm"
+                               GMNAL="gmnal"
+                               ;;
+               esac
+       ],[
+               AC_MSG_RESULT([no])
+               GMCPPFLAGS=""
+               GMNAL=""
+       ])
+AC_SUBST(GMCPPFLAGS)
 AC_SUBST(GMNAL)
-
+AM_CONDITIONAL(BUILD_GMNAL, test x$GMNAL = "xgmnal")
 
 #fixme: where are the default IB includes?
 default_ib_include_dir=/usr/local/ib/include
 an_ib_include_file=vapi.h
 
-AC_ARG_WITH(ib, [  --with-ib=[yes/no/path] Path to IB includes], with_ib=$withval, with_ib=$default_ib)
-AC_MSG_CHECKING(if IB headers are present)
-if test "$with_ib" = yes; then
-    with_ib=$default_ib_include_dir
-fi
-if test "$with_ib" != no -a -f ${with_ib}/${an_ib_include_file}; then
-    AC_MSG_RESULT(yes)
-    IBNAL="ibnal"
-    with_ib="-I${with_ib}"
-else
-    AC_MSG_RESULT(no)
-    IBNAL=""
-    with_ib=""
-fi
+AC_MSG_CHECKING([if ib nal support was requested])
+AC_ARG_WITH([ib],
+       AC_HELP_STRING([--with-ib=yes/no/path],
+                      [Path to IB includes]),
+       [
+               case $with_ib in
+                       yes)
+                               AC_MSG_RESULT([yes])
+                               IBCPPFLAGS="-I/usr/local/ib/include"
+                               IBNAL="ibnal"
+                               ;;
+                       no)
+                               AC_MSG_RESULT([no])
+                               IBCPPFLAGS=""
+                               IBNAL=""
+                               ;;
+                       *)
+                               AC_MSG_RESULT([yes])
+                               IBCPPFLAGS="-I$with_ib"
+                               IBNAL=""
+                               ;;
+               esac
+       ],[
+               AC_MSG_RESULT([no])
+               IBFLAGS=""
+               IBNAL=""
+       ])
 AC_SUBST(IBNAL)
-AC_SUBST(with_ib)
-
+AC_SUBST(IBCPPFLAGS)
+AM_CONDITIONAL(BUILD_IBNAL, test x$IBNAL = "xibnal")
 
 def_scamac=/opt/scali/include
-AC_ARG_WITH(scamac, [  --with-scamac=[yes/no/path] Path to ScaMAC includes (default=/opt/scali/include)], with_scamac=$withval, with_scamac=$def_scamac)
-AC_MSG_CHECKING(if ScaMAC headers are present)
-if test "$with_scamac" = yes; then
-  with_scamac=$def_scamac
-fi
-if test "$with_scamac" != no -a -f ${with_scamac}/scamac.h; then
-  AC_MSG_RESULT(yes)
-  SCIMACNAL="scimacnal"
-  with_scamac="-I${with_scamac} -I${with_scamac}/icm"
-else
-  AC_MSG_RESULT(no)
-  SCIMACNAL=""
-  with_scamac=""
-fi
-
-AC_SUBST(with_scamac)
+AC_MSG_CHECKING([if ScaMAC support was requested])
+AC_ARG_WITH([scamac],
+       AC_HELP_STRING([--with-scamac=yes/no/path],
+                      [Path to ScaMAC includes (default=/opt/scali/include)]),
+       [
+               case $with_scamac in
+                       yes)
+                               AC_MSG_RESULT([yes])
+                               SCIMACCPPFLAGS="-I/opt/scali/include"
+                               SCIMACNAL="scimacnal"
+                               ;;
+                       no)
+                               AC_MSG_RESULT([no])
+                               SCIMACCPPFLAGS=""
+                               SCIMACNAL=""
+                               ;;
+                       *)
+                               AC_MSG_RESULT([yes])
+                               SCIMACCPPFLAGS="-I$with_scamac -I$with_scamac/icm"
+                               SCIMACNAL="scimacnal"
+                               ;;
+               esac
+       ],[
+               AC_MSG_RESULT([no])
+               SCIMACCPPFLAGS=""
+               SCIMACNAL=""
+       ])
+AC_SUBST(SCIMACCPPFLAGS)
 AC_SUBST(SCIMACNAL)
+AM_CONDITIONAL(BUILD_SCIMACNAL, test x$SCIMACNAL = "xscimacnal")
+# if test "$with_scamac" != no -a -f ${with_scamac}/scamac.h; then
 
-CFLAGS="$KCFLAGS"
-CPPFLAGS="$KINCFLAGS $KCPPFLAGS $MFLAGS $enable_zerocopy $enable_affinity $with_quadrics $with_gm $with_scamac $with_ib"
-if test $host_cpu == "lib" ; then 
-CPPFLAGS="$CPPFLAGS -fPIC -D_LARGEFILE64_SOURCE=1 -g"
-fi
-
-AM_CONDITIONAL(LIBLUSTRE, test x$host_cpu = xlib)
 AC_SUBST(MOD_LINK)
 AC_SUBST(LINUX25)
-AM_CONDITIONAL(LIBLUSTRE, test x$host_cpu = xlib)
 
 # ---------- Red Hat 2.4.18 has iobuf->dovary --------------
 # But other kernels don't
 
 AC_MSG_CHECKING([if struct kiobuf has a dovary field])
-AC_TRY_COMPILE([#define __KERNEL__
-               #include <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"
index 8c55b20..93a370f 100644 (file)
@@ -1,5 +1,9 @@
 # ----------  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? -------
 
@@ -28,6 +32,9 @@ pkgexampledir='${prefix}/usr/lib/$(PACKAGE)/examples'
 AC_SUBST(pkgexampledir)
 pymoddir='${prefix}/usr/lib/${PACKAGE}/python/Lustre'
 AC_SUBST(pymoddir)
+# for substitution in lconf
+PYMOD_DIR="/usr/lib/$PACKAGE/python"
+AC_SUBST(PYMOD_DIR)
 modulenetdir='$(moduledir)/net/$(PACKAGE)'
 AC_SUBST(modulenetdir)
 
@@ -35,14 +42,15 @@ AC_SUBST(modulenetdir)
 # ----------  BAD gcc? ------------
 AC_PROG_RANLIB
 AC_PROG_CC
-AC_MSG_CHECKING(for buggy compiler)
+AC_MSG_CHECKING([for buggy compiler])
 CC_VERSION=`$CC -v 2>&1 | grep "^gcc version"`
 bad_cc() {
+       AC_MSG_RESULT([buggy compiler found!])
        echo
        echo "   '$CC_VERSION'"
        echo "  has been known to generate bad code, "
        echo "  please get an updated compiler."
-       AC_MSG_ERROR(sorry)
+       AC_MSG_ERROR([sorry])
 }
 TMP_VERSION=`echo $CC_VERSION | cut -c 1-16`
 if test "$TMP_VERSION" = "gcc version 2.95"; then
@@ -61,7 +69,7 @@ case "$CC_VERSION" in
                bad_cc
                ;;
        *)
-               AC_MSG_RESULT(no known problems)
+               AC_MSG_RESULT([no known problems])
                ;;
 esac
 # end ------  BAD gcc? ------------
@@ -70,29 +78,30 @@ esac
 
 # this doesn't seem to work on older autoconf
 # AC_CHECK_LIB(readline, readline,,)
-AC_ARG_ENABLE(readline,        [  --enable-readline  use readline library],,
-                       enable_readline="yes")
-if test "$enable_readline" = "yes" ; then
-   LIBREADLINE="-lreadline -lncurses"
-   HAVE_LIBREADLINE="-DHAVE_LIBREADLINE=1"
+AC_MSG_CHECKING([for readline support])
+AC_ARG_ENABLE(readline,
+       AC_HELP_STRING([--disable-readline],
+                       [do not use readline library]),
+       [],[enable_readline='yes'])
+AC_MSG_RESULT([$enable_readline]) 
+if test x$enable_readline = xyes ; then
+       LIBREADLINE="-lreadline -lncurses"
+       AC_DEFINE(HAVE_LIBREADLINE, 1, [readline library is available])
 else 
-   LIBREADLINE=""
-   HAVE_LIBREADLINE=""
+       LIBREADLINE=""
 fi
 AC_SUBST(LIBREADLINE)
-AC_SUBST(HAVE_LIBREADLINE)
 
-AC_ARG_ENABLE(efence,  [  --enable-efence  use efence library],,
-                       enable_efence="no")
+AC_MSG_CHECKING([if efence debugging support is requested])
+AC_ARG_ENABLE(efence,
+       AC_HELP_STRING([--enable-efence],
+                       [use efence library]),
+       [],[enable_efence='no'])
+AC_MSG_RESULT([$enable_efence])
 if test "$enable_efence" = "yes" ; then
-   LIBEFENCE="-lefence"
-   HAVE_LIBEFENCE="-DHAVE_LIBEFENCE=1"
+       LIBEFENCE="-lefence"
+       AC_DEFINE(HAVE_LIBEFENCE, 1, [libefence support is requested])
 else 
-   LIBEFENCE=""
-   HAVE_LIBEFENCE=""
+       LIBEFENCE=""
 fi
 AC_SUBST(LIBEFENCE)
-AC_SUBST(HAVE_LIBEFENCE)
-
diff --git a/lnet/configure.in b/lnet/configure.in
deleted file mode 100644 (file)
index bacf532..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-# This version is here to make autoconf happy; the name is a file which is
-# "unique" to this directory so that configure knows where it should run.
-AC_INIT(knals/Makefile.am, 3.0)
-AC_CANONICAL_SYSTEM
-# Copyright (C) 2001  Cluster File Systems, Inc.
-#
-# This code is issued under the GNU General Public License.
-# See the file COPYING in this distribution
-
-# Automake variables.  Steal the version number from packaging/intersync.spec
-AM_INIT_AUTOMAKE(portals, builtin([esyscmd], [sed -ne '/.*define IVERSION /{ s/.*IVERSION //; p; }' libcfs/module.c]))
-# AM_MAINTAINER_MODE
-
-sinclude(build.m4)
-sinclude(archdep.m4)
-
-if test x$enable_inkernel = xyes ; then
-cp Kernelenv.mk Kernelenv.in
-cp Makefile.mk Makefile.in
-cp libcfs/Makefile.mk libcfs/Makefile.in
-cp portals/Makefile.mk portals/Makefile.in
-cp knals/Makefile.mk knals/Makefile.in
-cp knals/socknal/Makefile.mk knals/socknal/Makefile.in
-cp router/Makefile.mk router/Makefile.in
-fi
-
-AM_CONFIG_HEADER(include/config.h)
-
-AC_OUTPUT([Makefile Kernelenv libcfs/Makefile portals/Makefile \
-          unals/Makefile knals/Makefile router/Makefile \
-         knals/socknal/Makefile knals/gmnal/Makefile knals/qswnal/Makefile \
-         knals/scimacnal/Makefile knals/ibnal/Makefile\
-          utils/Makefile tests/Makefile doc/Makefile ])
-
diff --git a/lnet/include/Makefile.am b/lnet/include/Makefile.am
deleted file mode 100644 (file)
index 2cf7f99..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-# Copyright (C) 2001  Cluster File Systems, Inc.
-#
-# This code is issued under the GNU General Public License.
-# See the file COPYING in this distribution
-
-SUBDIRS = portals linux
-EXTRA_DIST = config.h.in
-include $(top_srcdir)/Rules
diff --git a/lnet/include/config.h.in b/lnet/include/config.h.in
deleted file mode 100644 (file)
index f295154..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-/* portals/include/config.h.in.  Generated from configure.in by autoheader.  */
-
-/* Use the Pinger */
-#undef ENABLE_PINGER
-
-/* Define to 1 if you have the <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
diff --git a/lnet/include/linux/Makefile.am b/lnet/include/linux/Makefile.am
deleted file mode 100644 (file)
index 6a65cb5..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-# Copyright (C) 2001  Cluster File Systems, Inc.
-#
-# This code is issued under the GNU General Public License.
-# See the file COPYING in this distribution
-
-include $(top_srcdir)/Rules
-
-linuxincludedir = $(includedir)/linux
-
-linuxinclude_HEADERS=kp30.h portals_lib.h
index 4c3e85f..b27eaa0 100644 (file)
@@ -4,6 +4,7 @@
 #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>
@@ -172,7 +21,7 @@ do {                                                                    \
 # 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>
 
@@ -353,188 +202,6 @@ do {                                                                    \
 #endif
 
 /******************************************************************************/
-/* Kernel Portals Router interface */
-
-typedef void (*kpr_fwd_callback_t)(void *arg, int error); // completion callback
-
-/* space for routing targets to stash "stuff" in a forwarded packet */
-typedef union {
-        long long        _alignment;
-        void            *_space[16];            /* scale with CPU arch */
-} kprfd_scratch_t;
-
-/* Kernel Portals Routing Forwarded message Descriptor */
-typedef struct {
-        struct list_head     kprfd_list;        /* stash in queues (routing target can use) */
-        ptl_nid_t            kprfd_target_nid;  /* final destination NID */
-        ptl_nid_t            kprfd_gateway_nid; /* gateway NID */
-        ptl_hdr_t           *kprfd_hdr;         /* header in wire byte order */
-        int                  kprfd_nob;         /* # payload bytes */
-        int                  kprfd_niov;        /* # payload frags */
-        ptl_kiov_t          *kprfd_kiov;        /* payload fragments */
-        void                *kprfd_router_arg;  /* originating NAL's router arg */
-        kpr_fwd_callback_t   kprfd_callback;    /* completion callback */
-        void                *kprfd_callback_arg; /* completion callback arg */
-        kprfd_scratch_t      kprfd_scratch;     /* scratchpad for routing targets */
-} kpr_fwd_desc_t;
-
-typedef void  (*kpr_fwd_t)(void *arg, kpr_fwd_desc_t *fwd);
-typedef void  (*kpr_notify_t)(void *arg, ptl_nid_t peer, int alive);
-
-/* NAL's routing interface (Kernel Portals Routing Nal Interface) */
-typedef const struct {
-        int             kprni_nalid;    /* NAL's id */
-        void           *kprni_arg;      /* Arg to pass when calling into NAL */
-        kpr_fwd_t       kprni_fwd;      /* NAL's forwarding entrypoint */
-        kpr_notify_t    kprni_notify;   /* NAL's notification entrypoint */
-} kpr_nal_interface_t;
-
-/* Router's routing interface (Kernel Portals Routing Router Interface) */
-typedef const struct {
-        /* register the calling NAL with the router and get back the handle for
-         * subsequent calls */
-        int     (*kprri_register) (kpr_nal_interface_t *nal_interface,
-                                   void **router_arg);
-
-        /* ask the router to find a gateway that forwards to 'nid' and is a
-         * peer of the calling NAL; assume caller will send 'nob' bytes of
-         * payload there */
-        int     (*kprri_lookup) (void *router_arg, ptl_nid_t nid, int nob,
-                                 ptl_nid_t *gateway_nid);
-
-        /* hand a packet over to the router for forwarding */
-        kpr_fwd_t kprri_fwd_start;
-
-        /* hand a packet back to the router for completion */
-        void    (*kprri_fwd_done) (void *router_arg, kpr_fwd_desc_t *fwd,
-                                   int error);
-
-        /* notify the router about peer state */
-        void    (*kprri_notify) (void *router_arg, ptl_nid_t peer,
-                                 int alive, time_t when);
-
-        /* the calling NAL is shutting down */
-        void    (*kprri_shutdown) (void *router_arg);
-
-        /* deregister the calling NAL with the router */
-        void    (*kprri_deregister) (void *router_arg);
-
-} kpr_router_interface_t;
-
-/* Convenient struct for NAL to stash router interface/args */
-typedef struct {
-        kpr_router_interface_t  *kpr_interface;
-        void                    *kpr_arg;
-} kpr_router_t;
-
-/* Router's control interface (Kernel Portals Routing Control Interface) */
-typedef const struct {
-        int     (*kprci_add_route)(int gateway_nal, ptl_nid_t gateway_nid,
-                                   ptl_nid_t lo_nid, ptl_nid_t hi_nid);
-        int     (*kprci_del_route)(int gateway_nal, ptl_nid_t gateway_nid,
-                                   ptl_nid_t lo_nid, ptl_nid_t hi_nid);
-        int     (*kprci_get_route)(int index, int *gateway_nal,
-                                   ptl_nid_t *gateway,
-                                   ptl_nid_t *lo_nid, ptl_nid_t *hi_nid,
-                                   int *alive);
-        int     (*kprci_notify)(int gateway_nal, ptl_nid_t gateway_nid,
-                                int alive, time_t when);
-} kpr_control_interface_t;
-
-extern kpr_control_interface_t  kpr_control_interface;
-extern kpr_router_interface_t   kpr_router_interface;
-
-static inline int
-kpr_register (kpr_router_t *router, kpr_nal_interface_t *nalif)
-{
-        int    rc;
-
-        router->kpr_interface = PORTAL_SYMBOL_GET (kpr_router_interface);
-        if (router->kpr_interface == NULL)
-                return (-ENOENT);
-
-        rc = (router->kpr_interface)->kprri_register (nalif, &router->kpr_arg);
-        if (rc != 0)
-                router->kpr_interface = NULL;
-
-        PORTAL_SYMBOL_PUT (kpr_router_interface);
-        return (rc);
-}
-
-static inline int
-kpr_routing (kpr_router_t *router)
-{
-        return (router->kpr_interface != NULL);
-}
-
-static inline int
-kpr_lookup (kpr_router_t *router, ptl_nid_t nid, int nob, ptl_nid_t *gateway_nid)
-{
-        if (!kpr_routing (router))
-                return (-ENETUNREACH);
-
-        return (router->kpr_interface->kprri_lookup(router->kpr_arg, nid, nob,
-                                                    gateway_nid));
-}
-
-static inline void
-kpr_fwd_init (kpr_fwd_desc_t *fwd, ptl_nid_t nid, ptl_hdr_t *hdr,
-              int nob, int niov, ptl_kiov_t *kiov,
-              kpr_fwd_callback_t callback, void *callback_arg)
-{
-        fwd->kprfd_target_nid   = nid;
-        fwd->kprfd_gateway_nid  = nid;
-        fwd->kprfd_hdr          = hdr;
-        fwd->kprfd_nob          = nob;
-        fwd->kprfd_niov         = niov;
-        fwd->kprfd_kiov         = kiov;
-        fwd->kprfd_callback     = callback;
-        fwd->kprfd_callback_arg = callback_arg;
-}
-
-static inline void
-kpr_fwd_start (kpr_router_t *router, kpr_fwd_desc_t *fwd)
-{
-        if (!kpr_routing (router))
-                fwd->kprfd_callback (fwd->kprfd_callback_arg, -ENETUNREACH);
-        else
-                router->kpr_interface->kprri_fwd_start (router->kpr_arg, fwd);
-}
-
-static inline void
-kpr_fwd_done (kpr_router_t *router, kpr_fwd_desc_t *fwd, int error)
-{
-        LASSERT (kpr_routing (router));
-        router->kpr_interface->kprri_fwd_done (router->kpr_arg, fwd, error);
-}
-
-static inline void
-kpr_notify (kpr_router_t *router,
-            ptl_nid_t peer, int alive, time_t when)
-{
-        if (!kpr_routing (router))
-                return;
-
-        router->kpr_interface->kprri_notify(router->kpr_arg, peer, alive, when);
-}
-
-static inline void
-kpr_shutdown (kpr_router_t *router)
-{
-        if (kpr_routing (router))
-                router->kpr_interface->kprri_shutdown (router->kpr_arg);
-}
-
-static inline void
-kpr_deregister (kpr_router_t *router)
-{
-        if (!kpr_routing (router))
-                return;
-        router->kpr_interface->kprri_deregister (router->kpr_arg);
-        router->kpr_interface = NULL;
-}
-
-/******************************************************************************/
 
 #ifdef PORTALS_PROFILING
 #define prof_enum(FOO) PROF__##FOO
@@ -634,6 +301,7 @@ extern void kportal_blockallsigs (void);
 #endif
 # include <unistd.h>
 # include <time.h>
+# include <limits.h>
 # include <asm/types.h>
 # ifndef DEBUG_SUBSYSTEM
 #  define DEBUG_SUBSYSTEM S_UNDEFINED
@@ -650,6 +318,7 @@ extern void kportal_blockallsigs (void);
 # define printk(format, args...) printf (format, ## args)
 # define PORTAL_ALLOC(ptr, size) do { (ptr) = malloc(size); } while (0);
 # define PORTAL_FREE(a, b) do { free(a); } while (0);
+void portals_debug_dumplog(void);
 # define portals_debug_msg(subsys, mask, file, fn, line, stack, format, a...) \
     printf("%02x:%06x (@%lu %s:%s,l. %d %d %lu): " format,                    \
            (subsys), (mask), (long)time(0), file, fn, line,                   \
@@ -766,76 +435,10 @@ struct portals_device_userstate
  * USER LEVEL STUFF BELOW
  */
 
-#define PORTALS_CFG_VERSION 0x00010001;
-
-struct portals_cfg {
-        __u32 pcfg_version;
-        __u32 pcfg_command;
-
-        __u32 pcfg_nal;
-        __u32 pcfg_flags;
-
-        __u32 pcfg_gw_nal;
-        __u64 pcfg_nid;
-        __u64 pcfg_nid2;
-        __u64 pcfg_nid3;
-        __u32 pcfg_id;
-        __u32 pcfg_misc;
-        __u32 pcfg_fd;
-        __u32 pcfg_count;
-        __u32 pcfg_size;
-        __u32 pcfg_wait;
-
-        __u32 pcfg_plen1; /* buffers in userspace */
-        char *pcfg_pbuf1;
-        __u32 pcfg_plen2; /* buffers in userspace */
-        char *pcfg_pbuf2;
-};
-
-#define PCFG_INIT(pcfg, cmd)                            \
-do {                                                    \
-        memset(&pcfg, 0, sizeof(pcfg));                 \
-        pcfg.pcfg_version = PORTALS_CFG_VERSION;        \
-        pcfg.pcfg_command = (cmd);                      \
-                                                        \
-} while (0)
-
 #define PORTAL_IOCTL_VERSION 0x00010007
 #define PING_SYNC       0
 #define PING_ASYNC      1
 
-struct portal_ioctl_data {
-        __u32 ioc_len;
-        __u32 ioc_version;
-        __u64 ioc_nid;
-        __u64 ioc_nid2;
-        __u64 ioc_nid3;
-        __u32 ioc_count;
-        __u32 ioc_nal;
-        __u32 ioc_nal_cmd;
-        __u32 ioc_fd;
-        __u32 ioc_id;
-
-        __u32 ioc_flags;
-        __u32 ioc_size;
-
-        __u32 ioc_wait;
-        __u32 ioc_timeout;
-        __u32 ioc_misc;
-
-        __u32 ioc_inllen1;
-        char *ioc_inlbuf1;
-        __u32 ioc_inllen2;
-        char *ioc_inlbuf2;
-
-        __u32 ioc_plen1; /* buffers in userspace */
-        char *ioc_pbuf1;
-        __u32 ioc_plen2; /* buffers in userspace */
-        char *ioc_pbuf2;
-
-        char ioc_bulk[0];
-};
-
 struct portal_ioctl_hdr {
         __u32 ioc_len;
         __u32 ioc_version;
@@ -1051,7 +654,7 @@ extern ptl_handle_ni_t  kibnal_ni;
 extern ptl_handle_ni_t  kscimacnal_ni;
 #endif
 
-#define PTL_NALFMT_SIZE         16
+#define PTL_NALFMT_SIZE               26 /* %u:%u.%u.%u.%u (10+4+4+4+3+1) */
 
 #define NAL_MAX_NR (NAL_ENUM_END_MARKER - 1)
 
@@ -1082,7 +685,6 @@ struct lustre_peer {
         ptl_handle_ni_t peer_ni;
 };
 
-
 /* module.c */
 typedef int (*nal_cmd_handler_t)(struct portals_cfg *, void * private);
 int kportal_nal_register(int nal, nal_cmd_handler_t handler, void * private);
index 51d2d2f..ee50b59 100644 (file)
@@ -1,6 +1,6 @@
 /* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*-
- * vim:expandtab:shiftwidth=8:tabstop=8:
- */
+ *  * vim:expandtab:shiftwidth=8:tabstop=8:
+ *   */
 #ifndef _KPR_H
 #define _KPR_H
 
@@ -81,6 +81,21 @@ typedef struct {
         void                    *kpr_arg;
 } kpr_router_t;
 
+/* Router's control interface (Kernel Portals Routing Control Interface) */
+typedef const struct {
+        int     (*kprci_add_route)(int gateway_nal, ptl_nid_t gateway_nid,
+                                   ptl_nid_t lo_nid, ptl_nid_t hi_nid);
+        int     (*kprci_del_route)(int gateway_nal, ptl_nid_t gateway_nid,
+                                   ptl_nid_t lo_nid, ptl_nid_t hi_nid);
+        int     (*kprci_get_route)(int index, int *gateway_nal,
+                                   ptl_nid_t *gateway,
+                                   ptl_nid_t *lo_nid, ptl_nid_t *hi_nid,
+                                   int *alive);
+        int     (*kprci_notify)(int gateway_nal, ptl_nid_t gateway_nid,
+                                int alive, time_t when);
+} kpr_control_interface_t;
+
+extern kpr_control_interface_t  kpr_control_interface;
 extern kpr_router_interface_t   kpr_router_interface;
 
 static inline int
index 99d3877..efdc8fe 100644 (file)
@@ -6,28 +6,6 @@
 
 #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
@@ -220,11 +198,6 @@ do {                                                    \
                                                         \
 } while (0)
 
-typedef int (nal_cmd_handler_fn)(struct portals_cfg *, void *);
-int libcfs_nal_cmd_register(int nal, nal_cmd_handler_fn *handler, void *arg);
-int libcfs_nal_cmd(struct portals_cfg *pcfg);
-void libcfs_nal_cmd_unregister(int nal);
-
 struct portal_ioctl_data {
         __u32 ioc_len;
         __u32 ioc_version;
@@ -257,7 +230,6 @@ struct portal_ioctl_data {
         char ioc_bulk[0];
 };
 
-
 #ifdef __KERNEL__
 
 #include <linux/list.h>
index 4361858..9ab4020 100644 (file)
@@ -40,6 +40,9 @@
 # define RECALC_SIGPENDING         recalc_sigpending()
 # define CURRENT_SECONDS           CURRENT_TIME
 
+# define kernel_text_address(addr) is_kernel_text_address(addr)
+extern int is_kernel_text_address(unsigned long addr);
+
 #else /* 2.4.x */
 
 # define SIGNAL_MASK_LOCK(task, flags)                                  \
 # define RECALC_SIGPENDING         recalc_sigpending(current)
 # define CURRENT_SECONDS           CURRENT_TIME
 
+# define kernel_text_address(addr) is_kernel_text_address(addr)
+extern int is_kernel_text_address(unsigned long addr);
+
 #endif
 
 #if defined(__arch_um__) && (LINUX_VERSION_CODE < KERNEL_VERSION(2,4,20))
-# define THREAD_NAME(comm, fmt, a...)                                   \
-        sprintf(comm, fmt "|%d", ## a, current->thread.extern_pid)
+# define THREAD_NAME(comm, len, fmt, a...)                              \
+        snprintf(comm, len, fmt "|%d", ## a, current->thread.extern_pid)
 #elif defined(__arch_um__) && (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0))
-# define THREAD_NAME(comm, fmt, a...)                                   \
-        sprintf(comm, fmt "|%d", ## a, current->thread.mode.tt.extern_pid)
+# define THREAD_NAME(comm, len, fmt, a...)                              \
+        snprintf(comm, len,fmt"|%d", ## a,current->thread.mode.tt.extern_pid)
+#else
+# define THREAD_NAME(comm, len, fmt, a...)                              \
+        snprintf(comm, len, fmt, ## a)
+#endif
+
+#ifdef HAVE_PAGE_LIST
+/* 2.4 alloc_page users can use page->list */
+#define PAGE_LIST_ENTRY list
+#define PAGE_LIST(page) ((page)->list)
 #else
-# define THREAD_NAME(comm, fmt, a...)                                   \
-        sprintf(comm, fmt, ## a)
+/* 2.6 alloc_page users can use page->lru */
+#define PAGE_LIST_ENTRY lru
+#define PAGE_LIST(page) ((page)->lru)
 #endif
 
 #endif /* _PORTALS_COMPAT_H */
diff --git a/lnet/include/lnet/Makefile.am b/lnet/include/lnet/Makefile.am
deleted file mode 100644 (file)
index c61b084..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-# Copyright (C) 2001  Cluster File Systems, Inc.
-#
-# This code is issued under the GNU General Public License.
-# See the file COPYING in this distribution
-
-SUBDIRS = base
-include $(top_srcdir)/Rules
-
-pkginclude_HEADERS=api-support.h api.h arg-blocks.h defines.h errno.h internal.h lib-dispatch.h lib-nal.h lib-p30.h lib-types.h myrnal.h nal.h p30.h ppid.h ptlctl.h stringtab.h types.h nalids.h list.h bridge.h ipmap.h procbridge.h lltrace.h
-
index e9e4635..b1a6e04 100644 (file)
@@ -245,10 +245,14 @@ lib_me_free(nal_cb_t *nal, lib_me_t *me)
 static inline lib_msg_t *
 lib_msg_alloc(nal_cb_t *nal)
 {
-        /* NEVER called with statelock held */
+        /* NEVER called with statelock held; may be in interrupt... */
         lib_msg_t *msg;
 
-        PORTAL_ALLOC(msg, sizeof(*msg));
+        if (in_interrupt())
+                PORTAL_ALLOC_ATOMIC(msg, sizeof(*msg));
+        else
+                PORTAL_ALLOC(msg, sizeof(*msg));
+
         if (msg != NULL) {
                 /* NULL pointers, clear flags etc */
                 memset (msg, 0, sizeof (*msg));
index e9e4635..b1a6e04 100644 (file)
@@ -245,10 +245,14 @@ lib_me_free(nal_cb_t *nal, lib_me_t *me)
 static inline lib_msg_t *
 lib_msg_alloc(nal_cb_t *nal)
 {
-        /* NEVER called with statelock held */
+        /* NEVER called with statelock held; may be in interrupt... */
         lib_msg_t *msg;
 
-        PORTAL_ALLOC(msg, sizeof(*msg));
+        if (in_interrupt())
+                PORTAL_ALLOC_ATOMIC(msg, sizeof(*msg));
+        else
+                PORTAL_ALLOC(msg, sizeof(*msg));
+
         if (msg != NULL) {
                 /* NULL pointers, clear flags etc */
                 memset (msg, 0, sizeof (*msg));
index 89a4aa6..f5fd0b0 100644 (file)
@@ -1,3 +1,5 @@
 Makefile
-Makefile.in
-.*.o.cmd
+autoMakefile
+autoMakefile.in
+.*.cmd
+.depend
diff --git a/lnet/klnds/Makefile.am b/lnet/klnds/Makefile.am
deleted file mode 100644 (file)
index df6ee5c..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-# Copyright (C) 2001  Cluster File Systems, Inc.
-#
-# This code is issued under the GNU General Public License.
-# See the file COPYING in this distribution
-
-DIST_SUBDIRS= socknal qswnal gmnal scimacnal ibnal
-SUBDIRS= socknal @QSWNAL@ @GMNAL@ @SCIMACNAL@ @IBNAL@
index e995588..642e2e6 100644 (file)
@@ -1,3 +1,10 @@
 .deps
 Makefile
-Makefile.in
+autoMakefile.in
+autoMakefile
+*.ko
+*.mod.c
+.*.cmd
+.*.flags
+.tmp_versions
+.depend
diff --git a/lnet/klnds/gmlnd/Makefile.am b/lnet/klnds/gmlnd/Makefile.am
deleted file mode 100644 (file)
index bac4680..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-# Copyright (C) 2001  Cluster File Systems, Inc.
-#
-# This code is issued under the GNU General Public License.
-# See the file COPYING in this distribution
-
-include ../../Rules.linux
-
-MODULE = kgmnal
-modulenet_DATA = kgmnal.o
-EXTRA_PROGRAMS = kgmnal
-
-DEFS = -DGM_KERNEL
-kgmnal_SOURCES = gmnal.h gmnal_api.c gmnal_cb.c gmnal_comm.c gmnal_utils.c gmnal_module.c
index e995588..48b17e9 100644 (file)
@@ -1,3 +1,10 @@
 .deps
 Makefile
-Makefile.in
+autoMakefile.in
+autoMakefile
+*.ko
+*.mod.c
+.*.flags
+.*.cmd
+.tmp_versions
+.depend
diff --git a/lnet/klnds/iblnd/Makefile.am b/lnet/klnds/iblnd/Makefile.am
deleted file mode 100644 (file)
index 84818dc..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-include ../../Rules.linux
-
-MODULE = kibnal
-modulenet_DATA = kibnal.o
-EXTRA_PROGRAMS = kibnal
-
-
-DEFS =
-CPPFLAGS=@CPPFLAGS@ @with_ib@
-kibnal_SOURCES = ibnal.h ibnal.c ibnal_cb.c
index ff5aeb3..4a1f0d7 100644 (file)
@@ -29,6 +29,7 @@
 #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
index e995588..48b17e9 100644 (file)
@@ -1,3 +1,10 @@
 .deps
 Makefile
-Makefile.in
+autoMakefile.in
+autoMakefile
+*.ko
+*.mod.c
+.*.flags
+.*.cmd
+.tmp_versions
+.depend
diff --git a/lnet/klnds/qswlnd/Makefile.am b/lnet/klnds/qswlnd/Makefile.am
deleted file mode 100644 (file)
index 3eb4dd5..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-# Copyright (C) 2001  Cluster File Systems, Inc.
-#
-# This code is issued under the GNU General Public License.
-# See the file COPYING in this distribution
-
-include ../../Rules.linux
-
-MODULE = kqswnal
-modulenet_DATA = kqswnal.o
-EXTRA_PROGRAMS = kqswnal
-
-
-#CFLAGS:= @KCFLAGS@ 
-#CPPFLAGS:=@KCPPFLAGS@
-DEFS =
-CPPFLAGS=@CPPFLAGS@ @with_quadrics@
-kqswnal_SOURCES = qswnal.c qswnal_cb.c qswnal.h
index 5ebf30a..bedc6e0 100644 (file)
 #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
index 157dc70..731357e 100644 (file)
@@ -85,6 +85,9 @@ kqswnal_printf (nal_cb_t * nal, const char *fmt, ...)
         CDEBUG (D_NET, "%s", msg);
 }
 
+#if (defined(CONFIG_SPARC32) || defined(CONFIG_SPARC64))
+# error "Can't save/restore irq contexts in different procedures"
+#endif
 
 static void
 kqswnal_cli(nal_cb_t *nal, unsigned long *flags)
index e995588..48b17e9 100644 (file)
@@ -1,3 +1,10 @@
 .deps
 Makefile
-Makefile.in
+autoMakefile.in
+autoMakefile
+*.ko
+*.mod.c
+.*.flags
+.*.cmd
+.tmp_versions
+.depend
diff --git a/lnet/klnds/scimaclnd/Makefile.am b/lnet/klnds/scimaclnd/Makefile.am
deleted file mode 100644 (file)
index 6da31f0..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-# This code is issued under the GNU General Public License.
-# See the file COPYING in this distribution
-
-include ../../Rules.linux
-
-MODULE = kscimacnal
-modulenet_DATA = kscimacnal.o
-EXTRA_PROGRAMS = kscimacnal
-
-DEFS =
-kscimacnal_SOURCES = scimacnal.c scimacnal_cb.c scimacnal.h
index 6949557..f132769 100644 (file)
@@ -34,6 +34,7 @@
 #define DEBUG_SUBSYSTEM S_UNDEFINED
 
 #include <linux/kp30.h>
+#include <linux/kpr.h>
 #include <portals/p30.h>
 #include <portals/lib-p30.h>
 
index 95973d6..5ed596b 100644 (file)
@@ -1,4 +1,10 @@
 .deps
 Makefile
-Makefile.in
-.*.o.cmd
+.*.cmd
+autoMakefile.in
+autoMakefile
+*.ko
+*.mod.c
+.*.flags
+.tmp_versions
+.depend
diff --git a/lnet/klnds/socklnd/Makefile.am b/lnet/klnds/socklnd/Makefile.am
deleted file mode 100644 (file)
index acdba5e..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-# Copyright (C) 2001  Cluster File Systems, Inc.
-#
-# This code is issued under the GNU General Public License.
-# See the file COPYING in this distribution
-
-include ../../Rules.linux
-
-MODULE = ksocknal
-modulenet_DATA = ksocknal.o
-EXTRA_PROGRAMS = ksocknal
-
-# If you don't build with -O2, your modules won't insert, becahse htonl is
-# just special that way.
-AM_CFLAGS = -O2
-
-DEFS =
-ksocknal_SOURCES = socknal.c socknal_cb.c socknal.h
index a768ae5..194ac98 100644 (file)
 
 #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
 
index c89e20e..f02cbda 100644 (file)
@@ -24,6 +24,9 @@
  */
 
 #include "socknal.h"
+#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,5,0))
+# include <linux/syscalls.h>
+#endif
 
 /*
  *  LIB functions follow
@@ -90,6 +93,8 @@ ksocknal_cli(nal_cb_t *nal, unsigned long *flags)
 {
         ksock_nal_data_t *data = nal->nal_data;
 
+        /* OK to ignore 'flags'; we're only ever serialise threads and
+         * never need to lock out interrupts */
         spin_lock(&data->ksnd_nal_cb_lock);
 }
 
index 7fa686f..df12db6 100644 (file)
@@ -1,5 +1,12 @@
 .deps
 Makefile
-Makefile.in
 link-stamp
-.*.o.cmd
+.*.cmd
+autoMakefile.in
+autoMakefile
+sources
+*.ko
+*.mod.c
+.*.flags
+.tmp_versions
+.depend
diff --git a/lnet/libcfs/Makefile.am b/lnet/libcfs/Makefile.am
deleted file mode 100644 (file)
index cf9220b..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-# Copyright (C) 2001, 2002 Cluster File Systems, Inc.
-#
-# This code is issued under the GNU General Public License.
-# See the file COPYING in this distribution
-
-
-MODULE = portals
-modulenet_DATA = portals.o
-EXTRA_PROGRAMS = portals
-
-LIBLINKS := lib-dispatch.c lib-eq.c lib-init.c lib-md.c lib-me.c lib-move.c lib-msg.c lib-ni.c lib-pid.c
-APILINKS := api-eq.c api-errno.c api-init.c api-me.c api-ni.c api-wrap.c
-LINKS = $(APILINKS) $(LIBLINKS) 
-DISTCLEANFILES = $(LINKS) link-stamp *.orig *.rej
-
-$(LINKS): link-stamp
-link-stamp:
-       -list='$(LIBLINKS)'; for f in $$list; do echo $$f ; ln -sf $(srcdir)/../portals/$$f .; done
-       -list='$(APILINKS)'; for f in $$list; do echo $$f ; ln -sf $(srcdir)/../portals/$$f .; done
-       echo timestamp > link-stamp
-
-DEFS =
-portals_SOURCES = $(LINKS) module.c proc.c debug.c lwt.c
-
-# Don't distribute any patched files.
-dist-hook:
-       list='$(EXT2C)'; for f in $$list; do rm -f $(distdir)/$$f; done
-
-include ../Rules.linux
index 6f9c981..5d2688e 100644 (file)
@@ -1,4 +1,9 @@
-MODULES = libcfs
+MODULES = portals
 libcfs-objs := debug.o lwt.o module.o proc.o
 
+api-sources := $(wildcard @LUSTRE@/portals/portals/api-*.c)
+lib-sources := $(wildcard @LUSTRE@/portals/portals/lib-*.c)
+
+portals-objs += $(libcfs-objs) $(patsubst %.c,%.o,$(notdir $(api-sources) $(lib-sources)))
+
 @INCLUDE_RULES@
index 192c3ef..50adb3f 100644 (file)
@@ -4,8 +4,17 @@
 # See the file COPYING in this distribution
 
 if MODULES
-modulenet_DATA := libcfs$(KMODEXT)
+modulenet_DATA := portals$(KMODEXT)
 endif
 
+sources:
+       rm -f sources
+       @for i in $(api-sources) $(lib-sources) ; do \
+               echo ln -sf $$i . ; \
+               ln -sf $$i . || exit 1 ; \
+       done
+       touch sources
+
 MOSTLYCLEANFILES = *.o *.ko *.mod.c
-DIST_SOURCES = $(libcfs-objs:%.o=%.c)
+CLEANFILES = sources lib-*.c api-*.c
+DIST_SOURCES = $(portals-objs:%.o=%.c)
index 538b7a2..a9c1adc 100644 (file)
 #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;
@@ -671,7 +699,7 @@ __s32 portals_debug_copy_to_user(char *buf, unsigned long len)
                         rc = -ENOMEM;
                         goto cleanup;
                 }
-                list_add(&page->list, &my_pages);
+                list_add(&PAGE_LIST(page), &my_pages);
         }
 
         spin_lock_irqsave(&portals_debug_lock, flags);
@@ -696,7 +724,7 @@ __s32 portals_debug_copy_to_user(char *buf, unsigned long len)
                 unsigned long to_copy;
                 void *addr;
 
-                page = list_entry(pos, struct page, list);
+                page = list_entry(pos, struct page, PAGE_LIST_ENTRY);
                 to_copy = min(total - off, PAGE_SIZE);
                 if (to_copy == 0) {
                         off = 0;
@@ -725,7 +753,7 @@ finish_partial:
         off = 0;
         list_for_each(pos, &my_pages) {
                 unsigned long to_copy;
-                page = list_entry(pos, struct page, list);
+                page = list_entry(pos, struct page, PAGE_LIST_ENTRY);
 
                 to_copy = min(copied - off, PAGE_SIZE);
                 rc = copy_to_user(buf + off, kmap(page), to_copy);
@@ -742,8 +770,8 @@ finish_partial:
 
 cleanup:
         list_for_each_safe(pos, n, &my_pages) {
-                page = list_entry(pos, struct page, list);
-                list_del(&page->list);
+                page = list_entry(pos, struct page, PAGE_LIST_ENTRY);
+                list_del(&PAGE_LIST(page));
                 __free_page(page);
         }
         return rc;
@@ -934,20 +962,26 @@ void portals_run_lbug_upcall(char *file, const char *fn, const int line)
 char *portals_nid2str(int nal, ptl_nid_t nid, char *str)
 {
         switch(nal){
+/* XXX this could be a nal method of some sort, 'cept it's config
+ * dependent whether (say) socknal NIDs are actually IP addresses... */
+#ifndef CRAY_PORTALS 
         case TCPNAL:
                 /* userspace NAL */
         case SOCKNAL:
-                sprintf(str, "%u:%d.%d.%d.%d", (__u32)(nid >> 32),
-                        HIPQUAD(nid));
+                snprintf(str, PTL_NALFMT_SIZE - 1, "%u:%u.%u.%u.%u",
+                         (__u32)(nid >> 32), HIPQUAD(nid));
                 break;
         case QSWNAL:
         case GMNAL:
         case IBNAL:
         case SCIMACNAL:
-                sprintf(str, "%u:%u", (__u32)(nid >> 32), (__u32)nid);
+                snprintf(str, PTL_NALFMT_SIZE - 1, "%u:%u",
+                         (__u32)(nid >> 32), (__u32)nid);
                 break;
+#endif
         default:
-                return NULL;
+                snprintf(str, PTL_NALFMT_SIZE - 1, "?%d? %llx",
+                         nal, (long long)nid);
         }
         return str;
 }
@@ -958,8 +992,6 @@ spinlock_t stack_backtrace_lock = SPIN_LOCK_UNLOCKED;
 
 #if defined(__arch_um__)
 
-extern int is_kernel_text_address(unsigned long addr);
-
 char *portals_debug_dumpstack(void)
 {
         asm("int $3");
@@ -968,33 +1000,45 @@ char *portals_debug_dumpstack(void)
 
 #elif defined(__i386__)
 
-extern int is_kernel_text_address(unsigned long addr);
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0))
 extern int lookup_symbol(unsigned long address, char *buf, int buflen);
+const char *kallsyms_lookup(unsigned long addr,
+                            unsigned long *symbolsize,
+                            unsigned long *offset,
+                            char **modname, char *namebuf)
+{
+        int rc = lookup_symbol(addr, namebuf, 128);
+        if (rc == -ENOSYS)
+                return NULL;
+        return namebuf;
+}
+#endif
 
 char *portals_debug_dumpstack(void)
 {
-        unsigned long esp = current->thread.esp;
+        unsigned long esp = current->thread.esp, addr;
         unsigned long *stack = (unsigned long *)&esp;
+        char *buf = stack_backtrace, *pbuf = buf;
         int size;
-        unsigned long addr;
-        char *buf = stack_backtrace;
-        char *pbuf = buf;
-        static char buffer[512];
-        int rc = 0;
 
         /* User space on another CPU? */
-        if ((esp ^ (unsigned long)current) & (PAGE_MASK<<1)){
+        if ((esp ^ (unsigned long)current) & (PAGE_MASK << 1)){
                 buf[0] = '\0';
                 goto out;
         }
 
         size = sprintf(pbuf, " Call Trace: ");
         pbuf += size;
-        while (((long) stack & (THREAD_SIZE-1)) != 0) {
+        while (((long) stack & (THREAD_SIZE - 1)) != 0) {
                 addr = *stack++;
-                if (is_kernel_text_address(addr)) {
-                        rc = lookup_symbol(addr, buffer, 512);
-                        if (rc == -ENOSYS) {
+                if (kernel_text_address(addr)) {
+                        const char *sym_name;
+                        char *modname, buffer[128];
+                        unsigned long junk, offset;
+
+                        sym_name = kallsyms_lookup(addr, &junk, &offset,
+                                                   &modname, buffer);
+                        if (sym_name == NULL) {
                                 if (buf + LUSTRE_TRACE_SIZE <= pbuf + 12)
                                         break;
                                 size = sprintf(pbuf, "[<%08lx>] ", addr);
@@ -1004,7 +1048,7 @@ char *portals_debug_dumpstack(void)
                                     <= pbuf + strlen(buffer) + 28 + 1)
                                         break;
                                 size = sprintf(pbuf, "([<%08lx>] %s (0x%p)) ",
-                                               addr, buffer, stack-1);
+                                               addr, buffer, stack - 1);
                         }
                         pbuf += size;
                 }
index 2f5a852..f46c855 100644 (file)
@@ -47,6 +47,7 @@
 #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
@@ -59,7 +60,7 @@ struct nal_cmd_handler {
 };
 
 static struct nal_cmd_handler nal_cmd[NAL_MAX_NR + 1];
-struct semaphore nal_cmd_sem;
+static DECLARE_MUTEX(nal_cmd_sem);
 
 #ifdef PORTAL_DEBUG
 void kportal_assertion_failed(char *expr, char *file, const char *func,
@@ -799,11 +800,6 @@ EXPORT_SYMBOL(PtlFini);
 EXPORT_SYMBOL(PtlPut);
 EXPORT_SYMBOL(PtlGet);
 EXPORT_SYMBOL(ptl_err_str);
-EXPORT_SYMBOL(portal_subsystem_debug);
-EXPORT_SYMBOL(portal_debug);
-EXPORT_SYMBOL(portal_stack);
-EXPORT_SYMBOL(portal_printk);
-EXPORT_SYMBOL(portal_cerror);
 EXPORT_SYMBOL(PtlEQWait);
 EXPORT_SYMBOL(PtlEQFree);
 EXPORT_SYMBOL(PtlEQGet);
@@ -822,13 +818,12 @@ EXPORT_SYMBOL(lib_parse);
 EXPORT_SYMBOL(lib_fake_reply_msg);
 EXPORT_SYMBOL(lib_init);
 EXPORT_SYMBOL(lib_fini);
-EXPORT_SYMBOL(portal_kmemory);
+EXPORT_SYMBOL(dispatch_name);
 EXPORT_SYMBOL(kportal_daemonize);
 EXPORT_SYMBOL(kportal_blockallsigs);
 EXPORT_SYMBOL(kportal_nal_register);
 EXPORT_SYMBOL(kportal_nal_unregister);
 EXPORT_SYMBOL(kportal_assertion_failed);
-EXPORT_SYMBOL(dispatch_name);
 EXPORT_SYMBOL(kportal_get_ni);
 EXPORT_SYMBOL(kportal_put_ni);
 EXPORT_SYMBOL(kportal_nal_cmd);
index 95973d6..5ed596b 100644 (file)
@@ -1,4 +1,10 @@
 .deps
 Makefile
-Makefile.in
-.*.o.cmd
+.*.cmd
+autoMakefile.in
+autoMakefile
+*.ko
+*.mod.c
+.*.flags
+.tmp_versions
+.depend
diff --git a/lnet/lnet/Makefile.am b/lnet/lnet/Makefile.am
deleted file mode 100644 (file)
index d17db61..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-# Copyright (C) 2002  Cluster File Systems, Inc.
-#
-# This code is issued under the GNU General Public License.
-# See the file COPYING in this distribution
-
-
-CPPFLAGS=
-INCLUDES=-I$(top_srcdir)/portals/include -I$(top_srcdir)/include
-noinst_LIBRARIES= libportals.a
-libportals_a_SOURCES= api-eq.c api-init.c api-me.c api-errno.c api-ni.c api-wrap.c lib-dispatch.c lib-init.c lib-me.c lib-msg.c lib-eq.c lib-md.c lib-move.c lib-ni.c lib-pid.c
-
-if LIBLUSTRE
-libportals_a_CFLAGS= -fPIC
-endif
index 6ce334b..71067ac 100644 (file)
@@ -1,6 +1,6 @@
-MODULES := portals
-portals-objs := api-eq.o api-init.o api-me.o api-errno.o api-ni.o api-wrap.o
-portals-objs += lib-dispatch.o lib-init.o lib-me.o lib-msg.o lib-eq.o lib-md.o
-portals-objs += lib-move.o lib-ni.o lib-pid.o module.o
+#MODULES := portals
+#portals-objs := api-eq.o api-init.o api-me.o api-errno.o api-ni.o api-wrap.o
+#portals-objs += lib-dispatch.o lib-init.o lib-me.o lib-msg.o lib-eq.o lib-md.o
+#portals-objs += lib-move.o lib-ni.o lib-pid.o
 
 @INCLUDE_RULES@
index 7822846..de01765 100644 (file)
@@ -9,4 +9,4 @@ obj-y += portals.o
 portals-objs    :=     lib-dispatch.o lib-eq.o lib-init.o lib-md.o lib-me.o \
                        lib-move.o lib-msg.o lib-ni.o lib-pid.o \
                        api-eq.o api-errno.o api-init.o api-me.o api-ni.o \
-                       api-wrap.o
+                       api-wrap.o module.o
index b811391..0a64864 100644 (file)
 #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;
index bf7a107..22565dd 100644 (file)
@@ -16,11 +16,11 @@ libportals_a_CPPFLAGS = $(LLCPPFLAGS)
 libportals_a_CFLAGS = $(LLCFLAGS)
 endif
 
-if MODULES
-modulenet_DATA = portals$(KMODEXT)
-endif # MODULES
+#if MODULES
+#modulenet_DATA = portals$(KMODEXT)
+#endif # MODULES
 
 endif # CRAY_PORTALS
 
 MOSTLYCLEANFILES = *.o *.ko *.mod.c
-DIST_SOURCES = $(portals-objs:%.o=%.c)
+#DIST_SOURCES = $(portals-objs:%.o=%.c)
index 95973d6..5ed596b 100644 (file)
@@ -1,4 +1,10 @@
 .deps
 Makefile
-Makefile.in
-.*.o.cmd
+.*.cmd
+autoMakefile.in
+autoMakefile
+*.ko
+*.mod.c
+.*.flags
+.tmp_versions
+.depend
diff --git a/lnet/router/Makefile.am b/lnet/router/Makefile.am
deleted file mode 100644 (file)
index 1c8087b..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-# Copyright (C) 2001  Cluster File Systems, Inc.
-#
-# This code is issued under the GNU General Public License.
-# See the file COPYING in this distribution
-
-include ../Rules.linux
-
-MODULE = kptlrouter
-modulenet_DATA = kptlrouter.o
-EXTRA_PROGRAMS = kptlrouter
-
-
-#CFLAGS:= @KCFLAGS@ 
-#CPPFLAGS:=@KCPPFLAGS@
-DEFS =
-kptlrouter_SOURCES = router.c proc.c router.h
index ea25439..309025b 100644 (file)
@@ -39,6 +39,7 @@
 #define DEBUG_SUBSYSTEM S_PTLROUTER
 
 #include <linux/kp30.h>
+#include <linux/kpr.h>
 #include <portals/p30.h>
 #include <portals/lib-p30.h>
 
index d0c4c88..e034130 100644 (file)
@@ -1,4 +1,10 @@
 Makefile
-Makefile.in
 .deps
-.*.o.cmd
+.*.cmd
+autoMakefile.in
+autoMakefile
+*.ko
+*.mod.c
+.*.flags
+.tmp_versions
+.depend
diff --git a/lnet/tests/Makefile.am b/lnet/tests/Makefile.am
deleted file mode 100644 (file)
index 7b47ae0..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-# Copyright (C) 2001  Cluster File Systems, Inc.
-#
-# This code is issued under the GNU General Public License.
-# See the file COPYING in this distribution
-
-include ../Rules.linux
-
-LDFLAGS = -m "`$(LD) --help | awk '/supported emulations/ {print $$4}'`" -r
-LINK = $(LD) $(LDFLAGS) -o $@
-DEFS =
-LIBS =
-MODULE = $(basename)
-EXTRA_DIST = startserver.sh startclient.sh stopserver.sh stopclient.sh
-
-noinst_PROGRAMS = pingsrv.o pingcli.o spingsrv.o spingcli.o 
-
-pingsrv_o_SOURCES = ping_srv.c ping.h
-
-pingcli_o_SOURCES = ping_cli.c ping.h
-
-spingsrv_o_SOURCES = sping_srv.c ping.h
-
-spingcli_o_SOURCES = sping_cli.c ping.h
index 6035ca1..4c842a1 100644 (file)
@@ -1,9 +1,8 @@
-CPPFLAGS=
-INCLUDES=-I$(top_srcdir)/portals/include -I$(top_srcdir)/include -I$(srcdir)
+if LIBLUSTRE
 noinst_LIBRARIES = libtcpnal.a
+endif
+
 pkginclude_HEADERS =  pqtimer.h dispatch.h table.h timer.h connection.h ipmap.h bridge.h procbridge.h
 libtcpnal_a_SOURCES = debug.c pqtimer.c select.c table.c pqtimer.h dispatch.h table.h timer.h address.c procapi.c proclib.c connection.c tcpnal.c connection.h
-
-if LIBLUSTRE
-libtcpnal_a_CFLAGS = -fPIC
-endif
+libtcpnal_a_CPPFLAGS = $(LLCPPFLAGS)
+libtcpnal_a_CFLAGS = $(LLCFLAGS)
index 6035ca1..4c842a1 100644 (file)
@@ -1,9 +1,8 @@
-CPPFLAGS=
-INCLUDES=-I$(top_srcdir)/portals/include -I$(top_srcdir)/include -I$(srcdir)
+if LIBLUSTRE
 noinst_LIBRARIES = libtcpnal.a
+endif
+
 pkginclude_HEADERS =  pqtimer.h dispatch.h table.h timer.h connection.h ipmap.h bridge.h procbridge.h
 libtcpnal_a_SOURCES = debug.c pqtimer.c select.c table.c pqtimer.h dispatch.h table.h timer.h address.c procapi.c proclib.c connection.c tcpnal.c connection.h
-
-if LIBLUSTRE
-libtcpnal_a_CFLAGS = -fPIC
-endif
+libtcpnal_a_CPPFLAGS = $(LLCPPFLAGS)
+libtcpnal_a_CFLAGS = $(LLCFLAGS)
index 925406f..15c1774 100644 (file)
@@ -3,21 +3,21 @@
 # This code is issued under the GNU General Public License.
 # See the file COPYING in this distribution
 
-COMPILE = $(CC) -Wall -g -I$(srcdir)/../include
-LINK = $(CC) -o $@
+## $(srcdir)/../ for <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
 
@@ -34,4 +34,3 @@ debugctl_LDADD = -L. -lptlctl $(LIBREADLINE) $(LIBEFENCE)
 debugctl_DEPENDENCIES = libptlctl.a
 
 routerstat_SOURCES = routerstat.c
-endif
index 29b8d1e..f6367d4 100644 (file)
@@ -11,9 +11,7 @@
 #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>
index ff6631c..e45fae4 100644 (file)
@@ -29,9 +29,7 @@
 #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>
index db5292d..82b4022 100644 (file)
 #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 *);
@@ -221,14 +225,15 @@ static char **command_completion(char * text, int start, int end)
     char       * pos;
 
     match_tbl = top_level;
+    
     for (table = find_cmd(rl_line_buffer, match_tbl, &pos);
-        table;
-        table = find_cmd(pos, match_tbl, &pos)) {
+        table; table = find_cmd(pos, match_tbl, &pos)) 
+    {
 
        if (*(pos - 1) == ' ') match_tbl = table->pc_sub_cmd;
     }
 
-    return(completion_matches(text, command_generator));
+    return completion_matches(text, command_generator);
 }
 #endif
 
index fb031ae..f078099 100644 (file)
@@ -34,7 +34,7 @@
 #include <unistd.h>
 #include <time.h>
 #include <stdarg.h>
-#include <asm/byteorder.h>
+#include <endian.h>
 
 #ifdef __CYGWIN__
 
@@ -61,7 +61,7 @@
 unsigned int portal_debug;
 unsigned int portal_printk;
 unsigned int portal_stack;
-unsigned int portal_cerror;
+unsigned int portal_cerror = 1;
 
 static unsigned int g_nal = 0;
 
index f37e59b..07a5c92 100644 (file)
@@ -4,9 +4,12 @@ aclocal.m4
 config.log
 config.status
 config.cache
+config.guess
+config.sub
 configure
 Makefile
-Makefile.in
+autoMakefile
+autoMakefile.in
 .deps
 tags
 TAGS
@@ -15,5 +18,13 @@ cscope.files
 cscope.out
 autom4te-2.53.cache
 autom4te.cache
-.*.o.cmd
+depcomp
+compile
+.*.cmd
 .mergeinfo-*
+Rules
+missing
+mkinstalldirs
+install-sh
+.depend
+.tmp_versions
index 6567930..41d8357 100644 (file)
@@ -15,9 +15,15 @@ tbd  Cluster File Systems, Inc. <info@clusterfs.com>
        - 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
diff --git a/lustre/Makefile.am b/lustre/Makefile.am
deleted file mode 100644 (file)
index 045bace..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-# Copyright (C) 2001  Cluster File Systems, Inc.
-#
-# This code is issued under the GNU General Public License.
-# See the file COPYING in this distribution
-
-AUTOMAKE_OPTIONS = foreign
-
-if LINUX25
-DIRS24 = 
-else
-DIRS24 = ptlbd
-endif
-
-if LIBLUSTRE
-SUBDIRS = portals obdclass lov ptlrpc obdecho osc utils mdc lvfs liblustre
-else
-SUBDIRS = lvfs portals obdclass include $(DIRS24) mds utils obdfilter mdc osc ost 
-SUBDIRS+= llite obdecho lov cobd tests doc scripts conf ptlrpc
-endif
-
-if SNAPFS
-SUBDIRS+= snapfs
-endif
-
-if SMFS 
-SUBDIRS += smfs
-endif
-DIST_SUBDIRS = $(SUBDIRS) liblustre snapfs smfs
-EXTRA_DIST = BUGS FDL Rules kernel_patches
-
-# We get the version from the spec file.
-CONFIGURE_DEPENDENCIES = scripts/lustre.spec.in
-
-dist-hook:
-       find $(distdir) -name .deps | xargs rm -rf
-       find $(distdir) -name CVS | xargs rm -rf
-
-include $(top_srcdir)/Rules
-
-rpms: dist Makefile
-       rpmbuild -ta $(distdir).tar.gz
-
-CSTK=/tmp/checkstack
-CSTKO=/tmp/checkstack.orig
-
-checkstack:
-       [ -f ${CSTK} -a ! -s ${CSTKO} ] && mv ${CSTK} ${CSTKO} || true
-       for i in ${SUBDIRS} portals/knals/*; do                              \
-               MOD=$$i/`basename $$i`.o;                                    \
-               [ -f $$MOD ] && objdump -d $$MOD | perl tests/checkstack.pl; \
-       done | sort -nr > ${CSTK}
-       [ -f ${CSTKO} ] && ! diff -u ${CSTKO} ${CSTK} || head -30 ${CSTK}
-
-checkstack-update:
-       [ -f ${CSTK} ] && mv ${CSTK} ${CSTKO}
-
-checkstack-clean:
-       rm -f ${CSTK} ${CSTKO}
diff --git a/lustre/Rules b/lustre/Rules
deleted file mode 100644 (file)
index 8846e3b..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-# Copyright (C) 2001  Cluster File Systems, Inc.
-#
-# This code is issued under the GNU General Public License.
-# See the file COPYING in this distribution
-
-# Build a kernel module, name.o, and install it in $(moduledir) by:
-#  MODULE = name
-#  module_DATA = name.o
-#  EXTRA_PROGRAMS = name
-#  name_SOURCES = my.c files.c
-#  include $(top_srcdir)/Rules
-
-if LINUX25
-
-# FIXME
-# need to be rewritten:
-# - bad hacking in lvfs/Makefile.am obdclass/Makefile.am
-# - .o -> .ko
-#
-basename=$(shell echo $< | sed -e 's/\.c//g' | sed -e 's/-//g' | sed -e 's/\.o//g' | sed -e 's/^.*\///g')
-AM_CPPFLAGS=-I$(top_builddir)/include -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -pipe -mpreferred-stack-boundary=2  -DKBUILD_MODNAME=$(MODULE) -DKBUILD_BASENAME=$(basename)
-
-$(MODULE).o: $($(MODULE)_OBJECTS) $($(MODULE)_DEPENDENCIES)
-       $(LD) -m $(MOD_LINK) -r -o $(MODULE)_tmp.o $($(MODULE)_OBJECTS)
-       rm -f $(MODULE)_tmp.c
-       $(LINUX)/scripts/modpost $(LINUX)/vmlinux $(MODULE)_tmp.o
-       $(COMPILE) -UKBUILD_BASENAME -DKBUILD_BASENAME=$(MODULE) -c $(MODULE)_tmp.mod.c
-       $(LD) -m $(MOD_LINK) -r -o $(MODULE).o $(MODULE)_tmp.o $(MODULE)_tmp.mod.o
-
-else
-
-AM_CPPFLAGS=-I$(top_builddir)/include
-$(MODULE).o: $($(MODULE)_OBJECTS) $($(MODULE)_DEPENDENCIES)
-       $(LD) -m "`$(LD) --help | awk '/supported emulations/ {print $$4}'`" -r -o $(MODULE).o $($(MODULE)_OBJECTS)
-
-endif
-
-
-tags:
-       rm -f $(top_srcdir)/TAGS
-       ETAGSF=`etags --version | grep -iq exuberant && \
-               echo "-I __initdata,__exitdata,EXPORT_SYMBOL"`; \
-       find $(top_srcdir) -name '*.[hc]' | xargs etags $$ETAGSF -a
-
-       rm -f $(top_srcdir)/tags
-       CTAGSF=`ctags --version | grep -iq exuberant && \
-               echo "-I __initdata,__exitdata,EXPORT_SYMBOL"`; \
-       find $(top_srcdir) -name '*.[hc]' | xargs ctags $$CTAGSF -a
-
index 9b829bf..eedfa39 100644 (file)
@@ -32,7 +32,10 @@ endif
 lvfs-sources:
        $(MAKE) sources -C lvfs
 
-modules: lustre_build_version $(DEP) $(LDISKFS) lvfs-sources
+libcfs-sources:
+       $(MAKE) sources -C portals/libcfs
+
+modules: lustre_build_version $(DEP) $(LDISKFS) lvfs-sources libcfs-sources
        $(MAKE) $(ARCH_UM) -C $(LINUX) -f $(PWD)/kernel-tests/Makefile LUSTRE_LINUX_CONFIG=$(LINUX_CONFIG) SUBDIRS=$(PWD) -o tmp_include_depends -o scripts -o include/config/MARKER $@
 
 lustre_build_version:
index be0d42d..c7588e4 100644 (file)
@@ -1,5 +1,76 @@
-#!/bin/sh
+#!/bin/bash
+
+# taken from gnome-common/macros2/autogen.sh
+compare_versions() {
+    ch_min_version=$1
+    ch_actual_version=$2
+    ch_status=0
+    IFS="${IFS=         }"; ch_save_IFS="$IFS"; IFS="."
+    set $ch_actual_version
+    for ch_min in $ch_min_version; do
+        ch_cur=`echo $1 | sed 's/[^0-9].*$//'`; shift # remove letter suffixes
+        if [ -z "$ch_min" ]; then break; fi
+        if [ -z "$ch_cur" ]; then ch_status=1; break; fi
+        if [ $ch_cur -gt $ch_min ]; then break; fi
+        if [ $ch_cur -lt $ch_min ]; then ch_status=1; break; fi
+    done
+    IFS="$ch_save_IFS"
+    return $ch_status
+}
+
+error_msg() {
+       cat >&2 <<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}
index e995588..642e2e6 100644 (file)
@@ -1,3 +1,10 @@
 .deps
 Makefile
-Makefile.in
+autoMakefile.in
+autoMakefile
+*.ko
+*.mod.c
+.*.cmd
+.*.flags
+.tmp_versions
+.depend
diff --git a/lustre/cobd/Makefile.am b/lustre/cobd/Makefile.am
deleted file mode 100644 (file)
index 781c6ce..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright (C) 2002 Cluster File Systems, Inc.
-#
-# This code is issued under the GNU General Public License.
-# See the file COPYING in this distribution
-
-DEFS=
-
-MODULE = cobd
-modulefs_DATA = cobd.o
-EXTRA_PROGRAMS = cobd
-LINX=
-
-cobd_SOURCES = cache_obd.c lproc_cache.c $(LINX)
-
-include $(top_srcdir)/Rules
index 9bcd1c2..c42dab1 100644 (file)
@@ -234,22 +234,22 @@ static int cobd_iocontrol(unsigned int cmd, struct obd_export *exp, int len,
 }
 
 static struct obd_ops cobd_ops = {
-        o_owner:                THIS_MODULE,
+        .o_owner                = THIS_MODULE,
 
-        o_setup:                cobd_setup,
-        o_cleanup:              cobd_cleanup,
+        .o_setup                = cobd_setup,
+        .o_cleanup              = cobd_cleanup,
 
-        o_connect:              cobd_connect,
-        o_disconnect:           cobd_disconnect,
+        .o_connect              = cobd_connect,
+        .o_disconnect           = cobd_disconnect,
 
-        o_get_info:             cobd_get_info,
-        o_statfs:               cobd_statfs,
+        .o_get_info             = cobd_get_info,
+        .o_statfs               = cobd_statfs,
 
-        o_getattr:              cobd_getattr,
-        o_preprw:               cobd_preprw,
-        o_commitrw:             cobd_commitrw,
-        o_brw:                  cobd_brw,
-        o_iocontrol:            cobd_iocontrol,
+        .o_getattr              = cobd_getattr,
+        .o_preprw               = cobd_preprw,
+        .o_commitrw             = cobd_commitrw,
+        .o_brw                  = cobd_brw,
+        .o_iocontrol            = cobd_iocontrol,
 };
 
 static int __init cobd_init(void)
index a205d10..6e3666b 100644 (file)
@@ -10,6 +10,3 @@ ldapconf_SCRIPTS = slapd-lustre.conf
 ldapschema_SCRIPTS = lustre.schema
 pkglibdir = '${exec_prefix}/usr/lib/$(PACKAGE)'
 pkglib_DATA = top.ldif lustre2ldif.xsl
-
-include $(top_srcdir)/Rules
-
index 26780cc..11039ec 100644 (file)
 
 AC_INIT
 AC_CANONICAL_SYSTEM
+AM_INIT_AUTOMAKE(lustre, 1.2.1.7)
+# AM_MAINTAINER_MODE
 
-# Automake variables.  Steal the version number from lustre.spec.in.
-AM_INIT_AUTOMAKE(lustre, builtin([esyscmd], [sed -ne '/^%define version /{ s/.*version //; p; q; }' scripts/lustre.spec.in]))
-#AM_MAINTAINER_MODE
+# Four main targets: lustre kernel modules, utilities, tests, and liblustre
+AC_MSG_CHECKING([whether to build kernel modules])
+AC_ARG_ENABLE([modules],
+       AC_HELP_STRING([--disable-modules],
+                       [disable building of Lustre kernel modules]),
+       [],[enable_modules='yes'])
+AC_MSG_RESULT([$enable_modules])
+AM_CONDITIONAL(MODULES, test x$enable_modules = xyes)
 
-# LLNL patches their ext3 and calls it extN
-AC_ARG_ENABLE(extN, [  --enable-extN use extN instead of ext3 for lustre backend])
-AM_CONDITIONAL(EXTN, test x$enable_extN = xyes)
+AC_MSG_CHECKING([whether to build Lustre library])
+AC_ARG_ENABLE([liblustre],
+       AC_HELP_STRING([--disable-liblustre],
+                       [disable building of Lustre library]),
+       [],[enable_liblustre='no'])
+AC_MSG_RESULT([$enable_liblustre])
+AM_CONDITIONAL(LIBLUSTRE, test x$enable_liblustre = xyes)
+
+AC_MSG_CHECKING([whether to build utilities])
+AC_ARG_ENABLE([utils],
+       AC_HELP_STRING([--disable-utils],
+                       [disable building of Lustre utility programs]),
+       [],[enable_utils='yes'])
+AC_MSG_RESULT([$enable_utils])
+
+AC_MSG_CHECKING([whether to build Lustre tests])
+AC_ARG_ENABLE([tests],
+       AC_HELP_STRING([--disable-tests],
+                       [disable building of Lustre tests]),
+       [],[enable_tests='yes'])
+AC_MSG_RESULT([$enable_tests])
 
 # specify wether to build doc or not
-AC_ARG_ENABLE(doc, [  --disable-doc skip creation of pdf documentation],
-                  [
-                       if test x$enable_doc = xyes ; then
-                           ENABLE_DOC=1           
-                       else
-                           ENABLE_DOC=0
-                       fi
-                  ],
-                  [ ENABLE_DOC=0 ])
+AC_MSG_CHECKING([whether to build docs])
+AC_ARG_ENABLE(doc,
+       AC_HELP_STRING([--disable-doc],
+                       [skip creation of pdf documentation]),
+       [
+               if test x$enable_doc = xyes ; then
+                   ENABLE_DOC=1           
+               else
+                   ENABLE_DOC=0
+               fi
+       ],[
+               ENABLE_DOC=0
+               enable_doc='no'
+       ])
+AC_MSG_RESULT([$enable_doc])
 AM_CONDITIONAL(DOC, test x$ENABLE_DOC = x1)
 AC_SUBST(ENABLE_DOC)
 
+# default backing fs is ext3
+BACKINGFS='ext3'
+
+# LLNL patches their ext3 and calls it extN
+AC_MSG_CHECKING([whether to use extN])
+AC_ARG_ENABLE([extN],
+       AC_HELP_STRING([--enable-extN],
+                       [use extN instead of ext3 for lustre backend]),
+       [BACKINGFS='extN'],[enable_extN='no'])
+AC_MSG_RESULT([$enable_extN])
+AM_CONDITIONAL(EXTN, test x$enable_extN = xyes)
+
+# SuSE gets ldiskfs
+AC_MSG_CHECKING([whether to enable ldiskfs])
+AC_ARG_ENABLE([ldiskfs],
+       AC_HELP_STRING([--enable-ldiskfs],
+                       [use ldiskfs for the Lustre backing FS]),
+       [BACKINGFS='ldiskfs'],[enable_ldiskfs='no'])
+AC_MSG_RESULT([$enable_ldiskfs])
+AM_CONDITIONAL(LDISKFS, test x$enable_ldiskfs = xyes)
+
+AC_MSG_CHECKING([which backing filesystem to use])
+AC_MSG_RESULT([$BACKINGFS])
+AC_SUBST(BACKINGFS)
+
 # the pinger is temporary, until we have the recovery node in place
-AC_ARG_ENABLE(pinger, [  --disable-pinger disable recovery pinger support])
+AC_MSG_CHECKING([whether to enable pinger support])
+AC_ARG_ENABLE([pinger],
+       AC_HELP_STRING([--disable-pinger],
+                       [disable recovery pinger support]),
+       [],[enable_pinger='yes'])
+AC_MSG_RESULT([$enable_pinger])
 if test x$enable_pinger != xno ; then
   AC_DEFINE(ENABLE_PINGER, 1, Use the Pinger)
 fi
 
-AC_ARG_WITH(obd-buffer-size, [  --with-obd-buffer-size=[size] set lctl ioctl maximum bytes (default=8192)],OBD_BUFFER_SIZE=$with_obd_buffer_size,OBD_BUFFER_SIZE=8192)
+AC_MSG_CHECKING([maximum OBD ioctl size])
+AC_ARG_WITH([obd-buffer-size],
+       AC_HELP_STRING([--with-obd-buffer-size=[size]],
+                       [set lctl ioctl maximum bytes (default=8192)]),
+       [
+               OBD_BUFFER_SIZE=$with_obd_buffer_size
+       ],[
+               OBD_BUFFER_SIZE=8192
+       ])
+AC_MSG_RESULT([$OBD_BUFFER_SIZE bytes])
 AC_DEFINE_UNQUOTED(OBD_MAX_IOCTL_BUFFER, $OBD_BUFFER_SIZE, [IOCTL Buffer Size])
 
 # specify location of libsysio tree
-AC_ARG_WITH(sysio, [  --with-sysio=[path] set path to libsysio source (default=../libsysio)], sysiodir=$withval)
-if test x$sysiodir = x; then
-       SYSIO='$(top_srcdir)/../libsysio'
-else
-       SYSIO=$sysiodir
-fi
+AC_MSG_CHECKING([location of libsysio])
+AC_ARG_WITH([sysio],
+       AC_HELP_STRING([--with-sysio=[path]],
+                       [set path to libsysio source (default=../libsysio)]),
+       [
+               SYSIO=$with_sysio
+               SYSIO_PATH=$SYSIO
+       ],[
+               SYSIO='$(top_srcdir)/../libsysio'
+               SYSIO_PATH='../libsysio'
+       ])
+AC_MSG_RESULT([$SYSIO_PATH])
+
+AC_CHECK_FILE([$SYSIO_PATH/src/libsysio.a],[],
+       [
+               if test x$enable_liblustre = xyes ; then
+                  AC_MSG_ERROR([A built libsysio tree is required for building liblustre.])
+               fi
+       ])
 AC_SUBST(SYSIO)
 
 #build mpi-tests 
-AC_ARG_ENABLE(mpitests, [  --enable-mpitests build liblustre mpi tests])
+AC_MSG_CHECKING([whether to build mpitests])
+AC_ARG_ENABLE([mpitests],
+       AC_HELP_STRING([--enable-mpitests],
+                       [build liblustre mpi tests]),
+       [],[enable_mpitests=no])
+AC_MSG_RESULT([$enable_mpitests])
 AM_CONDITIONAL(MPITESTS, test x$enable_mpitests = xyes, Build MPI Tests)
 
-# snap compilation 
-AC_ARG_ENABLE(snapfs, [  --enable-snapfs build snapfs])
+# snap compilation
+AC_MSG_CHECKING([whether to enable snapfs support])
+AC_ARG_ENABLE([snapfs],
+       AC_HELP_STRING([--enable-snapfs],
+                       [build snapfs]),
+       [],[enable_snapfs='no'])
+AC_MSG_RESULT([$enable_snapfs])
 AM_CONDITIONAL(SNAPFS, test x$enable_snapfs = xyes)
 
-# smfs compilation 
-AC_ARG_ENABLE(smfs, [  --enable-smfs build smfs])
+# smfs compilation
+AC_MSG_CHECKING([whether to enable smfs support])
+AC_ARG_ENABLE([smfs],
+       AC_HELP_STRING([--enable-smfs],
+                       [build smfs]),
+       [],[enable_smfs='no'])
+AC_MSG_RESULT([$enable_smfs])
 AM_CONDITIONAL(SMFS, test x$enable_smfs = xyes)
 
-
-
 sinclude(portals/build.m4)
 sinclude(portals/archdep.m4)
 
@@ -67,21 +163,95 @@ if test x$enable_inkernel = xyes ; then
                sh -e -x -c '(cp -f $0.mk $0.in)'
 fi
 
-AM_CONFIG_HEADER(portals/include/config.h)
-
-AC_OUTPUT([Makefile lvfs/Makefile portals/Makefile portals/Kernelenv \
-          portals/libcfs/Makefile portals/portals/Makefile \
-          portals/unals/Makefile portals/knals/Makefile \
-          portals/router/Makefile portals/knals/socknal/Makefile \
-          portals/knals/gmnal/Makefile portals/knals/qswnal/Makefile \
-         portals/knals/scimacnal/Makefile \
-         portals/knals/ibnal/Makefile \
-          portals/utils/Makefile portals/tests/Makefile portals/doc/Makefile \
-          obdecho/Makefile ptlrpc/Makefile liblustre/Makefile liblustre/tests/Makefile \
-         lov/Makefile osc/Makefile mdc/Makefile mds/Makefile ost/Makefile \
-         cobd/Makefile ptlbd/Makefile conf/Makefile  tests/Makefile \
-         utils/Makefile utils/Lustre/Makefile obdfilter/Makefile \
-          obdclass/Makefile smfs/Makefile snapfs/Makefile snapfs/utils/Makefile \
-         include/Makefile include/linux/Makefile include/lustre/Makefile \
-          llite/Makefile doc/Makefile scripts/Makefile \
-         scripts/lustre.spec])
+# we need to pass a full path here for kernel makefiles
+INCLUDE_RULES="include $PWD/Rules"
+AC_SUBST(INCLUDE_RULES)
+
+# ptlrpc kernel build requires this
+LUSTRE="$PWD"
+AC_SUBST(LUSTRE)
+
+# cray portals turns these off
+AM_CONDITIONAL(UTILS, test x$enable_utils = xyes)
+AM_CONDITIONAL(TESTS, test x$enable_tests = xyes)
+
+AM_CONFIG_HEADER(include/config.h)
+
+AC_OUTPUT([
+Makefile
+Rules
+autoMakefile
+cobd/Makefile
+cobd/autoMakefile
+conf/Makefile
+doc/Makefile
+include/Makefile
+include/linux/Makefile
+include/lustre/Makefile
+ldiskfs/Makefile
+ldiskfs/autoMakefile
+ldlm/Makefile
+liblustre/Makefile
+liblustre/tests/Makefile
+llite/Makefile
+llite/autoMakefile
+lov/Makefile
+lov/autoMakefile
+lvfs/Makefile
+lvfs/autoMakefile
+mdc/Makefile
+mdc/autoMakefile
+mds/Makefile
+mds/autoMakefile
+obdclass/Makefile
+obdclass/autoMakefile
+obdecho/Makefile
+obdecho/autoMakefile
+obdfilter/Makefile
+obdfilter/autoMakefile
+osc/Makefile
+osc/autoMakefile
+ost/Makefile
+ost/autoMakefile
+portals/Kernelenv
+portals/Makefile
+portals/autoMakefile
+portals/doc/Makefile
+portals/knals/Makefile
+portals/knals/autoMakefile
+portals/knals/gmnal/Makefile
+portals/knals/gmnal/autoMakefile
+portals/knals/ibnal/Makefile
+portals/knals/ibnal/autoMakefile
+portals/knals/qswnal/Makefile
+portals/knals/qswnal/autoMakefile
+portals/knals/scimacnal/Makefile
+portals/knals/scimacnal/autoMakefile
+portals/knals/socknal/Makefile
+portals/knals/socknal/autoMakefile
+portals/libcfs/Makefile
+portals/libcfs/autoMakefile
+portals/portals/Makefile
+portals/portals/autoMakefile
+portals/router/Makefile
+portals/router/autoMakefile
+portals/tests/Makefile
+portals/tests/autoMakefile
+portals/unals/Makefile
+portals/utils/Makefile
+ptlbd/Makefile
+ptlbd/autoMakefile
+ptlrpc/Makefile
+ptlrpc/autoMakefile
+scripts/Makefile
+scripts/lustre.spec
+scripts/version_tag.pl
+smfs/Makefile
+smfs/autoMakefile
+snapfs/Makefile
+snapfs/autoMakefile
+snapfs/utils/Makefile
+tests/Makefile
+utils/Lustre/Makefile
+utils/Makefile
+])
index dbffef4..a47d5e7 100644 (file)
@@ -122,5 +122,3 @@ doc.old/lustre.lin:
 
 dist-hook:
        rm -rf $(distdir)/figs/CVS
-
-include $(top_srcdir)/Rules
index 7b78c04..a8dd680 100644 (file)
@@ -3,6 +3,7 @@ config.log
 config.status
 configure
 config.h
+config.h.in
 stamp-h
 stamp-h1
 stamp-h.in
index 7c8201c..2a3f201 100644 (file)
@@ -6,4 +6,4 @@
 
 SUBDIRS = linux lustre
 EXTRA_DIST = config.h.in ioctl.h liblustre.h 
-include $(top_srcdir)/Rules
+
diff --git a/lustre/include/config.h.in b/lustre/include/config.h.in
deleted file mode 100644 (file)
index eca8fdd..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-/* include/config.h.in.  Generated from configure.in by autoheader.  */
-
-/* Use the Pinger */
-#undef ENABLE_PINGER
-
-/* Define to 1 if you have the <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
index d859bfc..af80f44 100644 (file)
@@ -24,8 +24,8 @@
 #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>
@@ -240,8 +240,18 @@ static inline int request_module(char *name)
 #define __MOD_DEC_USE_COUNT(m)  do {} while (0)
 #define MOD_INC_USE_COUNT       do {} while (0)
 #define MOD_DEC_USE_COUNT       do {} while (0)
-#define try_module_get          __MOD_INC_USE_COUNT
-#define module_put              __MOD_DEC_USE_COUNT
+static inline void __module_get(struct module *module)
+{
+}
+
+static inline int try_module_get(struct module *module)
+{
+        return 1;
+}
+
+static inline void module_put(struct module *module)
+{
+}
 
 /* module initialization */
 extern int init_obdclass(void);
@@ -255,14 +265,13 @@ extern int echo_client_init(void);
 
 
 /* general stuff */
-#define jiffies 0
 
 #define EXPORT_SYMBOL(S)
 
-typedef int spinlock_t;
+typedef struct { } spinlock_t;
 typedef __u64 kdev_t;
 
-#define SPIN_LOCK_UNLOCKED 0
+#define SPIN_LOCK_UNLOCKED (spinlock_t) { }
 #define LASSERT_SPIN_LOCKED(lock) do {} while(0)
 
 static inline void spin_lock(spinlock_t *l) {return;}
@@ -376,6 +385,10 @@ struct page {
 #endif
 };
 
+/* 2.4 defines */
+#define PAGE_LIST_ENTRY list
+#define PAGE_LIST(page) ((page)->list)
+
 #define kmap(page) (page)->addr
 #define kunmap(a) do {} while (0)
 
@@ -523,14 +536,15 @@ struct semaphore {
         int count;
 };
 
-#define down(a) do {} while (0)
-#define up(a) do {} while (0)
-#define down_read(a) do {} while (0)
-#define up_read(a) do {} while (0)
-#define down_write(a) do {} while (0)
-#define up_write(a) do {} while (0)
-#define sema_init(a,b) do {} while (0)
-#define init_rwsem(a) do {} while (0)
+/* use the macro's argument to avoid unused warnings */
+#define down(a) do { (void)a; } while (0)
+#define up(a) do { (void)a; } while (0)
+#define down_read(a) do { (void)a; } while (0)
+#define up_read(a) do { (void)a; } while (0)
+#define down_write(a) do { (void)a; } while (0)
+#define up_write(a) do { (void)a; } while (0)
+#define sema_init(a,b) do { (void)a; } while (0)
+#define init_rwsem(a) do { (void)a; } while (0)
 #define DECLARE_MUTEX(name)     \
         struct semaphore name = { 1 }
 static inline void init_MUTEX (struct semaphore *sem)
@@ -618,6 +632,20 @@ static inline int schedule_timeout(signed long t)
 #define SIGNAL_MASK_ASSERT()
 #define KERN_INFO
 
+#include <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;
@@ -650,11 +678,6 @@ static inline void del_timer(struct timer_list *l)
         free(l);
 }
 
-#define time_after(a, b)                                        \
-({                                                              \
-        1;                                                      \
-})
-
 typedef struct { volatile int counter; } atomic_t;
 
 #define atomic_read(a) ((a)->counter)
index 58ba03e..120e996 100644 (file)
@@ -194,5 +194,42 @@ static inline int cleanup_group_info(void)
 
 #endif /* end of 2.4 compat macros */
 
+#ifdef HAVE_PAGE_LIST
+static inline int mapping_has_pages(struct address_space *mapping)
+{
+        int rc = 1;
+
+        ll_pgcache_lock(mapping);
+        if (list_empty(&mapping->dirty_pages) &&
+            list_empty(&mapping->clean_pages) &&
+            list_empty(&mapping->locked_pages)) {
+                rc = 0;
+        }
+        ll_pgcache_unlock(mapping);
+
+        return rc;
+}
+
+static inline int clear_page_dirty_for_io(struct page *page)
+{
+        struct address_space *mapping = page->mapping;
+
+        if (page->mapping && PageDirty(page)) {
+                ClearPageDirty(page);
+                ll_pgcache_lock(mapping);
+                list_del(&page->list);
+                list_add(&page->list, &mapping->locked_pages);
+                ll_pgcache_unlock(mapping);
+                return 1;
+        }
+        return 0;
+}
+#else
+static inline int mapping_has_pages(struct address_space *mapping)
+{
+        return mapping->nrpages > 0;
+}
+#endif
+
 #endif /* __KERNEL__ */
 #endif /* _COMPAT25_H */
index 39eaae3..85dc751 100644 (file)
@@ -54,7 +54,6 @@
 # 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__
index b0b907c..ebdfdf6 100644 (file)
@@ -25,8 +25,6 @@
 #ifndef _LUSTRE_LIB_H
 #define _LUSTRE_LIB_H
 
-#include <config.h>
-
 #ifndef __KERNEL__
 # include <string.h>
 # include <sys/types.h>
index 43d5445..ccde06b 100644 (file)
@@ -92,7 +92,7 @@
 #define MDT_MAX_THREADS 32UL
 #define MDT_NUM_THREADS max(min_t(unsigned long, num_physpages / 8192, \
                                   MDT_MAX_THREADS), 2UL)
-#define MDS_NBUF_MAX    512UL
+#define MDS_NBUF_MAX    4096UL
 #define MDS_BUFSIZE     (8 * 1024)
 /* Assume file name length = FNAME_MAX = 256 (true for extN).
  *        path name length = PATH_MAX = 4096
index 185424e..7e4150d 100644 (file)
@@ -18,7 +18,8 @@
 #define IOC_MDC_TYPE         'i'
 #define IOC_MDC_MIN_NR       20
 #define IOC_MDC_LOOKUP       _IOWR(IOC_MDC_TYPE, 20, struct obd_device *)
-#define IOC_MDC_GETSTRIPE    _IOWR(IOC_MDC_TYPE, 21, struct lov_mds_md *)
+/* Moved to lustre_user.h
+#define IOC_MDC_GETSTRIPE    _IOWR(IOC_MDC_TYPE, 21, struct lov_mds_md *) */
 #define IOC_MDC_MAX_NR       50
 
 #ifdef __KERNEL__
index c7848b3..1a577f0 100644 (file)
@@ -608,6 +608,9 @@ obd_lvfs_fid2dentry(struct obd_export *exp, __u64 id_ino, __u32 gen, __u64 gr)
 #define time_before(t1, t2) ((long)t2 - (long)t1 > 0)
 #endif
 
+/* @max_age is the oldest time in jiffies that we accept using a cached data.
+ * If the cache is older than @max_age we will get a new value from the
+ * target.  Use a value of "jiffies + HZ" to guarantee freshness. */
 static inline int obd_statfs(struct obd_device *obd, struct obd_statfs *osfs,
                              unsigned long max_age)
 {
@@ -623,10 +626,12 @@ static inline int obd_statfs(struct obd_device *obd, struct obd_statfs *osfs,
         CDEBUG(D_SUPER, "osfs %lu, max_age %lu\n", obd->obd_osfs_age, max_age);
         if (time_before(obd->obd_osfs_age, max_age)) {
                 rc = OBP(obd, statfs)(obd, osfs, max_age);
-                spin_lock(&obd->obd_osfs_lock);
-                memcpy(&obd->obd_osfs, osfs, sizeof(obd->obd_osfs));
-                obd->obd_osfs_age = jiffies;
-                spin_unlock(&obd->obd_osfs_lock);
+                if (rc == 0) {
+                        spin_lock(&obd->obd_osfs_lock);
+                        memcpy(&obd->obd_osfs, osfs, sizeof(obd->obd_osfs));
+                        obd->obd_osfs_age = jiffies;
+                        spin_unlock(&obd->obd_osfs_lock);
+                }
         } else {
                 CDEBUG(D_SUPER, "using cached obd_statfs data\n");
                 spin_lock(&obd->obd_osfs_lock);
index 377bef6..a785ada 100644 (file)
@@ -5,3 +5,5 @@
 
 
 pkginclude_HEADERS = lustre_user.h liblustreapi.h
+
+EXTRA_DIST = $(pkginclude_HEADERS)
index 9f890a7..5aa2de2 100644 (file)
 #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
index ad55e05..e98b204 100644 (file)
@@ -35,6 +35,9 @@
 #define LL_IOC_GROUP_LOCK               _IOW ('f', 158, long)
 #define LL_IOC_GROUP_UNLOCK             _IOW ('f', 159, long)
 
+#define IOC_MDC_TYPE            'i'
+#define IOC_MDC_GETSTRIPE       _IOWR(IOC_MDC_TYPE, 21, struct lov_mds_md *)
+
 #define O_LOV_DELAY_CREATE 0100000000  /* hopefully this does not conflict */
 
 #define LL_FILE_IGNORE_LOCK             0x00000001
diff --git a/lustre/install-sh b/lustre/install-sh
deleted file mode 100755 (executable)
index e9de238..0000000
+++ /dev/null
@@ -1,251 +0,0 @@
-#!/bin/sh
-#
-# install - install a program, script, or datafile
-# This comes from X11R5 (mit/util/scripts/install.sh).
-#
-# Copyright 1991 by the Massachusetts Institute of Technology
-#
-# Permission to use, copy, modify, distribute, and sell this software and its
-# documentation for any purpose is hereby granted without fee, provided that
-# the above copyright notice appear in all copies and that both that
-# copyright notice and this permission notice appear in supporting
-# documentation, and that the name of M.I.T. not be used in advertising or
-# publicity pertaining to distribution of the software without specific,
-# written prior permission.  M.I.T. makes no representations about the
-# suitability of this software for any purpose.  It is provided "as is"
-# without express or implied warranty.
-#
-# Calling this script install-sh is preferred over install.sh, to prevent
-# `make' implicit rules from creating a file called install from it
-# when there is no Makefile.
-#
-# This script is compatible with the BSD install script, but was written
-# from scratch.  It can only install one file at a time, a restriction
-# shared with many OS's install programs.
-
-
-# set DOITPROG to echo to test this script
-
-# Don't use :- since 4.3BSD and earlier shells don't like it.
-doit="${DOITPROG-}"
-
-
-# put in absolute paths if you don't have them in your path; or use env. vars.
-
-mvprog="${MVPROG-mv}"
-cpprog="${CPPROG-cp}"
-chmodprog="${CHMODPROG-chmod}"
-chownprog="${CHOWNPROG-chown}"
-chgrpprog="${CHGRPPROG-chgrp}"
-stripprog="${STRIPPROG-strip}"
-rmprog="${RMPROG-rm}"
-mkdirprog="${MKDIRPROG-mkdir}"
-
-transformbasename=""
-transform_arg=""
-instcmd="$mvprog"
-chmodcmd="$chmodprog 0755"
-chowncmd=""
-chgrpcmd=""
-stripcmd=""
-rmcmd="$rmprog -f"
-mvcmd="$mvprog"
-src=""
-dst=""
-dir_arg=""
-
-while [ x"$1" != x ]; do
-    case $1 in
-       -c) instcmd="$cpprog"
-           shift
-           continue;;
-
-       -d) dir_arg=true
-           shift
-           continue;;
-
-       -m) chmodcmd="$chmodprog $2"
-           shift
-           shift
-           continue;;
-
-       -o) chowncmd="$chownprog $2"
-           shift
-           shift
-           continue;;
-
-       -g) chgrpcmd="$chgrpprog $2"
-           shift
-           shift
-           continue;;
-
-       -s) stripcmd="$stripprog"
-           shift
-           continue;;
-
-       -t=*) transformarg=`echo $1 | sed 's/-t=//'`
-           shift
-           continue;;
-
-       -b=*) transformbasename=`echo $1 | sed 's/-b=//'`
-           shift
-           continue;;
-
-       *)  if [ x"$src" = x ]
-           then
-               src=$1
-           else
-               # this colon is to work around a 386BSD /bin/sh bug
-               :
-               dst=$1
-           fi
-           shift
-           continue;;
-    esac
-done
-
-if [ x"$src" = x ]
-then
-       echo "install:  no input file specified"
-       exit 1
-else
-       true
-fi
-
-if [ x"$dir_arg" != x ]; then
-       dst=$src
-       src=""
-       
-       if [ -d $dst ]; then
-               instcmd=:
-               chmodcmd=""
-       else
-               instcmd=mkdir
-       fi
-else
-
-# Waiting for this to be detected by the "$instcmd $src $dsttmp" command
-# might cause directories to be created, which would be especially bad 
-# if $src (and thus $dsttmp) contains '*'.
-
-       if [ -f $src -o -d $src ]
-       then
-               true
-       else
-               echo "install:  $src does not exist"
-               exit 1
-       fi
-       
-       if [ x"$dst" = x ]
-       then
-               echo "install:  no destination specified"
-               exit 1
-       else
-               true
-       fi
-
-# If destination is a directory, append the input filename; if your system
-# does not like double slashes in filenames, you may need to add some logic
-
-       if [ -d $dst ]
-       then
-               dst="$dst"/`basename $src`
-       else
-               true
-       fi
-fi
-
-## this sed command emulates the dirname command
-dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
-
-# Make sure that the destination directory exists.
-#  this part is taken from Noah Friedman's mkinstalldirs script
-
-# Skip lots of stat calls in the usual case.
-if [ ! -d "$dstdir" ]; then
-defaultIFS='   
-'
-IFS="${IFS-${defaultIFS}}"
-
-oIFS="${IFS}"
-# Some sh's can't handle IFS=/ for some reason.
-IFS='%'
-set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'`
-IFS="${oIFS}"
-
-pathcomp=''
-
-while [ $# -ne 0 ] ; do
-       pathcomp="${pathcomp}${1}"
-       shift
-
-       if [ ! -d "${pathcomp}" ] ;
-        then
-               $mkdirprog "${pathcomp}"
-       else
-               true
-       fi
-
-       pathcomp="${pathcomp}/"
-done
-fi
-
-if [ x"$dir_arg" != x ]
-then
-       $doit $instcmd $dst &&
-
-       if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi &&
-       if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi &&
-       if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi &&
-       if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi
-else
-
-# If we're going to rename the final executable, determine the name now.
-
-       if [ x"$transformarg" = x ] 
-       then
-               dstfile=`basename $dst`
-       else
-               dstfile=`basename $dst $transformbasename | 
-                       sed $transformarg`$transformbasename
-       fi
-
-# don't allow the sed command to completely eliminate the filename
-
-       if [ x"$dstfile" = x ] 
-       then
-               dstfile=`basename $dst`
-       else
-               true
-       fi
-
-# Make a temp file name in the proper directory.
-
-       dsttmp=$dstdir/#inst.$$#
-
-# Move or copy the file name to the temp name
-
-       $doit $instcmd $src $dsttmp &&
-
-       trap "rm -f ${dsttmp}" 0 &&
-
-# and set any options; do chmod last to preserve setuid bits
-
-# If any of these fail, we abort the whole thing.  If we want to
-# ignore errors from any of these, just make sure not to ignore
-# errors from the above "$doit $instcmd $src $dsttmp" command.
-
-       if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi &&
-       if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi &&
-       if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi &&
-       if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi &&
-
-# Now rename the file to the real destination.
-
-       $doit $rmcmd -f $dstdir/$dstfile &&
-       $doit $mvcmd $dsttmp $dstdir/$dstfile 
-
-fi &&
-
-
-exit 0
diff --git a/lustre/kernel_patches/kernel_configs/kernel-2.6.4-2.6-suse-i686-smp.config b/lustre/kernel_patches/kernel_configs/kernel-2.6.4-2.6-suse-i686-smp.config
new file mode 100644 (file)
index 0000000..8492557
--- /dev/null
@@ -0,0 +1,2784 @@
+#
+# Automatically generated make config: don't edit
+#
+CONFIG_X86=y
+CONFIG_MMU=y
+CONFIG_UID16=y
+CONFIG_GENERIC_ISA_DMA=y
+
+#
+# Code maturity level options
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_CLEAN_COMPILE=y
+# CONFIG_STANDALONE is not set
+
+#
+# General setup
+#
+CONFIG_SWAP=y
+CONFIG_SYSVIPC=y
+CONFIG_BSD_PROCESS_ACCT=y
+CONFIG_SYSCTL=y
+CONFIG_LOG_BUF_SHIFT=17
+CONFIG_HOTPLUG=y
+CONFIG_EVLOG=y
+# CONFIG_EVLOG_FWPRINTK is not set
+CONFIG_IKCONFIG=y
+CONFIG_IKCONFIG_PROC=y
+# CONFIG_EMBEDDED is not set
+CONFIG_DELAY_ACCT=y
+CONFIG_KALLSYMS=y
+CONFIG_FUTEX=y
+CONFIG_EPOLL=y
+CONFIG_IOSCHED_NOOP=y
+CONFIG_IOSCHED_AS=y
+CONFIG_IOSCHED_DEADLINE=y
+CONFIG_IOSCHED_CFQ=y
+# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
+
+#
+# Loadable module support
+#
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+CONFIG_MODULE_FORCE_UNLOAD=y
+CONFIG_OBSOLETE_MODPARM=y
+CONFIG_MODVERSIONS=y
+CONFIG_KMOD=y
+CONFIG_STOP_MACHINE=y
+CONFIG_CKRM=y
+CONFIG_CKRM_RES_DUMMY=m
+CONFIG_CKRM_RES_SOCKETAQ=m
+
+#
+# Processor type and features
+#
+# CONFIG_X86_PC is not set
+# CONFIG_X86_ELAN is not set
+# CONFIG_X86_VOYAGER is not set
+# CONFIG_X86_NUMAQ is not set
+# CONFIG_X86_SUMMIT is not set
+# CONFIG_X86_BIGSMP is not set
+# CONFIG_X86_VISWS is not set
+CONFIG_X86_GENERICARCH=y
+# CONFIG_X86_ES7000 is not set
+CONFIG_X86_CYCLONE_TIMER=y
+# CONFIG_M386 is not set
+# CONFIG_M486 is not set
+# CONFIG_M586 is not set
+# CONFIG_M586TSC is not set
+# CONFIG_M586MMX is not set
+CONFIG_M686=y
+# CONFIG_MPENTIUMII is not set
+# CONFIG_MPENTIUMIII is not set
+# CONFIG_MPENTIUMM is not set
+# CONFIG_MPENTIUM4 is not set
+# CONFIG_MK6 is not set
+# CONFIG_MK7 is not set
+# CONFIG_MK8 is not set
+# CONFIG_MCRUSOE is not set
+# CONFIG_MWINCHIPC6 is not set
+# CONFIG_MWINCHIP2 is not set
+# CONFIG_MWINCHIP3D is not set
+# CONFIG_MCYRIXIII is not set
+# CONFIG_MVIAC3_2 is not set
+CONFIG_X86_GENERIC=y
+CONFIG_X86_CMPXCHG=y
+CONFIG_X86_XADD=y
+CONFIG_X86_L1_CACHE_SHIFT=7
+CONFIG_RWSEM_XCHGADD_ALGORITHM=y
+CONFIG_X86_PPRO_FENCE=y
+CONFIG_X86_WP_WORKS_OK=y
+CONFIG_X86_INVLPG=y
+CONFIG_X86_BSWAP=y
+CONFIG_X86_POPAD_OK=y
+CONFIG_X86_GOOD_APIC=y
+CONFIG_X86_INTEL_USERCOPY=y
+CONFIG_X86_USE_PPRO_CHECKSUM=y
+# CONFIG_HPET_TIMER is not set
+# CONFIG_HPET_EMULATE_RTC is not set
+CONFIG_SMP=y
+CONFIG_NR_CPUS=32
+# CONFIG_PREEMPT is not set
+CONFIG_X86_LOCAL_APIC=y
+CONFIG_X86_IO_APIC=y
+CONFIG_X86_TSC=y
+CONFIG_X86_MCE=y
+# CONFIG_X86_MCE_NONFATAL is not set
+CONFIG_X86_MCE_P4THERMAL=y
+CONFIG_TOSHIBA=m
+CONFIG_I8K=m
+CONFIG_MICROCODE=m
+CONFIG_X86_MSR=m
+CONFIG_X86_CPUID=m
+
+#
+# Firmware Drivers
+#
+CONFIG_EDD=m
+# CONFIG_NOHIGHMEM is not set
+# CONFIG_HIGHMEM4G is not set
+CONFIG_HIGHMEM64G=y
+CONFIG_HIGHMEM=y
+CONFIG_X86_PAE=y
+# CONFIG_NUMA is not set
+CONFIG_HIGHPTE=y
+# CONFIG_MATH_EMULATION is not set
+CONFIG_MTRR=y
+CONFIG_EFI=y
+CONFIG_IRQBALANCE=y
+CONFIG_HAVE_DEC_LOCK=y
+CONFIG_BOOT_IOREMAP=y
+CONFIG_REGPARM=y
+
+#
+# Special options
+#
+CONFIG_PROC_MM=y
+
+#
+# Power management options (ACPI, APM)
+#
+CONFIG_PM=y
+# CONFIG_SOFTWARE_SUSPEND is not set
+CONFIG_PM_DISK=y
+CONFIG_PM_DISK_PARTITION=""
+
+#
+# ACPI (Advanced Configuration and Power Interface) Support
+#
+CONFIG_ACPI=y
+CONFIG_ACPI_BOOT=y
+CONFIG_ACPI_INTERPRETER=y
+CONFIG_ACPI_SLEEP=y
+CONFIG_ACPI_SLEEP_PROC_FS=y
+CONFIG_ACPI_AC=m
+CONFIG_ACPI_BATTERY=m
+CONFIG_ACPI_BUTTON=m
+CONFIG_ACPI_FAN=m
+CONFIG_ACPI_PROCESSOR=m
+CONFIG_ACPI_THERMAL=m
+# CONFIG_ACPI_ASUS is not set
+CONFIG_ACPI_TOSHIBA=m
+# CONFIG_ACPI_DEBUG is not set
+CONFIG_ACPI_BUS=y
+CONFIG_ACPI_EC=y
+CONFIG_ACPI_POWER=y
+CONFIG_ACPI_PCI=y
+CONFIG_ACPI_SYSTEM=y
+CONFIG_X86_PM_TIMER=y
+CONFIG_ACPI_INITRD=y
+
+#
+# APM (Advanced Power Management) BIOS Support
+#
+CONFIG_APM=y
+# CONFIG_APM_IGNORE_USER_SUSPEND is not set
+CONFIG_APM_DO_ENABLE=y
+# CONFIG_APM_CPU_IDLE is not set
+CONFIG_APM_DISPLAY_BLANK=y
+# CONFIG_APM_RTC_IS_GMT is not set
+CONFIG_APM_ALLOW_INTS=y
+# CONFIG_APM_REAL_MODE_POWER_OFF is not set
+
+#
+# CPU Frequency scaling
+#
+CONFIG_CPU_FREQ=y
+CONFIG_CPU_FREQ_PROC_INTF=y
+CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
+# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
+CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
+CONFIG_CPU_FREQ_GOV_POWERSAVE=m
+CONFIG_CPU_FREQ_GOV_USERSPACE=m
+# CONFIG_CPU_FREQ_24_API is not set
+CONFIG_CPU_FREQ_TABLE=m
+
+#
+# CPUFreq processor drivers
+#
+CONFIG_X86_ACPI_CPUFREQ=m
+# CONFIG_X86_ACPI_CPUFREQ_PROC_INTF is not set
+CONFIG_X86_POWERNOW_K6=m
+CONFIG_X86_POWERNOW_K7=m
+CONFIG_X86_POWERNOW_K8=m
+CONFIG_X86_POWERNOW_K8_ACPI=y
+CONFIG_X86_GX_SUSPMOD=m
+CONFIG_X86_SPEEDSTEP_CENTRINO=m
+CONFIG_X86_SPEEDSTEP_ICH=m
+CONFIG_X86_SPEEDSTEP_SMI=m
+CONFIG_X86_P4_CLOCKMOD=m
+CONFIG_X86_SPEEDSTEP_LIB=m
+CONFIG_X86_LONGRUN=m
+CONFIG_X86_LONGHAUL=m
+
+#
+# Bus options (PCI, PCMCIA, EISA, MCA, ISA)
+#
+CONFIG_PCI=y
+# CONFIG_PCI_GOBIOS is not set
+# CONFIG_PCI_GOMMCONFIG is not set
+# CONFIG_PCI_GODIRECT is not set
+CONFIG_PCI_GOANY=y
+CONFIG_PCI_BIOS=y
+CONFIG_PCI_DIRECT=y
+CONFIG_PCI_MMCONFIG=y
+CONFIG_PCI_USE_VECTOR=y
+# CONFIG_PCI_LEGACY_PROC is not set
+CONFIG_PCI_NAMES=y
+CONFIG_ISA=y
+# CONFIG_EISA is not set
+# CONFIG_MCA is not set
+CONFIG_SCx200=m
+
+#
+# PCMCIA/CardBus support
+#
+CONFIG_PCMCIA=m
+# CONFIG_PCMCIA_DEBUG is not set
+CONFIG_YENTA=m
+CONFIG_CARDBUS=y
+CONFIG_I82092=m
+CONFIG_I82365=m
+CONFIG_TCIC=m
+CONFIG_PCMCIA_PROBE=y
+
+#
+# PCI Hotplug Support
+#
+CONFIG_HOTPLUG_PCI=m
+CONFIG_HOTPLUG_PCI_FAKE=m
+CONFIG_HOTPLUG_PCI_COMPAQ=m
+CONFIG_HOTPLUG_PCI_COMPAQ_NVRAM=y
+CONFIG_HOTPLUG_PCI_IBM=m
+CONFIG_HOTPLUG_PCI_ACPI=m
+CONFIG_HOTPLUG_PCI_CPCI=y
+CONFIG_HOTPLUG_PCI_CPCI_ZT5550=m
+CONFIG_HOTPLUG_PCI_CPCI_GENERIC=m
+CONFIG_HOTPLUG_PCI_PCIE=m
+# CONFIG_HOTPLUG_PCI_PCIE_POLL_EVENT_MODE is not set
+# CONFIG_HOTPLUG_PCI_SHPC is not set
+
+#
+# Executable file formats
+#
+CONFIG_BINFMT_ELF=y
+CONFIG_BINFMT_AOUT=m
+CONFIG_BINFMT_MISC=m
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_FW_LOADER=m
+# CONFIG_DEBUG_DRIVER is not set
+
+#
+# Memory Technology Devices (MTD)
+#
+CONFIG_MTD=m
+# CONFIG_MTD_DEBUG is not set
+CONFIG_MTD_PARTITIONS=m
+CONFIG_MTD_CONCAT=m
+CONFIG_MTD_REDBOOT_PARTS=m
+CONFIG_MTD_CMDLINE_PARTS=m
+
+#
+# User Modules And Translation Layers
+#
+CONFIG_MTD_CHAR=m
+CONFIG_MTD_BLOCK=m
+# CONFIG_MTD_BLOCK_RO is not set
+CONFIG_FTL=m
+# CONFIG_NFTL is not set
+CONFIG_INFTL=m
+
+#
+# RAM/ROM/Flash chip drivers
+#
+CONFIG_MTD_CFI=m
+CONFIG_MTD_JEDECPROBE=m
+CONFIG_MTD_GEN_PROBE=m
+CONFIG_MTD_CFI_ADV_OPTIONS=y
+CONFIG_MTD_CFI_NOSWAP=y
+# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
+# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
+# CONFIG_MTD_CFI_GEOMETRY is not set
+CONFIG_MTD_CFI_INTELEXT=m
+CONFIG_MTD_CFI_AMDSTD=m
+CONFIG_MTD_CFI_STAA=m
+# CONFIG_MTD_RAM is not set
+# CONFIG_MTD_ROM is not set
+CONFIG_MTD_ABSENT=m
+CONFIG_MTD_OBSOLETE_CHIPS=y
+CONFIG_MTD_AMDSTD=m
+CONFIG_MTD_SHARP=m
+CONFIG_MTD_JEDEC=m
+
+#
+# Mapping drivers for chip access
+#
+CONFIG_MTD_COMPLEX_MAPPINGS=y
+CONFIG_MTD_PHYSMAP=m
+CONFIG_MTD_PHYSMAP_START=0x8000000
+CONFIG_MTD_PHYSMAP_LEN=0x4000000
+CONFIG_MTD_PHYSMAP_BUSWIDTH=2
+CONFIG_MTD_PNC2000=m
+CONFIG_MTD_SC520CDP=m
+CONFIG_MTD_NETSC520=m
+CONFIG_MTD_SBC_GXX=m
+CONFIG_MTD_ELAN_104NC=m
+CONFIG_MTD_OCTAGON=m
+CONFIG_MTD_VMAX=m
+CONFIG_MTD_SCx200_DOCFLASH=m
+CONFIG_MTD_AMD76XROM=m
+CONFIG_MTD_ICH2ROM=m
+CONFIG_MTD_SCB2_FLASH=m
+CONFIG_MTD_NETtel=m
+CONFIG_MTD_DILNETPC=m
+CONFIG_MTD_DILNETPC_BOOTSIZE=0x80000
+CONFIG_MTD_L440GX=m
+CONFIG_MTD_PCI=m
+
+#
+# Self-contained MTD device drivers
+#
+CONFIG_MTD_PMC551=m
+CONFIG_MTD_PMC551_BUGFIX=y
+# CONFIG_MTD_PMC551_DEBUG is not set
+CONFIG_MTD_SLRAM=m
+CONFIG_MTD_MTDRAM=m
+CONFIG_MTDRAM_TOTAL_SIZE=4096
+CONFIG_MTDRAM_ERASE_SIZE=128
+CONFIG_MTD_BLKMTD=m
+
+#
+# Disk-On-Chip Device Drivers
+#
+CONFIG_MTD_DOC2000=m
+CONFIG_MTD_DOC2001=m
+CONFIG_MTD_DOC2001PLUS=m
+CONFIG_MTD_DOCPROBE=m
+CONFIG_MTD_DOCPROBE_ADVANCED=y
+CONFIG_MTD_DOCPROBE_ADDRESS=0x0000
+CONFIG_MTD_DOCPROBE_HIGH=y
+CONFIG_MTD_DOCPROBE_55AA=y
+
+#
+# NAND Flash Device Drivers
+#
+CONFIG_MTD_NAND=m
+# CONFIG_MTD_NAND_VERIFY_WRITE is not set
+CONFIG_MTD_NAND_IDS=m
+
+#
+# Parallel port support
+#
+CONFIG_PARPORT=m
+CONFIG_PARPORT_PC=m
+CONFIG_PARPORT_PC_CML1=m
+CONFIG_PARPORT_SERIAL=m
+CONFIG_PARPORT_PC_FIFO=y
+CONFIG_PARPORT_PC_SUPERIO=y
+CONFIG_PARPORT_PC_PCMCIA=m
+CONFIG_PARPORT_OTHER=y
+CONFIG_PARPORT_1284=y
+
+#
+# Plug and Play support
+#
+CONFIG_PNP=y
+# CONFIG_PNP_DEBUG is not set
+
+#
+# Protocols
+#
+CONFIG_ISAPNP=y
+CONFIG_PNPBIOS=y
+CONFIG_PNPBIOS_PROC_FS=y
+
+#
+# Block devices
+#
+CONFIG_BLK_DEV_FD=y
+CONFIG_BLK_DEV_XD=m
+CONFIG_PARIDE=m
+CONFIG_PARIDE_PARPORT=m
+
+#
+# Parallel IDE high-level drivers
+#
+CONFIG_PARIDE_PD=m
+CONFIG_PARIDE_PCD=m
+CONFIG_PARIDE_PF=m
+CONFIG_PARIDE_PT=m
+CONFIG_PARIDE_PG=m
+
+#
+# Parallel IDE protocol modules
+#
+CONFIG_PARIDE_ATEN=m
+CONFIG_PARIDE_BPCK=m
+CONFIG_PARIDE_BPCK6=m
+CONFIG_PARIDE_COMM=m
+CONFIG_PARIDE_DSTR=m
+CONFIG_PARIDE_FIT2=m
+CONFIG_PARIDE_FIT3=m
+CONFIG_PARIDE_EPAT=m
+CONFIG_PARIDE_EPATC8=y
+CONFIG_PARIDE_EPIA=m
+CONFIG_PARIDE_FRIQ=m
+CONFIG_PARIDE_FRPW=m
+CONFIG_PARIDE_KBIC=m
+CONFIG_PARIDE_KTTI=m
+CONFIG_PARIDE_ON20=m
+CONFIG_PARIDE_ON26=m
+CONFIG_BLK_CPQ_DA=m
+CONFIG_BLK_CPQ_CISS_DA=m
+CONFIG_CISS_SCSI_TAPE=y
+CONFIG_BLK_DEV_DAC960=m
+CONFIG_BLK_DEV_UMEM=m
+CONFIG_BLK_DEV_LOOP=y
+CONFIG_BLK_DEV_CRYPTOLOOP=m
+CONFIG_BLK_DEV_NBD=m
+CONFIG_BLK_DEV_CARMEL=m
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_SIZE=64000
+CONFIG_BLK_DEV_INITRD=y
+CONFIG_LBD=y
+CONFIG_CIPHER_TWOFISH=m
+
+#
+# ATA/ATAPI/MFM/RLL support
+#
+CONFIG_IDE=y
+CONFIG_BLK_DEV_IDE=y
+
+#
+# Please see Documentation/ide.txt for help/info on IDE drives
+#
+# CONFIG_BLK_DEV_HD_IDE is not set
+CONFIG_BLK_DEV_IDEDISK=y
+CONFIG_IDEDISK_MULTI_MODE=y
+CONFIG_IDEDISK_STROKE=y
+CONFIG_BLK_DEV_IDECS=m
+CONFIG_BLK_DEV_IDECD=m
+CONFIG_BLK_DEV_IDETAPE=m
+CONFIG_BLK_DEV_IDEFLOPPY=y
+CONFIG_BLK_DEV_IDESCSI=m
+# CONFIG_IDE_TASK_IOCTL is not set
+# CONFIG_IDE_TASKFILE_IO is not set
+
+#
+# IDE chipset support/bugfixes
+#
+CONFIG_IDE_GENERIC=y
+CONFIG_BLK_DEV_CMD640=y
+CONFIG_BLK_DEV_CMD640_ENHANCED=y
+CONFIG_BLK_DEV_IDEPNP=y
+CONFIG_BLK_DEV_IDEPCI=y
+CONFIG_IDEPCI_SHARE_IRQ=y
+CONFIG_BLK_DEV_OFFBOARD=y
+CONFIG_BLK_DEV_GENERIC=y
+# CONFIG_BLK_DEV_OPTI621 is not set
+CONFIG_BLK_DEV_RZ1000=y
+CONFIG_BLK_DEV_IDEDMA_PCI=y
+# CONFIG_BLK_DEV_IDEDMA_FORCED is not set
+CONFIG_IDEDMA_PCI_AUTO=y
+CONFIG_IDEDMA_ONLYDISK=y
+CONFIG_BLK_DEV_ADMA=y
+CONFIG_BLK_DEV_AEC62XX=y
+CONFIG_BLK_DEV_ALI15X3=y
+# CONFIG_WDC_ALI15X3 is not set
+CONFIG_BLK_DEV_AMD74XX=y
+CONFIG_BLK_DEV_ATIIXP=y
+CONFIG_BLK_DEV_CMD64X=y
+CONFIG_BLK_DEV_TRIFLEX=y
+CONFIG_BLK_DEV_CY82C693=y
+CONFIG_BLK_DEV_CS5520=m
+CONFIG_BLK_DEV_CS5530=m
+CONFIG_BLK_DEV_HPT34X=y
+CONFIG_HPT34X_AUTODMA=y
+CONFIG_BLK_DEV_HPT366=y
+CONFIG_BLK_DEV_SC1200=y
+CONFIG_BLK_DEV_PIIX=y
+CONFIG_BLK_DEV_NS87415=y
+CONFIG_BLK_DEV_PDC202XX_OLD=y
+CONFIG_PDC202XX_BURST=y
+CONFIG_BLK_DEV_PDC202XX_NEW=y
+CONFIG_PDC202XX_FORCE=y
+CONFIG_BLK_DEV_SVWKS=y
+CONFIG_BLK_DEV_SIIMAGE=y
+CONFIG_BLK_DEV_SIS5513=y
+CONFIG_BLK_DEV_SLC90E66=y
+# CONFIG_BLK_DEV_TRM290 is not set
+CONFIG_BLK_DEV_VIA82CXXX=y
+CONFIG_IDE_CHIPSETS=y
+
+#
+# Note: most of these also require special kernel boot parameters
+#
+CONFIG_BLK_DEV_4DRIVES=y
+CONFIG_BLK_DEV_ALI14XX=y
+CONFIG_BLK_DEV_DTC2278=y
+CONFIG_BLK_DEV_HT6560B=y
+# CONFIG_BLK_DEV_PDC4030 is not set
+CONFIG_BLK_DEV_QD65XX=y
+CONFIG_BLK_DEV_UMC8672=y
+CONFIG_BLK_DEV_IDEDMA=y
+# CONFIG_IDEDMA_IVB is not set
+CONFIG_IDEDMA_AUTO=y
+# CONFIG_BLK_DEV_HD is not set
+
+#
+# SCSI device support
+#
+CONFIG_SCSI=m
+CONFIG_SCSI_PROC_FS=y
+
+#
+# SCSI support type (disk, tape, CD-ROM)
+#
+CONFIG_BLK_DEV_SD=m
+CONFIG_CHR_DEV_ST=m
+CONFIG_CHR_DEV_OSST=m
+CONFIG_BLK_DEV_SR=m
+# CONFIG_BLK_DEV_SR_VENDOR is not set
+CONFIG_CHR_DEV_SG=m
+CONFIG_CHR_DEV_SCH=m
+
+#
+# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
+#
+CONFIG_SCSI_MULTI_LUN=y
+CONFIG_SCSI_REPORT_LUNS=y
+CONFIG_SCSI_CONSTANTS=y
+CONFIG_SCSI_LOGGING=y
+
+#
+# SCSI Transport Attributes
+#
+CONFIG_SCSI_SPI_ATTRS=m
+CONFIG_SCSI_FC_ATTRS=m
+
+#
+# SCSI low-level drivers
+#
+CONFIG_BLK_DEV_3W_XXXX_RAID=m
+CONFIG_SCSI_7000FASST=m
+CONFIG_SCSI_ACARD=m
+CONFIG_SCSI_AHA152X=m
+CONFIG_SCSI_AHA1542=m
+CONFIG_SCSI_AACRAID=m
+CONFIG_SCSI_AIC7XXX=m
+CONFIG_AIC7XXX_CMDS_PER_DEVICE=32
+CONFIG_AIC7XXX_RESET_DELAY_MS=5000
+# CONFIG_AIC7XXX_BUILD_FIRMWARE is not set
+# CONFIG_AIC7XXX_DEBUG_ENABLE is not set
+CONFIG_AIC7XXX_DEBUG_MASK=0
+CONFIG_AIC7XXX_REG_PRETTY_PRINT=y
+CONFIG_SCSI_AIC7XXX_OLD=m
+CONFIG_SCSI_AIC79XX=m
+CONFIG_AIC79XX_CMDS_PER_DEVICE=32
+CONFIG_AIC79XX_RESET_DELAY_MS=15000
+# CONFIG_AIC79XX_BUILD_FIRMWARE is not set
+# CONFIG_AIC79XX_ENABLE_RD_STRM is not set
+# CONFIG_AIC79XX_DEBUG_ENABLE is not set
+CONFIG_AIC79XX_DEBUG_MASK=0
+CONFIG_AIC79XX_REG_PRETTY_PRINT=y
+CONFIG_SCSI_ADVANSYS=m
+CONFIG_SCSI_IN2000=m
+CONFIG_SCSI_MEGARAID=m
+CONFIG_SCSI_SATA=y
+CONFIG_SCSI_SATA_SVW=m
+CONFIG_SCSI_ATA_PIIX=m
+CONFIG_SCSI_SATA_PROMISE=m
+CONFIG_SCSI_SATA_SIL=m
+CONFIG_SCSI_SATA_SIS=m
+CONFIG_SCSI_SATA_VIA=m
+CONFIG_SCSI_SATA_VITESSE=m
+CONFIG_SCSI_BUSLOGIC=m
+# CONFIG_SCSI_OMIT_FLASHPOINT is not set
+# CONFIG_SCSI_CPQFCTS is not set
+CONFIG_SCSI_DMX3191D=m
+CONFIG_SCSI_DTC3280=m
+CONFIG_SCSI_EATA=m
+CONFIG_SCSI_EATA_TAGGED_QUEUE=y
+CONFIG_SCSI_EATA_LINKED_COMMANDS=y
+CONFIG_SCSI_EATA_MAX_TAGS=16
+CONFIG_SCSI_EATA_PIO=m
+CONFIG_SCSI_FUTURE_DOMAIN=m
+CONFIG_SCSI_GDTH=m
+CONFIG_SCSI_GENERIC_NCR5380=m
+CONFIG_SCSI_GENERIC_NCR5380_MMIO=m
+CONFIG_SCSI_GENERIC_NCR53C400=y
+CONFIG_SCSI_IPS=m
+# CONFIG_SCSI_INIA100 is not set
+CONFIG_SCSI_PPA=m
+CONFIG_SCSI_IMM=m
+# CONFIG_SCSI_IZIP_EPP16 is not set
+# CONFIG_SCSI_IZIP_SLOW_CTR is not set
+CONFIG_SCSI_NCR53C406A=m
+CONFIG_SCSI_SYM53C8XX_2=m
+CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1
+CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16
+CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64
+# CONFIG_SCSI_SYM53C8XX_IOMAPPED is not set
+CONFIG_SCSI_LPFC=m
+CONFIG_SCSI_IPR=m
+CONFIG_SCSI_IPR_TRACE=y
+CONFIG_SCSI_IPR_DUMP=y
+CONFIG_SCSI_PAS16=m
+CONFIG_SCSI_PSI240I=m
+CONFIG_SCSI_QLOGIC_FAS=m
+CONFIG_SCSI_QLOGIC_ISP=m
+CONFIG_SCSI_QLOGIC_FC=m
+CONFIG_SCSI_QLOGIC_FC_FIRMWARE=y
+CONFIG_SCSI_QLOGIC_1280=m
+CONFIG_SCSI_QLA2XXX=m
+CONFIG_SCSI_QLA21XX=m
+CONFIG_SCSI_QLA22XX=m
+CONFIG_SCSI_QLA2300=m
+CONFIG_SCSI_QLA2322=m
+CONFIG_SCSI_QLA6312=m
+CONFIG_SCSI_QLA6322=m
+CONFIG_SCSI_QLA2XXX_FAILOVER=y
+CONFIG_SCSI_SYM53C416=m
+CONFIG_SCSI_DC395x=m
+CONFIG_SCSI_DC390T=m
+CONFIG_SCSI_T128=m
+CONFIG_SCSI_U14_34F=m
+CONFIG_SCSI_U14_34F_TAGGED_QUEUE=y
+CONFIG_SCSI_U14_34F_LINKED_COMMANDS=y
+CONFIG_SCSI_U14_34F_MAX_TAGS=8
+CONFIG_SCSI_ULTRASTOR=m
+CONFIG_SCSI_NSP32=m
+CONFIG_SCSI_DEBUG=m
+
+#
+# PCMCIA SCSI adapter support
+#
+CONFIG_PCMCIA_AHA152X=m
+CONFIG_PCMCIA_FDOMAIN=m
+CONFIG_PCMCIA_NINJA_SCSI=m
+CONFIG_PCMCIA_QLOGIC=m
+
+#
+# Old CD-ROM drivers (not SCSI, not IDE)
+#
+CONFIG_CD_NO_IDESCSI=y
+CONFIG_AZTCD=m
+CONFIG_GSCD=m
+CONFIG_MCD=m
+CONFIG_MCD_IRQ=11
+CONFIG_MCD_BASE=0x300
+CONFIG_MCDX=m
+CONFIG_OPTCD=m
+CONFIG_SJCD=m
+CONFIG_ISP16_CDI=m
+CONFIG_CDU535=m
+
+#
+# Multi-device support (RAID and LVM)
+#
+CONFIG_MD=y
+CONFIG_BLK_DEV_MD=y
+CONFIG_MD_LINEAR=m
+CONFIG_MD_RAID0=m
+CONFIG_MD_RAID1=m
+CONFIG_MD_RAID5=m
+CONFIG_MD_RAID6=m
+CONFIG_MD_MULTIPATH=m
+CONFIG_BLK_DEV_DM=m
+CONFIG_DM_CRYPT=m
+CONFIG_DM_MULTIPATH=m
+CONFIG_DM_SNAPSHOT=m
+CONFIG_DM_MIRROR=m
+CONFIG_DM_ZERO=m
+CONFIG_DM_FLAKEY=m
+
+#
+# Fusion MPT device support
+#
+CONFIG_FUSION=m
+CONFIG_FUSION_MAX_SGE=40
+CONFIG_FUSION_ISENSE=m
+CONFIG_FUSION_CTL=m
+CONFIG_FUSION_LAN=m
+
+#
+# IEEE 1394 (FireWire) support
+#
+CONFIG_IEEE1394=m
+
+#
+# Subsystem Options
+#
+# CONFIG_IEEE1394_VERBOSEDEBUG is not set
+# CONFIG_IEEE1394_OUI_DB is not set
+CONFIG_IEEE1394_EXTRA_CONFIG_ROMS=y
+CONFIG_IEEE1394_CONFIG_ROM_IP1394=y
+
+#
+# Device Drivers
+#
+CONFIG_IEEE1394_PCILYNX=m
+CONFIG_IEEE1394_OHCI1394=m
+
+#
+# Protocol Drivers
+#
+CONFIG_IEEE1394_VIDEO1394=m
+CONFIG_IEEE1394_SBP2=m
+# CONFIG_IEEE1394_SBP2_PHYS_DMA is not set
+CONFIG_IEEE1394_ETH1394=m
+CONFIG_IEEE1394_DV1394=m
+CONFIG_IEEE1394_RAWIO=m
+CONFIG_IEEE1394_CMP=m
+CONFIG_IEEE1394_AMDTP=m
+
+#
+# I2O device support
+#
+CONFIG_I2O=m
+CONFIG_I2O_PCI=m
+CONFIG_I2O_BLOCK=m
+CONFIG_I2O_SCSI=m
+CONFIG_I2O_PROC=m
+
+#
+# Networking support
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+CONFIG_PACKET=m
+CONFIG_PACKET_MMAP=y
+CONFIG_NETLINK_DEV=m
+CONFIG_UNIX=y
+CONFIG_NET_KEY=m
+CONFIG_INET=y
+CONFIG_IP_MULTICAST=y
+CONFIG_IP_ADVANCED_ROUTER=y
+CONFIG_IP_MULTIPLE_TABLES=y
+CONFIG_IP_ROUTE_FWMARK=y
+CONFIG_IP_ROUTE_NAT=y
+CONFIG_IP_ROUTE_MULTIPATH=y
+CONFIG_IP_ROUTE_TOS=y
+CONFIG_IP_ROUTE_VERBOSE=y
+# CONFIG_IP_PNP is not set
+CONFIG_NET_IPIP=m
+CONFIG_NET_IPGRE=m
+CONFIG_NET_IPGRE_BROADCAST=y
+CONFIG_IP_MROUTE=y
+CONFIG_IP_PIMSM_V1=y
+CONFIG_IP_PIMSM_V2=y
+# CONFIG_ARPD is not set
+CONFIG_SYN_COOKIES=y
+CONFIG_INET_AH=m
+CONFIG_INET_ESP=m
+CONFIG_INET_IPCOMP=m
+
+#
+# IP: Virtual Server Configuration
+#
+CONFIG_IP_VS=m
+# CONFIG_IP_VS_DEBUG is not set
+CONFIG_IP_VS_TAB_BITS=12
+
+#
+# IPVS transport protocol load balancing support
+#
+CONFIG_IP_VS_PROTO_TCP=y
+CONFIG_IP_VS_PROTO_UDP=y
+CONFIG_IP_VS_PROTO_ESP=y
+CONFIG_IP_VS_PROTO_AH=y
+
+#
+# IPVS scheduler
+#
+CONFIG_IP_VS_RR=m
+CONFIG_IP_VS_WRR=m
+CONFIG_IP_VS_LC=m
+CONFIG_IP_VS_WLC=m
+CONFIG_IP_VS_LBLC=m
+CONFIG_IP_VS_LBLCR=m
+CONFIG_IP_VS_DH=m
+CONFIG_IP_VS_SH=m
+CONFIG_IP_VS_SED=m
+CONFIG_IP_VS_NQ=m
+
+#
+# IPVS application helper
+#
+CONFIG_IP_VS_FTP=m
+CONFIG_IPV6=m
+CONFIG_IPV6_SUBTREES=y
+CONFIG_IPV6_PRIVACY=y
+CONFIG_IPV6_NDISC_NEW=y
+CONFIG_INET6_AH=m
+CONFIG_INET6_ESP=m
+CONFIG_INET6_IPCOMP=m
+CONFIG_IPV6_TUNNEL=m
+
+#
+# MOBILE IPv6 (EXPERIMENTAL)
+#
+CONFIG_IPV6_MOBILITY=m
+CONFIG_IPV6_MOBILITY_MN=m
+CONFIG_IPV6_MOBILITY_HA=m
+# CONFIG_IPV6_MOBILITY_DEBUG is not set
+CONFIG_DECNET=m
+CONFIG_DECNET_SIOCGIFCONF=y
+# CONFIG_DECNET_ROUTER is not set
+CONFIG_BRIDGE=m
+CONFIG_NETFILTER=y
+# CONFIG_NETFILTER_DEBUG is not set
+CONFIG_BRIDGE_NETFILTER=y
+
+#
+# IP: Netfilter Configuration
+#
+CONFIG_IP_NF_CONNTRACK=m
+CONFIG_IP_NF_FTP=m
+CONFIG_IP_NF_IRC=m
+CONFIG_IP_NF_TFTP=m
+CONFIG_IP_NF_AMANDA=m
+CONFIG_IP_NF_QUEUE=m
+CONFIG_IP_NF_IPTABLES=m
+CONFIG_IP_NF_MATCH_LIMIT=m
+CONFIG_IP_NF_MATCH_IPRANGE=m
+CONFIG_IP_NF_MATCH_MAC=m
+CONFIG_IP_NF_MATCH_PKTTYPE=m
+CONFIG_IP_NF_MATCH_MARK=m
+CONFIG_IP_NF_MATCH_MULTIPORT=m
+CONFIG_IP_NF_MATCH_TOS=m
+CONFIG_IP_NF_MATCH_RECENT=m
+CONFIG_IP_NF_MATCH_ECN=m
+CONFIG_IP_NF_MATCH_DSCP=m
+CONFIG_IP_NF_MATCH_AH_ESP=m
+CONFIG_IP_NF_MATCH_LENGTH=m
+CONFIG_IP_NF_MATCH_TTL=m
+CONFIG_IP_NF_MATCH_TCPMSS=m
+CONFIG_IP_NF_MATCH_HELPER=m
+CONFIG_IP_NF_MATCH_STATE=m
+CONFIG_IP_NF_MATCH_CONNTRACK=m
+CONFIG_IP_NF_MATCH_OWNER=m
+CONFIG_IP_NF_MATCH_PHYSDEV=m
+CONFIG_IP_NF_FILTER=m
+CONFIG_IP_NF_TARGET_REJECT=m
+CONFIG_IP_NF_NAT=m
+CONFIG_IP_NF_NAT_NEEDED=y
+CONFIG_IP_NF_TARGET_MASQUERADE=m
+CONFIG_IP_NF_TARGET_REDIRECT=m
+CONFIG_IP_NF_TARGET_NETMAP=m
+CONFIG_IP_NF_TARGET_SAME=m
+# CONFIG_IP_NF_NAT_LOCAL is not set
+CONFIG_IP_NF_NAT_SNMP_BASIC=m
+CONFIG_IP_NF_NAT_IRC=m
+CONFIG_IP_NF_NAT_FTP=m
+CONFIG_IP_NF_NAT_TFTP=m
+CONFIG_IP_NF_NAT_AMANDA=m
+CONFIG_IP_NF_MANGLE=m
+CONFIG_IP_NF_TARGET_TOS=m
+CONFIG_IP_NF_TARGET_ECN=m
+CONFIG_IP_NF_TARGET_DSCP=m
+CONFIG_IP_NF_TARGET_MARK=m
+CONFIG_IP_NF_TARGET_CLASSIFY=m
+CONFIG_IP_NF_TARGET_LOG=m
+CONFIG_IP_NF_TARGET_ULOG=m
+CONFIG_IP_NF_TARGET_TCPMSS=m
+CONFIG_IP_NF_ARPTABLES=m
+CONFIG_IP_NF_ARPFILTER=m
+CONFIG_IP_NF_ARP_MANGLE=m
+CONFIG_IP_NF_COMPAT_IPCHAINS=m
+CONFIG_IP_NF_COMPAT_IPFWADM=m
+
+#
+# IPv6: Netfilter Configuration
+#
+CONFIG_IP6_NF_FTP=m
+CONFIG_IP6_NF_QUEUE=m
+CONFIG_IP6_NF_IPTABLES=m
+CONFIG_IP6_NF_MATCH_LIMIT=m
+CONFIG_IP6_NF_MATCH_MAC=m
+CONFIG_IP6_NF_MATCH_RT=m
+CONFIG_IP6_NF_MATCH_OPTS=m
+CONFIG_IP6_NF_MATCH_FRAG=m
+CONFIG_IP6_NF_MATCH_HL=m
+CONFIG_IP6_NF_MATCH_MULTIPORT=m
+CONFIG_IP6_NF_MATCH_OWNER=m
+CONFIG_IP6_NF_MATCH_MARK=m
+CONFIG_IP6_NF_MATCH_IPV6HEADER=m
+CONFIG_IP6_NF_MATCH_AHESP=m
+CONFIG_IP6_NF_MATCH_LENGTH=m
+CONFIG_IP6_NF_MATCH_EUI64=m
+CONFIG_IP6_NF_CONNTRACK=m
+CONFIG_IP6_NF_MATCH_STATE=m
+CONFIG_IP6_NF_FILTER=m
+CONFIG_IP6_NF_TARGET_LOG=m
+CONFIG_IP6_NF_TARGET_REJECT=m
+CONFIG_IP6_NF_MANGLE=m
+CONFIG_IP6_NF_TARGET_MARK=m
+
+#
+# DECnet: Netfilter Configuration
+#
+CONFIG_DECNET_NF_GRABULATOR=m
+
+#
+# Bridge: Netfilter Configuration
+#
+CONFIG_BRIDGE_NF_EBTABLES=m
+CONFIG_BRIDGE_EBT_BROUTE=m
+CONFIG_BRIDGE_EBT_T_FILTER=m
+CONFIG_BRIDGE_EBT_T_NAT=m
+CONFIG_BRIDGE_EBT_802_3=m
+CONFIG_BRIDGE_EBT_AMONG=m
+CONFIG_BRIDGE_EBT_ARP=m
+CONFIG_BRIDGE_EBT_IP=m
+CONFIG_BRIDGE_EBT_LIMIT=m
+CONFIG_BRIDGE_EBT_MARK=m
+CONFIG_BRIDGE_EBT_PKTTYPE=m
+CONFIG_BRIDGE_EBT_STP=m
+CONFIG_BRIDGE_EBT_VLAN=m
+CONFIG_BRIDGE_EBT_ARPREPLY=m
+CONFIG_BRIDGE_EBT_DNAT=m
+CONFIG_BRIDGE_EBT_MARK_T=m
+CONFIG_BRIDGE_EBT_REDIRECT=m
+CONFIG_BRIDGE_EBT_SNAT=m
+CONFIG_BRIDGE_EBT_LOG=m
+CONFIG_XFRM=y
+CONFIG_XFRM_USER=m
+
+#
+# SCTP Configuration (EXPERIMENTAL)
+#
+CONFIG_IP_SCTP=m
+# CONFIG_SCTP_DBG_MSG is not set
+# CONFIG_SCTP_DBG_OBJCNT is not set
+# CONFIG_SCTP_HMAC_NONE is not set
+# CONFIG_SCTP_HMAC_SHA1 is not set
+CONFIG_SCTP_HMAC_MD5=y
+CONFIG_ATM=y
+CONFIG_ATM_CLIP=y
+CONFIG_ATM_CLIP_NO_ICMP=y
+CONFIG_ATM_LANE=m
+CONFIG_ATM_MPOA=m
+CONFIG_ATM_BR2684=m
+# CONFIG_ATM_BR2684_IPFILTER is not set
+CONFIG_VLAN_8021Q=m
+CONFIG_LLC=y
+CONFIG_LLC2=m
+CONFIG_IPX=m
+# CONFIG_IPX_INTERN is not set
+CONFIG_ATALK=m
+CONFIG_DEV_APPLETALK=y
+CONFIG_LTPC=m
+CONFIG_COPS=m
+CONFIG_COPS_DAYNA=y
+CONFIG_COPS_TANGENT=y
+CONFIG_IPDDP=m
+CONFIG_IPDDP_ENCAP=y
+CONFIG_IPDDP_DECAP=y
+CONFIG_X25=m
+CONFIG_LAPB=m
+# CONFIG_NET_DIVERT is not set
+CONFIG_ECONET=m
+# CONFIG_ECONET_AUNUDP is not set
+# CONFIG_ECONET_NATIVE is not set
+CONFIG_WAN_ROUTER=m
+# CONFIG_NET_FASTROUTE is not set
+# CONFIG_NET_HW_FLOWCONTROL is not set
+
+#
+# QoS and/or fair queueing
+#
+CONFIG_NET_SCHED=y
+CONFIG_NET_SCH_CBQ=m
+CONFIG_NET_SCH_HTB=m
+CONFIG_NET_SCH_HFSC=m
+CONFIG_NET_SCH_CSZ=m
+CONFIG_NET_SCH_ATM=y
+CONFIG_NET_SCH_PRIO=m
+CONFIG_NET_SCH_RED=m
+CONFIG_NET_SCH_SFQ=m
+CONFIG_NET_SCH_TEQL=m
+CONFIG_NET_SCH_TBF=m
+CONFIG_NET_SCH_GRED=m
+CONFIG_NET_SCH_DSMARK=m
+CONFIG_NET_SCH_DELAY=m
+CONFIG_NET_SCH_INGRESS=m
+CONFIG_NET_QOS=y
+CONFIG_NET_ESTIMATOR=y
+CONFIG_NET_CLS=y
+CONFIG_NET_CLS_TCINDEX=m
+CONFIG_NET_CLS_ROUTE4=m
+CONFIG_NET_CLS_ROUTE=y
+CONFIG_NET_CLS_FW=m
+CONFIG_NET_CLS_U32=m
+CONFIG_NET_CLS_RSVP=m
+CONFIG_NET_CLS_RSVP6=m
+CONFIG_NET_CLS_POLICE=y
+
+#
+# Network testing
+#
+CONFIG_NET_PKTGEN=m
+CONFIG_NETDEVICES=y
+
+#
+# ARCnet devices
+#
+CONFIG_ARCNET=m
+CONFIG_ARCNET_1201=m
+CONFIG_ARCNET_1051=m
+CONFIG_ARCNET_RAW=m
+CONFIG_ARCNET_COM90xx=m
+CONFIG_ARCNET_COM90xxIO=m
+CONFIG_ARCNET_RIM_I=m
+CONFIG_ARCNET_COM20020=m
+CONFIG_ARCNET_COM20020_ISA=m
+CONFIG_ARCNET_COM20020_PCI=m
+CONFIG_DUMMY=m
+CONFIG_BONDING=m
+CONFIG_EQUALIZER=m
+CONFIG_TUN=m
+CONFIG_ETHERTAP=m
+CONFIG_NET_SB1000=m
+
+#
+# Ethernet (10 or 100Mbit)
+#
+CONFIG_NET_ETHERNET=y
+CONFIG_MII=m
+CONFIG_HAPPYMEAL=m
+CONFIG_SUNGEM=m
+CONFIG_NET_VENDOR_3COM=y
+CONFIG_EL1=m
+CONFIG_EL2=m
+CONFIG_ELPLUS=m
+CONFIG_EL16=m
+CONFIG_EL3=m
+CONFIG_3C515=m
+CONFIG_VORTEX=m
+CONFIG_TYPHOON=m
+CONFIG_LANCE=m
+CONFIG_NET_VENDOR_SMC=y
+CONFIG_WD80x3=m
+CONFIG_ULTRA=m
+CONFIG_SMC9194=m
+CONFIG_NET_VENDOR_RACAL=y
+CONFIG_NI52=m
+CONFIG_NI65=m
+
+#
+# Tulip family network device support
+#
+CONFIG_NET_TULIP=y
+CONFIG_DE2104X=m
+CONFIG_TULIP=m
+# CONFIG_TULIP_MWI is not set
+# CONFIG_TULIP_MMIO is not set
+CONFIG_TULIP_NAPI=y
+CONFIG_TULIP_NAPI_HW_MITIGATION=y
+CONFIG_DE4X5=m
+CONFIG_WINBOND_840=m
+CONFIG_DM9102=m
+CONFIG_PCMCIA_XIRCOM=m
+CONFIG_AT1700=m
+CONFIG_DEPCA=m
+CONFIG_HP100=m
+CONFIG_NET_ISA=y
+CONFIG_E2100=m
+CONFIG_EWRK3=m
+CONFIG_EEXPRESS=m
+CONFIG_EEXPRESS_PRO=m
+CONFIG_HPLAN_PLUS=m
+CONFIG_HPLAN=m
+CONFIG_LP486E=m
+CONFIG_ETH16I=m
+CONFIG_NE2000=m
+CONFIG_ZNET=m
+CONFIG_SEEQ8005=m
+CONFIG_NET_PCI=y
+CONFIG_PCNET32=m
+CONFIG_AMD8111_ETH=m
+CONFIG_ADAPTEC_STARFIRE=m
+CONFIG_ADAPTEC_STARFIRE_NAPI=y
+CONFIG_AC3200=m
+CONFIG_APRICOT=m
+CONFIG_B44=m
+CONFIG_FORCEDETH=m
+CONFIG_CS89x0=m
+CONFIG_DGRS=m
+CONFIG_EEPRO100=m
+# CONFIG_EEPRO100_PIO is not set
+CONFIG_E100=m
+CONFIG_E100_NAPI=y
+CONFIG_FEALNX=m
+CONFIG_NATSEMI=m
+CONFIG_NE2K_PCI=m
+CONFIG_8139CP=m
+CONFIG_8139TOO=m
+# CONFIG_8139TOO_PIO is not set
+# CONFIG_8139TOO_TUNE_TWISTER is not set
+CONFIG_8139TOO_8129=y
+# CONFIG_8139_OLD_RX_RESET is not set
+CONFIG_8139_RXBUF_IDX=2
+CONFIG_SIS900=m
+CONFIG_EPIC100=m
+CONFIG_SUNDANCE=m
+# CONFIG_SUNDANCE_MMIO is not set
+CONFIG_TLAN=m
+CONFIG_VIA_RHINE=m
+# CONFIG_VIA_RHINE_MMIO is not set
+CONFIG_NET_POCKET=y
+CONFIG_ATP=m
+CONFIG_DE600=m
+CONFIG_DE620=m
+
+#
+# Ethernet (1000 Mbit)
+#
+CONFIG_ACENIC=m
+# CONFIG_ACENIC_OMIT_TIGON_I is not set
+CONFIG_DL2K=m
+CONFIG_E1000=m
+CONFIG_E1000_NAPI=y
+CONFIG_NS83820=m
+CONFIG_HAMACHI=m
+CONFIG_YELLOWFIN=m
+CONFIG_R8169=m
+CONFIG_SIS190=m
+CONFIG_SK98LIN=m
+CONFIG_TIGON3=m
+CONFIG_NET_BROADCOM=m
+CONFIG_NET_BCM44=m
+
+#
+# Ethernet (10000 Mbit)
+#
+CONFIG_IXGB=m
+CONFIG_IXGB_NAPI=y
+CONFIG_S2IO=m
+CONFIG_S2IO_NAPI=y
+CONFIG_FDDI=y
+# CONFIG_DEFXX is not set
+CONFIG_SKFP=m
+CONFIG_HIPPI=y
+CONFIG_ROADRUNNER=m
+CONFIG_ROADRUNNER_LARGE_RINGS=y
+CONFIG_PLIP=m
+CONFIG_PPP=m
+CONFIG_PPP_MULTILINK=y
+CONFIG_PPP_FILTER=y
+CONFIG_PPP_ASYNC=m
+CONFIG_PPP_SYNC_TTY=m
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_BSDCOMP=m
+CONFIG_PPP_MPPE=m
+CONFIG_PPPOE=m
+CONFIG_PPPOATM=m
+CONFIG_SLIP=m
+CONFIG_SLIP_COMPRESSED=y
+CONFIG_SLIP_SMART=y
+CONFIG_SLIP_MODE_SLIP6=y
+
+#
+# Wireless LAN (non-hamradio)
+#
+CONFIG_NET_RADIO=y
+
+#
+# Obsolete Wireless cards support (pre-802.11)
+#
+CONFIG_STRIP=m
+# CONFIG_ARLAN is not set
+CONFIG_WAVELAN=m
+CONFIG_PCMCIA_WAVELAN=m
+CONFIG_PCMCIA_NETWAVE=m
+
+#
+# Wireless 802.11 Frequency Hopping cards support
+#
+CONFIG_PCMCIA_RAYCS=m
+
+#
+# Wireless 802.11b ISA/PCI cards support
+#
+CONFIG_AIRO=m
+CONFIG_HERMES=m
+CONFIG_PLX_HERMES=m
+CONFIG_TMD_HERMES=m
+CONFIG_PCI_HERMES=m
+CONFIG_ATMEL=m
+CONFIG_PCI_ATMEL=m
+
+#
+# Wireless 802.11b Pcmcia/Cardbus cards support
+#
+CONFIG_PCMCIA_HERMES=m
+CONFIG_AIRO_CS=m
+CONFIG_PCMCIA_ATMEL=m
+CONFIG_PCMCIA_WL3501=m
+
+#
+# Prism GT/Duette 802.11(a/b/g) PCI/Cardbus support
+#
+CONFIG_PRISM54=m
+CONFIG_NET_WIRELESS=y
+
+#
+# Token Ring devices
+#
+CONFIG_TR=y
+CONFIG_IBMTR=m
+CONFIG_IBMOL=m
+CONFIG_IBMLS=m
+CONFIG_3C359=m
+CONFIG_TMS380TR=m
+CONFIG_TMSPCI=m
+CONFIG_SKISA=m
+CONFIG_PROTEON=m
+CONFIG_ABYSS=m
+CONFIG_SMCTR=m
+CONFIG_NET_FC=y
+CONFIG_NET_LPFC=m
+CONFIG_RCPCI=m
+CONFIG_SHAPER=m
+CONFIG_NETCONSOLE=m
+
+#
+# Wan interfaces
+#
+CONFIG_WAN=y
+CONFIG_HOSTESS_SV11=m
+# CONFIG_COSA is not set
+CONFIG_DSCC4=m
+CONFIG_DSCC4_PCISYNC=y
+CONFIG_DSCC4_PCI_RST=y
+CONFIG_LANMEDIA=m
+CONFIG_SEALEVEL_4021=m
+CONFIG_SYNCLINK_SYNCPPP=m
+CONFIG_HDLC=m
+CONFIG_HDLC_RAW=y
+CONFIG_HDLC_RAW_ETH=y
+CONFIG_HDLC_CISCO=y
+CONFIG_HDLC_FR=y
+CONFIG_HDLC_PPP=y
+CONFIG_HDLC_X25=y
+CONFIG_PCI200SYN=m
+CONFIG_WANXL=m
+# CONFIG_WANXL_BUILD_FIRMWARE is not set
+CONFIG_PC300=m
+CONFIG_PC300_MLPPP=y
+CONFIG_N2=m
+CONFIG_C101=m
+CONFIG_FARSYNC=m
+CONFIG_DLCI=m
+CONFIG_DLCI_COUNT=24
+CONFIG_DLCI_MAX=8
+CONFIG_SDLA=m
+# CONFIG_WAN_ROUTER_DRIVERS is not set
+CONFIG_LAPBETHER=m
+CONFIG_X25_ASY=m
+# CONFIG_SBNI is not set
+
+#
+# PCMCIA network device support
+#
+CONFIG_NET_PCMCIA=y
+CONFIG_PCMCIA_3C589=m
+CONFIG_PCMCIA_3C574=m
+CONFIG_PCMCIA_FMVJ18X=m
+CONFIG_PCMCIA_PCNET=m
+CONFIG_PCMCIA_NMCLAN=m
+CONFIG_PCMCIA_SMC91C92=m
+CONFIG_PCMCIA_XIRC2PS=m
+CONFIG_PCMCIA_AXNET=m
+CONFIG_ARCNET_COM20020_CS=m
+CONFIG_PCMCIA_IBMTR=m
+
+#
+# ATM drivers
+#
+CONFIG_ATM_TCP=m
+CONFIG_ATM_LANAI=m
+CONFIG_ATM_ENI=m
+# CONFIG_ATM_ENI_DEBUG is not set
+# CONFIG_ATM_ENI_TUNE_BURST is not set
+CONFIG_ATM_FIRESTREAM=m
+CONFIG_ATM_ZATM=m
+# CONFIG_ATM_ZATM_DEBUG is not set
+CONFIG_ATM_NICSTAR=m
+CONFIG_ATM_NICSTAR_USE_SUNI=y
+CONFIG_ATM_NICSTAR_USE_IDT77105=y
+CONFIG_ATM_IDT77252=m
+# CONFIG_ATM_IDT77252_DEBUG is not set
+CONFIG_ATM_IDT77252_RCV_ALL=y
+CONFIG_ATM_IDT77252_USE_SUNI=y
+CONFIG_ATM_AMBASSADOR=m
+# CONFIG_ATM_AMBASSADOR_DEBUG is not set
+CONFIG_ATM_HORIZON=m
+# CONFIG_ATM_HORIZON_DEBUG is not set
+CONFIG_ATM_IA=m
+# CONFIG_ATM_IA_DEBUG is not set
+CONFIG_ATM_FORE200E_MAYBE=m
+CONFIG_ATM_FORE200E_PCA=y
+CONFIG_ATM_FORE200E_PCA_DEFAULT_FW=y
+CONFIG_ATM_FORE200E_TX_RETRY=16
+CONFIG_ATM_FORE200E_DEBUG=0
+CONFIG_ATM_FORE200E=m
+CONFIG_ATM_HE=m
+CONFIG_ATM_HE_USE_SUNI=y
+
+#
+# Amateur Radio support
+#
+CONFIG_HAMRADIO=y
+
+#
+# Packet Radio protocols
+#
+CONFIG_AX25=m
+CONFIG_AX25_DAMA_SLAVE=y
+CONFIG_NETROM=m
+CONFIG_ROSE=m
+
+#
+# AX.25 network device drivers
+#
+CONFIG_BPQETHER=m
+CONFIG_SCC=m
+CONFIG_SCC_DELAY=y
+CONFIG_SCC_TRXECHO=y
+CONFIG_BAYCOM_SER_FDX=m
+CONFIG_BAYCOM_SER_HDX=m
+CONFIG_BAYCOM_PAR=m
+CONFIG_BAYCOM_EPP=m
+CONFIG_YAM=m
+
+#
+# IrDA (infrared) support
+#
+CONFIG_IRDA=m
+
+#
+# IrDA protocols
+#
+CONFIG_IRLAN=m
+CONFIG_IRNET=m
+CONFIG_IRCOMM=m
+CONFIG_IRDA_ULTRA=y
+
+#
+# IrDA options
+#
+CONFIG_IRDA_CACHE_LAST_LSAP=y
+# CONFIG_IRDA_FAST_RR is not set
+# CONFIG_IRDA_DEBUG is not set
+
+#
+# Infrared-port device drivers
+#
+
+#
+# SIR device drivers
+#
+CONFIG_IRTTY_SIR=m
+
+#
+# Dongle support
+#
+CONFIG_DONGLE=y
+CONFIG_ESI_DONGLE=m
+CONFIG_ACTISYS_DONGLE=m
+CONFIG_TEKRAM_DONGLE=m
+CONFIG_LITELINK_DONGLE=m
+CONFIG_MA600_DONGLE=m
+CONFIG_GIRBIL_DONGLE=m
+CONFIG_MCP2120_DONGLE=m
+CONFIG_OLD_BELKIN_DONGLE=m
+CONFIG_ACT200L_DONGLE=m
+
+#
+# Old SIR device drivers
+#
+
+#
+# Old Serial dongle support
+#
+
+#
+# FIR device drivers
+#
+CONFIG_USB_IRDA=m
+CONFIG_SIGMATEL_FIR=m
+CONFIG_NSC_FIR=m
+CONFIG_WINBOND_FIR=m
+CONFIG_TOSHIBA_FIR=m
+CONFIG_SMC_IRCC_FIR=m
+CONFIG_ALI_FIR=m
+CONFIG_VLSI_FIR=m
+CONFIG_VIA_FIR=m
+
+#
+# Bluetooth support
+#
+CONFIG_BT=m
+CONFIG_BT_L2CAP=m
+CONFIG_BT_SCO=m
+CONFIG_BT_RFCOMM=m
+CONFIG_BT_RFCOMM_TTY=y
+CONFIG_BT_BNEP=m
+CONFIG_BT_BNEP_MC_FILTER=y
+CONFIG_BT_BNEP_PROTO_FILTER=y
+CONFIG_BT_CMTP=m
+
+#
+# Bluetooth device drivers
+#
+CONFIG_BT_HCIUSB=m
+CONFIG_BT_HCIUSB_SCO=y
+CONFIG_BT_HCIUART=m
+CONFIG_BT_HCIUART_H4=y
+CONFIG_BT_HCIUART_BCSP=y
+CONFIG_BT_HCIUART_BCSP_TXCRC=y
+CONFIG_BT_HCIBCM203X=m
+CONFIG_BT_HCIBFUSB=m
+CONFIG_BT_HCIDTL1=m
+CONFIG_BT_HCIBT3C=m
+CONFIG_BT_HCIBLUECARD=m
+CONFIG_BT_HCIBTUART=m
+CONFIG_BT_HCIVHCI=m
+CONFIG_NETPOLL=y
+CONFIG_NETPOLL_RX=y
+CONFIG_NETPOLL_TRAP=y
+CONFIG_NET_POLL_CONTROLLER=y
+
+#
+# ISDN subsystem
+#
+CONFIG_ISDN=m
+
+#
+# Old ISDN4Linux
+#
+CONFIG_ISDN_I4L=m
+CONFIG_ISDN_PPP=y
+CONFIG_ISDN_PPP_VJ=y
+CONFIG_ISDN_MPP=y
+CONFIG_IPPP_FILTER=y
+CONFIG_ISDN_PPP_BSDCOMP=m
+CONFIG_ISDN_AUDIO=y
+CONFIG_ISDN_TTY_FAX=y
+CONFIG_ISDN_X25=y
+
+#
+# ISDN feature submodules
+#
+
+#
+# ISDN4Linux hardware drivers
+#
+
+#
+# Passive cards
+#
+CONFIG_ISDN_DRV_HISAX=m
+
+#
+# D-channel protocol features
+#
+CONFIG_HISAX_EURO=y
+CONFIG_DE_AOC=y
+# CONFIG_HISAX_NO_SENDCOMPLETE is not set
+# CONFIG_HISAX_NO_LLC is not set
+# CONFIG_HISAX_NO_KEYPAD is not set
+CONFIG_HISAX_1TR6=y
+CONFIG_HISAX_NI1=y
+CONFIG_HISAX_MAX_CARDS=8
+
+#
+# HiSax supported cards
+#
+CONFIG_HISAX_16_0=y
+CONFIG_HISAX_16_3=y
+CONFIG_HISAX_TELESPCI=y
+CONFIG_HISAX_S0BOX=y
+CONFIG_HISAX_AVM_A1=y
+CONFIG_HISAX_FRITZPCI=y
+CONFIG_HISAX_AVM_A1_PCMCIA=y
+CONFIG_HISAX_ELSA=y
+CONFIG_HISAX_IX1MICROR2=y
+CONFIG_HISAX_DIEHLDIVA=y
+CONFIG_HISAX_ASUSCOM=y
+CONFIG_HISAX_TELEINT=y
+CONFIG_HISAX_HFCS=y
+CONFIG_HISAX_SEDLBAUER=y
+CONFIG_HISAX_SPORTSTER=y
+CONFIG_HISAX_MIC=y
+CONFIG_HISAX_NETJET=y
+CONFIG_HISAX_NETJET_U=y
+CONFIG_HISAX_NICCY=y
+CONFIG_HISAX_ISURF=y
+CONFIG_HISAX_HSTSAPHIR=y
+CONFIG_HISAX_BKM_A4T=y
+CONFIG_HISAX_SCT_QUADRO=y
+CONFIG_HISAX_GAZEL=y
+CONFIG_HISAX_HFC_PCI=y
+CONFIG_HISAX_W6692=y
+CONFIG_HISAX_HFC_SX=y
+CONFIG_HISAX_ENTERNOW_PCI=y
+CONFIG_HISAX_DEBUG=y
+
+#
+# HiSax PCMCIA card service modules
+#
+# CONFIG_HISAX_SEDLBAUER_CS is not set
+CONFIG_HISAX_ELSA_CS=m
+CONFIG_HISAX_AVM_A1_CS=m
+CONFIG_HISAX_TELES_CS=m
+
+#
+# HiSax sub driver modules
+#
+CONFIG_HISAX_ST5481=m
+CONFIG_HISAX_HFCUSB=m
+CONFIG_HISAX_FRITZ_PCIPNP=m
+CONFIG_HISAX_HDLC=y
+
+#
+# Active cards
+#
+CONFIG_ISDN_DRV_ICN=m
+CONFIG_ISDN_DRV_PCBIT=m
+CONFIG_ISDN_DRV_SC=m
+CONFIG_ISDN_DRV_ACT2000=m
+CONFIG_ISDN_DRV_TPAM=m
+
+#
+# CAPI subsystem
+#
+CONFIG_ISDN_CAPI=m
+CONFIG_ISDN_DRV_AVMB1_VERBOSE_REASON=y
+CONFIG_ISDN_CAPI_MIDDLEWARE=y
+CONFIG_ISDN_CAPI_CAPI20=m
+CONFIG_ISDN_CAPI_CAPIFS_BOOL=y
+CONFIG_ISDN_CAPI_CAPIFS=m
+CONFIG_ISDN_CAPI_CAPIDRV=m
+
+#
+# CAPI hardware drivers
+#
+
+#
+# Active AVM cards
+#
+CONFIG_CAPI_AVM=y
+CONFIG_ISDN_DRV_AVMB1_B1ISA=m
+CONFIG_ISDN_DRV_AVMB1_B1PCI=m
+CONFIG_ISDN_DRV_AVMB1_B1PCIV4=y
+CONFIG_ISDN_DRV_AVMB1_T1ISA=m
+CONFIG_ISDN_DRV_AVMB1_B1PCMCIA=m
+CONFIG_ISDN_DRV_AVMB1_AVM_CS=m
+CONFIG_ISDN_DRV_AVMB1_T1PCI=m
+CONFIG_ISDN_DRV_AVMB1_C4=m
+
+#
+# Active Eicon DIVA Server cards
+#
+CONFIG_CAPI_EICON=y
+CONFIG_ISDN_DIVAS=m
+CONFIG_ISDN_DIVAS_BRIPCI=y
+CONFIG_ISDN_DIVAS_PRIPCI=y
+CONFIG_ISDN_DIVAS_DIVACAPI=m
+CONFIG_ISDN_DIVAS_USERIDI=m
+CONFIG_ISDN_DIVAS_MAINT=m
+
+#
+# Telephony Support
+#
+CONFIG_PHONE=m
+CONFIG_PHONE_IXJ=m
+CONFIG_PHONE_IXJ_PCMCIA=m
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+
+#
+# Userland interfaces
+#
+CONFIG_INPUT_MOUSEDEV=y
+CONFIG_INPUT_MOUSEDEV_PSAUX=y
+CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
+CONFIG_INPUT_JOYDEV=m
+CONFIG_INPUT_TSDEV=m
+CONFIG_INPUT_TSDEV_SCREEN_X=240
+CONFIG_INPUT_TSDEV_SCREEN_Y=320
+CONFIG_INPUT_EVDEV=m
+# CONFIG_INPUT_EVBUG is not set
+
+#
+# Input I/O drivers
+#
+CONFIG_GAMEPORT=m
+CONFIG_SOUND_GAMEPORT=m
+CONFIG_GAMEPORT_NS558=m
+CONFIG_GAMEPORT_L4=m
+CONFIG_GAMEPORT_EMU10K1=m
+CONFIG_GAMEPORT_VORTEX=m
+CONFIG_GAMEPORT_FM801=m
+CONFIG_GAMEPORT_CS461x=m
+CONFIG_SERIO=y
+CONFIG_SERIO_I8042=y
+CONFIG_SERIO_SERPORT=m
+CONFIG_SERIO_CT82C710=m
+CONFIG_SERIO_PARKBD=m
+CONFIG_SERIO_PCIPS2=m
+
+#
+# Input Device Drivers
+#
+CONFIG_INPUT_KEYBOARD=y
+CONFIG_KEYBOARD_ATKBD=y
+CONFIG_KEYBOARD_SUNKBD=m
+# CONFIG_KEYBOARD_LKKBD is not set
+CONFIG_KEYBOARD_XTKBD=m
+CONFIG_KEYBOARD_NEWTON=m
+CONFIG_INPUT_MOUSE=y
+CONFIG_MOUSE_PS2=y
+CONFIG_MOUSE_SERIAL=m
+CONFIG_MOUSE_INPORT=m
+CONFIG_MOUSE_ATIXL=y
+CONFIG_MOUSE_LOGIBM=m
+CONFIG_MOUSE_PC110PAD=m
+# CONFIG_MOUSE_VSXXXAA is not set
+CONFIG_INPUT_JOYSTICK=y
+CONFIG_JOYSTICK_ANALOG=m
+CONFIG_JOYSTICK_A3D=m
+CONFIG_JOYSTICK_ADI=m
+CONFIG_JOYSTICK_COBRA=m
+CONFIG_JOYSTICK_GF2K=m
+CONFIG_JOYSTICK_GRIP=m
+CONFIG_JOYSTICK_GRIP_MP=m
+CONFIG_JOYSTICK_GUILLEMOT=m
+CONFIG_JOYSTICK_INTERACT=m
+CONFIG_JOYSTICK_SIDEWINDER=m
+CONFIG_JOYSTICK_TMDC=m
+CONFIG_JOYSTICK_IFORCE=m
+CONFIG_JOYSTICK_IFORCE_USB=y
+CONFIG_JOYSTICK_IFORCE_232=y
+CONFIG_JOYSTICK_WARRIOR=m
+CONFIG_JOYSTICK_MAGELLAN=m
+CONFIG_JOYSTICK_SPACEORB=m
+CONFIG_JOYSTICK_SPACEBALL=m
+CONFIG_JOYSTICK_STINGER=m
+CONFIG_JOYSTICK_TWIDDLER=m
+CONFIG_JOYSTICK_DB9=m
+CONFIG_JOYSTICK_GAMECON=m
+CONFIG_JOYSTICK_TURBOGRAFX=m
+# CONFIG_INPUT_JOYDUMP is not set
+CONFIG_INPUT_TOUCHSCREEN=y
+CONFIG_TOUCHSCREEN_GUNZE=m
+CONFIG_INPUT_MISC=y
+CONFIG_INPUT_PCSPKR=y
+CONFIG_INPUT_UINPUT=m
+
+#
+# Character devices
+#
+CONFIG_VT=y
+CONFIG_VT_CONSOLE=y
+CONFIG_HW_CONSOLE=y
+CONFIG_SERIAL_NONSTANDARD=y
+CONFIG_ROCKETPORT=m
+CONFIG_SYNCLINK=m
+CONFIG_SYNCLINKMP=m
+CONFIG_N_HDLC=m
+CONFIG_STALDRV=y
+
+#
+# Serial drivers
+#
+CONFIG_SERIAL_8250=y
+CONFIG_SERIAL_8250_CONSOLE=y
+CONFIG_SERIAL_8250_CS=m
+# CONFIG_SERIAL_8250_ACPI is not set
+CONFIG_SERIAL_8250_NR_UARTS=4
+CONFIG_SERIAL_8250_EXTENDED=y
+CONFIG_SERIAL_8250_MANY_PORTS=y
+CONFIG_SERIAL_8250_SHARE_IRQ=y
+# CONFIG_SERIAL_8250_DETECT_IRQ is not set
+CONFIG_SERIAL_8250_MULTIPORT=y
+CONFIG_SERIAL_8250_RSA=y
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_UNIX98_PTYS=y
+CONFIG_LEGACY_PTYS=y
+CONFIG_LEGACY_PTY_COUNT=256
+CONFIG_PRINTER=m
+# CONFIG_LP_CONSOLE is not set
+CONFIG_PPDEV=m
+CONFIG_TIPAR=m
+CONFIG_QIC02_TAPE=m
+CONFIG_QIC02_DYNCONF=y
+
+#
+# Setting runtime QIC-02 configuration is done with qic02conf
+#
+
+#
+# from the tpqic02-support package.  It is available at
+#
+
+#
+# metalab.unc.edu or ftp://titus.cfw.com/pub/Linux/util/
+#
+
+#
+# IPMI
+#
+CONFIG_IPMI_HANDLER=m
+CONFIG_IPMI_PANIC_EVENT=y
+CONFIG_IPMI_PANIC_STRING=y
+CONFIG_IPMI_DEVICE_INTERFACE=m
+CONFIG_IPMI_KCS=m
+CONFIG_IPMI_WATCHDOG=m
+
+#
+# Watchdog Cards
+#
+CONFIG_WATCHDOG=y
+# CONFIG_WATCHDOG_NOWAYOUT is not set
+
+#
+# Watchdog Device Drivers
+#
+CONFIG_SOFT_WATCHDOG=m
+CONFIG_ACQUIRE_WDT=m
+CONFIG_ADVANTECH_WDT=m
+CONFIG_ALIM1535_WDT=m
+CONFIG_ALIM7101_WDT=m
+CONFIG_AMD7XX_TCO=m
+CONFIG_SC520_WDT=m
+CONFIG_EUROTECH_WDT=m
+CONFIG_IB700_WDT=m
+CONFIG_WAFER_WDT=m
+CONFIG_I8XX_TCO=m
+CONFIG_SC1200_WDT=m
+CONFIG_SCx200_WDT=m
+CONFIG_60XX_WDT=m
+CONFIG_CPU5_WDT=m
+CONFIG_W83627HF_WDT=m
+CONFIG_W83877F_WDT=m
+CONFIG_MACHZ_WDT=m
+
+#
+# ISA-based Watchdog Cards
+#
+CONFIG_PCWATCHDOG=m
+CONFIG_MIXCOMWD=m
+CONFIG_WDT=m
+CONFIG_WDT_501=y
+
+#
+# PCI-based Watchdog Cards
+#
+CONFIG_PCIPCWATCHDOG=m
+CONFIG_WDTPCI=m
+CONFIG_WDT_501_PCI=y
+
+#
+# USB-based Watchdog Cards
+#
+CONFIG_USBPCWATCHDOG=m
+CONFIG_HW_RANDOM=m
+CONFIG_NVRAM=m
+CONFIG_RTC=y
+CONFIG_DTLK=m
+CONFIG_R3964=m
+CONFIG_APPLICOM=m
+CONFIG_SONYPI=m
+
+#
+# Ftape, the floppy tape device driver
+#
+CONFIG_AGP=m
+CONFIG_AGP_ALI=m
+CONFIG_AGP_ATI=m
+CONFIG_AGP_AMD=m
+CONFIG_AGP_AMD64=m
+CONFIG_AGP_INTEL=m
+CONFIG_AGP_NVIDIA=m
+CONFIG_AGP_SIS=m
+CONFIG_AGP_SWORKS=m
+CONFIG_AGP_VIA=m
+CONFIG_AGP_EFFICEON=m
+# CONFIG_DRM is not set
+
+#
+# PCMCIA character devices
+#
+CONFIG_SYNCLINK_CS=m
+# CONFIG_MWAVE is not set
+CONFIG_SCx200_GPIO=m
+CONFIG_RAW_DRIVER=m
+CONFIG_MAX_RAW_DEVS=4096
+CONFIG_HANGCHECK_TIMER=m
+
+#
+# Linux InfraRed Controller
+#
+CONFIG_LIRC_SUPPORT=m
+CONFIG_LIRC_MAX_DEV=2
+CONFIG_LIRC_BT829=m
+CONFIG_LIRC_IT87=m
+CONFIG_LIRC_ATIUSB=m
+CONFIG_LIRC_SERIAL=m
+# CONFIG_LIRC_HOMEBREW is not set
+CONFIG_LIRC_PORT_SERIAL=0x3f8
+CONFIG_LIRC_IRQ_SERIAL=4
+CONFIG_LIRC_SIR=m
+CONFIG_LIRC_PORT_SIR=0x3f8
+CONFIG_LIRC_IRQ_SIR=4
+
+#
+# I2C support
+#
+CONFIG_I2C=m
+CONFIG_I2C_CHARDEV=m
+
+#
+# I2C Algorithms
+#
+CONFIG_I2C_ALGOBIT=m
+CONFIG_I2C_ALGOPCF=m
+
+#
+# I2C Hardware Bus support
+#
+CONFIG_I2C_ALI1535=m
+CONFIG_I2C_ALI15X3=m
+CONFIG_I2C_AMD756=m
+CONFIG_I2C_AMD8111=m
+CONFIG_I2C_I801=m
+CONFIG_I2C_I810=m
+CONFIG_I2C_ISA=m
+CONFIG_I2C_NFORCE2=m
+CONFIG_I2C_PARPORT=m
+CONFIG_I2C_PARPORT_LIGHT=m
+CONFIG_I2C_PIIX4=m
+CONFIG_I2C_PROSAVAGE=m
+CONFIG_I2C_SAVAGE4=m
+CONFIG_SCx200_I2C=m
+CONFIG_SCx200_I2C_SCL=12
+CONFIG_SCx200_I2C_SDA=13
+CONFIG_SCx200_ACB=m
+CONFIG_I2C_SIS5595=m
+CONFIG_I2C_SIS630=m
+CONFIG_I2C_SIS96X=m
+CONFIG_I2C_VIA=m
+CONFIG_I2C_VIAPRO=m
+CONFIG_I2C_VOODOO3=m
+
+#
+# Hardware Sensors Chip support
+#
+CONFIG_I2C_SENSOR=m
+CONFIG_SENSORS_ADM1021=m
+CONFIG_SENSORS_ASB100=m
+CONFIG_SENSORS_DS1621=m
+CONFIG_SENSORS_FSCHER=m
+CONFIG_SENSORS_GL518SM=m
+CONFIG_SENSORS_IT87=m
+CONFIG_SENSORS_LM75=m
+CONFIG_SENSORS_LM78=m
+CONFIG_SENSORS_LM80=m
+CONFIG_SENSORS_LM83=m
+CONFIG_SENSORS_LM85=m
+CONFIG_SENSORS_LM90=m
+CONFIG_SENSORS_VIA686A=m
+CONFIG_SENSORS_W83781D=m
+CONFIG_SENSORS_W83L785TS=m
+CONFIG_SENSORS_W83627HF=m
+
+#
+# Other I2C Chip support
+#
+CONFIG_SENSORS_EEPROM=m
+# CONFIG_I2C_DEBUG_CORE is not set
+# CONFIG_I2C_DEBUG_ALGO is not set
+# CONFIG_I2C_DEBUG_BUS is not set
+# CONFIG_I2C_DEBUG_CHIP is not set
+
+#
+# Misc devices
+#
+CONFIG_IBM_ASM=m
+
+#
+# Multimedia devices
+#
+CONFIG_VIDEO_DEV=m
+
+#
+# Video For Linux
+#
+
+#
+# Video Adapters
+#
+CONFIG_VIDEO_BT848=m
+CONFIG_VIDEO_PMS=m
+CONFIG_VIDEO_BWQCAM=m
+CONFIG_VIDEO_CQCAM=m
+CONFIG_VIDEO_W9966=m
+CONFIG_VIDEO_CPIA=m
+CONFIG_VIDEO_CPIA_PP=m
+CONFIG_VIDEO_CPIA_USB=m
+CONFIG_VIDEO_SAA5246A=m
+CONFIG_VIDEO_SAA5249=m
+CONFIG_TUNER_3036=m
+CONFIG_VIDEO_STRADIS=m
+# CONFIG_VIDEO_ZORAN is not set
+CONFIG_VIDEO_SAA7134=m
+CONFIG_VIDEO_MXB=m
+CONFIG_VIDEO_DPC=m
+CONFIG_VIDEO_HEXIUM_ORION=m
+CONFIG_VIDEO_HEXIUM_GEMINI=m
+CONFIG_VIDEO_CX88=m
+
+#
+# Radio Adapters
+#
+CONFIG_RADIO_CADET=m
+CONFIG_RADIO_RTRACK=m
+CONFIG_RADIO_RTRACK2=m
+CONFIG_RADIO_AZTECH=m
+CONFIG_RADIO_GEMTEK=m
+CONFIG_RADIO_GEMTEK_PCI=m
+CONFIG_RADIO_MAXIRADIO=m
+CONFIG_RADIO_MAESTRO=m
+CONFIG_RADIO_MIROPCM20=m
+# CONFIG_RADIO_MIROPCM20_RDS is not set
+CONFIG_RADIO_SF16FMI=m
+CONFIG_RADIO_SF16FMR2=m
+CONFIG_RADIO_TERRATEC=m
+CONFIG_RADIO_TRUST=m
+CONFIG_RADIO_TYPHOON=m
+CONFIG_RADIO_TYPHOON_PROC_FS=y
+CONFIG_RADIO_ZOLTRIX=m
+
+#
+# Digital Video Broadcasting Devices
+#
+CONFIG_DVB=y
+CONFIG_DVB_CORE=m
+
+#
+# Supported Frontend Modules
+#
+CONFIG_DVB_TWINHAN_DST=m
+CONFIG_DVB_STV0299=m
+CONFIG_DVB_SP887X=m
+CONFIG_DVB_SP887X_FIRMWARE_FILE="/etc/dvb/sc_main.mc"
+CONFIG_DVB_ALPS_TDLB7=m
+CONFIG_DVB_ALPS_TDMB7=m
+CONFIG_DVB_ATMEL_AT76C651=m
+CONFIG_DVB_CX24110=m
+CONFIG_DVB_GRUNDIG_29504_491=m
+CONFIG_DVB_GRUNDIG_29504_401=m
+CONFIG_DVB_MT312=m
+CONFIG_DVB_VES1820=m
+CONFIG_DVB_VES1X93=m
+CONFIG_DVB_TDA1004X=m
+CONFIG_DVB_TDA1004X_FIRMWARE_FILE="/usr/lib/hotplug/firmware/tda1004x.bin"
+CONFIG_DVB_NXT6000=m
+
+#
+# Supported SAA7146 based PCI Adapters
+#
+CONFIG_DVB_AV7110=m
+# CONFIG_DVB_AV7110_FIRMWARE is not set
+CONFIG_DVB_AV7110_OSD=y
+CONFIG_DVB_BUDGET=m
+CONFIG_DVB_BUDGET_CI=m
+CONFIG_DVB_BUDGET_AV=m
+CONFIG_DVB_BUDGET_PATCH=m
+
+#
+# Supported USB Adapters
+#
+CONFIG_DVB_TTUSB_BUDGET=m
+CONFIG_DVB_TTUSB_DEC=m
+
+#
+# Supported FlexCopII (B2C2) Adapters
+#
+CONFIG_DVB_B2C2_SKYSTAR=m
+
+#
+# Supported BT878 Adapters
+#
+CONFIG_DVB_BT8XX=m
+CONFIG_VIDEO_SAA7146=m
+CONFIG_VIDEO_SAA7146_VV=m
+CONFIG_VIDEO_VIDEOBUF=m
+CONFIG_VIDEO_TUNER=m
+CONFIG_VIDEO_BUF=m
+CONFIG_VIDEO_BTCX=m
+CONFIG_VIDEO_IR=m
+
+#
+# Graphics support
+#
+CONFIG_FB=y
+CONFIG_FB_PM2=m
+CONFIG_FB_PM2_FIFO_DISCONNECT=y
+CONFIG_FB_CYBER2000=m
+CONFIG_FB_IMSTT=y
+CONFIG_FB_VGA16=m
+CONFIG_FB_VESA=y
+CONFIG_VIDEO_SELECT=y
+CONFIG_FB_HGA=m
+CONFIG_FB_RIVA=m
+CONFIG_FB_I810=m
+CONFIG_FB_I810_GTF=y
+# CONFIG_FB_MATROX is not set
+# CONFIG_FB_RADEON_OLD is not set
+CONFIG_FB_RADEON=m
+CONFIG_FB_RADEON_I2C=y
+# CONFIG_FB_RADEON_DEBUG is not set
+# CONFIG_FB_ATY128 is not set
+CONFIG_FB_ATY=m
+CONFIG_FB_ATY_CT=y
+CONFIG_FB_ATY_GX=y
+CONFIG_FB_ATY_XL_INIT=y
+CONFIG_FB_SIS=m
+CONFIG_FB_SIS_300=y
+CONFIG_FB_SIS_315=y
+CONFIG_FB_NEOMAGIC=m
+CONFIG_FB_KYRO=m
+CONFIG_FB_3DFX=m
+CONFIG_FB_VOODOO1=m
+CONFIG_FB_TRIDENT=m
+# CONFIG_FB_VIRTUAL is not set
+
+#
+# Console display driver support
+#
+CONFIG_VGA_CONSOLE=y
+CONFIG_MDA_CONSOLE=m
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+CONFIG_PCI_CONSOLE=y
+# CONFIG_FONTS is not set
+CONFIG_FONT_8x8=y
+CONFIG_FONT_8x16=y
+
+#
+# Logo configuration
+#
+# CONFIG_LOGO is not set
+
+#
+# Bootsplash configuration
+#
+CONFIG_BOOTSPLASH=y
+
+#
+# Sound
+#
+CONFIG_SOUND=m
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=m
+CONFIG_SND_TIMER=m
+CONFIG_SND_PCM=m
+CONFIG_SND_HWDEP=m
+CONFIG_SND_RAWMIDI=m
+CONFIG_SND_SEQUENCER=m
+CONFIG_SND_SEQ_DUMMY=m
+CONFIG_SND_OSSEMUL=y
+CONFIG_SND_MIXER_OSS=m
+CONFIG_SND_PCM_OSS=m
+CONFIG_SND_SEQUENCER_OSS=y
+CONFIG_SND_RTCTIMER=m
+CONFIG_SND_VERBOSE_PRINTK=y
+CONFIG_SND_DEBUG=y
+CONFIG_SND_DEBUG_MEMORY=y
+# CONFIG_SND_DEBUG_DETECT is not set
+
+#
+# Generic devices
+#
+CONFIG_SND_MPU401_UART=m
+CONFIG_SND_OPL3_LIB=m
+CONFIG_SND_OPL4_LIB=m
+CONFIG_SND_VX_LIB=m
+CONFIG_SND_DUMMY=m
+CONFIG_SND_VIRMIDI=m
+CONFIG_SND_MTPAV=m
+CONFIG_SND_SERIAL_U16550=m
+CONFIG_SND_MPU401=m
+
+#
+# ISA devices
+#
+CONFIG_SND_AD1816A=m
+CONFIG_SND_AD1848=m
+CONFIG_SND_CS4231=m
+CONFIG_SND_CS4232=m
+CONFIG_SND_CS4236=m
+CONFIG_SND_ES968=m
+CONFIG_SND_ES1688=m
+CONFIG_SND_ES18XX=m
+CONFIG_SND_GUSCLASSIC=m
+CONFIG_SND_GUSEXTREME=m
+CONFIG_SND_GUSMAX=m
+CONFIG_SND_INTERWAVE=m
+CONFIG_SND_INTERWAVE_STB=m
+CONFIG_SND_OPTI92X_AD1848=m
+CONFIG_SND_OPTI92X_CS4231=m
+CONFIG_SND_OPTI93X=m
+CONFIG_SND_SB8=m
+CONFIG_SND_SB16=m
+CONFIG_SND_SBAWE=m
+CONFIG_SND_SB16_CSP=y
+CONFIG_SND_WAVEFRONT=m
+CONFIG_SND_ALS100=m
+CONFIG_SND_AZT2320=m
+CONFIG_SND_CMI8330=m
+CONFIG_SND_DT019X=m
+CONFIG_SND_OPL3SA2=m
+CONFIG_SND_SGALAXY=m
+CONFIG_SND_SSCAPE=m
+
+#
+# PCI devices
+#
+CONFIG_SND_AC97_CODEC=m
+CONFIG_SND_ALI5451=m
+CONFIG_SND_ATIIXP=m
+CONFIG_SND_AU8810=m
+CONFIG_SND_AU8820=m
+CONFIG_SND_AU8830=m
+CONFIG_SND_AZT3328=m
+CONFIG_SND_BT87X=m
+CONFIG_SND_CS46XX=m
+CONFIG_SND_CS46XX_NEW_DSP=y
+CONFIG_SND_CS4281=m
+CONFIG_SND_EMU10K1=m
+CONFIG_SND_KORG1212=m
+CONFIG_SND_MIXART=m
+CONFIG_SND_NM256=m
+CONFIG_SND_RME32=m
+CONFIG_SND_RME96=m
+CONFIG_SND_RME9652=m
+CONFIG_SND_HDSP=m
+CONFIG_SND_TRIDENT=m
+CONFIG_SND_YMFPCI=m
+CONFIG_SND_ALS4000=m
+CONFIG_SND_CMIPCI=m
+CONFIG_SND_ENS1370=m
+CONFIG_SND_ENS1371=m
+CONFIG_SND_ES1938=m
+CONFIG_SND_ES1968=m
+CONFIG_SND_MAESTRO3=m
+CONFIG_SND_FM801=m
+CONFIG_SND_FM801_TEA575X=m
+CONFIG_SND_ICE1712=m
+CONFIG_SND_ICE1724=m
+CONFIG_SND_INTEL8X0=m
+CONFIG_SND_INTEL8X0M=m
+CONFIG_SND_SONICVIBES=m
+CONFIG_SND_VIA82XX=m
+CONFIG_SND_VX222=m
+
+#
+# ALSA USB devices
+#
+CONFIG_SND_USB_AUDIO=m
+
+#
+# PCMCIA devices
+#
+# CONFIG_SND_VXPOCKET is not set
+# CONFIG_SND_VXP440 is not set
+# CONFIG_SND_PDAUDIOCF is not set
+
+#
+# Open Sound System
+#
+CONFIG_SOUND_PRIME=m
+CONFIG_SOUND_BT878=m
+CONFIG_SOUND_CMPCI=m
+CONFIG_SOUND_CMPCI_FM=y
+CONFIG_SOUND_CMPCI_FMIO=0x388
+CONFIG_SOUND_CMPCI_MIDI=y
+CONFIG_SOUND_CMPCI_MPUIO=0x330
+CONFIG_SOUND_CMPCI_JOYSTICK=y
+CONFIG_SOUND_CMPCI_CM8738=y
+# CONFIG_SOUND_CMPCI_SPDIFINVERSE is not set
+CONFIG_SOUND_CMPCI_SPDIFLOOP=y
+CONFIG_SOUND_CMPCI_SPEAKERS=2
+CONFIG_SOUND_EMU10K1=m
+CONFIG_MIDI_EMU10K1=y
+# CONFIG_SOUND_FUSION is not set
+CONFIG_SOUND_CS4281=m
+CONFIG_SOUND_ES1370=m
+CONFIG_SOUND_ES1371=m
+CONFIG_SOUND_ESSSOLO1=m
+CONFIG_SOUND_MAESTRO=m
+CONFIG_SOUND_MAESTRO3=m
+CONFIG_SOUND_ICH=m
+CONFIG_SOUND_SONICVIBES=m
+CONFIG_SOUND_TRIDENT=m
+# CONFIG_SOUND_MSNDCLAS is not set
+# CONFIG_SOUND_MSNDPIN is not set
+CONFIG_SOUND_VIA82CXXX=m
+CONFIG_MIDI_VIA82CXXX=y
+CONFIG_SOUND_OSS=m
+CONFIG_SOUND_TRACEINIT=y
+CONFIG_SOUND_DMAP=y
+# CONFIG_SOUND_AD1816 is not set
+CONFIG_SOUND_AD1889=m
+CONFIG_SOUND_SGALAXY=m
+CONFIG_SOUND_ADLIB=m
+CONFIG_SOUND_ACI_MIXER=m
+CONFIG_SOUND_CS4232=m
+CONFIG_SOUND_SSCAPE=m
+CONFIG_SOUND_GUS=m
+# CONFIG_SOUND_GUS16 is not set
+CONFIG_SOUND_GUSMAX=y
+CONFIG_SOUND_VMIDI=m
+CONFIG_SOUND_TRIX=m
+CONFIG_SOUND_MSS=m
+CONFIG_SOUND_MPU401=m
+CONFIG_SOUND_NM256=m
+CONFIG_SOUND_MAD16=m
+CONFIG_MAD16_OLDCARD=y
+CONFIG_SOUND_PAS=m
+CONFIG_SOUND_PSS=m
+CONFIG_PSS_MIXER=y
+# CONFIG_PSS_HAVE_BOOT is not set
+CONFIG_SOUND_SB=m
+# CONFIG_SOUND_AWE32_SYNTH is not set
+CONFIG_SOUND_WAVEFRONT=m
+CONFIG_SOUND_MAUI=m
+CONFIG_SOUND_YM3812=m
+CONFIG_SOUND_OPL3SA1=m
+CONFIG_SOUND_OPL3SA2=m
+CONFIG_SOUND_YMFPCI=m
+CONFIG_SOUND_YMFPCI_LEGACY=y
+CONFIG_SOUND_UART6850=m
+CONFIG_SOUND_AEDSP16=m
+CONFIG_SC6600=y
+CONFIG_SC6600_JOY=y
+CONFIG_SC6600_CDROM=4
+CONFIG_SC6600_CDROMBASE=0x0
+# CONFIG_AEDSP16_MSS is not set
+# CONFIG_AEDSP16_SBPRO is not set
+CONFIG_AEDSP16_MPU401=y
+CONFIG_SOUND_TVMIXER=m
+CONFIG_SOUND_KAHLUA=m
+CONFIG_SOUND_ALI5455=m
+CONFIG_SOUND_FORTE=m
+CONFIG_SOUND_RME96XX=m
+CONFIG_SOUND_AD1980=m
+
+#
+# USB support
+#
+CONFIG_USB=m
+# CONFIG_USB_DEBUG is not set
+
+#
+# Miscellaneous USB options
+#
+CONFIG_USB_DEVICEFS=y
+# CONFIG_USB_BANDWIDTH is not set
+# CONFIG_USB_DYNAMIC_MINORS is not set
+
+#
+# USB Host Controller Drivers
+#
+CONFIG_USB_EHCI_HCD=m
+CONFIG_USB_EHCI_SPLIT_ISO=y
+CONFIG_USB_OHCI_HCD=m
+CONFIG_USB_UHCI_HCD=m
+
+#
+# USB Device Class drivers
+#
+CONFIG_USB_AUDIO=m
+
+#
+# USB Bluetooth TTY can only be used with disabled Bluetooth subsystem
+#
+CONFIG_USB_MIDI=m
+CONFIG_USB_ACM=m
+CONFIG_USB_PRINTER=m
+CONFIG_USB_STORAGE=m
+# CONFIG_USB_STORAGE_DEBUG is not set
+CONFIG_USB_STORAGE_DATAFAB=y
+CONFIG_USB_STORAGE_FREECOM=y
+CONFIG_USB_STORAGE_ISD200=y
+CONFIG_USB_STORAGE_DPCM=y
+CONFIG_USB_STORAGE_HP8200e=y
+CONFIG_USB_STORAGE_SDDR09=y
+CONFIG_USB_STORAGE_SDDR55=y
+CONFIG_USB_STORAGE_JUMPSHOT=y
+
+#
+# USB Human Interface Devices (HID)
+#
+CONFIG_USB_HID=m
+CONFIG_USB_HIDINPUT=y
+CONFIG_HID_FF=y
+CONFIG_HID_PID=y
+CONFIG_LOGITECH_FF=y
+CONFIG_THRUSTMASTER_FF=y
+CONFIG_USB_HIDDEV=y
+
+#
+# USB HID Boot Protocol drivers
+#
+# CONFIG_USB_KBD is not set
+# CONFIG_USB_MOUSE is not set
+CONFIG_USB_AIPTEK=m
+CONFIG_USB_WACOM=m
+CONFIG_USB_KBTAB=m
+CONFIG_USB_POWERMATE=m
+CONFIG_USB_MTOUCH=m
+CONFIG_USB_XPAD=m
+CONFIG_USB_ATI_REMOTE=m
+
+#
+# USB Imaging devices
+#
+CONFIG_USB_MDC800=m
+CONFIG_USB_MICROTEK=m
+CONFIG_USB_HPUSBSCSI=m
+
+#
+# USB Multimedia devices
+#
+CONFIG_USB_DABUSB=m
+CONFIG_USB_VICAM=m
+CONFIG_USB_DSBR=m
+CONFIG_USB_IBMCAM=m
+CONFIG_USB_KONICAWC=m
+CONFIG_USB_OV511=m
+CONFIG_USB_SE401=m
+CONFIG_USB_STV680=m
+CONFIG_USB_W9968CF=m
+
+#
+# USB Network adaptors
+#
+CONFIG_USB_CATC=m
+CONFIG_USB_KAWETH=m
+CONFIG_USB_PEGASUS=m
+CONFIG_USB_RTL8150=m
+CONFIG_USB_USBNET=m
+
+#
+# USB Host-to-Host Cables
+#
+CONFIG_USB_ALI_M5632=y
+CONFIG_USB_AN2720=y
+CONFIG_USB_BELKIN=y
+CONFIG_USB_GENESYS=y
+CONFIG_USB_NET1080=y
+CONFIG_USB_PL2301=y
+
+#
+# Intelligent USB Devices/Gadgets
+#
+CONFIG_USB_ARMLINUX=y
+CONFIG_USB_EPSON2888=y
+CONFIG_USB_ZAURUS=y
+CONFIG_USB_CDCETHER=y
+
+#
+# USB Network Adapters
+#
+CONFIG_USB_AX8817X=y
+
+#
+# USB port drivers
+#
+CONFIG_USB_USS720=m
+
+#
+# USB Serial Converter support
+#
+CONFIG_USB_SERIAL=m
+CONFIG_USB_SERIAL_GENERIC=y
+CONFIG_USB_SERIAL_BELKIN=m
+CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
+CONFIG_USB_SERIAL_EMPEG=m
+CONFIG_USB_SERIAL_FTDI_SIO=m
+CONFIG_USB_SERIAL_VISOR=m
+CONFIG_USB_SERIAL_IPAQ=m
+CONFIG_USB_SERIAL_IR=m
+CONFIG_USB_SERIAL_EDGEPORT=m
+CONFIG_USB_SERIAL_EDGEPORT_TI=m
+CONFIG_USB_SERIAL_KEYSPAN_PDA=m
+CONFIG_USB_SERIAL_KEYSPAN=m
+CONFIG_USB_SERIAL_KEYSPAN_MPR=y
+CONFIG_USB_SERIAL_KEYSPAN_USA28=y
+CONFIG_USB_SERIAL_KEYSPAN_USA28X=y
+CONFIG_USB_SERIAL_KEYSPAN_USA28XA=y
+CONFIG_USB_SERIAL_KEYSPAN_USA28XB=y
+CONFIG_USB_SERIAL_KEYSPAN_USA19=y
+CONFIG_USB_SERIAL_KEYSPAN_USA18X=y
+CONFIG_USB_SERIAL_KEYSPAN_USA19W=y
+CONFIG_USB_SERIAL_KEYSPAN_USA19QW=y
+CONFIG_USB_SERIAL_KEYSPAN_USA19QI=y
+CONFIG_USB_SERIAL_KEYSPAN_USA49W=y
+CONFIG_USB_SERIAL_KEYSPAN_USA49WLC=y
+CONFIG_USB_SERIAL_KLSI=m
+CONFIG_USB_SERIAL_KOBIL_SCT=m
+CONFIG_USB_SERIAL_MCT_U232=m
+CONFIG_USB_SERIAL_PL2303=m
+CONFIG_USB_SERIAL_SAFE=m
+CONFIG_USB_SERIAL_SAFE_PADDED=y
+CONFIG_USB_SERIAL_CYBERJACK=m
+CONFIG_USB_SERIAL_XIRCOM=m
+CONFIG_USB_SERIAL_OMNINET=m
+CONFIG_USB_EZUSB=y
+
+#
+# USB Miscellaneous drivers
+#
+CONFIG_USB_EMI62=m
+CONFIG_USB_EMI26=m
+CONFIG_USB_TIGL=m
+CONFIG_USB_AUERSWALD=m
+CONFIG_USB_RIO500=m
+CONFIG_USB_LEGOTOWER=m
+CONFIG_USB_LCD=m
+CONFIG_USB_LED=m
+CONFIG_USB_SPEEDTOUCH=m
+# CONFIG_USB_TEST is not set
+
+#
+# USB Gadget Support
+#
+# CONFIG_USB_GADGET is not set
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=y
+CONFIG_EXT2_FS_XATTR=y
+CONFIG_EXT2_FS_POSIX_ACL=y
+CONFIG_EXT2_FS_SECURITY=y
+CONFIG_EXT3_FS=m
+CONFIG_EXT3_FS_XATTR=y
+CONFIG_EXT3_FS_POSIX_ACL=y
+CONFIG_EXT3_FS_SECURITY=y
+CONFIG_JBD=m
+CONFIG_JBD_DEBUG=y
+CONFIG_FS_MBCACHE=y
+CONFIG_REISERFS_FS=m
+# CONFIG_REISERFS_CHECK is not set
+# CONFIG_REISERFS_PROC_INFO is not set
+CONFIG_REISERFS_FS_XATTR=y
+CONFIG_REISERFS_FS_POSIX_ACL=y
+CONFIG_REISERFS_FS_SECURITY=y
+CONFIG_JFS_FS=m
+CONFIG_JFS_POSIX_ACL=y
+# CONFIG_JFS_DEBUG is not set
+CONFIG_JFS_STATISTICS=y
+CONFIG_FS_POSIX_ACL=y
+CONFIG_XFS_FS=m
+CONFIG_XFS_RT=y
+CONFIG_XFS_QUOTA=m
+CONFIG_XFS_SECURITY=y
+CONFIG_XFS_POSIX_ACL=y
+CONFIG_XFS_DMAPI=m
+# CONFIG_XFS_DEBUG is not set
+# CONFIG_XFS_TRACE is not set
+CONFIG_MINIX_FS=y
+CONFIG_ROMFS_FS=m
+CONFIG_QUOTA=y
+CONFIG_QFMT_V1=m
+CONFIG_QFMT_V2=m
+CONFIG_QUOTACTL=y
+CONFIG_AUTOFS_FS=m
+CONFIG_AUTOFS4_FS=m
+
+#
+# CD-ROM/DVD Filesystems
+#
+CONFIG_ISO9660_FS=y
+CONFIG_JOLIET=y
+CONFIG_ZISOFS=y
+CONFIG_ZISOFS_FS=y
+CONFIG_UDF_FS=m
+
+#
+# DOS/FAT/NT Filesystems
+#
+CONFIG_FAT_FS=m
+CONFIG_MSDOS_FS=m
+CONFIG_VFAT_FS=m
+CONFIG_NTFS_FS=m
+# CONFIG_NTFS_DEBUG is not set
+# CONFIG_NTFS_RW is not set
+CONFIG_RCFS_FS=m
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_KCORE=y
+# CONFIG_DEVFS_FS is not set
+CONFIG_DEVPTS_FS_XATTR=y
+CONFIG_DEVPTS_FS_SECURITY=y
+CONFIG_TMPFS=y
+CONFIG_HUGETLBFS=y
+CONFIG_HUGETLB_PAGE=y
+CONFIG_RAMFS=y
+CONFIG_RELAYFS_FS=m
+CONFIG_KLOG_CHANNEL=y
+# CONFIG_KLOG_CHANNEL_AUTOENABLE is not set
+CONFIG_KLOG_CHANNEL_SHIFT=21
+
+#
+# Miscellaneous filesystems
+#
+CONFIG_ADFS_FS=m
+# CONFIG_ADFS_FS_RW is not set
+CONFIG_AFFS_FS=m
+CONFIG_HFS_FS=m
+CONFIG_HFSPLUS_FS=m
+CONFIG_BEFS_FS=m
+# CONFIG_BEFS_DEBUG is not set
+CONFIG_BFS_FS=m
+CONFIG_EFS_FS=m
+CONFIG_JFFS_FS=m
+CONFIG_JFFS_FS_VERBOSE=0
+CONFIG_JFFS2_FS=m
+CONFIG_JFFS2_FS_DEBUG=0
+# CONFIG_JFFS2_FS_NAND is not set
+CONFIG_CRAMFS=m
+CONFIG_VXFS_FS=m
+CONFIG_HPFS_FS=m
+CONFIG_QNX4FS_FS=m
+# CONFIG_QNX4FS_RW is not set
+CONFIG_SYSV_FS=m
+CONFIG_UFS_FS=m
+# CONFIG_UFS_FS_WRITE is not set
+
+#
+# Network File Systems
+#
+CONFIG_NFS_FS=y
+CONFIG_NFS_V3=y
+CONFIG_NFS_ACL=y
+CONFIG_NFS_V4=y
+CONFIG_NFS_DIRECTIO=y
+CONFIG_NFSD=m
+CONFIG_NFSD_V3=y
+CONFIG_NFSD_ACL=y
+CONFIG_NFS_ACL_SUPPORT=y
+CONFIG_NFSD_V4=y
+CONFIG_NFSD_TCP=y
+CONFIG_LOCKD=y
+CONFIG_STATD=y
+CONFIG_LOCKD_V4=y
+CONFIG_EXPORTFS=m
+CONFIG_SUNRPC=y
+CONFIG_SUNRPC_GSS=y
+CONFIG_RPCSEC_GSS_KRB5=y
+CONFIG_SMB_FS=m
+CONFIG_SMB_NLS_DEFAULT=y
+CONFIG_SMB_NLS_REMOTE="cp437"
+CONFIG_CIFS=m
+CONFIG_NCP_FS=m
+CONFIG_NCPFS_PACKET_SIGNING=y
+CONFIG_NCPFS_IOCTL_LOCKING=y
+CONFIG_NCPFS_STRONG=y
+CONFIG_NCPFS_NFS_NS=y
+CONFIG_NCPFS_OS2_NS=y
+CONFIG_NCPFS_SMALLDOS=y
+CONFIG_NCPFS_NLS=y
+CONFIG_NCPFS_EXTRAS=y
+CONFIG_CODA_FS=m
+# CONFIG_CODA_FS_OLD_API is not set
+# CONFIG_INTERMEZZO_FS is not set
+CONFIG_AFS_FS=m
+CONFIG_RXRPC=m
+
+#
+# Partition Types
+#
+CONFIG_PARTITION_ADVANCED=y
+# CONFIG_ACORN_PARTITION is not set
+CONFIG_OSF_PARTITION=y
+# CONFIG_AMIGA_PARTITION is not set
+CONFIG_ATARI_PARTITION=y
+CONFIG_MAC_PARTITION=y
+CONFIG_MSDOS_PARTITION=y
+CONFIG_BSD_DISKLABEL=y
+# CONFIG_MINIX_SUBPARTITION is not set
+CONFIG_SOLARIS_X86_PARTITION=y
+CONFIG_UNIXWARE_DISKLABEL=y
+CONFIG_LDM_PARTITION=y
+# CONFIG_LDM_DEBUG is not set
+CONFIG_NEC98_PARTITION=y
+# CONFIG_SGI_PARTITION is not set
+CONFIG_ULTRIX_PARTITION=y
+CONFIG_SUN_PARTITION=y
+CONFIG_EFI_PARTITION=y
+
+#
+# Native Language Support
+#
+CONFIG_NLS=y
+CONFIG_NLS_DEFAULT="iso8859-1"
+CONFIG_NLS_CODEPAGE_437=m
+CONFIG_NLS_CODEPAGE_737=m
+CONFIG_NLS_CODEPAGE_775=m
+CONFIG_NLS_CODEPAGE_850=m
+CONFIG_NLS_CODEPAGE_852=m
+CONFIG_NLS_CODEPAGE_855=m
+CONFIG_NLS_CODEPAGE_857=m
+CONFIG_NLS_CODEPAGE_860=m
+CONFIG_NLS_CODEPAGE_861=m
+CONFIG_NLS_CODEPAGE_862=m
+CONFIG_NLS_CODEPAGE_863=m
+CONFIG_NLS_CODEPAGE_864=m
+CONFIG_NLS_CODEPAGE_865=m
+CONFIG_NLS_CODEPAGE_866=m
+CONFIG_NLS_CODEPAGE_869=m
+CONFIG_NLS_CODEPAGE_936=m
+CONFIG_NLS_CODEPAGE_950=m
+CONFIG_NLS_CODEPAGE_932=m
+CONFIG_NLS_CODEPAGE_949=m
+CONFIG_NLS_CODEPAGE_874=m
+CONFIG_NLS_ISO8859_8=m
+CONFIG_NLS_CODEPAGE_1250=m
+CONFIG_NLS_CODEPAGE_1251=m
+CONFIG_NLS_ISO8859_1=m
+CONFIG_NLS_ISO8859_2=m
+CONFIG_NLS_ISO8859_3=m
+CONFIG_NLS_ISO8859_4=m
+CONFIG_NLS_ISO8859_5=m
+CONFIG_NLS_ISO8859_6=m
+CONFIG_NLS_ISO8859_7=m
+CONFIG_NLS_ISO8859_9=m
+CONFIG_NLS_ISO8859_13=m
+CONFIG_NLS_ISO8859_14=m
+CONFIG_NLS_ISO8859_15=m
+CONFIG_NLS_KOI8_R=m
+CONFIG_NLS_KOI8_U=m
+CONFIG_NLS_UTF8=m
+
+#
+# Profiling support
+#
+# CONFIG_PROFILING is not set
+
+#
+# Kernel hacking
+#
+CONFIG_CRASH_DUMP=m
+CONFIG_KERNTYPES=y
+CONFIG_CRASH_DUMP_BLOCKDEV=m
+CONFIG_CRASH_DUMP_NETDEV=m
+# CONFIG_CRASH_DUMP_MEMDEV is not set
+CONFIG_CRASH_DUMP_COMPRESS_RLE=m
+CONFIG_CRASH_DUMP_COMPRESS_GZIP=m
+CONFIG_DEBUG_KERNEL=y
+CONFIG_EARLY_PRINTK=y
+# CONFIG_DEBUG_STACKOVERFLOW is not set
+CONFIG_DEBUG_STACK_USAGE=y
+# CONFIG_DEBUG_SLAB is not set
+CONFIG_MAGIC_SYSRQ=y
+# CONFIG_DEBUG_SPINLOCK is not set
+# CONFIG_DEBUG_PAGEALLOC is not set
+# CONFIG_DEBUG_HIGHMEM is not set
+# CONFIG_DEBUG_INFO is not set
+# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
+# CONFIG_FRAME_POINTER is not set
+# CONFIG_KDB is not set
+CONFIG_X86_FIND_SMP_CONFIG=y
+CONFIG_X86_MPPARSE=y
+
+#
+# Security options
+#
+CONFIG_SECURITY=y
+CONFIG_SECURITY_NETWORK=y
+CONFIG_SECURITY_CAPABILITIES=y
+CONFIG_SECURITY_CAPABILITIES_BOOTPARAM=y
+CONFIG_SECURITY_ROOTPLUG=m
+CONFIG_SECURITY_SELINUX=y
+CONFIG_SECURITY_SELINUX_BOOTPARAM=y
+CONFIG_SECURITY_SELINUX_DEVELOP=y
+# CONFIG_SECURITY_SELINUX_MLS is not set
+
+#
+# Cryptographic options
+#
+CONFIG_CRYPTO=y
+CONFIG_CRYPTO_HMAC=y
+CONFIG_CRYPTO_NULL=m
+CONFIG_CRYPTO_MD4=m
+CONFIG_CRYPTO_MD5=y
+CONFIG_CRYPTO_SHA1=m
+CONFIG_CRYPTO_SHA256=m
+CONFIG_CRYPTO_SHA512=m
+CONFIG_CRYPTO_DES=y
+CONFIG_CRYPTO_BLOWFISH=m
+CONFIG_CRYPTO_TWOFISH=m
+CONFIG_CRYPTO_SERPENT=m
+CONFIG_CRYPTO_AES=m
+CONFIG_CRYPTO_CAST5=m
+CONFIG_CRYPTO_CAST6=m
+CONFIG_CRYPTO_ARC4=m
+CONFIG_CRYPTO_DEFLATE=m
+CONFIG_CRYPTO_MICHAEL_MIC=m
+CONFIG_CRYPTO_TEST=m
+
+#
+# Library routines
+#
+CONFIG_CRC32=y
+CONFIG_QSORT=y
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=m
+
+#
+# Build options
+#
+CONFIG_SUSE_KERNEL=y
+CONFIG_CFGNAME="bigsmp"
+CONFIG_RELEASE="51.0"
+CONFIG_X86_SMP=y
+CONFIG_X86_HT=y
+CONFIG_X86_BIOS_REBOOT=y
+CONFIG_X86_TRAMPOLINE=y
+CONFIG_PC=y
diff --git a/lustre/kernel_patches/kernel_configs/kernel-2.6.4-2.6-suse-i686.config b/lustre/kernel_patches/kernel_configs/kernel-2.6.4-2.6-suse-i686.config
new file mode 100644 (file)
index 0000000..8492557
--- /dev/null
@@ -0,0 +1,2784 @@
+#
+# Automatically generated make config: don't edit
+#
+CONFIG_X86=y
+CONFIG_MMU=y
+CONFIG_UID16=y
+CONFIG_GENERIC_ISA_DMA=y
+
+#
+# Code maturity level options
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_CLEAN_COMPILE=y
+# CONFIG_STANDALONE is not set
+
+#
+# General setup
+#
+CONFIG_SWAP=y
+CONFIG_SYSVIPC=y
+CONFIG_BSD_PROCESS_ACCT=y
+CONFIG_SYSCTL=y
+CONFIG_LOG_BUF_SHIFT=17
+CONFIG_HOTPLUG=y
+CONFIG_EVLOG=y
+# CONFIG_EVLOG_FWPRINTK is not set
+CONFIG_IKCONFIG=y
+CONFIG_IKCONFIG_PROC=y
+# CONFIG_EMBEDDED is not set
+CONFIG_DELAY_ACCT=y
+CONFIG_KALLSYMS=y
+CONFIG_FUTEX=y
+CONFIG_EPOLL=y
+CONFIG_IOSCHED_NOOP=y
+CONFIG_IOSCHED_AS=y
+CONFIG_IOSCHED_DEADLINE=y
+CONFIG_IOSCHED_CFQ=y
+# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
+
+#
+# Loadable module support
+#
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+CONFIG_MODULE_FORCE_UNLOAD=y
+CONFIG_OBSOLETE_MODPARM=y
+CONFIG_MODVERSIONS=y
+CONFIG_KMOD=y
+CONFIG_STOP_MACHINE=y
+CONFIG_CKRM=y
+CONFIG_CKRM_RES_DUMMY=m
+CONFIG_CKRM_RES_SOCKETAQ=m
+
+#
+# Processor type and features
+#
+# CONFIG_X86_PC is not set
+# CONFIG_X86_ELAN is not set
+# CONFIG_X86_VOYAGER is not set
+# CONFIG_X86_NUMAQ is not set
+# CONFIG_X86_SUMMIT is not set
+# CONFIG_X86_BIGSMP is not set
+# CONFIG_X86_VISWS is not set
+CONFIG_X86_GENERICARCH=y
+# CONFIG_X86_ES7000 is not set
+CONFIG_X86_CYCLONE_TIMER=y
+# CONFIG_M386 is not set
+# CONFIG_M486 is not set
+# CONFIG_M586 is not set
+# CONFIG_M586TSC is not set
+# CONFIG_M586MMX is not set
+CONFIG_M686=y
+# CONFIG_MPENTIUMII is not set
+# CONFIG_MPENTIUMIII is not set
+# CONFIG_MPENTIUMM is not set
+# CONFIG_MPENTIUM4 is not set
+# CONFIG_MK6 is not set
+# CONFIG_MK7 is not set
+# CONFIG_MK8 is not set
+# CONFIG_MCRUSOE is not set
+# CONFIG_MWINCHIPC6 is not set
+# CONFIG_MWINCHIP2 is not set
+# CONFIG_MWINCHIP3D is not set
+# CONFIG_MCYRIXIII is not set
+# CONFIG_MVIAC3_2 is not set
+CONFIG_X86_GENERIC=y
+CONFIG_X86_CMPXCHG=y
+CONFIG_X86_XADD=y
+CONFIG_X86_L1_CACHE_SHIFT=7
+CONFIG_RWSEM_XCHGADD_ALGORITHM=y
+CONFIG_X86_PPRO_FENCE=y
+CONFIG_X86_WP_WORKS_OK=y
+CONFIG_X86_INVLPG=y
+CONFIG_X86_BSWAP=y
+CONFIG_X86_POPAD_OK=y
+CONFIG_X86_GOOD_APIC=y
+CONFIG_X86_INTEL_USERCOPY=y
+CONFIG_X86_USE_PPRO_CHECKSUM=y
+# CONFIG_HPET_TIMER is not set
+# CONFIG_HPET_EMULATE_RTC is not set
+CONFIG_SMP=y
+CONFIG_NR_CPUS=32
+# CONFIG_PREEMPT is not set
+CONFIG_X86_LOCAL_APIC=y
+CONFIG_X86_IO_APIC=y
+CONFIG_X86_TSC=y
+CONFIG_X86_MCE=y
+# CONFIG_X86_MCE_NONFATAL is not set
+CONFIG_X86_MCE_P4THERMAL=y
+CONFIG_TOSHIBA=m
+CONFIG_I8K=m
+CONFIG_MICROCODE=m
+CONFIG_X86_MSR=m
+CONFIG_X86_CPUID=m
+
+#
+# Firmware Drivers
+#
+CONFIG_EDD=m
+# CONFIG_NOHIGHMEM is not set
+# CONFIG_HIGHMEM4G is not set
+CONFIG_HIGHMEM64G=y
+CONFIG_HIGHMEM=y
+CONFIG_X86_PAE=y
+# CONFIG_NUMA is not set
+CONFIG_HIGHPTE=y
+# CONFIG_MATH_EMULATION is not set
+CONFIG_MTRR=y
+CONFIG_EFI=y
+CONFIG_IRQBALANCE=y
+CONFIG_HAVE_DEC_LOCK=y
+CONFIG_BOOT_IOREMAP=y
+CONFIG_REGPARM=y
+
+#
+# Special options
+#
+CONFIG_PROC_MM=y
+
+#
+# Power management options (ACPI, APM)
+#
+CONFIG_PM=y
+# CONFIG_SOFTWARE_SUSPEND is not set
+CONFIG_PM_DISK=y
+CONFIG_PM_DISK_PARTITION=""
+
+#
+# ACPI (Advanced Configuration and Power Interface) Support
+#
+CONFIG_ACPI=y
+CONFIG_ACPI_BOOT=y
+CONFIG_ACPI_INTERPRETER=y
+CONFIG_ACPI_SLEEP=y
+CONFIG_ACPI_SLEEP_PROC_FS=y
+CONFIG_ACPI_AC=m
+CONFIG_ACPI_BATTERY=m
+CONFIG_ACPI_BUTTON=m
+CONFIG_ACPI_FAN=m
+CONFIG_ACPI_PROCESSOR=m
+CONFIG_ACPI_THERMAL=m
+# CONFIG_ACPI_ASUS is not set
+CONFIG_ACPI_TOSHIBA=m
+# CONFIG_ACPI_DEBUG is not set
+CONFIG_ACPI_BUS=y
+CONFIG_ACPI_EC=y
+CONFIG_ACPI_POWER=y
+CONFIG_ACPI_PCI=y
+CONFIG_ACPI_SYSTEM=y
+CONFIG_X86_PM_TIMER=y
+CONFIG_ACPI_INITRD=y
+
+#
+# APM (Advanced Power Management) BIOS Support
+#
+CONFIG_APM=y
+# CONFIG_APM_IGNORE_USER_SUSPEND is not set
+CONFIG_APM_DO_ENABLE=y
+# CONFIG_APM_CPU_IDLE is not set
+CONFIG_APM_DISPLAY_BLANK=y
+# CONFIG_APM_RTC_IS_GMT is not set
+CONFIG_APM_ALLOW_INTS=y
+# CONFIG_APM_REAL_MODE_POWER_OFF is not set
+
+#
+# CPU Frequency scaling
+#
+CONFIG_CPU_FREQ=y
+CONFIG_CPU_FREQ_PROC_INTF=y
+CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
+# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
+CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
+CONFIG_CPU_FREQ_GOV_POWERSAVE=m
+CONFIG_CPU_FREQ_GOV_USERSPACE=m
+# CONFIG_CPU_FREQ_24_API is not set
+CONFIG_CPU_FREQ_TABLE=m
+
+#
+# CPUFreq processor drivers
+#
+CONFIG_X86_ACPI_CPUFREQ=m
+# CONFIG_X86_ACPI_CPUFREQ_PROC_INTF is not set
+CONFIG_X86_POWERNOW_K6=m
+CONFIG_X86_POWERNOW_K7=m
+CONFIG_X86_POWERNOW_K8=m
+CONFIG_X86_POWERNOW_K8_ACPI=y
+CONFIG_X86_GX_SUSPMOD=m
+CONFIG_X86_SPEEDSTEP_CENTRINO=m
+CONFIG_X86_SPEEDSTEP_ICH=m
+CONFIG_X86_SPEEDSTEP_SMI=m
+CONFIG_X86_P4_CLOCKMOD=m
+CONFIG_X86_SPEEDSTEP_LIB=m
+CONFIG_X86_LONGRUN=m
+CONFIG_X86_LONGHAUL=m
+
+#
+# Bus options (PCI, PCMCIA, EISA, MCA, ISA)
+#
+CONFIG_PCI=y
+# CONFIG_PCI_GOBIOS is not set
+# CONFIG_PCI_GOMMCONFIG is not set
+# CONFIG_PCI_GODIRECT is not set
+CONFIG_PCI_GOANY=y
+CONFIG_PCI_BIOS=y
+CONFIG_PCI_DIRECT=y
+CONFIG_PCI_MMCONFIG=y
+CONFIG_PCI_USE_VECTOR=y
+# CONFIG_PCI_LEGACY_PROC is not set
+CONFIG_PCI_NAMES=y
+CONFIG_ISA=y
+# CONFIG_EISA is not set
+# CONFIG_MCA is not set
+CONFIG_SCx200=m
+
+#
+# PCMCIA/CardBus support
+#
+CONFIG_PCMCIA=m
+# CONFIG_PCMCIA_DEBUG is not set
+CONFIG_YENTA=m
+CONFIG_CARDBUS=y
+CONFIG_I82092=m
+CONFIG_I82365=m
+CONFIG_TCIC=m
+CONFIG_PCMCIA_PROBE=y
+
+#
+# PCI Hotplug Support
+#
+CONFIG_HOTPLUG_PCI=m
+CONFIG_HOTPLUG_PCI_FAKE=m
+CONFIG_HOTPLUG_PCI_COMPAQ=m
+CONFIG_HOTPLUG_PCI_COMPAQ_NVRAM=y
+CONFIG_HOTPLUG_PCI_IBM=m
+CONFIG_HOTPLUG_PCI_ACPI=m
+CONFIG_HOTPLUG_PCI_CPCI=y
+CONFIG_HOTPLUG_PCI_CPCI_ZT5550=m
+CONFIG_HOTPLUG_PCI_CPCI_GENERIC=m
+CONFIG_HOTPLUG_PCI_PCIE=m
+# CONFIG_HOTPLUG_PCI_PCIE_POLL_EVENT_MODE is not set
+# CONFIG_HOTPLUG_PCI_SHPC is not set
+
+#
+# Executable file formats
+#
+CONFIG_BINFMT_ELF=y
+CONFIG_BINFMT_AOUT=m
+CONFIG_BINFMT_MISC=m
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_FW_LOADER=m
+# CONFIG_DEBUG_DRIVER is not set
+
+#
+# Memory Technology Devices (MTD)
+#
+CONFIG_MTD=m
+# CONFIG_MTD_DEBUG is not set
+CONFIG_MTD_PARTITIONS=m
+CONFIG_MTD_CONCAT=m
+CONFIG_MTD_REDBOOT_PARTS=m
+CONFIG_MTD_CMDLINE_PARTS=m
+
+#
+# User Modules And Translation Layers
+#
+CONFIG_MTD_CHAR=m
+CONFIG_MTD_BLOCK=m
+# CONFIG_MTD_BLOCK_RO is not set
+CONFIG_FTL=m
+# CONFIG_NFTL is not set
+CONFIG_INFTL=m
+
+#
+# RAM/ROM/Flash chip drivers
+#
+CONFIG_MTD_CFI=m
+CONFIG_MTD_JEDECPROBE=m
+CONFIG_MTD_GEN_PROBE=m
+CONFIG_MTD_CFI_ADV_OPTIONS=y
+CONFIG_MTD_CFI_NOSWAP=y
+# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
+# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
+# CONFIG_MTD_CFI_GEOMETRY is not set
+CONFIG_MTD_CFI_INTELEXT=m
+CONFIG_MTD_CFI_AMDSTD=m
+CONFIG_MTD_CFI_STAA=m
+# CONFIG_MTD_RAM is not set
+# CONFIG_MTD_ROM is not set
+CONFIG_MTD_ABSENT=m
+CONFIG_MTD_OBSOLETE_CHIPS=y
+CONFIG_MTD_AMDSTD=m
+CONFIG_MTD_SHARP=m
+CONFIG_MTD_JEDEC=m
+
+#
+# Mapping drivers for chip access
+#
+CONFIG_MTD_COMPLEX_MAPPINGS=y
+CONFIG_MTD_PHYSMAP=m
+CONFIG_MTD_PHYSMAP_START=0x8000000
+CONFIG_MTD_PHYSMAP_LEN=0x4000000
+CONFIG_MTD_PHYSMAP_BUSWIDTH=2
+CONFIG_MTD_PNC2000=m
+CONFIG_MTD_SC520CDP=m
+CONFIG_MTD_NETSC520=m
+CONFIG_MTD_SBC_GXX=m
+CONFIG_MTD_ELAN_104NC=m
+CONFIG_MTD_OCTAGON=m
+CONFIG_MTD_VMAX=m
+CONFIG_MTD_SCx200_DOCFLASH=m
+CONFIG_MTD_AMD76XROM=m
+CONFIG_MTD_ICH2ROM=m
+CONFIG_MTD_SCB2_FLASH=m
+CONFIG_MTD_NETtel=m
+CONFIG_MTD_DILNETPC=m
+CONFIG_MTD_DILNETPC_BOOTSIZE=0x80000
+CONFIG_MTD_L440GX=m
+CONFIG_MTD_PCI=m
+
+#
+# Self-contained MTD device drivers
+#
+CONFIG_MTD_PMC551=m
+CONFIG_MTD_PMC551_BUGFIX=y
+# CONFIG_MTD_PMC551_DEBUG is not set
+CONFIG_MTD_SLRAM=m
+CONFIG_MTD_MTDRAM=m
+CONFIG_MTDRAM_TOTAL_SIZE=4096
+CONFIG_MTDRAM_ERASE_SIZE=128
+CONFIG_MTD_BLKMTD=m
+
+#
+# Disk-On-Chip Device Drivers
+#
+CONFIG_MTD_DOC2000=m
+CONFIG_MTD_DOC2001=m
+CONFIG_MTD_DOC2001PLUS=m
+CONFIG_MTD_DOCPROBE=m
+CONFIG_MTD_DOCPROBE_ADVANCED=y
+CONFIG_MTD_DOCPROBE_ADDRESS=0x0000
+CONFIG_MTD_DOCPROBE_HIGH=y
+CONFIG_MTD_DOCPROBE_55AA=y
+
+#
+# NAND Flash Device Drivers
+#
+CONFIG_MTD_NAND=m
+# CONFIG_MTD_NAND_VERIFY_WRITE is not set
+CONFIG_MTD_NAND_IDS=m
+
+#
+# Parallel port support
+#
+CONFIG_PARPORT=m
+CONFIG_PARPORT_PC=m
+CONFIG_PARPORT_PC_CML1=m
+CONFIG_PARPORT_SERIAL=m
+CONFIG_PARPORT_PC_FIFO=y
+CONFIG_PARPORT_PC_SUPERIO=y
+CONFIG_PARPORT_PC_PCMCIA=m
+CONFIG_PARPORT_OTHER=y
+CONFIG_PARPORT_1284=y
+
+#
+# Plug and Play support
+#
+CONFIG_PNP=y
+# CONFIG_PNP_DEBUG is not set
+
+#
+# Protocols
+#
+CONFIG_ISAPNP=y
+CONFIG_PNPBIOS=y
+CONFIG_PNPBIOS_PROC_FS=y
+
+#
+# Block devices
+#
+CONFIG_BLK_DEV_FD=y
+CONFIG_BLK_DEV_XD=m
+CONFIG_PARIDE=m
+CONFIG_PARIDE_PARPORT=m
+
+#
+# Parallel IDE high-level drivers
+#
+CONFIG_PARIDE_PD=m
+CONFIG_PARIDE_PCD=m
+CONFIG_PARIDE_PF=m
+CONFIG_PARIDE_PT=m
+CONFIG_PARIDE_PG=m
+
+#
+# Parallel IDE protocol modules
+#
+CONFIG_PARIDE_ATEN=m
+CONFIG_PARIDE_BPCK=m
+CONFIG_PARIDE_BPCK6=m
+CONFIG_PARIDE_COMM=m
+CONFIG_PARIDE_DSTR=m
+CONFIG_PARIDE_FIT2=m
+CONFIG_PARIDE_FIT3=m
+CONFIG_PARIDE_EPAT=m
+CONFIG_PARIDE_EPATC8=y
+CONFIG_PARIDE_EPIA=m
+CONFIG_PARIDE_FRIQ=m
+CONFIG_PARIDE_FRPW=m
+CONFIG_PARIDE_KBIC=m
+CONFIG_PARIDE_KTTI=m
+CONFIG_PARIDE_ON20=m
+CONFIG_PARIDE_ON26=m
+CONFIG_BLK_CPQ_DA=m
+CONFIG_BLK_CPQ_CISS_DA=m
+CONFIG_CISS_SCSI_TAPE=y
+CONFIG_BLK_DEV_DAC960=m
+CONFIG_BLK_DEV_UMEM=m
+CONFIG_BLK_DEV_LOOP=y
+CONFIG_BLK_DEV_CRYPTOLOOP=m
+CONFIG_BLK_DEV_NBD=m
+CONFIG_BLK_DEV_CARMEL=m
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_SIZE=64000
+CONFIG_BLK_DEV_INITRD=y
+CONFIG_LBD=y
+CONFIG_CIPHER_TWOFISH=m
+
+#
+# ATA/ATAPI/MFM/RLL support
+#
+CONFIG_IDE=y
+CONFIG_BLK_DEV_IDE=y
+
+#
+# Please see Documentation/ide.txt for help/info on IDE drives
+#
+# CONFIG_BLK_DEV_HD_IDE is not set
+CONFIG_BLK_DEV_IDEDISK=y
+CONFIG_IDEDISK_MULTI_MODE=y
+CONFIG_IDEDISK_STROKE=y
+CONFIG_BLK_DEV_IDECS=m
+CONFIG_BLK_DEV_IDECD=m
+CONFIG_BLK_DEV_IDETAPE=m
+CONFIG_BLK_DEV_IDEFLOPPY=y
+CONFIG_BLK_DEV_IDESCSI=m
+# CONFIG_IDE_TASK_IOCTL is not set
+# CONFIG_IDE_TASKFILE_IO is not set
+
+#
+# IDE chipset support/bugfixes
+#
+CONFIG_IDE_GENERIC=y
+CONFIG_BLK_DEV_CMD640=y
+CONFIG_BLK_DEV_CMD640_ENHANCED=y
+CONFIG_BLK_DEV_IDEPNP=y
+CONFIG_BLK_DEV_IDEPCI=y
+CONFIG_IDEPCI_SHARE_IRQ=y
+CONFIG_BLK_DEV_OFFBOARD=y
+CONFIG_BLK_DEV_GENERIC=y
+# CONFIG_BLK_DEV_OPTI621 is not set
+CONFIG_BLK_DEV_RZ1000=y
+CONFIG_BLK_DEV_IDEDMA_PCI=y
+# CONFIG_BLK_DEV_IDEDMA_FORCED is not set
+CONFIG_IDEDMA_PCI_AUTO=y
+CONFIG_IDEDMA_ONLYDISK=y
+CONFIG_BLK_DEV_ADMA=y
+CONFIG_BLK_DEV_AEC62XX=y
+CONFIG_BLK_DEV_ALI15X3=y
+# CONFIG_WDC_ALI15X3 is not set
+CONFIG_BLK_DEV_AMD74XX=y
+CONFIG_BLK_DEV_ATIIXP=y
+CONFIG_BLK_DEV_CMD64X=y
+CONFIG_BLK_DEV_TRIFLEX=y
+CONFIG_BLK_DEV_CY82C693=y
+CONFIG_BLK_DEV_CS5520=m
+CONFIG_BLK_DEV_CS5530=m
+CONFIG_BLK_DEV_HPT34X=y
+CONFIG_HPT34X_AUTODMA=y
+CONFIG_BLK_DEV_HPT366=y
+CONFIG_BLK_DEV_SC1200=y
+CONFIG_BLK_DEV_PIIX=y
+CONFIG_BLK_DEV_NS87415=y
+CONFIG_BLK_DEV_PDC202XX_OLD=y
+CONFIG_PDC202XX_BURST=y
+CONFIG_BLK_DEV_PDC202XX_NEW=y
+CONFIG_PDC202XX_FORCE=y
+CONFIG_BLK_DEV_SVWKS=y
+CONFIG_BLK_DEV_SIIMAGE=y
+CONFIG_BLK_DEV_SIS5513=y
+CONFIG_BLK_DEV_SLC90E66=y
+# CONFIG_BLK_DEV_TRM290 is not set
+CONFIG_BLK_DEV_VIA82CXXX=y
+CONFIG_IDE_CHIPSETS=y
+
+#
+# Note: most of these also require special kernel boot parameters
+#
+CONFIG_BLK_DEV_4DRIVES=y
+CONFIG_BLK_DEV_ALI14XX=y
+CONFIG_BLK_DEV_DTC2278=y
+CONFIG_BLK_DEV_HT6560B=y
+# CONFIG_BLK_DEV_PDC4030 is not set
+CONFIG_BLK_DEV_QD65XX=y
+CONFIG_BLK_DEV_UMC8672=y
+CONFIG_BLK_DEV_IDEDMA=y
+# CONFIG_IDEDMA_IVB is not set
+CONFIG_IDEDMA_AUTO=y
+# CONFIG_BLK_DEV_HD is not set
+
+#
+# SCSI device support
+#
+CONFIG_SCSI=m
+CONFIG_SCSI_PROC_FS=y
+
+#
+# SCSI support type (disk, tape, CD-ROM)
+#
+CONFIG_BLK_DEV_SD=m
+CONFIG_CHR_DEV_ST=m
+CONFIG_CHR_DEV_OSST=m
+CONFIG_BLK_DEV_SR=m
+# CONFIG_BLK_DEV_SR_VENDOR is not set
+CONFIG_CHR_DEV_SG=m
+CONFIG_CHR_DEV_SCH=m
+
+#
+# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
+#
+CONFIG_SCSI_MULTI_LUN=y
+CONFIG_SCSI_REPORT_LUNS=y
+CONFIG_SCSI_CONSTANTS=y
+CONFIG_SCSI_LOGGING=y
+
+#
+# SCSI Transport Attributes
+#
+CONFIG_SCSI_SPI_ATTRS=m
+CONFIG_SCSI_FC_ATTRS=m
+
+#
+# SCSI low-level drivers
+#
+CONFIG_BLK_DEV_3W_XXXX_RAID=m
+CONFIG_SCSI_7000FASST=m
+CONFIG_SCSI_ACARD=m
+CONFIG_SCSI_AHA152X=m
+CONFIG_SCSI_AHA1542=m
+CONFIG_SCSI_AACRAID=m
+CONFIG_SCSI_AIC7XXX=m
+CONFIG_AIC7XXX_CMDS_PER_DEVICE=32
+CONFIG_AIC7XXX_RESET_DELAY_MS=5000
+# CONFIG_AIC7XXX_BUILD_FIRMWARE is not set
+# CONFIG_AIC7XXX_DEBUG_ENABLE is not set
+CONFIG_AIC7XXX_DEBUG_MASK=0
+CONFIG_AIC7XXX_REG_PRETTY_PRINT=y
+CONFIG_SCSI_AIC7XXX_OLD=m
+CONFIG_SCSI_AIC79XX=m
+CONFIG_AIC79XX_CMDS_PER_DEVICE=32
+CONFIG_AIC79XX_RESET_DELAY_MS=15000
+# CONFIG_AIC79XX_BUILD_FIRMWARE is not set
+# CONFIG_AIC79XX_ENABLE_RD_STRM is not set
+# CONFIG_AIC79XX_DEBUG_ENABLE is not set
+CONFIG_AIC79XX_DEBUG_MASK=0
+CONFIG_AIC79XX_REG_PRETTY_PRINT=y
+CONFIG_SCSI_ADVANSYS=m
+CONFIG_SCSI_IN2000=m
+CONFIG_SCSI_MEGARAID=m
+CONFIG_SCSI_SATA=y
+CONFIG_SCSI_SATA_SVW=m
+CONFIG_SCSI_ATA_PIIX=m
+CONFIG_SCSI_SATA_PROMISE=m
+CONFIG_SCSI_SATA_SIL=m
+CONFIG_SCSI_SATA_SIS=m
+CONFIG_SCSI_SATA_VIA=m
+CONFIG_SCSI_SATA_VITESSE=m
+CONFIG_SCSI_BUSLOGIC=m
+# CONFIG_SCSI_OMIT_FLASHPOINT is not set
+# CONFIG_SCSI_CPQFCTS is not set
+CONFIG_SCSI_DMX3191D=m
+CONFIG_SCSI_DTC3280=m
+CONFIG_SCSI_EATA=m
+CONFIG_SCSI_EATA_TAGGED_QUEUE=y
+CONFIG_SCSI_EATA_LINKED_COMMANDS=y
+CONFIG_SCSI_EATA_MAX_TAGS=16
+CONFIG_SCSI_EATA_PIO=m
+CONFIG_SCSI_FUTURE_DOMAIN=m
+CONFIG_SCSI_GDTH=m
+CONFIG_SCSI_GENERIC_NCR5380=m
+CONFIG_SCSI_GENERIC_NCR5380_MMIO=m
+CONFIG_SCSI_GENERIC_NCR53C400=y
+CONFIG_SCSI_IPS=m
+# CONFIG_SCSI_INIA100 is not set
+CONFIG_SCSI_PPA=m
+CONFIG_SCSI_IMM=m
+# CONFIG_SCSI_IZIP_EPP16 is not set
+# CONFIG_SCSI_IZIP_SLOW_CTR is not set
+CONFIG_SCSI_NCR53C406A=m
+CONFIG_SCSI_SYM53C8XX_2=m
+CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1
+CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16
+CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64
+# CONFIG_SCSI_SYM53C8XX_IOMAPPED is not set
+CONFIG_SCSI_LPFC=m
+CONFIG_SCSI_IPR=m
+CONFIG_SCSI_IPR_TRACE=y
+CONFIG_SCSI_IPR_DUMP=y
+CONFIG_SCSI_PAS16=m
+CONFIG_SCSI_PSI240I=m
+CONFIG_SCSI_QLOGIC_FAS=m
+CONFIG_SCSI_QLOGIC_ISP=m
+CONFIG_SCSI_QLOGIC_FC=m
+CONFIG_SCSI_QLOGIC_FC_FIRMWARE=y
+CONFIG_SCSI_QLOGIC_1280=m
+CONFIG_SCSI_QLA2XXX=m
+CONFIG_SCSI_QLA21XX=m
+CONFIG_SCSI_QLA22XX=m
+CONFIG_SCSI_QLA2300=m
+CONFIG_SCSI_QLA2322=m
+CONFIG_SCSI_QLA6312=m
+CONFIG_SCSI_QLA6322=m
+CONFIG_SCSI_QLA2XXX_FAILOVER=y
+CONFIG_SCSI_SYM53C416=m
+CONFIG_SCSI_DC395x=m
+CONFIG_SCSI_DC390T=m
+CONFIG_SCSI_T128=m
+CONFIG_SCSI_U14_34F=m
+CONFIG_SCSI_U14_34F_TAGGED_QUEUE=y
+CONFIG_SCSI_U14_34F_LINKED_COMMANDS=y
+CONFIG_SCSI_U14_34F_MAX_TAGS=8
+CONFIG_SCSI_ULTRASTOR=m
+CONFIG_SCSI_NSP32=m
+CONFIG_SCSI_DEBUG=m
+
+#
+# PCMCIA SCSI adapter support
+#
+CONFIG_PCMCIA_AHA152X=m
+CONFIG_PCMCIA_FDOMAIN=m
+CONFIG_PCMCIA_NINJA_SCSI=m
+CONFIG_PCMCIA_QLOGIC=m
+
+#
+# Old CD-ROM drivers (not SCSI, not IDE)
+#
+CONFIG_CD_NO_IDESCSI=y
+CONFIG_AZTCD=m
+CONFIG_GSCD=m
+CONFIG_MCD=m
+CONFIG_MCD_IRQ=11
+CONFIG_MCD_BASE=0x300
+CONFIG_MCDX=m
+CONFIG_OPTCD=m
+CONFIG_SJCD=m
+CONFIG_ISP16_CDI=m
+CONFIG_CDU535=m
+
+#
+# Multi-device support (RAID and LVM)
+#
+CONFIG_MD=y
+CONFIG_BLK_DEV_MD=y
+CONFIG_MD_LINEAR=m
+CONFIG_MD_RAID0=m
+CONFIG_MD_RAID1=m
+CONFIG_MD_RAID5=m
+CONFIG_MD_RAID6=m
+CONFIG_MD_MULTIPATH=m
+CONFIG_BLK_DEV_DM=m
+CONFIG_DM_CRYPT=m
+CONFIG_DM_MULTIPATH=m
+CONFIG_DM_SNAPSHOT=m
+CONFIG_DM_MIRROR=m
+CONFIG_DM_ZERO=m
+CONFIG_DM_FLAKEY=m
+
+#
+# Fusion MPT device support
+#
+CONFIG_FUSION=m
+CONFIG_FUSION_MAX_SGE=40
+CONFIG_FUSION_ISENSE=m
+CONFIG_FUSION_CTL=m
+CONFIG_FUSION_LAN=m
+
+#
+# IEEE 1394 (FireWire) support
+#
+CONFIG_IEEE1394=m
+
+#
+# Subsystem Options
+#
+# CONFIG_IEEE1394_VERBOSEDEBUG is not set
+# CONFIG_IEEE1394_OUI_DB is not set
+CONFIG_IEEE1394_EXTRA_CONFIG_ROMS=y
+CONFIG_IEEE1394_CONFIG_ROM_IP1394=y
+
+#
+# Device Drivers
+#
+CONFIG_IEEE1394_PCILYNX=m
+CONFIG_IEEE1394_OHCI1394=m
+
+#
+# Protocol Drivers
+#
+CONFIG_IEEE1394_VIDEO1394=m
+CONFIG_IEEE1394_SBP2=m
+# CONFIG_IEEE1394_SBP2_PHYS_DMA is not set
+CONFIG_IEEE1394_ETH1394=m
+CONFIG_IEEE1394_DV1394=m
+CONFIG_IEEE1394_RAWIO=m
+CONFIG_IEEE1394_CMP=m
+CONFIG_IEEE1394_AMDTP=m
+
+#
+# I2O device support
+#
+CONFIG_I2O=m
+CONFIG_I2O_PCI=m
+CONFIG_I2O_BLOCK=m
+CONFIG_I2O_SCSI=m
+CONFIG_I2O_PROC=m
+
+#
+# Networking support
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+CONFIG_PACKET=m
+CONFIG_PACKET_MMAP=y
+CONFIG_NETLINK_DEV=m
+CONFIG_UNIX=y
+CONFIG_NET_KEY=m
+CONFIG_INET=y
+CONFIG_IP_MULTICAST=y
+CONFIG_IP_ADVANCED_ROUTER=y
+CONFIG_IP_MULTIPLE_TABLES=y
+CONFIG_IP_ROUTE_FWMARK=y
+CONFIG_IP_ROUTE_NAT=y
+CONFIG_IP_ROUTE_MULTIPATH=y
+CONFIG_IP_ROUTE_TOS=y
+CONFIG_IP_ROUTE_VERBOSE=y
+# CONFIG_IP_PNP is not set
+CONFIG_NET_IPIP=m
+CONFIG_NET_IPGRE=m
+CONFIG_NET_IPGRE_BROADCAST=y
+CONFIG_IP_MROUTE=y
+CONFIG_IP_PIMSM_V1=y
+CONFIG_IP_PIMSM_V2=y
+# CONFIG_ARPD is not set
+CONFIG_SYN_COOKIES=y
+CONFIG_INET_AH=m
+CONFIG_INET_ESP=m
+CONFIG_INET_IPCOMP=m
+
+#
+# IP: Virtual Server Configuration
+#
+CONFIG_IP_VS=m
+# CONFIG_IP_VS_DEBUG is not set
+CONFIG_IP_VS_TAB_BITS=12
+
+#
+# IPVS transport protocol load balancing support
+#
+CONFIG_IP_VS_PROTO_TCP=y
+CONFIG_IP_VS_PROTO_UDP=y
+CONFIG_IP_VS_PROTO_ESP=y
+CONFIG_IP_VS_PROTO_AH=y
+
+#
+# IPVS scheduler
+#
+CONFIG_IP_VS_RR=m
+CONFIG_IP_VS_WRR=m
+CONFIG_IP_VS_LC=m
+CONFIG_IP_VS_WLC=m
+CONFIG_IP_VS_LBLC=m
+CONFIG_IP_VS_LBLCR=m
+CONFIG_IP_VS_DH=m
+CONFIG_IP_VS_SH=m
+CONFIG_IP_VS_SED=m
+CONFIG_IP_VS_NQ=m
+
+#
+# IPVS application helper
+#
+CONFIG_IP_VS_FTP=m
+CONFIG_IPV6=m
+CONFIG_IPV6_SUBTREES=y
+CONFIG_IPV6_PRIVACY=y
+CONFIG_IPV6_NDISC_NEW=y
+CONFIG_INET6_AH=m
+CONFIG_INET6_ESP=m
+CONFIG_INET6_IPCOMP=m
+CONFIG_IPV6_TUNNEL=m
+
+#
+# MOBILE IPv6 (EXPERIMENTAL)
+#
+CONFIG_IPV6_MOBILITY=m
+CONFIG_IPV6_MOBILITY_MN=m
+CONFIG_IPV6_MOBILITY_HA=m
+# CONFIG_IPV6_MOBILITY_DEBUG is not set
+CONFIG_DECNET=m
+CONFIG_DECNET_SIOCGIFCONF=y
+# CONFIG_DECNET_ROUTER is not set
+CONFIG_BRIDGE=m
+CONFIG_NETFILTER=y
+# CONFIG_NETFILTER_DEBUG is not set
+CONFIG_BRIDGE_NETFILTER=y
+
+#
+# IP: Netfilter Configuration
+#
+CONFIG_IP_NF_CONNTRACK=m
+CONFIG_IP_NF_FTP=m
+CONFIG_IP_NF_IRC=m
+CONFIG_IP_NF_TFTP=m
+CONFIG_IP_NF_AMANDA=m
+CONFIG_IP_NF_QUEUE=m
+CONFIG_IP_NF_IPTABLES=m
+CONFIG_IP_NF_MATCH_LIMIT=m
+CONFIG_IP_NF_MATCH_IPRANGE=m
+CONFIG_IP_NF_MATCH_MAC=m
+CONFIG_IP_NF_MATCH_PKTTYPE=m
+CONFIG_IP_NF_MATCH_MARK=m
+CONFIG_IP_NF_MATCH_MULTIPORT=m
+CONFIG_IP_NF_MATCH_TOS=m
+CONFIG_IP_NF_MATCH_RECENT=m
+CONFIG_IP_NF_MATCH_ECN=m
+CONFIG_IP_NF_MATCH_DSCP=m
+CONFIG_IP_NF_MATCH_AH_ESP=m
+CONFIG_IP_NF_MATCH_LENGTH=m
+CONFIG_IP_NF_MATCH_TTL=m
+CONFIG_IP_NF_MATCH_TCPMSS=m
+CONFIG_IP_NF_MATCH_HELPER=m
+CONFIG_IP_NF_MATCH_STATE=m
+CONFIG_IP_NF_MATCH_CONNTRACK=m
+CONFIG_IP_NF_MATCH_OWNER=m
+CONFIG_IP_NF_MATCH_PHYSDEV=m
+CONFIG_IP_NF_FILTER=m
+CONFIG_IP_NF_TARGET_REJECT=m
+CONFIG_IP_NF_NAT=m
+CONFIG_IP_NF_NAT_NEEDED=y
+CONFIG_IP_NF_TARGET_MASQUERADE=m
+CONFIG_IP_NF_TARGET_REDIRECT=m
+CONFIG_IP_NF_TARGET_NETMAP=m
+CONFIG_IP_NF_TARGET_SAME=m
+# CONFIG_IP_NF_NAT_LOCAL is not set
+CONFIG_IP_NF_NAT_SNMP_BASIC=m
+CONFIG_IP_NF_NAT_IRC=m
+CONFIG_IP_NF_NAT_FTP=m
+CONFIG_IP_NF_NAT_TFTP=m
+CONFIG_IP_NF_NAT_AMANDA=m
+CONFIG_IP_NF_MANGLE=m
+CONFIG_IP_NF_TARGET_TOS=m
+CONFIG_IP_NF_TARGET_ECN=m
+CONFIG_IP_NF_TARGET_DSCP=m
+CONFIG_IP_NF_TARGET_MARK=m
+CONFIG_IP_NF_TARGET_CLASSIFY=m
+CONFIG_IP_NF_TARGET_LOG=m
+CONFIG_IP_NF_TARGET_ULOG=m
+CONFIG_IP_NF_TARGET_TCPMSS=m
+CONFIG_IP_NF_ARPTABLES=m
+CONFIG_IP_NF_ARPFILTER=m
+CONFIG_IP_NF_ARP_MANGLE=m
+CONFIG_IP_NF_COMPAT_IPCHAINS=m
+CONFIG_IP_NF_COMPAT_IPFWADM=m
+
+#
+# IPv6: Netfilter Configuration
+#
+CONFIG_IP6_NF_FTP=m
+CONFIG_IP6_NF_QUEUE=m
+CONFIG_IP6_NF_IPTABLES=m
+CONFIG_IP6_NF_MATCH_LIMIT=m
+CONFIG_IP6_NF_MATCH_MAC=m
+CONFIG_IP6_NF_MATCH_RT=m
+CONFIG_IP6_NF_MATCH_OPTS=m
+CONFIG_IP6_NF_MATCH_FRAG=m
+CONFIG_IP6_NF_MATCH_HL=m
+CONFIG_IP6_NF_MATCH_MULTIPORT=m
+CONFIG_IP6_NF_MATCH_OWNER=m
+CONFIG_IP6_NF_MATCH_MARK=m
+CONFIG_IP6_NF_MATCH_IPV6HEADER=m
+CONFIG_IP6_NF_MATCH_AHESP=m
+CONFIG_IP6_NF_MATCH_LENGTH=m
+CONFIG_IP6_NF_MATCH_EUI64=m
+CONFIG_IP6_NF_CONNTRACK=m
+CONFIG_IP6_NF_MATCH_STATE=m
+CONFIG_IP6_NF_FILTER=m
+CONFIG_IP6_NF_TARGET_LOG=m
+CONFIG_IP6_NF_TARGET_REJECT=m
+CONFIG_IP6_NF_MANGLE=m
+CONFIG_IP6_NF_TARGET_MARK=m
+
+#
+# DECnet: Netfilter Configuration
+#
+CONFIG_DECNET_NF_GRABULATOR=m
+
+#
+# Bridge: Netfilter Configuration
+#
+CONFIG_BRIDGE_NF_EBTABLES=m
+CONFIG_BRIDGE_EBT_BROUTE=m
+CONFIG_BRIDGE_EBT_T_FILTER=m
+CONFIG_BRIDGE_EBT_T_NAT=m
+CONFIG_BRIDGE_EBT_802_3=m
+CONFIG_BRIDGE_EBT_AMONG=m
+CONFIG_BRIDGE_EBT_ARP=m
+CONFIG_BRIDGE_EBT_IP=m
+CONFIG_BRIDGE_EBT_LIMIT=m
+CONFIG_BRIDGE_EBT_MARK=m
+CONFIG_BRIDGE_EBT_PKTTYPE=m
+CONFIG_BRIDGE_EBT_STP=m
+CONFIG_BRIDGE_EBT_VLAN=m
+CONFIG_BRIDGE_EBT_ARPREPLY=m
+CONFIG_BRIDGE_EBT_DNAT=m
+CONFIG_BRIDGE_EBT_MARK_T=m
+CONFIG_BRIDGE_EBT_REDIRECT=m
+CONFIG_BRIDGE_EBT_SNAT=m
+CONFIG_BRIDGE_EBT_LOG=m
+CONFIG_XFRM=y
+CONFIG_XFRM_USER=m
+
+#
+# SCTP Configuration (EXPERIMENTAL)
+#
+CONFIG_IP_SCTP=m
+# CONFIG_SCTP_DBG_MSG is not set
+# CONFIG_SCTP_DBG_OBJCNT is not set
+# CONFIG_SCTP_HMAC_NONE is not set
+# CONFIG_SCTP_HMAC_SHA1 is not set
+CONFIG_SCTP_HMAC_MD5=y
+CONFIG_ATM=y
+CONFIG_ATM_CLIP=y
+CONFIG_ATM_CLIP_NO_ICMP=y
+CONFIG_ATM_LANE=m
+CONFIG_ATM_MPOA=m
+CONFIG_ATM_BR2684=m
+# CONFIG_ATM_BR2684_IPFILTER is not set
+CONFIG_VLAN_8021Q=m
+CONFIG_LLC=y
+CONFIG_LLC2=m
+CONFIG_IPX=m
+# CONFIG_IPX_INTERN is not set
+CONFIG_ATALK=m
+CONFIG_DEV_APPLETALK=y
+CONFIG_LTPC=m
+CONFIG_COPS=m
+CONFIG_COPS_DAYNA=y
+CONFIG_COPS_TANGENT=y
+CONFIG_IPDDP=m
+CONFIG_IPDDP_ENCAP=y
+CONFIG_IPDDP_DECAP=y
+CONFIG_X25=m
+CONFIG_LAPB=m
+# CONFIG_NET_DIVERT is not set
+CONFIG_ECONET=m
+# CONFIG_ECONET_AUNUDP is not set
+# CONFIG_ECONET_NATIVE is not set
+CONFIG_WAN_ROUTER=m
+# CONFIG_NET_FASTROUTE is not set
+# CONFIG_NET_HW_FLOWCONTROL is not set
+
+#
+# QoS and/or fair queueing
+#
+CONFIG_NET_SCHED=y
+CONFIG_NET_SCH_CBQ=m
+CONFIG_NET_SCH_HTB=m
+CONFIG_NET_SCH_HFSC=m
+CONFIG_NET_SCH_CSZ=m
+CONFIG_NET_SCH_ATM=y
+CONFIG_NET_SCH_PRIO=m
+CONFIG_NET_SCH_RED=m
+CONFIG_NET_SCH_SFQ=m
+CONFIG_NET_SCH_TEQL=m
+CONFIG_NET_SCH_TBF=m
+CONFIG_NET_SCH_GRED=m
+CONFIG_NET_SCH_DSMARK=m
+CONFIG_NET_SCH_DELAY=m
+CONFIG_NET_SCH_INGRESS=m
+CONFIG_NET_QOS=y
+CONFIG_NET_ESTIMATOR=y
+CONFIG_NET_CLS=y
+CONFIG_NET_CLS_TCINDEX=m
+CONFIG_NET_CLS_ROUTE4=m
+CONFIG_NET_CLS_ROUTE=y
+CONFIG_NET_CLS_FW=m
+CONFIG_NET_CLS_U32=m
+CONFIG_NET_CLS_RSVP=m
+CONFIG_NET_CLS_RSVP6=m
+CONFIG_NET_CLS_POLICE=y
+
+#
+# Network testing
+#
+CONFIG_NET_PKTGEN=m
+CONFIG_NETDEVICES=y
+
+#
+# ARCnet devices
+#
+CONFIG_ARCNET=m
+CONFIG_ARCNET_1201=m
+CONFIG_ARCNET_1051=m
+CONFIG_ARCNET_RAW=m
+CONFIG_ARCNET_COM90xx=m
+CONFIG_ARCNET_COM90xxIO=m
+CONFIG_ARCNET_RIM_I=m
+CONFIG_ARCNET_COM20020=m
+CONFIG_ARCNET_COM20020_ISA=m
+CONFIG_ARCNET_COM20020_PCI=m
+CONFIG_DUMMY=m
+CONFIG_BONDING=m
+CONFIG_EQUALIZER=m
+CONFIG_TUN=m
+CONFIG_ETHERTAP=m
+CONFIG_NET_SB1000=m
+
+#
+# Ethernet (10 or 100Mbit)
+#
+CONFIG_NET_ETHERNET=y
+CONFIG_MII=m
+CONFIG_HAPPYMEAL=m
+CONFIG_SUNGEM=m
+CONFIG_NET_VENDOR_3COM=y
+CONFIG_EL1=m
+CONFIG_EL2=m
+CONFIG_ELPLUS=m
+CONFIG_EL16=m
+CONFIG_EL3=m
+CONFIG_3C515=m
+CONFIG_VORTEX=m
+CONFIG_TYPHOON=m
+CONFIG_LANCE=m
+CONFIG_NET_VENDOR_SMC=y
+CONFIG_WD80x3=m
+CONFIG_ULTRA=m
+CONFIG_SMC9194=m
+CONFIG_NET_VENDOR_RACAL=y
+CONFIG_NI52=m
+CONFIG_NI65=m
+
+#
+# Tulip family network device support
+#
+CONFIG_NET_TULIP=y
+CONFIG_DE2104X=m
+CONFIG_TULIP=m
+# CONFIG_TULIP_MWI is not set
+# CONFIG_TULIP_MMIO is not set
+CONFIG_TULIP_NAPI=y
+CONFIG_TULIP_NAPI_HW_MITIGATION=y
+CONFIG_DE4X5=m
+CONFIG_WINBOND_840=m
+CONFIG_DM9102=m
+CONFIG_PCMCIA_XIRCOM=m
+CONFIG_AT1700=m
+CONFIG_DEPCA=m
+CONFIG_HP100=m
+CONFIG_NET_ISA=y
+CONFIG_E2100=m
+CONFIG_EWRK3=m
+CONFIG_EEXPRESS=m
+CONFIG_EEXPRESS_PRO=m
+CONFIG_HPLAN_PLUS=m
+CONFIG_HPLAN=m
+CONFIG_LP486E=m
+CONFIG_ETH16I=m
+CONFIG_NE2000=m
+CONFIG_ZNET=m
+CONFIG_SEEQ8005=m
+CONFIG_NET_PCI=y
+CONFIG_PCNET32=m
+CONFIG_AMD8111_ETH=m
+CONFIG_ADAPTEC_STARFIRE=m
+CONFIG_ADAPTEC_STARFIRE_NAPI=y
+CONFIG_AC3200=m
+CONFIG_APRICOT=m
+CONFIG_B44=m
+CONFIG_FORCEDETH=m
+CONFIG_CS89x0=m
+CONFIG_DGRS=m
+CONFIG_EEPRO100=m
+# CONFIG_EEPRO100_PIO is not set
+CONFIG_E100=m
+CONFIG_E100_NAPI=y
+CONFIG_FEALNX=m
+CONFIG_NATSEMI=m
+CONFIG_NE2K_PCI=m
+CONFIG_8139CP=m
+CONFIG_8139TOO=m
+# CONFIG_8139TOO_PIO is not set
+# CONFIG_8139TOO_TUNE_TWISTER is not set
+CONFIG_8139TOO_8129=y
+# CONFIG_8139_OLD_RX_RESET is not set
+CONFIG_8139_RXBUF_IDX=2
+CONFIG_SIS900=m
+CONFIG_EPIC100=m
+CONFIG_SUNDANCE=m
+# CONFIG_SUNDANCE_MMIO is not set
+CONFIG_TLAN=m
+CONFIG_VIA_RHINE=m
+# CONFIG_VIA_RHINE_MMIO is not set
+CONFIG_NET_POCKET=y
+CONFIG_ATP=m
+CONFIG_DE600=m
+CONFIG_DE620=m
+
+#
+# Ethernet (1000 Mbit)
+#
+CONFIG_ACENIC=m
+# CONFIG_ACENIC_OMIT_TIGON_I is not set
+CONFIG_DL2K=m
+CONFIG_E1000=m
+CONFIG_E1000_NAPI=y
+CONFIG_NS83820=m
+CONFIG_HAMACHI=m
+CONFIG_YELLOWFIN=m
+CONFIG_R8169=m
+CONFIG_SIS190=m
+CONFIG_SK98LIN=m
+CONFIG_TIGON3=m
+CONFIG_NET_BROADCOM=m
+CONFIG_NET_BCM44=m
+
+#
+# Ethernet (10000 Mbit)
+#
+CONFIG_IXGB=m
+CONFIG_IXGB_NAPI=y
+CONFIG_S2IO=m
+CONFIG_S2IO_NAPI=y
+CONFIG_FDDI=y
+# CONFIG_DEFXX is not set
+CONFIG_SKFP=m
+CONFIG_HIPPI=y
+CONFIG_ROADRUNNER=m
+CONFIG_ROADRUNNER_LARGE_RINGS=y
+CONFIG_PLIP=m
+CONFIG_PPP=m
+CONFIG_PPP_MULTILINK=y
+CONFIG_PPP_FILTER=y
+CONFIG_PPP_ASYNC=m
+CONFIG_PPP_SYNC_TTY=m
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_BSDCOMP=m
+CONFIG_PPP_MPPE=m
+CONFIG_PPPOE=m
+CONFIG_PPPOATM=m
+CONFIG_SLIP=m
+CONFIG_SLIP_COMPRESSED=y
+CONFIG_SLIP_SMART=y
+CONFIG_SLIP_MODE_SLIP6=y
+
+#
+# Wireless LAN (non-hamradio)
+#
+CONFIG_NET_RADIO=y
+
+#
+# Obsolete Wireless cards support (pre-802.11)
+#
+CONFIG_STRIP=m
+# CONFIG_ARLAN is not set
+CONFIG_WAVELAN=m
+CONFIG_PCMCIA_WAVELAN=m
+CONFIG_PCMCIA_NETWAVE=m
+
+#
+# Wireless 802.11 Frequency Hopping cards support
+#
+CONFIG_PCMCIA_RAYCS=m
+
+#
+# Wireless 802.11b ISA/PCI cards support
+#
+CONFIG_AIRO=m
+CONFIG_HERMES=m
+CONFIG_PLX_HERMES=m
+CONFIG_TMD_HERMES=m
+CONFIG_PCI_HERMES=m
+CONFIG_ATMEL=m
+CONFIG_PCI_ATMEL=m
+
+#
+# Wireless 802.11b Pcmcia/Cardbus cards support
+#
+CONFIG_PCMCIA_HERMES=m
+CONFIG_AIRO_CS=m
+CONFIG_PCMCIA_ATMEL=m
+CONFIG_PCMCIA_WL3501=m
+
+#
+# Prism GT/Duette 802.11(a/b/g) PCI/Cardbus support
+#
+CONFIG_PRISM54=m
+CONFIG_NET_WIRELESS=y
+
+#
+# Token Ring devices
+#
+CONFIG_TR=y
+CONFIG_IBMTR=m
+CONFIG_IBMOL=m
+CONFIG_IBMLS=m
+CONFIG_3C359=m
+CONFIG_TMS380TR=m
+CONFIG_TMSPCI=m
+CONFIG_SKISA=m
+CONFIG_PROTEON=m
+CONFIG_ABYSS=m
+CONFIG_SMCTR=m
+CONFIG_NET_FC=y
+CONFIG_NET_LPFC=m
+CONFIG_RCPCI=m
+CONFIG_SHAPER=m
+CONFIG_NETCONSOLE=m
+
+#
+# Wan interfaces
+#
+CONFIG_WAN=y
+CONFIG_HOSTESS_SV11=m
+# CONFIG_COSA is not set
+CONFIG_DSCC4=m
+CONFIG_DSCC4_PCISYNC=y
+CONFIG_DSCC4_PCI_RST=y
+CONFIG_LANMEDIA=m
+CONFIG_SEALEVEL_4021=m
+CONFIG_SYNCLINK_SYNCPPP=m
+CONFIG_HDLC=m
+CONFIG_HDLC_RAW=y
+CONFIG_HDLC_RAW_ETH=y
+CONFIG_HDLC_CISCO=y
+CONFIG_HDLC_FR=y
+CONFIG_HDLC_PPP=y
+CONFIG_HDLC_X25=y
+CONFIG_PCI200SYN=m
+CONFIG_WANXL=m
+# CONFIG_WANXL_BUILD_FIRMWARE is not set
+CONFIG_PC300=m
+CONFIG_PC300_MLPPP=y
+CONFIG_N2=m
+CONFIG_C101=m
+CONFIG_FARSYNC=m
+CONFIG_DLCI=m
+CONFIG_DLCI_COUNT=24
+CONFIG_DLCI_MAX=8
+CONFIG_SDLA=m
+# CONFIG_WAN_ROUTER_DRIVERS is not set
+CONFIG_LAPBETHER=m
+CONFIG_X25_ASY=m
+# CONFIG_SBNI is not set
+
+#
+# PCMCIA network device support
+#
+CONFIG_NET_PCMCIA=y
+CONFIG_PCMCIA_3C589=m
+CONFIG_PCMCIA_3C574=m
+CONFIG_PCMCIA_FMVJ18X=m
+CONFIG_PCMCIA_PCNET=m
+CONFIG_PCMCIA_NMCLAN=m
+CONFIG_PCMCIA_SMC91C92=m
+CONFIG_PCMCIA_XIRC2PS=m
+CONFIG_PCMCIA_AXNET=m
+CONFIG_ARCNET_COM20020_CS=m
+CONFIG_PCMCIA_IBMTR=m
+
+#
+# ATM drivers
+#
+CONFIG_ATM_TCP=m
+CONFIG_ATM_LANAI=m
+CONFIG_ATM_ENI=m
+# CONFIG_ATM_ENI_DEBUG is not set
+# CONFIG_ATM_ENI_TUNE_BURST is not set
+CONFIG_ATM_FIRESTREAM=m
+CONFIG_ATM_ZATM=m
+# CONFIG_ATM_ZATM_DEBUG is not set
+CONFIG_ATM_NICSTAR=m
+CONFIG_ATM_NICSTAR_USE_SUNI=y
+CONFIG_ATM_NICSTAR_USE_IDT77105=y
+CONFIG_ATM_IDT77252=m
+# CONFIG_ATM_IDT77252_DEBUG is not set
+CONFIG_ATM_IDT77252_RCV_ALL=y
+CONFIG_ATM_IDT77252_USE_SUNI=y
+CONFIG_ATM_AMBASSADOR=m
+# CONFIG_ATM_AMBASSADOR_DEBUG is not set
+CONFIG_ATM_HORIZON=m
+# CONFIG_ATM_HORIZON_DEBUG is not set
+CONFIG_ATM_IA=m
+# CONFIG_ATM_IA_DEBUG is not set
+CONFIG_ATM_FORE200E_MAYBE=m
+CONFIG_ATM_FORE200E_PCA=y
+CONFIG_ATM_FORE200E_PCA_DEFAULT_FW=y
+CONFIG_ATM_FORE200E_TX_RETRY=16
+CONFIG_ATM_FORE200E_DEBUG=0
+CONFIG_ATM_FORE200E=m
+CONFIG_ATM_HE=m
+CONFIG_ATM_HE_USE_SUNI=y
+
+#
+# Amateur Radio support
+#
+CONFIG_HAMRADIO=y
+
+#
+# Packet Radio protocols
+#
+CONFIG_AX25=m
+CONFIG_AX25_DAMA_SLAVE=y
+CONFIG_NETROM=m
+CONFIG_ROSE=m
+
+#
+# AX.25 network device drivers
+#
+CONFIG_BPQETHER=m
+CONFIG_SCC=m
+CONFIG_SCC_DELAY=y
+CONFIG_SCC_TRXECHO=y
+CONFIG_BAYCOM_SER_FDX=m
+CONFIG_BAYCOM_SER_HDX=m
+CONFIG_BAYCOM_PAR=m
+CONFIG_BAYCOM_EPP=m
+CONFIG_YAM=m
+
+#
+# IrDA (infrared) support
+#
+CONFIG_IRDA=m
+
+#
+# IrDA protocols
+#
+CONFIG_IRLAN=m
+CONFIG_IRNET=m
+CONFIG_IRCOMM=m
+CONFIG_IRDA_ULTRA=y
+
+#
+# IrDA options
+#
+CONFIG_IRDA_CACHE_LAST_LSAP=y
+# CONFIG_IRDA_FAST_RR is not set
+# CONFIG_IRDA_DEBUG is not set
+
+#
+# Infrared-port device drivers
+#
+
+#
+# SIR device drivers
+#
+CONFIG_IRTTY_SIR=m
+
+#
+# Dongle support
+#
+CONFIG_DONGLE=y
+CONFIG_ESI_DONGLE=m
+CONFIG_ACTISYS_DONGLE=m
+CONFIG_TEKRAM_DONGLE=m
+CONFIG_LITELINK_DONGLE=m
+CONFIG_MA600_DONGLE=m
+CONFIG_GIRBIL_DONGLE=m
+CONFIG_MCP2120_DONGLE=m
+CONFIG_OLD_BELKIN_DONGLE=m
+CONFIG_ACT200L_DONGLE=m
+
+#
+# Old SIR device drivers
+#
+
+#
+# Old Serial dongle support
+#
+
+#
+# FIR device drivers
+#
+CONFIG_USB_IRDA=m
+CONFIG_SIGMATEL_FIR=m
+CONFIG_NSC_FIR=m
+CONFIG_WINBOND_FIR=m
+CONFIG_TOSHIBA_FIR=m
+CONFIG_SMC_IRCC_FIR=m
+CONFIG_ALI_FIR=m
+CONFIG_VLSI_FIR=m
+CONFIG_VIA_FIR=m
+
+#
+# Bluetooth support
+#
+CONFIG_BT=m
+CONFIG_BT_L2CAP=m
+CONFIG_BT_SCO=m
+CONFIG_BT_RFCOMM=m
+CONFIG_BT_RFCOMM_TTY=y
+CONFIG_BT_BNEP=m
+CONFIG_BT_BNEP_MC_FILTER=y
+CONFIG_BT_BNEP_PROTO_FILTER=y
+CONFIG_BT_CMTP=m
+
+#
+# Bluetooth device drivers
+#
+CONFIG_BT_HCIUSB=m
+CONFIG_BT_HCIUSB_SCO=y
+CONFIG_BT_HCIUART=m
+CONFIG_BT_HCIUART_H4=y
+CONFIG_BT_HCIUART_BCSP=y
+CONFIG_BT_HCIUART_BCSP_TXCRC=y
+CONFIG_BT_HCIBCM203X=m
+CONFIG_BT_HCIBFUSB=m
+CONFIG_BT_HCIDTL1=m
+CONFIG_BT_HCIBT3C=m
+CONFIG_BT_HCIBLUECARD=m
+CONFIG_BT_HCIBTUART=m
+CONFIG_BT_HCIVHCI=m
+CONFIG_NETPOLL=y
+CONFIG_NETPOLL_RX=y
+CONFIG_NETPOLL_TRAP=y
+CONFIG_NET_POLL_CONTROLLER=y
+
+#
+# ISDN subsystem
+#
+CONFIG_ISDN=m
+
+#
+# Old ISDN4Linux
+#
+CONFIG_ISDN_I4L=m
+CONFIG_ISDN_PPP=y
+CONFIG_ISDN_PPP_VJ=y
+CONFIG_ISDN_MPP=y
+CONFIG_IPPP_FILTER=y
+CONFIG_ISDN_PPP_BSDCOMP=m
+CONFIG_ISDN_AUDIO=y
+CONFIG_ISDN_TTY_FAX=y
+CONFIG_ISDN_X25=y
+
+#
+# ISDN feature submodules
+#
+
+#
+# ISDN4Linux hardware drivers
+#
+
+#
+# Passive cards
+#
+CONFIG_ISDN_DRV_HISAX=m
+
+#
+# D-channel protocol features
+#
+CONFIG_HISAX_EURO=y
+CONFIG_DE_AOC=y
+# CONFIG_HISAX_NO_SENDCOMPLETE is not set
+# CONFIG_HISAX_NO_LLC is not set
+# CONFIG_HISAX_NO_KEYPAD is not set
+CONFIG_HISAX_1TR6=y
+CONFIG_HISAX_NI1=y
+CONFIG_HISAX_MAX_CARDS=8
+
+#
+# HiSax supported cards
+#
+CONFIG_HISAX_16_0=y
+CONFIG_HISAX_16_3=y
+CONFIG_HISAX_TELESPCI=y
+CONFIG_HISAX_S0BOX=y
+CONFIG_HISAX_AVM_A1=y
+CONFIG_HISAX_FRITZPCI=y
+CONFIG_HISAX_AVM_A1_PCMCIA=y
+CONFIG_HISAX_ELSA=y
+CONFIG_HISAX_IX1MICROR2=y
+CONFIG_HISAX_DIEHLDIVA=y
+CONFIG_HISAX_ASUSCOM=y
+CONFIG_HISAX_TELEINT=y
+CONFIG_HISAX_HFCS=y
+CONFIG_HISAX_SEDLBAUER=y
+CONFIG_HISAX_SPORTSTER=y
+CONFIG_HISAX_MIC=y
+CONFIG_HISAX_NETJET=y
+CONFIG_HISAX_NETJET_U=y
+CONFIG_HISAX_NICCY=y
+CONFIG_HISAX_ISURF=y
+CONFIG_HISAX_HSTSAPHIR=y
+CONFIG_HISAX_BKM_A4T=y
+CONFIG_HISAX_SCT_QUADRO=y
+CONFIG_HISAX_GAZEL=y
+CONFIG_HISAX_HFC_PCI=y
+CONFIG_HISAX_W6692=y
+CONFIG_HISAX_HFC_SX=y
+CONFIG_HISAX_ENTERNOW_PCI=y
+CONFIG_HISAX_DEBUG=y
+
+#
+# HiSax PCMCIA card service modules
+#
+# CONFIG_HISAX_SEDLBAUER_CS is not set
+CONFIG_HISAX_ELSA_CS=m
+CONFIG_HISAX_AVM_A1_CS=m
+CONFIG_HISAX_TELES_CS=m
+
+#
+# HiSax sub driver modules
+#
+CONFIG_HISAX_ST5481=m
+CONFIG_HISAX_HFCUSB=m
+CONFIG_HISAX_FRITZ_PCIPNP=m
+CONFIG_HISAX_HDLC=y
+
+#
+# Active cards
+#
+CONFIG_ISDN_DRV_ICN=m
+CONFIG_ISDN_DRV_PCBIT=m
+CONFIG_ISDN_DRV_SC=m
+CONFIG_ISDN_DRV_ACT2000=m
+CONFIG_ISDN_DRV_TPAM=m
+
+#
+# CAPI subsystem
+#
+CONFIG_ISDN_CAPI=m
+CONFIG_ISDN_DRV_AVMB1_VERBOSE_REASON=y
+CONFIG_ISDN_CAPI_MIDDLEWARE=y
+CONFIG_ISDN_CAPI_CAPI20=m
+CONFIG_ISDN_CAPI_CAPIFS_BOOL=y
+CONFIG_ISDN_CAPI_CAPIFS=m
+CONFIG_ISDN_CAPI_CAPIDRV=m
+
+#
+# CAPI hardware drivers
+#
+
+#
+# Active AVM cards
+#
+CONFIG_CAPI_AVM=y
+CONFIG_ISDN_DRV_AVMB1_B1ISA=m
+CONFIG_ISDN_DRV_AVMB1_B1PCI=m
+CONFIG_ISDN_DRV_AVMB1_B1PCIV4=y
+CONFIG_ISDN_DRV_AVMB1_T1ISA=m
+CONFIG_ISDN_DRV_AVMB1_B1PCMCIA=m
+CONFIG_ISDN_DRV_AVMB1_AVM_CS=m
+CONFIG_ISDN_DRV_AVMB1_T1PCI=m
+CONFIG_ISDN_DRV_AVMB1_C4=m
+
+#
+# Active Eicon DIVA Server cards
+#
+CONFIG_CAPI_EICON=y
+CONFIG_ISDN_DIVAS=m
+CONFIG_ISDN_DIVAS_BRIPCI=y
+CONFIG_ISDN_DIVAS_PRIPCI=y
+CONFIG_ISDN_DIVAS_DIVACAPI=m
+CONFIG_ISDN_DIVAS_USERIDI=m
+CONFIG_ISDN_DIVAS_MAINT=m
+
+#
+# Telephony Support
+#
+CONFIG_PHONE=m
+CONFIG_PHONE_IXJ=m
+CONFIG_PHONE_IXJ_PCMCIA=m
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+
+#
+# Userland interfaces
+#
+CONFIG_INPUT_MOUSEDEV=y
+CONFIG_INPUT_MOUSEDEV_PSAUX=y
+CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
+CONFIG_INPUT_JOYDEV=m
+CONFIG_INPUT_TSDEV=m
+CONFIG_INPUT_TSDEV_SCREEN_X=240
+CONFIG_INPUT_TSDEV_SCREEN_Y=320
+CONFIG_INPUT_EVDEV=m
+# CONFIG_INPUT_EVBUG is not set
+
+#
+# Input I/O drivers
+#
+CONFIG_GAMEPORT=m
+CONFIG_SOUND_GAMEPORT=m
+CONFIG_GAMEPORT_NS558=m
+CONFIG_GAMEPORT_L4=m
+CONFIG_GAMEPORT_EMU10K1=m
+CONFIG_GAMEPORT_VORTEX=m
+CONFIG_GAMEPORT_FM801=m
+CONFIG_GAMEPORT_CS461x=m
+CONFIG_SERIO=y
+CONFIG_SERIO_I8042=y
+CONFIG_SERIO_SERPORT=m
+CONFIG_SERIO_CT82C710=m
+CONFIG_SERIO_PARKBD=m
+CONFIG_SERIO_PCIPS2=m
+
+#
+# Input Device Drivers
+#
+CONFIG_INPUT_KEYBOARD=y
+CONFIG_KEYBOARD_ATKBD=y
+CONFIG_KEYBOARD_SUNKBD=m
+# CONFIG_KEYBOARD_LKKBD is not set
+CONFIG_KEYBOARD_XTKBD=m
+CONFIG_KEYBOARD_NEWTON=m
+CONFIG_INPUT_MOUSE=y
+CONFIG_MOUSE_PS2=y
+CONFIG_MOUSE_SERIAL=m
+CONFIG_MOUSE_INPORT=m
+CONFIG_MOUSE_ATIXL=y
+CONFIG_MOUSE_LOGIBM=m
+CONFIG_MOUSE_PC110PAD=m
+# CONFIG_MOUSE_VSXXXAA is not set
+CONFIG_INPUT_JOYSTICK=y
+CONFIG_JOYSTICK_ANALOG=m
+CONFIG_JOYSTICK_A3D=m
+CONFIG_JOYSTICK_ADI=m
+CONFIG_JOYSTICK_COBRA=m
+CONFIG_JOYSTICK_GF2K=m
+CONFIG_JOYSTICK_GRIP=m
+CONFIG_JOYSTICK_GRIP_MP=m
+CONFIG_JOYSTICK_GUILLEMOT=m
+CONFIG_JOYSTICK_INTERACT=m
+CONFIG_JOYSTICK_SIDEWINDER=m
+CONFIG_JOYSTICK_TMDC=m
+CONFIG_JOYSTICK_IFORCE=m
+CONFIG_JOYSTICK_IFORCE_USB=y
+CONFIG_JOYSTICK_IFORCE_232=y
+CONFIG_JOYSTICK_WARRIOR=m
+CONFIG_JOYSTICK_MAGELLAN=m
+CONFIG_JOYSTICK_SPACEORB=m
+CONFIG_JOYSTICK_SPACEBALL=m
+CONFIG_JOYSTICK_STINGER=m
+CONFIG_JOYSTICK_TWIDDLER=m
+CONFIG_JOYSTICK_DB9=m
+CONFIG_JOYSTICK_GAMECON=m
+CONFIG_JOYSTICK_TURBOGRAFX=m
+# CONFIG_INPUT_JOYDUMP is not set
+CONFIG_INPUT_TOUCHSCREEN=y
+CONFIG_TOUCHSCREEN_GUNZE=m
+CONFIG_INPUT_MISC=y
+CONFIG_INPUT_PCSPKR=y
+CONFIG_INPUT_UINPUT=m
+
+#
+# Character devices
+#
+CONFIG_VT=y
+CONFIG_VT_CONSOLE=y
+CONFIG_HW_CONSOLE=y
+CONFIG_SERIAL_NONSTANDARD=y
+CONFIG_ROCKETPORT=m
+CONFIG_SYNCLINK=m
+CONFIG_SYNCLINKMP=m
+CONFIG_N_HDLC=m
+CONFIG_STALDRV=y
+
+#
+# Serial drivers
+#
+CONFIG_SERIAL_8250=y
+CONFIG_SERIAL_8250_CONSOLE=y
+CONFIG_SERIAL_8250_CS=m
+# CONFIG_SERIAL_8250_ACPI is not set
+CONFIG_SERIAL_8250_NR_UARTS=4
+CONFIG_SERIAL_8250_EXTENDED=y
+CONFIG_SERIAL_8250_MANY_PORTS=y
+CONFIG_SERIAL_8250_SHARE_IRQ=y
+# CONFIG_SERIAL_8250_DETECT_IRQ is not set
+CONFIG_SERIAL_8250_MULTIPORT=y
+CONFIG_SERIAL_8250_RSA=y
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_UNIX98_PTYS=y
+CONFIG_LEGACY_PTYS=y
+CONFIG_LEGACY_PTY_COUNT=256
+CONFIG_PRINTER=m
+# CONFIG_LP_CONSOLE is not set
+CONFIG_PPDEV=m
+CONFIG_TIPAR=m
+CONFIG_QIC02_TAPE=m
+CONFIG_QIC02_DYNCONF=y
+
+#
+# Setting runtime QIC-02 configuration is done with qic02conf
+#
+
+#
+# from the tpqic02-support package.  It is available at
+#
+
+#
+# metalab.unc.edu or ftp://titus.cfw.com/pub/Linux/util/
+#
+
+#
+# IPMI
+#
+CONFIG_IPMI_HANDLER=m
+CONFIG_IPMI_PANIC_EVENT=y
+CONFIG_IPMI_PANIC_STRING=y
+CONFIG_IPMI_DEVICE_INTERFACE=m
+CONFIG_IPMI_KCS=m
+CONFIG_IPMI_WATCHDOG=m
+
+#
+# Watchdog Cards
+#
+CONFIG_WATCHDOG=y
+# CONFIG_WATCHDOG_NOWAYOUT is not set
+
+#
+# Watchdog Device Drivers
+#
+CONFIG_SOFT_WATCHDOG=m
+CONFIG_ACQUIRE_WDT=m
+CONFIG_ADVANTECH_WDT=m
+CONFIG_ALIM1535_WDT=m
+CONFIG_ALIM7101_WDT=m
+CONFIG_AMD7XX_TCO=m
+CONFIG_SC520_WDT=m
+CONFIG_EUROTECH_WDT=m
+CONFIG_IB700_WDT=m
+CONFIG_WAFER_WDT=m
+CONFIG_I8XX_TCO=m
+CONFIG_SC1200_WDT=m
+CONFIG_SCx200_WDT=m
+CONFIG_60XX_WDT=m
+CONFIG_CPU5_WDT=m
+CONFIG_W83627HF_WDT=m
+CONFIG_W83877F_WDT=m
+CONFIG_MACHZ_WDT=m
+
+#
+# ISA-based Watchdog Cards
+#
+CONFIG_PCWATCHDOG=m
+CONFIG_MIXCOMWD=m
+CONFIG_WDT=m
+CONFIG_WDT_501=y
+
+#
+# PCI-based Watchdog Cards
+#
+CONFIG_PCIPCWATCHDOG=m
+CONFIG_WDTPCI=m
+CONFIG_WDT_501_PCI=y
+
+#
+# USB-based Watchdog Cards
+#
+CONFIG_USBPCWATCHDOG=m
+CONFIG_HW_RANDOM=m
+CONFIG_NVRAM=m
+CONFIG_RTC=y
+CONFIG_DTLK=m
+CONFIG_R3964=m
+CONFIG_APPLICOM=m
+CONFIG_SONYPI=m
+
+#
+# Ftape, the floppy tape device driver
+#
+CONFIG_AGP=m
+CONFIG_AGP_ALI=m
+CONFIG_AGP_ATI=m
+CONFIG_AGP_AMD=m
+CONFIG_AGP_AMD64=m
+CONFIG_AGP_INTEL=m
+CONFIG_AGP_NVIDIA=m
+CONFIG_AGP_SIS=m
+CONFIG_AGP_SWORKS=m
+CONFIG_AGP_VIA=m
+CONFIG_AGP_EFFICEON=m
+# CONFIG_DRM is not set
+
+#
+# PCMCIA character devices
+#
+CONFIG_SYNCLINK_CS=m
+# CONFIG_MWAVE is not set
+CONFIG_SCx200_GPIO=m
+CONFIG_RAW_DRIVER=m
+CONFIG_MAX_RAW_DEVS=4096
+CONFIG_HANGCHECK_TIMER=m
+
+#
+# Linux InfraRed Controller
+#
+CONFIG_LIRC_SUPPORT=m
+CONFIG_LIRC_MAX_DEV=2
+CONFIG_LIRC_BT829=m
+CONFIG_LIRC_IT87=m
+CONFIG_LIRC_ATIUSB=m
+CONFIG_LIRC_SERIAL=m
+# CONFIG_LIRC_HOMEBREW is not set
+CONFIG_LIRC_PORT_SERIAL=0x3f8
+CONFIG_LIRC_IRQ_SERIAL=4
+CONFIG_LIRC_SIR=m
+CONFIG_LIRC_PORT_SIR=0x3f8
+CONFIG_LIRC_IRQ_SIR=4
+
+#
+# I2C support
+#
+CONFIG_I2C=m
+CONFIG_I2C_CHARDEV=m
+
+#
+# I2C Algorithms
+#
+CONFIG_I2C_ALGOBIT=m
+CONFIG_I2C_ALGOPCF=m
+
+#
+# I2C Hardware Bus support
+#
+CONFIG_I2C_ALI1535=m
+CONFIG_I2C_ALI15X3=m
+CONFIG_I2C_AMD756=m
+CONFIG_I2C_AMD8111=m
+CONFIG_I2C_I801=m
+CONFIG_I2C_I810=m
+CONFIG_I2C_ISA=m
+CONFIG_I2C_NFORCE2=m
+CONFIG_I2C_PARPORT=m
+CONFIG_I2C_PARPORT_LIGHT=m
+CONFIG_I2C_PIIX4=m
+CONFIG_I2C_PROSAVAGE=m
+CONFIG_I2C_SAVAGE4=m
+CONFIG_SCx200_I2C=m
+CONFIG_SCx200_I2C_SCL=12
+CONFIG_SCx200_I2C_SDA=13
+CONFIG_SCx200_ACB=m
+CONFIG_I2C_SIS5595=m
+CONFIG_I2C_SIS630=m
+CONFIG_I2C_SIS96X=m
+CONFIG_I2C_VIA=m
+CONFIG_I2C_VIAPRO=m
+CONFIG_I2C_VOODOO3=m
+
+#
+# Hardware Sensors Chip support
+#
+CONFIG_I2C_SENSOR=m
+CONFIG_SENSORS_ADM1021=m
+CONFIG_SENSORS_ASB100=m
+CONFIG_SENSORS_DS1621=m
+CONFIG_SENSORS_FSCHER=m
+CONFIG_SENSORS_GL518SM=m
+CONFIG_SENSORS_IT87=m
+CONFIG_SENSORS_LM75=m
+CONFIG_SENSORS_LM78=m
+CONFIG_SENSORS_LM80=m
+CONFIG_SENSORS_LM83=m
+CONFIG_SENSORS_LM85=m
+CONFIG_SENSORS_LM90=m
+CONFIG_SENSORS_VIA686A=m
+CONFIG_SENSORS_W83781D=m
+CONFIG_SENSORS_W83L785TS=m
+CONFIG_SENSORS_W83627HF=m
+
+#
+# Other I2C Chip support
+#
+CONFIG_SENSORS_EEPROM=m
+# CONFIG_I2C_DEBUG_CORE is not set
+# CONFIG_I2C_DEBUG_ALGO is not set
+# CONFIG_I2C_DEBUG_BUS is not set
+# CONFIG_I2C_DEBUG_CHIP is not set
+
+#
+# Misc devices
+#
+CONFIG_IBM_ASM=m
+
+#
+# Multimedia devices
+#
+CONFIG_VIDEO_DEV=m
+
+#
+# Video For Linux
+#
+
+#
+# Video Adapters
+#
+CONFIG_VIDEO_BT848=m
+CONFIG_VIDEO_PMS=m
+CONFIG_VIDEO_BWQCAM=m
+CONFIG_VIDEO_CQCAM=m
+CONFIG_VIDEO_W9966=m
+CONFIG_VIDEO_CPIA=m
+CONFIG_VIDEO_CPIA_PP=m
+CONFIG_VIDEO_CPIA_USB=m
+CONFIG_VIDEO_SAA5246A=m
+CONFIG_VIDEO_SAA5249=m
+CONFIG_TUNER_3036=m
+CONFIG_VIDEO_STRADIS=m
+# CONFIG_VIDEO_ZORAN is not set
+CONFIG_VIDEO_SAA7134=m
+CONFIG_VIDEO_MXB=m
+CONFIG_VIDEO_DPC=m
+CONFIG_VIDEO_HEXIUM_ORION=m
+CONFIG_VIDEO_HEXIUM_GEMINI=m
+CONFIG_VIDEO_CX88=m
+
+#
+# Radio Adapters
+#
+CONFIG_RADIO_CADET=m
+CONFIG_RADIO_RTRACK=m
+CONFIG_RADIO_RTRACK2=m
+CONFIG_RADIO_AZTECH=m
+CONFIG_RADIO_GEMTEK=m
+CONFIG_RADIO_GEMTEK_PCI=m
+CONFIG_RADIO_MAXIRADIO=m
+CONFIG_RADIO_MAESTRO=m
+CONFIG_RADIO_MIROPCM20=m
+# CONFIG_RADIO_MIROPCM20_RDS is not set
+CONFIG_RADIO_SF16FMI=m
+CONFIG_RADIO_SF16FMR2=m
+CONFIG_RADIO_TERRATEC=m
+CONFIG_RADIO_TRUST=m
+CONFIG_RADIO_TYPHOON=m
+CONFIG_RADIO_TYPHOON_PROC_FS=y
+CONFIG_RADIO_ZOLTRIX=m
+
+#
+# Digital Video Broadcasting Devices
+#
+CONFIG_DVB=y
+CONFIG_DVB_CORE=m
+
+#
+# Supported Frontend Modules
+#
+CONFIG_DVB_TWINHAN_DST=m
+CONFIG_DVB_STV0299=m
+CONFIG_DVB_SP887X=m
+CONFIG_DVB_SP887X_FIRMWARE_FILE="/etc/dvb/sc_main.mc"
+CONFIG_DVB_ALPS_TDLB7=m
+CONFIG_DVB_ALPS_TDMB7=m
+CONFIG_DVB_ATMEL_AT76C651=m
+CONFIG_DVB_CX24110=m
+CONFIG_DVB_GRUNDIG_29504_491=m
+CONFIG_DVB_GRUNDIG_29504_401=m
+CONFIG_DVB_MT312=m
+CONFIG_DVB_VES1820=m
+CONFIG_DVB_VES1X93=m
+CONFIG_DVB_TDA1004X=m
+CONFIG_DVB_TDA1004X_FIRMWARE_FILE="/usr/lib/hotplug/firmware/tda1004x.bin"
+CONFIG_DVB_NXT6000=m
+
+#
+# Supported SAA7146 based PCI Adapters
+#
+CONFIG_DVB_AV7110=m
+# CONFIG_DVB_AV7110_FIRMWARE is not set
+CONFIG_DVB_AV7110_OSD=y
+CONFIG_DVB_BUDGET=m
+CONFIG_DVB_BUDGET_CI=m
+CONFIG_DVB_BUDGET_AV=m
+CONFIG_DVB_BUDGET_PATCH=m
+
+#
+# Supported USB Adapters
+#
+CONFIG_DVB_TTUSB_BUDGET=m
+CONFIG_DVB_TTUSB_DEC=m
+
+#
+# Supported FlexCopII (B2C2) Adapters
+#
+CONFIG_DVB_B2C2_SKYSTAR=m
+
+#
+# Supported BT878 Adapters
+#
+CONFIG_DVB_BT8XX=m
+CONFIG_VIDEO_SAA7146=m
+CONFIG_VIDEO_SAA7146_VV=m
+CONFIG_VIDEO_VIDEOBUF=m
+CONFIG_VIDEO_TUNER=m
+CONFIG_VIDEO_BUF=m
+CONFIG_VIDEO_BTCX=m
+CONFIG_VIDEO_IR=m
+
+#
+# Graphics support
+#
+CONFIG_FB=y
+CONFIG_FB_PM2=m
+CONFIG_FB_PM2_FIFO_DISCONNECT=y
+CONFIG_FB_CYBER2000=m
+CONFIG_FB_IMSTT=y
+CONFIG_FB_VGA16=m
+CONFIG_FB_VESA=y
+CONFIG_VIDEO_SELECT=y
+CONFIG_FB_HGA=m
+CONFIG_FB_RIVA=m
+CONFIG_FB_I810=m
+CONFIG_FB_I810_GTF=y
+# CONFIG_FB_MATROX is not set
+# CONFIG_FB_RADEON_OLD is not set
+CONFIG_FB_RADEON=m
+CONFIG_FB_RADEON_I2C=y
+# CONFIG_FB_RADEON_DEBUG is not set
+# CONFIG_FB_ATY128 is not set
+CONFIG_FB_ATY=m
+CONFIG_FB_ATY_CT=y
+CONFIG_FB_ATY_GX=y
+CONFIG_FB_ATY_XL_INIT=y
+CONFIG_FB_SIS=m
+CONFIG_FB_SIS_300=y
+CONFIG_FB_SIS_315=y
+CONFIG_FB_NEOMAGIC=m
+CONFIG_FB_KYRO=m
+CONFIG_FB_3DFX=m
+CONFIG_FB_VOODOO1=m
+CONFIG_FB_TRIDENT=m
+# CONFIG_FB_VIRTUAL is not set
+
+#
+# Console display driver support
+#
+CONFIG_VGA_CONSOLE=y
+CONFIG_MDA_CONSOLE=m
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+CONFIG_PCI_CONSOLE=y
+# CONFIG_FONTS is not set
+CONFIG_FONT_8x8=y
+CONFIG_FONT_8x16=y
+
+#
+# Logo configuration
+#
+# CONFIG_LOGO is not set
+
+#
+# Bootsplash configuration
+#
+CONFIG_BOOTSPLASH=y
+
+#
+# Sound
+#
+CONFIG_SOUND=m
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=m
+CONFIG_SND_TIMER=m
+CONFIG_SND_PCM=m
+CONFIG_SND_HWDEP=m
+CONFIG_SND_RAWMIDI=m
+CONFIG_SND_SEQUENCER=m
+CONFIG_SND_SEQ_DUMMY=m
+CONFIG_SND_OSSEMUL=y
+CONFIG_SND_MIXER_OSS=m
+CONFIG_SND_PCM_OSS=m
+CONFIG_SND_SEQUENCER_OSS=y
+CONFIG_SND_RTCTIMER=m
+CONFIG_SND_VERBOSE_PRINTK=y
+CONFIG_SND_DEBUG=y
+CONFIG_SND_DEBUG_MEMORY=y
+# CONFIG_SND_DEBUG_DETECT is not set
+
+#
+# Generic devices
+#
+CONFIG_SND_MPU401_UART=m
+CONFIG_SND_OPL3_LIB=m
+CONFIG_SND_OPL4_LIB=m
+CONFIG_SND_VX_LIB=m
+CONFIG_SND_DUMMY=m
+CONFIG_SND_VIRMIDI=m
+CONFIG_SND_MTPAV=m
+CONFIG_SND_SERIAL_U16550=m
+CONFIG_SND_MPU401=m
+
+#
+# ISA devices
+#
+CONFIG_SND_AD1816A=m
+CONFIG_SND_AD1848=m
+CONFIG_SND_CS4231=m
+CONFIG_SND_CS4232=m
+CONFIG_SND_CS4236=m
+CONFIG_SND_ES968=m
+CONFIG_SND_ES1688=m
+CONFIG_SND_ES18XX=m
+CONFIG_SND_GUSCLASSIC=m
+CONFIG_SND_GUSEXTREME=m
+CONFIG_SND_GUSMAX=m
+CONFIG_SND_INTERWAVE=m
+CONFIG_SND_INTERWAVE_STB=m
+CONFIG_SND_OPTI92X_AD1848=m
+CONFIG_SND_OPTI92X_CS4231=m
+CONFIG_SND_OPTI93X=m
+CONFIG_SND_SB8=m
+CONFIG_SND_SB16=m
+CONFIG_SND_SBAWE=m
+CONFIG_SND_SB16_CSP=y
+CONFIG_SND_WAVEFRONT=m
+CONFIG_SND_ALS100=m
+CONFIG_SND_AZT2320=m
+CONFIG_SND_CMI8330=m
+CONFIG_SND_DT019X=m
+CONFIG_SND_OPL3SA2=m
+CONFIG_SND_SGALAXY=m
+CONFIG_SND_SSCAPE=m
+
+#
+# PCI devices
+#
+CONFIG_SND_AC97_CODEC=m
+CONFIG_SND_ALI5451=m
+CONFIG_SND_ATIIXP=m
+CONFIG_SND_AU8810=m
+CONFIG_SND_AU8820=m
+CONFIG_SND_AU8830=m
+CONFIG_SND_AZT3328=m
+CONFIG_SND_BT87X=m
+CONFIG_SND_CS46XX=m
+CONFIG_SND_CS46XX_NEW_DSP=y
+CONFIG_SND_CS4281=m
+CONFIG_SND_EMU10K1=m
+CONFIG_SND_KORG1212=m
+CONFIG_SND_MIXART=m
+CONFIG_SND_NM256=m
+CONFIG_SND_RME32=m
+CONFIG_SND_RME96=m
+CONFIG_SND_RME9652=m
+CONFIG_SND_HDSP=m
+CONFIG_SND_TRIDENT=m
+CONFIG_SND_YMFPCI=m
+CONFIG_SND_ALS4000=m
+CONFIG_SND_CMIPCI=m
+CONFIG_SND_ENS1370=m
+CONFIG_SND_ENS1371=m
+CONFIG_SND_ES1938=m
+CONFIG_SND_ES1968=m
+CONFIG_SND_MAESTRO3=m
+CONFIG_SND_FM801=m
+CONFIG_SND_FM801_TEA575X=m
+CONFIG_SND_ICE1712=m
+CONFIG_SND_ICE1724=m
+CONFIG_SND_INTEL8X0=m
+CONFIG_SND_INTEL8X0M=m
+CONFIG_SND_SONICVIBES=m
+CONFIG_SND_VIA82XX=m
+CONFIG_SND_VX222=m
+
+#
+# ALSA USB devices
+#
+CONFIG_SND_USB_AUDIO=m
+
+#
+# PCMCIA devices
+#
+# CONFIG_SND_VXPOCKET is not set
+# CONFIG_SND_VXP440 is not set
+# CONFIG_SND_PDAUDIOCF is not set
+
+#
+# Open Sound System
+#
+CONFIG_SOUND_PRIME=m
+CONFIG_SOUND_BT878=m
+CONFIG_SOUND_CMPCI=m
+CONFIG_SOUND_CMPCI_FM=y
+CONFIG_SOUND_CMPCI_FMIO=0x388
+CONFIG_SOUND_CMPCI_MIDI=y
+CONFIG_SOUND_CMPCI_MPUIO=0x330
+CONFIG_SOUND_CMPCI_JOYSTICK=y
+CONFIG_SOUND_CMPCI_CM8738=y
+# CONFIG_SOUND_CMPCI_SPDIFINVERSE is not set
+CONFIG_SOUND_CMPCI_SPDIFLOOP=y
+CONFIG_SOUND_CMPCI_SPEAKERS=2
+CONFIG_SOUND_EMU10K1=m
+CONFIG_MIDI_EMU10K1=y
+# CONFIG_SOUND_FUSION is not set
+CONFIG_SOUND_CS4281=m
+CONFIG_SOUND_ES1370=m
+CONFIG_SOUND_ES1371=m
+CONFIG_SOUND_ESSSOLO1=m
+CONFIG_SOUND_MAESTRO=m
+CONFIG_SOUND_MAESTRO3=m
+CONFIG_SOUND_ICH=m
+CONFIG_SOUND_SONICVIBES=m
+CONFIG_SOUND_TRIDENT=m
+# CONFIG_SOUND_MSNDCLAS is not set
+# CONFIG_SOUND_MSNDPIN is not set
+CONFIG_SOUND_VIA82CXXX=m
+CONFIG_MIDI_VIA82CXXX=y
+CONFIG_SOUND_OSS=m
+CONFIG_SOUND_TRACEINIT=y
+CONFIG_SOUND_DMAP=y
+# CONFIG_SOUND_AD1816 is not set
+CONFIG_SOUND_AD1889=m
+CONFIG_SOUND_SGALAXY=m
+CONFIG_SOUND_ADLIB=m
+CONFIG_SOUND_ACI_MIXER=m
+CONFIG_SOUND_CS4232=m
+CONFIG_SOUND_SSCAPE=m
+CONFIG_SOUND_GUS=m
+# CONFIG_SOUND_GUS16 is not set
+CONFIG_SOUND_GUSMAX=y
+CONFIG_SOUND_VMIDI=m
+CONFIG_SOUND_TRIX=m
+CONFIG_SOUND_MSS=m
+CONFIG_SOUND_MPU401=m
+CONFIG_SOUND_NM256=m
+CONFIG_SOUND_MAD16=m
+CONFIG_MAD16_OLDCARD=y
+CONFIG_SOUND_PAS=m
+CONFIG_SOUND_PSS=m
+CONFIG_PSS_MIXER=y
+# CONFIG_PSS_HAVE_BOOT is not set
+CONFIG_SOUND_SB=m
+# CONFIG_SOUND_AWE32_SYNTH is not set
+CONFIG_SOUND_WAVEFRONT=m
+CONFIG_SOUND_MAUI=m
+CONFIG_SOUND_YM3812=m
+CONFIG_SOUND_OPL3SA1=m
+CONFIG_SOUND_OPL3SA2=m
+CONFIG_SOUND_YMFPCI=m
+CONFIG_SOUND_YMFPCI_LEGACY=y
+CONFIG_SOUND_UART6850=m
+CONFIG_SOUND_AEDSP16=m
+CONFIG_SC6600=y
+CONFIG_SC6600_JOY=y
+CONFIG_SC6600_CDROM=4
+CONFIG_SC6600_CDROMBASE=0x0
+# CONFIG_AEDSP16_MSS is not set
+# CONFIG_AEDSP16_SBPRO is not set
+CONFIG_AEDSP16_MPU401=y
+CONFIG_SOUND_TVMIXER=m
+CONFIG_SOUND_KAHLUA=m
+CONFIG_SOUND_ALI5455=m
+CONFIG_SOUND_FORTE=m
+CONFIG_SOUND_RME96XX=m
+CONFIG_SOUND_AD1980=m
+
+#
+# USB support
+#
+CONFIG_USB=m
+# CONFIG_USB_DEBUG is not set
+
+#
+# Miscellaneous USB options
+#
+CONFIG_USB_DEVICEFS=y
+# CONFIG_USB_BANDWIDTH is not set
+# CONFIG_USB_DYNAMIC_MINORS is not set
+
+#
+# USB Host Controller Drivers
+#
+CONFIG_USB_EHCI_HCD=m
+CONFIG_USB_EHCI_SPLIT_ISO=y
+CONFIG_USB_OHCI_HCD=m
+CONFIG_USB_UHCI_HCD=m
+
+#
+# USB Device Class drivers
+#
+CONFIG_USB_AUDIO=m
+
+#
+# USB Bluetooth TTY can only be used with disabled Bluetooth subsystem
+#
+CONFIG_USB_MIDI=m
+CONFIG_USB_ACM=m
+CONFIG_USB_PRINTER=m
+CONFIG_USB_STORAGE=m
+# CONFIG_USB_STORAGE_DEBUG is not set
+CONFIG_USB_STORAGE_DATAFAB=y
+CONFIG_USB_STORAGE_FREECOM=y
+CONFIG_USB_STORAGE_ISD200=y
+CONFIG_USB_STORAGE_DPCM=y
+CONFIG_USB_STORAGE_HP8200e=y
+CONFIG_USB_STORAGE_SDDR09=y
+CONFIG_USB_STORAGE_SDDR55=y
+CONFIG_USB_STORAGE_JUMPSHOT=y
+
+#
+# USB Human Interface Devices (HID)
+#
+CONFIG_USB_HID=m
+CONFIG_USB_HIDINPUT=y
+CONFIG_HID_FF=y
+CONFIG_HID_PID=y
+CONFIG_LOGITECH_FF=y
+CONFIG_THRUSTMASTER_FF=y
+CONFIG_USB_HIDDEV=y
+
+#
+# USB HID Boot Protocol drivers
+#
+# CONFIG_USB_KBD is not set
+# CONFIG_USB_MOUSE is not set
+CONFIG_USB_AIPTEK=m
+CONFIG_USB_WACOM=m
+CONFIG_USB_KBTAB=m
+CONFIG_USB_POWERMATE=m
+CONFIG_USB_MTOUCH=m
+CONFIG_USB_XPAD=m
+CONFIG_USB_ATI_REMOTE=m
+
+#
+# USB Imaging devices
+#
+CONFIG_USB_MDC800=m
+CONFIG_USB_MICROTEK=m
+CONFIG_USB_HPUSBSCSI=m
+
+#
+# USB Multimedia devices
+#
+CONFIG_USB_DABUSB=m
+CONFIG_USB_VICAM=m
+CONFIG_USB_DSBR=m
+CONFIG_USB_IBMCAM=m
+CONFIG_USB_KONICAWC=m
+CONFIG_USB_OV511=m
+CONFIG_USB_SE401=m
+CONFIG_USB_STV680=m
+CONFIG_USB_W9968CF=m
+
+#
+# USB Network adaptors
+#
+CONFIG_USB_CATC=m
+CONFIG_USB_KAWETH=m
+CONFIG_USB_PEGASUS=m
+CONFIG_USB_RTL8150=m
+CONFIG_USB_USBNET=m
+
+#
+# USB Host-to-Host Cables
+#
+CONFIG_USB_ALI_M5632=y
+CONFIG_USB_AN2720=y
+CONFIG_USB_BELKIN=y
+CONFIG_USB_GENESYS=y
+CONFIG_USB_NET1080=y
+CONFIG_USB_PL2301=y
+
+#
+# Intelligent USB Devices/Gadgets
+#
+CONFIG_USB_ARMLINUX=y
+CONFIG_USB_EPSON2888=y
+CONFIG_USB_ZAURUS=y
+CONFIG_USB_CDCETHER=y
+
+#
+# USB Network Adapters
+#
+CONFIG_USB_AX8817X=y
+
+#
+# USB port drivers
+#
+CONFIG_USB_USS720=m
+
+#
+# USB Serial Converter support
+#
+CONFIG_USB_SERIAL=m
+CONFIG_USB_SERIAL_GENERIC=y
+CONFIG_USB_SERIAL_BELKIN=m
+CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
+CONFIG_USB_SERIAL_EMPEG=m
+CONFIG_USB_SERIAL_FTDI_SIO=m
+CONFIG_USB_SERIAL_VISOR=m
+CONFIG_USB_SERIAL_IPAQ=m
+CONFIG_USB_SERIAL_IR=m
+CONFIG_USB_SERIAL_EDGEPORT=m
+CONFIG_USB_SERIAL_EDGEPORT_TI=m
+CONFIG_USB_SERIAL_KEYSPAN_PDA=m
+CONFIG_USB_SERIAL_KEYSPAN=m
+CONFIG_USB_SERIAL_KEYSPAN_MPR=y
+CONFIG_USB_SERIAL_KEYSPAN_USA28=y
+CONFIG_USB_SERIAL_KEYSPAN_USA28X=y
+CONFIG_USB_SERIAL_KEYSPAN_USA28XA=y
+CONFIG_USB_SERIAL_KEYSPAN_USA28XB=y
+CONFIG_USB_SERIAL_KEYSPAN_USA19=y
+CONFIG_USB_SERIAL_KEYSPAN_USA18X=y
+CONFIG_USB_SERIAL_KEYSPAN_USA19W=y
+CONFIG_USB_SERIAL_KEYSPAN_USA19QW=y
+CONFIG_USB_SERIAL_KEYSPAN_USA19QI=y
+CONFIG_USB_SERIAL_KEYSPAN_USA49W=y
+CONFIG_USB_SERIAL_KEYSPAN_USA49WLC=y
+CONFIG_USB_SERIAL_KLSI=m
+CONFIG_USB_SERIAL_KOBIL_SCT=m
+CONFIG_USB_SERIAL_MCT_U232=m
+CONFIG_USB_SERIAL_PL2303=m
+CONFIG_USB_SERIAL_SAFE=m
+CONFIG_USB_SERIAL_SAFE_PADDED=y
+CONFIG_USB_SERIAL_CYBERJACK=m
+CONFIG_USB_SERIAL_XIRCOM=m
+CONFIG_USB_SERIAL_OMNINET=m
+CONFIG_USB_EZUSB=y
+
+#
+# USB Miscellaneous drivers
+#
+CONFIG_USB_EMI62=m
+CONFIG_USB_EMI26=m
+CONFIG_USB_TIGL=m
+CONFIG_USB_AUERSWALD=m
+CONFIG_USB_RIO500=m
+CONFIG_USB_LEGOTOWER=m
+CONFIG_USB_LCD=m
+CONFIG_USB_LED=m
+CONFIG_USB_SPEEDTOUCH=m
+# CONFIG_USB_TEST is not set
+
+#
+# USB Gadget Support
+#
+# CONFIG_USB_GADGET is not set
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=y
+CONFIG_EXT2_FS_XATTR=y
+CONFIG_EXT2_FS_POSIX_ACL=y
+CONFIG_EXT2_FS_SECURITY=y
+CONFIG_EXT3_FS=m
+CONFIG_EXT3_FS_XATTR=y
+CONFIG_EXT3_FS_POSIX_ACL=y
+CONFIG_EXT3_FS_SECURITY=y
+CONFIG_JBD=m
+CONFIG_JBD_DEBUG=y
+CONFIG_FS_MBCACHE=y
+CONFIG_REISERFS_FS=m
+# CONFIG_REISERFS_CHECK is not set
+# CONFIG_REISERFS_PROC_INFO is not set
+CONFIG_REISERFS_FS_XATTR=y
+CONFIG_REISERFS_FS_POSIX_ACL=y
+CONFIG_REISERFS_FS_SECURITY=y
+CONFIG_JFS_FS=m
+CONFIG_JFS_POSIX_ACL=y
+# CONFIG_JFS_DEBUG is not set
+CONFIG_JFS_STATISTICS=y
+CONFIG_FS_POSIX_ACL=y
+CONFIG_XFS_FS=m
+CONFIG_XFS_RT=y
+CONFIG_XFS_QUOTA=m
+CONFIG_XFS_SECURITY=y
+CONFIG_XFS_POSIX_ACL=y
+CONFIG_XFS_DMAPI=m
+# CONFIG_XFS_DEBUG is not set
+# CONFIG_XFS_TRACE is not set
+CONFIG_MINIX_FS=y
+CONFIG_ROMFS_FS=m
+CONFIG_QUOTA=y
+CONFIG_QFMT_V1=m
+CONFIG_QFMT_V2=m
+CONFIG_QUOTACTL=y
+CONFIG_AUTOFS_FS=m
+CONFIG_AUTOFS4_FS=m
+
+#
+# CD-ROM/DVD Filesystems
+#
+CONFIG_ISO9660_FS=y
+CONFIG_JOLIET=y
+CONFIG_ZISOFS=y
+CONFIG_ZISOFS_FS=y
+CONFIG_UDF_FS=m
+
+#
+# DOS/FAT/NT Filesystems
+#
+CONFIG_FAT_FS=m
+CONFIG_MSDOS_FS=m
+CONFIG_VFAT_FS=m
+CONFIG_NTFS_FS=m
+# CONFIG_NTFS_DEBUG is not set
+# CONFIG_NTFS_RW is not set
+CONFIG_RCFS_FS=m
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_KCORE=y
+# CONFIG_DEVFS_FS is not set
+CONFIG_DEVPTS_FS_XATTR=y
+CONFIG_DEVPTS_FS_SECURITY=y
+CONFIG_TMPFS=y
+CONFIG_HUGETLBFS=y
+CONFIG_HUGETLB_PAGE=y
+CONFIG_RAMFS=y
+CONFIG_RELAYFS_FS=m
+CONFIG_KLOG_CHANNEL=y
+# CONFIG_KLOG_CHANNEL_AUTOENABLE is not set
+CONFIG_KLOG_CHANNEL_SHIFT=21
+
+#
+# Miscellaneous filesystems
+#
+CONFIG_ADFS_FS=m
+# CONFIG_ADFS_FS_RW is not set
+CONFIG_AFFS_FS=m
+CONFIG_HFS_FS=m
+CONFIG_HFSPLUS_FS=m
+CONFIG_BEFS_FS=m
+# CONFIG_BEFS_DEBUG is not set
+CONFIG_BFS_FS=m
+CONFIG_EFS_FS=m
+CONFIG_JFFS_FS=m
+CONFIG_JFFS_FS_VERBOSE=0
+CONFIG_JFFS2_FS=m
+CONFIG_JFFS2_FS_DEBUG=0
+# CONFIG_JFFS2_FS_NAND is not set
+CONFIG_CRAMFS=m
+CONFIG_VXFS_FS=m
+CONFIG_HPFS_FS=m
+CONFIG_QNX4FS_FS=m
+# CONFIG_QNX4FS_RW is not set
+CONFIG_SYSV_FS=m
+CONFIG_UFS_FS=m
+# CONFIG_UFS_FS_WRITE is not set
+
+#
+# Network File Systems
+#
+CONFIG_NFS_FS=y
+CONFIG_NFS_V3=y
+CONFIG_NFS_ACL=y
+CONFIG_NFS_V4=y
+CONFIG_NFS_DIRECTIO=y
+CONFIG_NFSD=m
+CONFIG_NFSD_V3=y
+CONFIG_NFSD_ACL=y
+CONFIG_NFS_ACL_SUPPORT=y
+CONFIG_NFSD_V4=y
+CONFIG_NFSD_TCP=y
+CONFIG_LOCKD=y
+CONFIG_STATD=y
+CONFIG_LOCKD_V4=y
+CONFIG_EXPORTFS=m
+CONFIG_SUNRPC=y
+CONFIG_SUNRPC_GSS=y
+CONFIG_RPCSEC_GSS_KRB5=y
+CONFIG_SMB_FS=m
+CONFIG_SMB_NLS_DEFAULT=y
+CONFIG_SMB_NLS_REMOTE="cp437"
+CONFIG_CIFS=m
+CONFIG_NCP_FS=m
+CONFIG_NCPFS_PACKET_SIGNING=y
+CONFIG_NCPFS_IOCTL_LOCKING=y
+CONFIG_NCPFS_STRONG=y
+CONFIG_NCPFS_NFS_NS=y
+CONFIG_NCPFS_OS2_NS=y
+CONFIG_NCPFS_SMALLDOS=y
+CONFIG_NCPFS_NLS=y
+CONFIG_NCPFS_EXTRAS=y
+CONFIG_CODA_FS=m
+# CONFIG_CODA_FS_OLD_API is not set
+# CONFIG_INTERMEZZO_FS is not set
+CONFIG_AFS_FS=m
+CONFIG_RXRPC=m
+
+#
+# Partition Types
+#
+CONFIG_PARTITION_ADVANCED=y
+# CONFIG_ACORN_PARTITION is not set
+CONFIG_OSF_PARTITION=y
+# CONFIG_AMIGA_PARTITION is not set
+CONFIG_ATARI_PARTITION=y
+CONFIG_MAC_PARTITION=y
+CONFIG_MSDOS_PARTITION=y
+CONFIG_BSD_DISKLABEL=y
+# CONFIG_MINIX_SUBPARTITION is not set
+CONFIG_SOLARIS_X86_PARTITION=y
+CONFIG_UNIXWARE_DISKLABEL=y
+CONFIG_LDM_PARTITION=y
+# CONFIG_LDM_DEBUG is not set
+CONFIG_NEC98_PARTITION=y
+# CONFIG_SGI_PARTITION is not set
+CONFIG_ULTRIX_PARTITION=y
+CONFIG_SUN_PARTITION=y
+CONFIG_EFI_PARTITION=y
+
+#
+# Native Language Support
+#
+CONFIG_NLS=y
+CONFIG_NLS_DEFAULT="iso8859-1"
+CONFIG_NLS_CODEPAGE_437=m
+CONFIG_NLS_CODEPAGE_737=m
+CONFIG_NLS_CODEPAGE_775=m
+CONFIG_NLS_CODEPAGE_850=m
+CONFIG_NLS_CODEPAGE_852=m
+CONFIG_NLS_CODEPAGE_855=m
+CONFIG_NLS_CODEPAGE_857=m
+CONFIG_NLS_CODEPAGE_860=m
+CONFIG_NLS_CODEPAGE_861=m
+CONFIG_NLS_CODEPAGE_862=m
+CONFIG_NLS_CODEPAGE_863=m
+CONFIG_NLS_CODEPAGE_864=m
+CONFIG_NLS_CODEPAGE_865=m
+CONFIG_NLS_CODEPAGE_866=m
+CONFIG_NLS_CODEPAGE_869=m
+CONFIG_NLS_CODEPAGE_936=m
+CONFIG_NLS_CODEPAGE_950=m
+CONFIG_NLS_CODEPAGE_932=m
+CONFIG_NLS_CODEPAGE_949=m
+CONFIG_NLS_CODEPAGE_874=m
+CONFIG_NLS_ISO8859_8=m
+CONFIG_NLS_CODEPAGE_1250=m
+CONFIG_NLS_CODEPAGE_1251=m
+CONFIG_NLS_ISO8859_1=m
+CONFIG_NLS_ISO8859_2=m
+CONFIG_NLS_ISO8859_3=m
+CONFIG_NLS_ISO8859_4=m
+CONFIG_NLS_ISO8859_5=m
+CONFIG_NLS_ISO8859_6=m
+CONFIG_NLS_ISO8859_7=m
+CONFIG_NLS_ISO8859_9=m
+CONFIG_NLS_ISO8859_13=m
+CONFIG_NLS_ISO8859_14=m
+CONFIG_NLS_ISO8859_15=m
+CONFIG_NLS_KOI8_R=m
+CONFIG_NLS_KOI8_U=m
+CONFIG_NLS_UTF8=m
+
+#
+# Profiling support
+#
+# CONFIG_PROFILING is not set
+
+#
+# Kernel hacking
+#
+CONFIG_CRASH_DUMP=m
+CONFIG_KERNTYPES=y
+CONFIG_CRASH_DUMP_BLOCKDEV=m
+CONFIG_CRASH_DUMP_NETDEV=m
+# CONFIG_CRASH_DUMP_MEMDEV is not set
+CONFIG_CRASH_DUMP_COMPRESS_RLE=m
+CONFIG_CRASH_DUMP_COMPRESS_GZIP=m
+CONFIG_DEBUG_KERNEL=y
+CONFIG_EARLY_PRINTK=y
+# CONFIG_DEBUG_STACKOVERFLOW is not set
+CONFIG_DEBUG_STACK_USAGE=y
+# CONFIG_DEBUG_SLAB is not set
+CONFIG_MAGIC_SYSRQ=y
+# CONFIG_DEBUG_SPINLOCK is not set
+# CONFIG_DEBUG_PAGEALLOC is not set
+# CONFIG_DEBUG_HIGHMEM is not set
+# CONFIG_DEBUG_INFO is not set
+# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
+# CONFIG_FRAME_POINTER is not set
+# CONFIG_KDB is not set
+CONFIG_X86_FIND_SMP_CONFIG=y
+CONFIG_X86_MPPARSE=y
+
+#
+# Security options
+#
+CONFIG_SECURITY=y
+CONFIG_SECURITY_NETWORK=y
+CONFIG_SECURITY_CAPABILITIES=y
+CONFIG_SECURITY_CAPABILITIES_BOOTPARAM=y
+CONFIG_SECURITY_ROOTPLUG=m
+CONFIG_SECURITY_SELINUX=y
+CONFIG_SECURITY_SELINUX_BOOTPARAM=y
+CONFIG_SECURITY_SELINUX_DEVELOP=y
+# CONFIG_SECURITY_SELINUX_MLS is not set
+
+#
+# Cryptographic options
+#
+CONFIG_CRYPTO=y
+CONFIG_CRYPTO_HMAC=y
+CONFIG_CRYPTO_NULL=m
+CONFIG_CRYPTO_MD4=m
+CONFIG_CRYPTO_MD5=y
+CONFIG_CRYPTO_SHA1=m
+CONFIG_CRYPTO_SHA256=m
+CONFIG_CRYPTO_SHA512=m
+CONFIG_CRYPTO_DES=y
+CONFIG_CRYPTO_BLOWFISH=m
+CONFIG_CRYPTO_TWOFISH=m
+CONFIG_CRYPTO_SERPENT=m
+CONFIG_CRYPTO_AES=m
+CONFIG_CRYPTO_CAST5=m
+CONFIG_CRYPTO_CAST6=m
+CONFIG_CRYPTO_ARC4=m
+CONFIG_CRYPTO_DEFLATE=m
+CONFIG_CRYPTO_MICHAEL_MIC=m
+CONFIG_CRYPTO_TEST=m
+
+#
+# Library routines
+#
+CONFIG_CRC32=y
+CONFIG_QSORT=y
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=m
+
+#
+# Build options
+#
+CONFIG_SUSE_KERNEL=y
+CONFIG_CFGNAME="bigsmp"
+CONFIG_RELEASE="51.0"
+CONFIG_X86_SMP=y
+CONFIG_X86_HT=y
+CONFIG_X86_BIOS_REBOOT=y
+CONFIG_X86_TRAMPOLINE=y
+CONFIG_PC=y
index 90d86c2..0144b9f 100644 (file)
@@ -762,7 +762,7 @@ Index: linux/kernel/bproc_hook.c
 + *  along with this program; if not, write to the Free Software
 + *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 + *
-+ * Id: bproc-patch-2.4.20,v 1.3.2.1 2004/02/14 07:21:44 nic Exp $
++ * Id: bproc-patch-2.4.20,v 1.8 2004/04/12 21:44:45 nic Exp $
 + *-----------------------------------------------------------------------*/
 +#include <linux/kernel.h>
 +#include <linux/sched.h>
@@ -830,7 +830,7 @@ Index: linux/include/linux/bproc.h
 + *  along with this program; if not, write to the Free Software
 + *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 + *
-+ * Id: bproc-patch-2.4.20,v 1.3.2.1 2004/02/14 07:21:44 nic Exp $
++ * Id: bproc-patch-2.4.20,v 1.8 2004/04/12 21:44:45 nic Exp $
 + *-----------------------------------------------------------------------*/
 +#ifndef _LINUX_BPROC_H
 +#define _LINUX_BPROC_H
index f66abb9..b22d925 100644 (file)
@@ -1,7 +1,7 @@
-Index: linux-2.6.0/fs/filesystems.c
+Index: linux-2.6.4-51.0/fs/filesystems.c
 ===================================================================
---- linux-2.6.0.orig/fs/filesystems.c  2003-12-30 08:32:44.000000000 +0300
-+++ linux-2.6.0/fs/filesystems.c       2003-12-31 01:10:16.000000000 +0300
+--- linux-2.6.4-51.0.orig/fs/filesystems.c     2004-04-05 12:41:59.000000000 -0400
++++ linux-2.6.4-51.0/fs/filesystems.c  2004-04-15 14:59:56.000000000 -0400
 @@ -27,7 +27,9 @@
   */
  
@@ -13,11 +13,11 @@ Index: linux-2.6.0/fs/filesystems.c
  
  /* WARNING: This can be used only if we _already_ own a reference */
  void get_filesystem(struct file_system_type *fs)
-Index: linux-2.6.0/include/linux/fs.h
+Index: linux-2.6.4-51.0/include/linux/fs.h
 ===================================================================
---- linux-2.6.0.orig/include/linux/fs.h        2003-12-31 00:33:41.000000000 +0300
-+++ linux-2.6.0/include/linux/fs.h     2003-12-31 01:09:26.000000000 +0300
-@@ -1390,6 +1390,7 @@
+--- linux-2.6.4-51.0.orig/include/linux/fs.h   2004-04-15 14:59:50.000000000 -0400
++++ linux-2.6.4-51.0/include/linux/fs.h        2004-04-15 14:59:56.000000000 -0400
+@@ -1432,6 +1432,7 @@
  
  extern struct file_operations generic_ro_fops;
  
@@ -25,10 +25,10 @@ Index: linux-2.6.0/include/linux/fs.h
  #define special_file(m) (S_ISCHR(m)||S_ISBLK(m)||S_ISFIFO(m)||S_ISSOCK(m))
  
  extern int vfs_readlink(struct dentry *, char __user *, int, const char *);
-Index: linux-2.6.0/include/linux/ext2_fs_sb.h
+Index: linux-2.6.4-51.0/include/linux/ext2_fs_sb.h
 ===================================================================
---- linux-2.6.0.orig/include/linux/ext2_fs_sb.h        2003-05-15 20:10:39.000000000 +0400
-+++ linux-2.6.0/include/linux/ext2_fs_sb.h     2003-12-31 01:09:26.000000000 +0300
+--- linux-2.6.4-51.0.orig/include/linux/ext2_fs_sb.h   2004-04-05 12:42:07.000000000 -0400
++++ linux-2.6.4-51.0/include/linux/ext2_fs_sb.h        2004-04-15 14:59:56.000000000 -0400
 @@ -16,9 +16,11 @@
  #ifndef _LINUX_EXT2_FS_SB
  #define _LINUX_EXT2_FS_SB
@@ -42,3 +42,12 @@ Index: linux-2.6.0/include/linux/ext2_fs_sb.h
  /*
   * second extended-fs super-block data in memory
   */
+Index: linux-2.6.4-51.0/kernel/kallsyms.c
+===================================================================
+--- linux-2.6.4-51.0.orig/kernel/kallsyms.c    2004-04-05 12:42:08.000000000 -0400
++++ linux-2.6.4-51.0/kernel/kallsyms.c 2004-04-15 15:00:56.000000000 -0400
+@@ -329,3 +329,4 @@
+ EXPORT_SYMBOL(kallsyms_lookup);
+ EXPORT_SYMBOL(__print_symbol);
++EXPORT_SYMBOL(kernel_text_address);
diff --git a/lustre/kernel_patches/patches/kernel_text_address-2.6-suse.patch b/lustre/kernel_patches/patches/kernel_text_address-2.6-suse.patch
deleted file mode 100644 (file)
index c60c525..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-Index: linux-2.6.3/arch/i386/kernel/traps.c
-===================================================================
---- linux-2.6.3.orig/arch/i386/kernel/traps.c  2004-02-23 14:04:13.000000000 -0800
-+++ linux-2.6.3/arch/i386/kernel/traps.c       2004-02-23 14:10:07.000000000 -0800
-@@ -890,3 +890,21 @@
-       trap_init_hook();
- }
-+
-+int is_kernel_text_address(unsigned long addr)
-+{
-+      if (addr < (unsigned long) &_stext ||
-+          addr > (unsigned long) &_etext ||
-+          module_text_address(addr))
-+              return 0;
-+
-+       return 1;
-+}
-+
-+int lookup_symbol(unsigned long address, char *buf, int buflen)
-+{
-+       return -ENOSYS;
-+}
-+
-+EXPORT_SYMBOL_GPL(is_kernel_text_address);
-+EXPORT_SYMBOL_GPL(lookup_symbol);
diff --git a/lustre/kernel_patches/patches/md_path_lookup-2.6-suse b/lustre/kernel_patches/patches/md_path_lookup-2.6-suse
new file mode 100644 (file)
index 0000000..4e2b66d
--- /dev/null
@@ -0,0 +1,25 @@
+Index: linux-2.6.4-51.0/drivers/md/dm-path-selector.c
+===================================================================
+--- linux-2.6.4-51.0.orig/drivers/md/dm-path-selector.c        2004-04-18 20:10:21.000000000 -0400
++++ linux-2.6.4-51.0/drivers/md/dm-path-selector.c     2004-04-18 20:10:59.000000000 -0400
+@@ -129,7 +129,7 @@
+       struct path *path;
+ };
+-static struct path_info *path_lookup(struct list_head *head, struct path *p)
++static struct path_info *md_path_lookup(struct list_head *head, struct path *p)
+ {
+       struct path_info *pi;
+@@ -235,9 +235,9 @@
+        * mind the expense of these searches.
+        */
+       spin_lock_irqsave(&s->lock, flags);
+-      pi = path_lookup(&s->valid_paths, p);
++      pi = md_path_lookup(&s->valid_paths, p);
+       if (!pi)
+-              pi = path_lookup(&s->invalid_paths, p);
++              pi = md_path_lookup(&s->invalid_paths, p);
+       if (!pi)
+               DMWARN("asked to change the state of an unknown path");
index 25d147d..ec3b64c 100644 (file)
  kernel/ksyms.c            |    1 
  12 files changed, 558 insertions(+), 128 deletions(-)
 
-Index: linux-2.4.21-suse2/fs/dcache.c
+Index: linux-2.4.21-x86_64/fs/dcache.c
 ===================================================================
---- linux-2.4.21-suse2.orig/fs/dcache.c        2003-10-28 21:33:59.000000000 +0300
-+++ linux-2.4.21-suse2/fs/dcache.c     2004-01-10 12:15:41.000000000 +0300
+--- linux-2.4.21-x86_64.orig/fs/dcache.c       2003-10-28 10:33:59.000000000 -0800
++++ linux-2.4.21-x86_64/fs/dcache.c    2004-04-12 19:57:36.000000000 -0700
 @@ -186,6 +186,13 @@
                spin_unlock(&dcache_lock);
                return 0;
@@ -53,10 +53,10 @@ Index: linux-2.4.21-suse2/fs/dcache.c
  }
  
  #define do_switch(x,y) do { \
-Index: linux-2.4.21-suse2/fs/exec.c
+Index: linux-2.4.21-x86_64/fs/exec.c
 ===================================================================
---- linux-2.4.21-suse2.orig/fs/exec.c  2003-10-28 21:34:17.000000000 +0300
-+++ linux-2.4.21-suse2/fs/exec.c       2004-01-10 12:15:41.000000000 +0300
+--- linux-2.4.21-x86_64.orig/fs/exec.c 2003-10-28 10:34:17.000000000 -0800
++++ linux-2.4.21-x86_64/fs/exec.c      2004-04-12 19:57:36.000000000 -0700
 @@ -112,8 +112,10 @@
        struct file * file;
        struct nameidata nd;
@@ -118,10 +118,10 @@ Index: linux-2.4.21-suse2/fs/exec.c
                goto close_fail;
  
        retval = binfmt->core_dump(signr, regs, file);
-Index: linux-2.4.21-suse2/fs/namei.c
+Index: linux-2.4.21-x86_64/fs/namei.c
 ===================================================================
---- linux-2.4.21-suse2.orig/fs/namei.c 2004-01-10 12:06:40.000000000 +0300
-+++ linux-2.4.21-suse2/fs/namei.c      2004-01-10 12:55:09.000000000 +0300
+--- linux-2.4.21-x86_64.orig/fs/namei.c        2003-10-28 10:34:18.000000000 -0800
++++ linux-2.4.21-x86_64/fs/namei.c     2004-04-12 19:58:44.000000000 -0700
 @@ -94,6 +94,13 @@
   * XEmacs seems to be relying on it...
   */
@@ -300,7 +300,7 @@ Index: linux-2.4.21-suse2/fs/namei.c
                                break;
                }
                goto return_base;
-@@ -643,6 +680,25 @@
+@@ -643,6 +680,27 @@
                 * Check the cached dentry for staleness.
                 */
                dentry = nd->dentry;
@@ -322,11 +322,13 @@ Index: linux-2.4.21-suse2/fs/namei.c
 +                              }
 +                              nd->dentry = new;
 +                      }
++                      if (!nd->dentry->d_inode)
++                              goto no_inode;
 +              } else
                if (dentry && dentry->d_op && dentry->d_op->d_revalidate) {
                        err = -ESTALE;
                        if (!dentry->d_op->d_revalidate(dentry, lookup_flags & LOOKUP_PARENT)) {
-@@ -656,6 +712,8 @@
+@@ -656,6 +714,8 @@
                dput(dentry);
                break;
        }
@@ -335,7 +337,7 @@ Index: linux-2.4.21-suse2/fs/namei.c
        path_release(nd);
  return_err:
        return err;
-@@ -663,13 +721,13 @@
+@@ -663,13 +723,13 @@
  
  int link_path_walk(const char * name, struct nameidata *nd)
  {
@@ -351,7 +353,7 @@ Index: linux-2.4.21-suse2/fs/namei.c
  }
  
  int path_walk(const char * name, struct nameidata *nd)
-@@ -677,6 +735,12 @@
+@@ -677,6 +737,12 @@
        return __path_walk(name, nd);
  }
  
@@ -364,7 +366,7 @@ Index: linux-2.4.21-suse2/fs/namei.c
  /* SMP-safe */
  /* returns 1 if everything is done */
  static int __emul_lookup_dentry(const char *name, struct nameidata *nd)
-@@ -759,6 +823,17 @@
+@@ -759,6 +825,17 @@
  }
  
  /* SMP-safe */
@@ -382,7 +384,7 @@ Index: linux-2.4.21-suse2/fs/namei.c
  int path_lookup(const char *path, unsigned flags, struct nameidata *nd)
  {
        int error = 0;
-@@ -773,6 +848,7 @@
+@@ -773,6 +850,7 @@
  {
        nd->last_type = LAST_ROOT; /* if there are only slashes... */
        nd->flags = flags;
@@ -390,7 +392,7 @@ Index: linux-2.4.21-suse2/fs/namei.c
        if (*name=='/')
                return walk_init_root(name,nd);
        read_lock(&current->fs->lock);
-@@ -787,7 +863,8 @@
+@@ -787,7 +865,8 @@
   * needs parent already locked. Doesn't follow mounts.
   * SMP-safe.
   */
@@ -400,7 +402,7 @@ Index: linux-2.4.21-suse2/fs/namei.c
  {
        struct dentry * dentry;
        struct inode *inode;
-@@ -810,13 +887,16 @@
+@@ -810,13 +889,16 @@
                        goto out;
        }
  
@@ -418,7 +420,7 @@ Index: linux-2.4.21-suse2/fs/namei.c
                dentry = inode->i_op->lookup(inode, new);
                unlock_kernel();
                if (!dentry)
-@@ -828,6 +908,12 @@
+@@ -828,6 +910,12 @@
        return dentry;
  }
  
@@ -431,7 +433,7 @@ Index: linux-2.4.21-suse2/fs/namei.c
  /* SMP-safe */
  struct dentry * lookup_one_len(const char * name, struct dentry * base, int len)
  {
-@@ -849,7 +935,7 @@
+@@ -849,7 +937,7 @@
        }
        this.hash = end_name_hash(hash);
  
@@ -440,7 +442,7 @@ Index: linux-2.4.21-suse2/fs/namei.c
  access:
        return ERR_PTR(-EACCES);
  }
-@@ -880,6 +966,23 @@
+@@ -880,6 +968,23 @@
        return err;
  }
  
@@ -464,7 +466,7 @@ Index: linux-2.4.21-suse2/fs/namei.c
  /*
   * It's inline, so penalty for filesystems that don't use sticky bit is
   * minimal.
-@@ -977,7 +1080,8 @@
+@@ -977,7 +1082,8 @@
        return retval;
  }
  
@@ -474,7 +476,7 @@ Index: linux-2.4.21-suse2/fs/namei.c
  {
        int error;
  
-@@ -990,12 +1094,15 @@
+@@ -990,12 +1096,15 @@
                goto exit_lock;
  
        error = -EACCES;        /* shouldn't it be ENOSYS? */
@@ -492,7 +494,7 @@ Index: linux-2.4.21-suse2/fs/namei.c
        unlock_kernel();
  exit_lock:
        up(&dir->i_zombie);
-@@ -1004,6 +1111,11 @@
+@@ -1004,6 +1113,11 @@
        return error;
  }
  
@@ -504,7 +506,7 @@ Index: linux-2.4.21-suse2/fs/namei.c
  /*
   *    open_namei()
   *
-@@ -1018,7 +1130,8 @@
+@@ -1018,7 +1132,8 @@
   * for symlinks (where the permissions are checked later).
   * SMP-safe
   */
@@ -514,7 +516,7 @@ Index: linux-2.4.21-suse2/fs/namei.c
  {
        int acc_mode, error = 0;
        struct inode *inode;
-@@ -1028,11 +1141,14 @@
+@@ -1028,11 +1143,14 @@
  
        acc_mode = ACC_MODE(flag);
  
@@ -530,7 +532,7 @@ Index: linux-2.4.21-suse2/fs/namei.c
                if (error)
                        return error;
                dentry = nd->dentry;
-@@ -1042,6 +1158,10 @@
+@@ -1042,6 +1160,10 @@
        /*
         * Create - we need to know the parent.
         */
@@ -541,7 +543,7 @@ Index: linux-2.4.21-suse2/fs/namei.c
        error = path_lookup(pathname, LOOKUP_PARENT, nd);
        if (error)
                return error;
-@@ -1057,7 +1177,7 @@
+@@ -1057,7 +1179,7 @@
  
        dir = nd->dentry;
        down(&dir->d_inode->i_sem);
@@ -550,7 +552,7 @@ Index: linux-2.4.21-suse2/fs/namei.c
  
  do_last:
        error = PTR_ERR(dentry);
-@@ -1066,11 +1186,12 @@
+@@ -1066,11 +1188,12 @@
                goto exit;
        }
  
@@ -564,7 +566,7 @@ Index: linux-2.4.21-suse2/fs/namei.c
                up(&dir->d_inode->i_sem);
  #ifndef DENTRY_WASTE_RAM
                if (error)
-@@ -1178,7 +1299,7 @@
+@@ -1178,7 +1301,7 @@
                if (!error) {
                        DQUOT_INIT(inode);
                        
@@ -573,7 +575,7 @@ Index: linux-2.4.21-suse2/fs/namei.c
                }
                put_write_access(inode);
                if (error)
-@@ -1190,8 +1311,10 @@
+@@ -1190,8 +1313,10 @@
        return 0;
  
  exit_dput:
@@ -584,7 +586,7 @@ Index: linux-2.4.21-suse2/fs/namei.c
        path_release(nd);
        return error;
  
-@@ -1210,7 +1333,10 @@
+@@ -1210,7 +1335,10 @@
         * are done. Procfs-like symlinks just set LAST_BIND.
         */
        UPDATE_ATIME(dentry->d_inode);
@@ -595,7 +597,7 @@ Index: linux-2.4.21-suse2/fs/namei.c
        dput(dentry);
        if (error)
                return error;
-@@ -1232,13 +1358,20 @@
+@@ -1232,13 +1360,20 @@
        }
        dir = nd->dentry;
        down(&dir->d_inode->i_sem);
@@ -618,7 +620,7 @@ Index: linux-2.4.21-suse2/fs/namei.c
  {
        struct dentry *dentry;
  
-@@ -1246,7 +1379,7 @@
+@@ -1246,7 +1381,7 @@
        dentry = ERR_PTR(-EEXIST);
        if (nd->last_type != LAST_NORM)
                goto fail;
@@ -627,12 +629,16 @@ Index: linux-2.4.21-suse2/fs/namei.c
        if (IS_ERR(dentry))
                goto fail;
        if (!is_dir && nd->last.name[nd->last.len] && !dentry->d_inode)
-@@ -1302,7 +1435,16 @@
+@@ -1302,7 +1437,20 @@
        error = path_lookup(tmp, LOOKUP_PARENT, &nd);
        if (error)
                goto out;
 -      dentry = lookup_create(&nd, 0);
 +
++      if (nd.last_type != LAST_NORM) {
++              error = -EEXIST;
++              goto out2;
++      }
 +      if (nd.dentry->d_inode->i_op->mknod_raw) {
 +              struct inode_operations *op = nd.dentry->d_inode->i_op;
 +              error = op->mknod_raw(&nd, mode, dev);
@@ -645,7 +651,7 @@ Index: linux-2.4.21-suse2/fs/namei.c
        error = PTR_ERR(dentry);
  
        if (!IS_POSIXACL(nd.dentry->d_inode))
-@@ -1324,6 +1466,7 @@
+@@ -1324,6 +1472,7 @@
                dput(dentry);
        }
        up(&nd.dentry->d_inode->i_sem);
@@ -653,11 +659,15 @@ Index: linux-2.4.21-suse2/fs/namei.c
        path_release(&nd);
  out:
        putname(tmp);
-@@ -1371,7 +1514,14 @@
+@@ -1371,7 +1520,18 @@
                error = path_lookup(tmp, LOOKUP_PARENT, &nd);
                if (error)
                        goto out;
 -              dentry = lookup_create(&nd, 1);
++              if (nd.last_type != LAST_NORM) {
++                      error = -EEXIST;
++                      goto out2;
++              }
 +              if (nd.dentry->d_inode->i_op->mkdir_raw) {
 +                      struct inode_operations *op = nd.dentry->d_inode->i_op;
 +                      error = op->mkdir_raw(&nd, mode);
@@ -669,7 +679,7 @@ Index: linux-2.4.21-suse2/fs/namei.c
                error = PTR_ERR(dentry);
                if (!IS_ERR(dentry)) {
                        if (!IS_POSIXACL(nd.dentry->d_inode))
-@@ -1380,6 +1530,7 @@
+@@ -1380,6 +1540,7 @@
                        dput(dentry);
                }
                up(&nd.dentry->d_inode->i_sem);
@@ -677,7 +687,7 @@ Index: linux-2.4.21-suse2/fs/namei.c
                path_release(&nd);
  out:
                putname(tmp);
-@@ -1480,8 +1631,16 @@
+@@ -1480,8 +1641,16 @@
                        error = -EBUSY;
                        goto exit1;
        }
@@ -695,7 +705,7 @@ Index: linux-2.4.21-suse2/fs/namei.c
        error = PTR_ERR(dentry);
        if (!IS_ERR(dentry)) {
                error = vfs_rmdir(nd.dentry->d_inode, dentry);
-@@ -1539,8 +1698,15 @@
+@@ -1539,8 +1708,15 @@
        error = -EISDIR;
        if (nd.last_type != LAST_NORM)
                goto exit1;
@@ -712,11 +722,15 @@ Index: linux-2.4.21-suse2/fs/namei.c
        error = PTR_ERR(dentry);
        if (!IS_ERR(dentry)) {
                /* Why not before? Because we want correct error value */
-@@ -1607,15 +1773,23 @@
+@@ -1607,15 +1783,27 @@
                error = path_lookup(to, LOOKUP_PARENT, &nd);
                if (error)
                        goto out;
 -              dentry = lookup_create(&nd, 0);
++              if (nd.last_type != LAST_NORM) {
++                      error = -EEXIST;
++                      goto out2;
++              }
 +              if (nd.dentry->d_inode->i_op->symlink_raw) {
 +                      struct inode_operations *op = nd.dentry->d_inode->i_op;
 +                      error = op->symlink_raw(&nd, from);
@@ -738,11 +752,15 @@ Index: linux-2.4.21-suse2/fs/namei.c
                putname(to);
        }
        putname(from);
-@@ -1691,7 +1865,14 @@
+@@ -1691,7 +1879,18 @@
                error = -EXDEV;
                if (old_nd.mnt != nd.mnt)
                        goto out_release;
 -              new_dentry = lookup_create(&nd, 0);
++              if (nd.last_type != LAST_NORM) {
++                      error = -EEXIST;
++                      goto out_release;
++              }
 +              if (nd.dentry->d_inode->i_op->link_raw) {
 +                      struct inode_operations *op = nd.dentry->d_inode->i_op;
 +                      error = op->link_raw(&old_nd, &nd);
@@ -754,7 +772,7 @@ Index: linux-2.4.21-suse2/fs/namei.c
                error = PTR_ERR(new_dentry);
                if (!IS_ERR(new_dentry)) {
                        error = vfs_link(old_nd.dentry, nd.dentry->d_inode, new_dentry);
-@@ -1735,7 +1916,7 @@
+@@ -1735,7 +1934,7 @@
   *       locking].
   */
  int vfs_rename_dir(struct inode *old_dir, struct dentry *old_dentry,
@@ -763,7 +781,7 @@ Index: linux-2.4.21-suse2/fs/namei.c
  {
        int error;
        struct inode *target;
-@@ -1814,7 +1995,7 @@
+@@ -1814,7 +2013,7 @@
  }
  
  int vfs_rename_other(struct inode *old_dir, struct dentry *old_dentry,
@@ -772,7 +790,7 @@ Index: linux-2.4.21-suse2/fs/namei.c
  {
        int error;
  
-@@ -1902,9 +2083,18 @@
+@@ -1902,9 +2101,18 @@
        if (newnd.last_type != LAST_NORM)
                goto exit2;
  
@@ -792,7 +810,7 @@ Index: linux-2.4.21-suse2/fs/namei.c
        error = PTR_ERR(old_dentry);
        if (IS_ERR(old_dentry))
                goto exit3;
-@@ -1920,16 +2110,16 @@
+@@ -1920,16 +2128,16 @@
                if (newnd.last.name[newnd.last.len])
                        goto exit4;
        }
@@ -811,7 +829,7 @@ Index: linux-2.4.21-suse2/fs/namei.c
        dput(new_dentry);
  exit4:
        dput(old_dentry);
-@@ -1980,20 +2170,26 @@
+@@ -1980,20 +2188,26 @@
  }
  
  static inline int
@@ -840,7 +858,7 @@ Index: linux-2.4.21-suse2/fs/namei.c
  out:
        if (current->link_count || res || nd->last_type!=LAST_NORM)
                return res;
-@@ -2017,7 +2213,13 @@
+@@ -2017,7 +2231,13 @@
  
  int vfs_follow_link(struct nameidata *nd, const char *link)
  {
@@ -855,7 +873,7 @@ Index: linux-2.4.21-suse2/fs/namei.c
  }
  
  /* get the link contents into pagecache */
-@@ -2059,7 +2261,7 @@
+@@ -2059,7 +2279,7 @@
  {
        struct page *page = NULL;
        char *s = page_getlink(dentry, &page);
@@ -864,10 +882,10 @@ Index: linux-2.4.21-suse2/fs/namei.c
        if (page) {
                kunmap(page);
                page_cache_release(page);
-Index: linux-2.4.21-suse2/fs/namespace.c
+Index: linux-2.4.21-x86_64/fs/namespace.c
 ===================================================================
---- linux-2.4.21-suse2.orig/fs/namespace.c     2003-10-28 21:34:12.000000000 +0300
-+++ linux-2.4.21-suse2/fs/namespace.c  2004-01-10 12:15:41.000000000 +0300
+--- linux-2.4.21-x86_64.orig/fs/namespace.c    2003-10-28 10:34:12.000000000 -0800
++++ linux-2.4.21-x86_64/fs/namespace.c 2004-04-12 19:57:36.000000000 -0700
 @@ -98,6 +98,7 @@
  {
        old_nd->dentry = mnt->mnt_mountpoint;
@@ -981,10 +999,10 @@ Index: linux-2.4.21-suse2/fs/namespace.c
        path_release(&new_nd);
  out0:
        unlock_kernel();
-Index: linux-2.4.21-suse2/fs/open.c
+Index: linux-2.4.21-x86_64/fs/open.c
 ===================================================================
---- linux-2.4.21-suse2.orig/fs/open.c  2003-10-28 21:33:59.000000000 +0300
-+++ linux-2.4.21-suse2/fs/open.c       2004-01-10 12:55:39.000000000 +0300
+--- linux-2.4.21-x86_64.orig/fs/open.c 2003-10-28 10:33:59.000000000 -0800
++++ linux-2.4.21-x86_64/fs/open.c      2004-04-12 19:57:36.000000000 -0700
 @@ -19,6 +19,8 @@
  #include <asm/uaccess.h>
  
@@ -1385,11 +1403,11 @@ Index: linux-2.4.21-suse2/fs/open.c
  /*
   * Find an empty file descriptor entry, and mark it busy.
   */
-Index: linux-2.4.21-suse2/fs/stat.c
+Index: linux-2.4.21-x86_64/fs/stat.c
 ===================================================================
---- linux-2.4.21-suse2.orig/fs/stat.c  2003-10-28 21:33:58.000000000 +0300
-+++ linux-2.4.21-suse2/fs/stat.c       2004-01-10 12:15:41.000000000 +0300
-@@ -17,10 +17,14 @@
+--- linux-2.4.21-x86_64.orig/fs/stat.c 2003-10-28 10:33:58.000000000 -0800
++++ linux-2.4.21-x86_64/fs/stat.c      2004-04-12 19:58:44.000000000 -0700
+@@ -17,10 +17,12 @@
   * Revalidate the inode. This is required for proper NFS attribute caching.
   */
  static __inline__ int
@@ -1398,15 +1416,13 @@ Index: linux-2.4.21-suse2/fs/stat.c
  {
        struct inode * inode = dentry->d_inode;
 -      if (inode->i_op && inode->i_op->revalidate)
-+      if (!inode)
-+              return -ENOENT;
 +      if (inode->i_op && inode->i_op->revalidate_it)
 +              return inode->i_op->revalidate_it(dentry, it);
 +      else if (inode->i_op && inode->i_op->revalidate)
                return inode->i_op->revalidate(dentry);
        return 0;
  }
-@@ -141,13 +145,15 @@
+@@ -141,13 +143,15 @@
  asmlinkage long sys_stat(char * filename, struct __old_kernel_stat * statbuf)
  {
        struct nameidata nd;
@@ -1424,7 +1440,7 @@ Index: linux-2.4.21-suse2/fs/stat.c
                path_release(&nd);
        }
        return error;
-@@ -157,13 +163,15 @@
+@@ -157,13 +161,15 @@
  asmlinkage long sys_newstat(char * filename, struct stat * statbuf)
  {
        struct nameidata nd;
@@ -1442,7 +1458,7 @@ Index: linux-2.4.21-suse2/fs/stat.c
                path_release(&nd);
        }
        return error;
-@@ -178,13 +186,15 @@
+@@ -178,13 +184,15 @@
  asmlinkage long sys_lstat(char * filename, struct __old_kernel_stat * statbuf)
  {
        struct nameidata nd;
@@ -1460,7 +1476,7 @@ Index: linux-2.4.21-suse2/fs/stat.c
                path_release(&nd);
        }
        return error;
-@@ -195,13 +205,15 @@
+@@ -195,13 +203,15 @@
  asmlinkage long sys_newlstat(char * filename, struct stat * statbuf)
  {
        struct nameidata nd;
@@ -1478,7 +1494,7 @@ Index: linux-2.4.21-suse2/fs/stat.c
                path_release(&nd);
        }
        return error;
-@@ -222,7 +234,7 @@
+@@ -222,7 +232,7 @@
        if (f) {
                struct dentry * dentry = f->f_dentry;
  
@@ -1487,7 +1503,7 @@ Index: linux-2.4.21-suse2/fs/stat.c
                if (!err)
                        err = cp_old_stat(dentry->d_inode, statbuf);
                fput(f);
-@@ -241,7 +253,7 @@
+@@ -241,7 +251,7 @@
        if (f) {
                struct dentry * dentry = f->f_dentry;
  
@@ -1496,7 +1512,7 @@ Index: linux-2.4.21-suse2/fs/stat.c
                if (!err)
                        err = cp_new_stat(dentry->d_inode, statbuf);
                fput(f);
-@@ -263,7 +275,7 @@
+@@ -263,7 +273,7 @@
  
                error = -EINVAL;
                if (inode->i_op && inode->i_op->readlink &&
@@ -1505,7 +1521,7 @@ Index: linux-2.4.21-suse2/fs/stat.c
                        UPDATE_ATIME(inode);
                        error = inode->i_op->readlink(nd.dentry, buf, bufsiz);
                }
-@@ -339,12 +351,14 @@
+@@ -339,12 +349,14 @@
  {
        struct nameidata nd;
        int error;
@@ -1522,7 +1538,7 @@ Index: linux-2.4.21-suse2/fs/stat.c
                path_release(&nd);
        }
        return error;
-@@ -354,12 +368,14 @@
+@@ -354,12 +366,14 @@
  {
        struct nameidata nd;
        int error;
@@ -1539,7 +1555,7 @@ Index: linux-2.4.21-suse2/fs/stat.c
                path_release(&nd);
        }
        return error;
-@@ -374,7 +390,7 @@
+@@ -374,7 +388,7 @@
        if (f) {
                struct dentry * dentry = f->f_dentry;
  
@@ -1548,10 +1564,10 @@ Index: linux-2.4.21-suse2/fs/stat.c
                if (!err)
                        err = cp_new_stat64(dentry->d_inode, statbuf);
                fput(f);
-Index: linux-2.4.21-suse2/include/linux/dcache.h
+Index: linux-2.4.21-x86_64/include/linux/dcache.h
 ===================================================================
---- linux-2.4.21-suse2.orig/include/linux/dcache.h     2003-11-11 03:44:28.000000000 +0300
-+++ linux-2.4.21-suse2/include/linux/dcache.h  2004-01-10 12:48:36.000000000 +0300
+--- linux-2.4.21-x86_64.orig/include/linux/dcache.h    2003-11-10 16:44:28.000000000 -0800
++++ linux-2.4.21-x86_64/include/linux/dcache.h 2004-04-12 19:57:36.000000000 -0700
 @@ -7,6 +7,51 @@
  #include <linux/gdb.h>
  #include <linux/mount.h>
@@ -1635,10 +1651,10 @@ Index: linux-2.4.21-suse2/include/linux/dcache.h
  
  extern spinlock_t dcache_lock;
  
-Index: linux-2.4.21-suse2/include/linux/fs.h
+Index: linux-2.4.21-x86_64/include/linux/fs.h
 ===================================================================
---- linux-2.4.21-suse2.orig/include/linux/fs.h 2004-01-10 11:28:05.000000000 +0300
-+++ linux-2.4.21-suse2/include/linux/fs.h      2004-01-10 12:48:36.000000000 +0300
+--- linux-2.4.21-x86_64.orig/include/linux/fs.h        2004-04-12 19:57:33.000000000 -0700
++++ linux-2.4.21-x86_64/include/linux/fs.h     2004-04-12 19:57:36.000000000 -0700
 @@ -74,6 +74,7 @@
  
  #define FMODE_READ 1
@@ -1766,10 +1782,10 @@ Index: linux-2.4.21-suse2/include/linux/fs.h
  extern int page_readlink(struct dentry *, char *, int);
  extern int page_follow_link(struct dentry *, struct nameidata *);
  extern struct inode_operations page_symlink_inode_operations;
-Index: linux-2.4.21-suse2/include/linux/fs_struct.h
+Index: linux-2.4.21-x86_64/include/linux/fs_struct.h
 ===================================================================
---- linux-2.4.21-suse2.orig/include/linux/fs_struct.h  2001-07-14 02:10:44.000000000 +0400
-+++ linux-2.4.21-suse2/include/linux/fs_struct.h       2004-01-10 12:15:41.000000000 +0300
+--- linux-2.4.21-x86_64.orig/include/linux/fs_struct.h 2001-07-13 15:10:44.000000000 -0700
++++ linux-2.4.21-x86_64/include/linux/fs_struct.h      2004-04-12 19:57:36.000000000 -0700
 @@ -34,10 +34,12 @@
        write_lock(&fs->lock);
        old_root = fs->root;
@@ -1796,10 +1812,10 @@ Index: linux-2.4.21-suse2/include/linux/fs_struct.h
                dput(old_pwd);
                mntput(old_pwdmnt);
        }
-Index: linux-2.4.21-suse2/kernel/exit.c
+Index: linux-2.4.21-x86_64/kernel/exit.c
 ===================================================================
---- linux-2.4.21-suse2.orig/kernel/exit.c      2003-10-28 21:34:13.000000000 +0300
-+++ linux-2.4.21-suse2/kernel/exit.c   2004-01-10 12:15:41.000000000 +0300
+--- linux-2.4.21-x86_64.orig/kernel/exit.c     2003-10-28 10:34:13.000000000 -0800
++++ linux-2.4.21-x86_64/kernel/exit.c  2004-04-12 19:57:36.000000000 -0700
 @@ -288,11 +288,14 @@
  {
        /* No need to hold fs->lock if we are killing it */
@@ -1815,10 +1831,10 @@ Index: linux-2.4.21-suse2/kernel/exit.c
                        dput(fs->altroot);
                        mntput(fs->altrootmnt);
                }
-Index: linux-2.4.21-suse2/kernel/fork.c
+Index: linux-2.4.21-x86_64/kernel/fork.c
 ===================================================================
---- linux-2.4.21-suse2.orig/kernel/fork.c      2003-10-28 21:34:17.000000000 +0300
-+++ linux-2.4.21-suse2/kernel/fork.c   2004-01-10 12:15:41.000000000 +0300
+--- linux-2.4.21-x86_64.orig/kernel/fork.c     2003-10-28 10:34:17.000000000 -0800
++++ linux-2.4.21-x86_64/kernel/fork.c  2004-04-12 19:57:36.000000000 -0700
 @@ -461,10 +461,13 @@
                fs->umask = old->umask;
                read_lock(&old->lock);
@@ -1833,10 +1849,10 @@ Index: linux-2.4.21-suse2/kernel/fork.c
                        fs->altrootmnt = mntget(old->altrootmnt);
                        fs->altroot = dget(old->altroot);
                } else {
-Index: linux-2.4.21-suse2/kernel/ksyms.c
+Index: linux-2.4.21-x86_64/kernel/ksyms.c
 ===================================================================
---- linux-2.4.21-suse2.orig/kernel/ksyms.c     2004-01-10 11:28:05.000000000 +0300
-+++ linux-2.4.21-suse2/kernel/ksyms.c  2004-01-10 12:15:41.000000000 +0300
+--- linux-2.4.21-x86_64.orig/kernel/ksyms.c    2004-04-12 19:57:33.000000000 -0700
++++ linux-2.4.21-x86_64/kernel/ksyms.c 2004-04-12 19:57:36.000000000 -0700
 @@ -327,6 +327,7 @@
  EXPORT_SYMBOL(set_page_dirty);
  EXPORT_SYMBOL(vfs_readlink);
index 99ea296..f3cb5bb 100644 (file)
@@ -9,6 +9,6 @@ export-truncate-2.6-suse.patch
 export_symbols-2.6-suse.patch 
 removepage-2.6-suse.patch
 dev_read_only-2.6-suse.patch 
-kernel_text_address-2.6-suse.patch 
 export-2.6-suse.patch
 header-guards-2.6-suse.patch
+md_path_lookup-2.6-suse
index 65e8dcd..cff99dd 100644 (file)
@@ -1,4 +1,3 @@
-header-guards-2.6-suse.patch
 ext3-wantedi-2.6-suse.patch
 ext3-san-jdike-2.6-suse.patch
 iopen-2.6-suse.patch 
@@ -8,4 +7,3 @@ ext3-init-generation-2.6-suse.patch
 ext3-ea-in-inode-2.6-suse.patch
 export-ext3-2.6-suse.patch
 ext3-include-fixes-2.6-suse.patch
-ext3-xattr-header-move-2.6.suse.patch
index ef3b1ae..ea9b136 100644 (file)
@@ -1,13 +1,14 @@
-KERNEL=linux-2.6.4-51.8.tar.gz
-SERIES=2.6-suse
+KERNEL=linux-2.6.4-51.0.tar.gz
+SERIES=2.6-suse.series
 VERSION=2.6.4
-EXTRA_VERSION=51.8_lustre
+EXTRA_VERSION=51.0_lustre
 RHBUILD=0
+LINUX26=1
 
-BASE_ARCHS=""
+BASE_ARCHS="i686"
 BIGMEM_ARCHS=""
 BOOT_ARCHS=""
 JENSEN_ARCHS=""
-SMP_ARCHS=""
+SMP_ARCHS="i686"
 UP_ARCHS=""
 SRC_ARCHS=""
index e69dc6d..bde2a9f 100644 (file)
@@ -2,3 +2,5 @@
 Makefile
 Makefile.in
 .*.cmd
+.*.flags
+.tmp_versions
index 0da12fc..779639a 100644 (file)
@@ -7,13 +7,7 @@
 # ldlm is built into ptlrpc
 #
 
-DEFS= 
-
-if LIBLUSTRE
-lib_LIBRARIES = libldlm.a
-libldlm_a_SOURCES = l_lock.c ldlm_lock.c ldlm_resource.c ldlm_lib.c \
-  ldlm_plain.c ldlm_extent.c ldlm_request.c ldlm_lockd.c ldlm_internal.h
-libldlm_a_CFLAGS = -fPIC
-endif
-
-include $(top_srcdir)/Rules
+MOSTLYCLEANFILES = *.o *.ko *.mod.c
+DIST_SOURCES = ldlm_extent.c ldlm_flock.c ldlm_internal.h ldlm_lib.c \
+       ldlm_lock.c ldlm_lockd.c ldlm_plain.c ldlm_request.c         \
+       ldlm_resource.c ldlm_test.c l_lock.c
index 02ad9f6..64cf6e4 100644 (file)
@@ -701,7 +701,6 @@ void target_start_recovery_timer(struct obd_device *obd, svc_handler_t handler)
         obd->obd_recovery_handler = handler;
         obd->obd_recovery_timer.function = target_recovery_expired;
         obd->obd_recovery_timer.data = (unsigned long)obd;
-        init_timer(&obd->obd_recovery_timer);
         spin_unlock_bh(&obd->obd_processing_task_lock);
 
         reset_recovery_timer(obd);
index f75d8f1..ecb4c21 100644 (file)
@@ -311,16 +311,11 @@ static void ldlm_failed_ast(struct ldlm_lock *lock, int rc,const char *ast_type)
         const struct ptlrpc_connection *conn = lock->l_export->exp_connection;
         char str[PTL_NALFMT_SIZE];
 
-        CERROR("%s AST failed (%d) for res "LPU64"/"LPU64
-               ", mode %s: evicting client %s@%s NID "LPX64" (%s)\n",
-               ast_type, rc,
-               lock->l_resource->lr_name.name[0],
-               lock->l_resource->lr_name.name[1],
-               ldlm_lockname[lock->l_granted_mode],
-               lock->l_export->exp_client_uuid.uuid,
-               conn->c_remote_uuid.uuid, conn->c_peer.peer_nid,
-               portals_nid2str(conn->c_peer.peer_ni->pni_number,
-                               conn->c_peer.peer_nid, str));
+        LDLM_ERROR(lock, "%s AST failed (%d): evicting client %s@%s NID "LPX64
+                   " (%s)", ast_type, rc, lock->l_export->exp_client_uuid.uuid,
+                   conn->c_remote_uuid.uuid, conn->c_peer.peer_nid,
+                   portals_nid2str(conn->c_peer.peer_ni->pni_number,
+                                   conn->c_peer.peer_nid, str));
         ptlrpc_fail_export(lock->l_export);
 }
 
@@ -342,14 +337,14 @@ static int ldlm_handle_ast_error(struct ldlm_lock *lock,
                 }
         } else if (rc) {
                 if (rc == -EINVAL)
-                        LDLM_DEBUG(lock, "client (nid "LPU64") returned %d "
-                                   "from %s AST - normal race",
+                        LDLM_DEBUG(lock, "client (nid "LPU64") returned %d"
+                                   " from %s AST - normal race",
                                    req->rq_peer.peer_nid,
                                    req->rq_repmsg->status, ast_type);
                 else
                         LDLM_ERROR(lock, "client (nid "LPU64") returned %d "
                                    "from %s AST", req->rq_peer.peer_nid,
-                                   (req->rq_repmsg != NULL)?
+                                   (req->rq_repmsg != NULL) ?
                                    req->rq_repmsg->status : 0, ast_type);
                 ldlm_lock_cancel(lock);
                 /* Server-side AST functions are called from ldlm_reprocess_all,
@@ -494,6 +489,7 @@ int ldlm_server_completion_ast(struct ldlm_lock *lock, int flags, void *data)
         rc = ptlrpc_queue_wait(req);
         if (rc != 0)
                 rc = ldlm_handle_ast_error(lock, req, rc, "completion");
+
         ptlrpc_req_finished(req);
 
         RETURN(rc);
@@ -528,7 +524,7 @@ int ldlm_server_glimpse_ast(struct ldlm_lock *lock, void *data)
         rc = ptlrpc_queue_wait(req);
         if (rc == -ELDLM_NO_LOCK_DATA)
                 LDLM_DEBUG(lock, "lost race - client has a lock but no inode");
-        else if (rc)
+        else if (rc != 0)
                 rc = ldlm_handle_ast_error(lock, req, rc, "glimpse");
         else
                 rc = res->lr_namespace->ns_lvbo->lvbo_update
index 438ebb4..b831bd8 100644 (file)
@@ -1,9 +1,8 @@
 ## Liblustre excecutables & libraries Makefile
-DEFS=
-
 SUBDIRS = . tests
 
-LL_CFLAGS = -I$(SYSIO)/include
+AM_CPPFLAGS = $(HAVE_EFENCE) -I$(SYSIO)/include -D_LARGEFILE64_SOURCE=1 $(LLCPPFLAGS) -I$(top_srcdir)/portals/unals
+AM_CFLAGS = $(LLCFLAGS)
 
 LIBS = $(LIBEFENCE)
 
@@ -25,18 +24,17 @@ SYSIO_LIBS =  $(SYSIO)/drivers/native/libsysio_native.a \
               $(SYSIO)/src/libsysio.a \
               $(SYSIO)/dev/stdfd/libsysio_stdfd.a
 
+if LIBLUSTRE
 lib_LIBRARIES = liblustre.a
 noinst_LIBRARIES = libllite.a
+endif
 
-libllite_a_SOURCES = llite_lib.c super.c namei.c rw.c file.c dir.c
-libllite_a_CFLAGS = $(LL_CFLAGS)
+libllite_a_SOURCES = llite_lib.c super.c namei.c rw.c file.c dir.c llite_lib.h
 
 # for make rpms -- need cleanup
 liblustre_a_SOURCES = llite_lib.c super.c namei.c rw.c file.c dir.c
-liblustre_a_CFLAGS = $(LL_CFLAGS)
 
 liblustre.a : $(LUSTRE_LIBS) $(PTL_LIBS) $(SYSIO_LIBS)
-       $(shell $(top_srcdir)/liblustre/genlib.sh $(SYSIO) $(AR) $(LINK))
-
-include $(top_srcdir)/Rules
+       $(srcdir)/genlib.sh $(SYSIO) $(AR) $(LINK) || ( rm -f $@; exit 1 )
 
+EXTRA_DIST = genlib.sh
index c236d73..c125b79 100644 (file)
@@ -1,7 +1,7 @@
 /* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*-
  * vim:expandtab:shiftwidth=8:tabstop=8:
  *
- * Lustre Light Super operations
+ * Lustre Light directory handling
  *
  *  Copyright (c) 2002, 2003 Cluster File Systems, Inc.
  *
index 9a5162d..03538bf 100644 (file)
@@ -1,7 +1,7 @@
 /* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*-
  * vim:expandtab:shiftwidth=8:tabstop=8:
  *
- * Lustre Light Super operations
+ * Lustre Light file operations
  *
  *  Copyright (c) 2002, 2003 Cluster File Systems, Inc.
  *
@@ -166,6 +166,8 @@ int llu_iop_open(struct pnode *pnode, int flags, mode_t mode)
         }
         fd->fd_flags &= ~O_LOV_DELAY_CREATE;
 
+        lli->lli_open_flags = flags;
+
  out_release:
         request = it->d.lustre.it_data;
         ptlrpc_req_finished(request);
index 1cb6a37..352e5e3 100644 (file)
@@ -1,7 +1,7 @@
 /* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*-
  * vim:expandtab:shiftwidth=8:tabstop=8:
  *
- * Lustre Light Super operations
+ * Lustre Light common routines
  *
  *  Copyright (c) 2002, 2003 Cluster File Systems, Inc.
  *
@@ -48,6 +48,8 @@
 
 #include "llite_lib.h"
 
+unsigned int portal_subsystem_debug = ~0 - (S_PORTALS | S_QSWNAL | S_SOCKNAL |
+                                            S_GMNAL | S_IBNAL);
 
 ptl_handle_ni_t         tcpnal_ni;
 struct task_struct     *current;
@@ -96,17 +98,20 @@ char *portals_nid2str(int nal, ptl_nid_t nid, char *str)
         case TCPNAL:
                 /* userspace NAL */
         case SOCKNAL:
-                sprintf(str, "%u:%d.%d.%d.%d", (__u32)(nid >> 32),
-                        HIPQUAD(nid));
+                snprintf(str, PTL_NALFMT_SIZE - 1, "%u:%u.%u.%u.%u",
+                         (__u32)(nid >> 32), HIPQUAD(nid));
                 break;
         case QSWNAL:
         case GMNAL:
         case IBNAL:
         case SCIMACNAL:
-                sprintf(str, "%u:%u", (__u32)(nid >> 32), (__u32)nid);
+                snprintf(str, PTL_NALFMT_SIZE - 1, "%u:%u",
+                         (__u32)(nid >> 32), (__u32)nid);
                 break;
         default:
-                return NULL;
+                snprintf(str, PTL_NALFMT_SIZE - 1, "?%d? %llx",
+                         nal, (long long)nid);
+                break;
         }
         return str;
 }
@@ -222,7 +227,6 @@ int lllib_init(char *dumpfile)
         if (init_obdclass() ||
             init_lib_portals() ||
             ptlrpc_init() ||
-            ldlm_init() ||
             mdc_init() ||
             lov_init() ||
             osc_init())
@@ -263,6 +267,7 @@ int liblustre_process_log(struct config_llog_instance *cfg, int allow_recov)
                 CERROR("Can't parse NID %s\n", g_zconf_mdsnid);
                 RETURN(-EINVAL);
         }
+
         nal = ptl_name2nal("tcp");
         if (nal <= 0) {
                 CERROR("Can't parse NAL tcp\n");
index 123bb5c..ac9ad91 100644 (file)
@@ -86,6 +86,7 @@ struct llu_inode_info {
          * was opened several times without close, we track an
          * open_count here */
         struct ll_file_data    *lli_file_data;
+        int                     lli_open_flags;
         int                     lli_open_count;
 
         /* stat FIXME not 64 bit clean */
index 3929e2c..73827ce 100644 (file)
@@ -1,7 +1,7 @@
 /* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*-
  * vim:expandtab:shiftwidth=8:tabstop=8:
  *
- * Lustre Light Super operations
+ * Lustre Light name resolution
  *
  *  Copyright (c) 2002, 2003 Cluster File Systems, Inc.
  *
index a737a14..c43bb06 100644 (file)
@@ -1,7 +1,7 @@
 /* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*-
  * vim:expandtab:shiftwidth=8:tabstop=8:
  *
- * Lustre Light Super operations
+ * Lustre Light block IO
  *
  *  Copyright (c) 2002, 2003 Cluster File Systems, Inc.
  *
@@ -94,7 +94,7 @@ static int llu_extent_lock_callback(struct ldlm_lock *lock,
                 struct lov_stripe_md *lsm;
                 __u32 stripe;
                 __u64 kms;
-                
+
                 /* This lock wasn't granted, don't try to evict pages */
                 if (lock->l_req_mode != lock->l_granted_mode)
                         RETURN(0);
@@ -123,7 +123,7 @@ iput:
         default:
                 LBUG();
         }
-        
+
         RETURN(0);
 }
 
index e995588..eb542ff 100644 (file)
@@ -1,3 +1,8 @@
-.deps
 Makefile
 Makefile.in
+.deps
+echo_test
+recovery_small
+replay_ost_single
+replay_single
+sanity
index 813c5e9..81e7058 100644 (file)
@@ -1,13 +1,13 @@
 ## Liblustre excecutables & libraries Makefile
-DEFS=
 
-LL_CFLAGS = -I$(SYSIO)/include
+AM_CPPFLAGS = -I$(SYSIO)/include -I/opt/lam/include $(LLCPPFLAGS) -I$(top_srcdir)/portals/unals
+AM_CFLAGS = $(LLCFLAGS)
+LIBS = $(LIBEFENCE) $(LIBREADLINE)
 
 LLIB_EXEC= ../liblustre.a -lpthread
 
+if LIBLUSTRE
 noinst_LIBRARIES = libtestcommon.a
-libtestcommon_a_SOURCES = test_common.c
-
 def_tests = echo_test sanity recovery_small replay_single replay_ost_single
 
 if MPITESTS
@@ -15,6 +15,9 @@ bin_PROGRAMS = $(def_tests) test_lock_cancel
 else
 bin_PROGRAMS = $(def_tests)
 endif
+endif # LIBLUSTRE
+
+libtestcommon_a_SOURCES = test_common.c test_common.h
 
 echo_test_SOURCES = echo_test.c  ../../utils/parser.c ../../utils/obd.c ../../utils/lustre_cfg.c
 echo_test_CFLAGS = $(LL_CFLAGS)
@@ -47,5 +50,4 @@ test_lock_cancel_CFLAGS = $(LL_CFLAGS) -I/opt/lam/include -L/opt/lam/lib
 test_lock_cancel_LDADD :=  $(LLIB_EXEC) -lmpi -llam
 endif
 
-include $(top_srcdir)/Rules
 
index 51bf60f..0f4a6fc 100644 (file)
@@ -19,6 +19,9 @@ struct ldlm_namespace;
 struct ldlm_res_id;
 struct obd_import;
 
+unsigned int portal_subsystem_debug = ~0 - (S_PORTALS | S_QSWNAL | S_SOCKNAL |
+                                            S_GMNAL | S_IBNAL);
+
 void *inter_module_get(char *arg)
 {
         if (!strcmp(arg, "tcpnal_ni"))
@@ -40,17 +43,20 @@ char *portals_nid2str(int nal, ptl_nid_t nid, char *str)
         case TCPNAL:
                 /* userspace NAL */
         case SOCKNAL:
-                sprintf(str, "%u:%d.%d.%d.%d", (__u32)(nid >> 32),
-                        HIPQUAD(nid));
+                snprintf(str, PTL_NALFMT_SIZE - 1, "%u:%u.%u.%u.%u",
+                         (__u32)(nid >> 32), HIPQUAD(nid));
                 break;
         case QSWNAL:
         case GMNAL:
         case IBNAL:
         case SCIMACNAL:
-                sprintf(str, "%u:%u", (__u32)(nid >> 32), (__u32)nid);
+                snprintf(str, PTL_NALFMT_SIZE - 1, "%u:%u",
+                         (__u32)(nid >> 32), (__u32)nid);
                 break;
         default:
-                return NULL;
+                snprintf(str, PTL_NALFMT_SIZE - 1, "?%d? %llx",
+                         nal, (long long)nid);
+                break;
         }
         return str;
 }
index 49c6100..d749c61 100644 (file)
@@ -3,7 +3,13 @@ config.log
 config.status
 configure
 Makefile
-Makefile.in
 .deps
 TAGS
+autoMakefile.in
+autoMakefile
+*.ko
+*.mod.c
 .*.cmd
+.*.flags
+.tmp_versions
+.depend
diff --git a/lustre/llite/Makefile.am b/lustre/llite/Makefile.am
deleted file mode 100644 (file)
index 96b59e6..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (C) 2001  Cluster File Systems, Inc.
-#
-# This code is issued under the GNU General Public License.
-# See the file COPYING in this distribution
-
-DEFS= 
-
-MODULE = llite
-modulefs_DATA = llite.o
-EXTRA_PROGRAMS = llite
-
-COMMON_SRC = dcache.c dir.c file.c llite_close.c llite_lib.c llite_nfs.c rw.c \
-             lproc_llite.c namei.c special.c symlink.c llite_internal.h
-
-if LINUX25
-llite_SOURCES = $(COMMON_SRC) rw26.c super25.c
-else
-llite_SOURCES = $(COMMON_SRC) rw24.c super.c
-endif
-
-include $(top_srcdir)/Rules
index 7b463ca..34516ca 100644 (file)
@@ -90,7 +90,7 @@ static int ll_dir_readpage(struct file *file, struct page *page)
 }
 
 struct address_space_operations ll_dir_aops = {
-        readpage: ll_dir_readpage,
+        .readpage  = ll_dir_readpage,
 };
 
 /*
@@ -480,7 +480,7 @@ static int ll_dir_ioctl(struct inode *inode, struct file *file,
 
                 lmmsize = body->eadatasize;
                 if (lmmsize == 0)
-                        GOTO(out_get, rc = -ENODATA);                        
+                        GOTO(out_get, rc = -ENODATA);
 
                 lmm = lustre_msg_buf(request->rq_repmsg, 1, lmmsize);
                 LASSERT(lmm != NULL);
@@ -551,17 +551,17 @@ static int ll_dir_ioctl(struct inode *inode, struct file *file,
                 int rc, len=0;
                 struct client_obd *cli;
                 struct obd_device *obd;
-                                                                                                                             
+
                 rc = obd_ioctl_getdata(&buf, &len, (void *)arg);
                 if (rc)
                         RETURN(rc);
                 data = (void *)buf;
 
                 obd = class_name2obd(data->ioc_inlbuf1);
-                                                                                                                             
+
                 if (!obd )
                         GOTO(out_ping, rc = -ENODEV);
-                                                                                                                             
+
                 if (!obd->obd_attached) {
                         CERROR("Device %d not attached\n", obd->obd_minor);
                         GOTO(out_ping, rc = -ENODEV);
@@ -580,7 +580,7 @@ static int ll_dir_ioctl(struct inode *inode, struct file *file,
 
                 rc = ptlrpc_queue_wait(req);
 
-                ptlrpc_req_finished(req);                                                                                                 
+                ptlrpc_req_finished(req);
         out_ping:
                 obd_ioctl_freedata(buf, len);
                 return rc;
@@ -591,7 +591,7 @@ static int ll_dir_ioctl(struct inode *inode, struct file *file,
                 int rc, len = 0;
                 char *bufs[2], *str;
                 int lens[2], size;
-                
+
                 rc = obd_ioctl_getdata(&buf, &len, (void *)arg);
                 if (rc)
                         RETURN(rc);
@@ -601,7 +601,7 @@ static int ll_dir_ioctl(struct inode *inode, struct file *file,
                         obd_ioctl_freedata(buf, len);
                         RETURN(-EINVAL);
                 }
-                
+
                 lens[0] = data->ioc_inllen1;
                 bufs[0] = data->ioc_inlbuf1;
                 if (data->ioc_inllen2) {
@@ -612,22 +612,22 @@ static int ll_dir_ioctl(struct inode *inode, struct file *file,
                         bufs[1] = NULL;
                 }
                 size = data->ioc_plen1;
-                req = ptlrpc_prep_req(sbi2mdc(sbi)->cl_import, LLOG_CATINFO, 
+                req = ptlrpc_prep_req(sbi2mdc(sbi)->cl_import, LLOG_CATINFO,
                                       2, lens, bufs);
                 if (!req)
                         GOTO(out_catinfo, rc = -ENOMEM);
                 req->rq_replen = lustre_msg_size(1, &size);
-               
+
                 rc = ptlrpc_queue_wait(req);
                 str = lustre_msg_string(req->rq_repmsg, 0, data->ioc_plen1);
                 if (!rc)
-                        rc = copy_to_user(data->ioc_pbuf1, str, 
+                        rc = copy_to_user(data->ioc_pbuf1, str,
                                           data->ioc_plen1);
                 ptlrpc_req_finished(req);
         out_catinfo:
                 obd_ioctl_freedata(buf, len);
                 RETURN(rc);
-        }                  
+        }
         default:
                 return obd_iocontrol(cmd, sbi->ll_osc_exp,0,NULL,(void *)arg);
         }
@@ -644,10 +644,10 @@ int ll_dir_release(struct inode *inode, struct file *file)
 }
 
 struct file_operations ll_dir_operations = {
-        open: ll_dir_open,
-        release: ll_dir_release,
-        read: generic_read_dir,
-        readdir: ll_readdir,
-        ioctl: ll_dir_ioctl
+        .open     = ll_dir_open,
+        .release  = ll_dir_release,
+        .read     = generic_read_dir,
+        .readdir  = ll_readdir,
+        .ioctl    = ll_dir_ioctl
 };
 
index 8da3efb..dc982c2 100644 (file)
@@ -381,34 +381,22 @@ void ll_pgcache_remove_extent(struct inode *inode, struct lov_stripe_md *lsm,
                          tmpex.l_extent.start, lock->l_policy_data.l_extent.end,
                          start, i, end);
 
-                ll_pgcache_lock(inode->i_mapping);
-                if (list_empty(&inode->i_mapping->dirty_pages) &&
-                    list_empty(&inode->i_mapping->clean_pages) &&
-                    list_empty(&inode->i_mapping->locked_pages)) {
+                if (!mapping_has_pages(inode->i_mapping)) {
                         CDEBUG(D_INODE|D_PAGE, "nothing left\n");
-                        ll_pgcache_unlock(inode->i_mapping);
                         break;
                 }
-                ll_pgcache_unlock(inode->i_mapping);
 
                 conditional_schedule();
 
                 page = find_get_page(inode->i_mapping, i);
                 if (page == NULL)
                         continue;
-                LL_CDEBUG_PAGE(D_PAGE, page, "lock page off %llu ext "LPU64"\n",
-                               (long long)i << PAGE_SHIFT,tmpex.l_extent.start);
+                LL_CDEBUG_PAGE(D_PAGE, page, "lock page idx %lu ext "LPU64"\n",
+                               i, tmpex.l_extent.start);
                 lock_page(page);
 
                 /* page->mapping to check with racing against teardown */
-                if (page->mapping && PageDirty(page) && !discard) {
-                        ClearPageDirty(page);
-                        LL_CDEBUG_PAGE(D_PAGE, page, "found dirty\n");
-                        ll_pgcache_lock(inode->i_mapping);
-                        list_del(&page->list);
-                        list_add(&page->list, &inode->i_mapping->locked_pages);
-                        ll_pgcache_unlock(inode->i_mapping);
-
+                if (!discard && clear_page_dirty_for_io(page)) {
                         rc = ll_call_writepage(inode, page);
                         if (rc != 0)
                                 CERROR("writepage of page %p failed: %d\n",
@@ -489,6 +477,7 @@ static int ll_extent_lock_callback(struct ldlm_lock *lock,
                 down(&inode->i_sem);
                 kms = ldlm_extent_shift_kms(lock,
                                             lsm->lsm_oinfo[stripe].loi_kms);
+               
                 if (lsm->lsm_oinfo[stripe].loi_kms != kms)
                         LDLM_DEBUG(lock, "updating kms from "LPU64" to "LPU64,
                                    lsm->lsm_oinfo[stripe].loi_kms, kms);
@@ -813,7 +802,7 @@ static ssize_t ll_file_write(struct file *file, const char *buf, size_t count,
         if (*ppos + count > maxbytes)
                 count = maxbytes - *ppos;
 
-        CDEBUG(D_PAGE, "Writing inode %lu, "LPSZ" bytes, offset %Lu\n",
+        CDEBUG(D_INFO, "Writing inode %lu, "LPSZ" bytes, offset %Lu\n",
                inode->i_ino, count, *ppos);
 
         /* generic_file_write handles O_APPEND after getting i_sem */
@@ -1349,25 +1338,28 @@ int ll_getattr(struct vfsmount *mnt, struct dentry *de,
 #endif
 
 struct file_operations ll_file_operations = {
-        read:           ll_file_read,
-        write:          ll_file_write,
-        ioctl:          ll_file_ioctl,
-        open:           ll_file_open,
-        release:        ll_file_release,
-        mmap:           generic_file_mmap,
-        llseek:         ll_file_seek,
-        fsync:          ll_fsync,
-        //lock:           ll_file_flock
+        .read           = ll_file_read,
+        .write          = ll_file_write,
+        .ioctl          = ll_file_ioctl,
+        .open           = ll_file_open,
+        .release        = ll_file_release,
+        .mmap           = generic_file_mmap,
+        .llseek         = ll_file_seek,
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0))
+        .sendfile       = generic_file_sendfile,
+#endif
+        .fsync          = ll_fsync,
+        //.lock           ll_file_flock
 };
 
 struct inode_operations ll_file_inode_operations = {
-        setattr_raw:    ll_setattr_raw,
-        setattr:        ll_setattr,
-        truncate:       ll_truncate,
+        .setattr_raw    = ll_setattr_raw,
+        .setattr        = ll_setattr,
+        .truncate       = ll_truncate,
 #if (LINUX_VERSION_CODE > KERNEL_VERSION(2,5,0))
-        getattr_it:     ll_getattr,
+        .getattr_it     = ll_getattr,
 #else
-        revalidate_it:  ll_inode_revalidate_it,
+        .revalidate_it  = ll_inode_revalidate_it,
 #endif
 };
 
index 45a6053..a7a275c 100644 (file)
@@ -186,7 +186,6 @@ void ll_lookup_finish_locks(struct lookup_intent *it, struct dentry *dentry);
 
 /* llite/llite_lib.c */
 
-extern struct super_operations ll_super_operations;
 extern struct super_operations lustre_super_operations;
 
 char *ll_read_opt(const char *opt, char *data);
@@ -196,7 +195,6 @@ void ll_lli_init(struct ll_inode_info *lli);
 int ll_fill_super(struct super_block *sb, void *data, int silent);
 int lustre_fill_super(struct super_block *sb, void *data, int silent);
 void lustre_put_super(struct super_block *sb);
-void ll_put_super(struct super_block *sb);
 struct inode *ll_inode_from_lock(struct ldlm_lock *lock);
 void ll_clear_inode(struct inode *inode);
 int ll_attr2inode(struct inode *inode, struct iattr *attr, int trunc);
index 5812e16..2000356 100644 (file)
@@ -38,7 +38,6 @@ kmem_cache_t *ll_file_data_slab;
 
 extern struct address_space_operations ll_aops;
 extern struct address_space_operations ll_dir_aops;
-extern struct super_operations ll_super_operations;
 
 #ifndef log2
 #define log2(n) ffz(~(n))
@@ -193,12 +192,14 @@ int lustre_common_fill_super(struct super_block *sb, char *mdc, char *osc)
                 GOTO(out_root, err);
         }
 
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0))
-#warning "Please fix this"
-#else
+        /* making vm readahead 0 for 2.4.x. In the case of 2.6.x,
+           backing dev info assigned to inode mapping is used for
+           determining maximal readahead. */
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0))
         /* bug 2805 - set VM readahead to zero */
         vm_max_readahead = vm_min_readahead = 0;
 #endif
+
         sb->s_root = d_alloc_root(root);
         RETURN(err);
 
@@ -362,19 +363,6 @@ out:
         RETURN(err);
 } /* ll_read_super */
 
-void ll_put_super(struct super_block *sb)
-{
-        ENTRY;
-
-        CDEBUG(D_VFSTRACE, "VFS Op: sb %p\n", sb);
-
-        lustre_common_put_super(sb);
-
-        lustre_free_sbi(sb);
-
-        EXIT;
-} /* ll_put_super */
-
 int lustre_process_log(struct lustre_mount_data *lmd, char * profile,
                        struct config_llog_instance *cfg, int allow_recov)
 {
@@ -541,7 +529,7 @@ int lustre_fill_super(struct super_block *sb, void *data, int silent)
                 struct config_llog_instance cfg;
                 int len;
 
-                if (!lmd->lmd_mds) {
+                if (lmd->lmd_mds[0] == '\0') {
                         CERROR("no mds name\n");
                         GOTO(out_free, err = -EINVAL);
                 }
@@ -883,10 +871,10 @@ int ll_setattr_raw(struct inode *inode, struct iattr *attr)
                                     (rc=ll_permission(inode,MAY_WRITE,NULL))!=0)
                                         RETURN(rc);
                         } else {
-                               /* from inode_change_ok() */
-                               if (current->fsuid != inode->i_uid &&
-                                   !capable(CAP_FOWNER))
-                                       RETURN(-EPERM);
+                                /* from inode_change_ok() */
+                                if (current->fsuid != inode->i_uid &&
+                                    !capable(CAP_FOWNER))
+                                        RETURN(-EPERM);
                         }
                 }
 
@@ -1116,6 +1104,13 @@ void ll_update_inode(struct inode *inode, struct mds_body *body,
                 set_bit(LLI_F_HAVE_MDS_SIZE_LOCK, &lli->lli_flags);
 }
 
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0))
+static struct backing_dev_info ll_backing_dev_info = {
+        .ra_pages       = 0,    /* No readahead */
+        .memory_backed  = 0,    /* Does contribute to dirty memory */
+};
+#endif
+
 void ll_read_inode2(struct inode *inode, void *opaque)
 {
         struct lustre_md *md = opaque;
@@ -1155,14 +1150,18 @@ void ll_read_inode2(struct inode *inode, void *opaque)
                 EXIT;
         } else {
                 inode->i_op = &ll_special_inode_operations;
+
 #if (LINUX_VERSION_CODE > KERNEL_VERSION(2,5,0))
-#warning "need to fix this for 2.6 also"
                 init_special_inode(inode, inode->i_mode,
                                    kdev_t_to_nr(inode->i_rdev));
+
+                /* initializing backing dev info. */
+                inode->i_mapping->backing_dev_info = &ll_backing_dev_info;
 #else
                 init_special_inode(inode, inode->i_mode, inode->i_rdev);
-
+#endif
                 lli->ll_save_ifop = inode->i_fop;
+
                 if (S_ISCHR(inode->i_mode))
                         inode->i_fop = &ll_special_chr_inode_fops;
                 else if (S_ISBLK(inode->i_mode))
@@ -1171,7 +1170,6 @@ void ll_read_inode2(struct inode *inode, void *opaque)
                         inode->i_fop = &ll_special_fifo_inode_fops;
                 else if (S_ISSOCK(inode->i_mode))
                         inode->i_fop = &ll_special_sock_inode_fops;
-#endif
                 EXIT;
         }
 }
index f3b7fc3..93638fd 100644 (file)
@@ -81,8 +81,8 @@ extern struct dentry_operations ll_d_ops;
 
 static struct dentry *ll_iget_for_nfs(struct super_block *sb, unsigned long ino,
                                       __u32 generation, umode_t mode)
-{                                      
-        struct inode *inode;      
+{
+        struct inode *inode;
         struct dentry *result;
         struct list_head *lp;
 
index 8ad20e6..771a854 100644 (file)
@@ -194,6 +194,7 @@ int ll_mdc_cancel_unused(struct lustre_handle *conn, struct inode *inode,
                 { .name = {inode->i_ino, inode->i_generation} };
         struct obd_device *obddev = class_conn2obd(conn);
         ENTRY;
+        
         RETURN(ldlm_cli_cancel_unused(obddev->obd_namespace, &res_id, flags,
                                       opaque));
 }
@@ -776,23 +777,23 @@ static int ll_rename_raw(struct nameidata *oldnd, struct nameidata *newnd)
 }
 
 struct inode_operations ll_dir_inode_operations = {
-        link_raw:           ll_link_raw,
-        unlink_raw:         ll_unlink_raw,
-        symlink_raw:        ll_symlink_raw,
-        mkdir_raw:          ll_mkdir_raw,
-        rmdir_raw:          ll_rmdir_raw,
-        mknod_raw:          ll_mknod_raw,
-        mknod:              ll_mknod,
-        rename_raw:         ll_rename_raw,
-        setattr:            ll_setattr,
-        setattr_raw:        ll_setattr_raw,
+        .link_raw           = ll_link_raw,
+        .unlink_raw         = ll_unlink_raw,
+        .symlink_raw        = ll_symlink_raw,
+        .mkdir_raw          = ll_mkdir_raw,
+        .rmdir_raw          = ll_rmdir_raw,
+        .mknod_raw          = ll_mknod_raw,
+        .mknod              = ll_mknod,
+        .rename_raw         = ll_rename_raw,
+        .setattr            = ll_setattr,
+        .setattr_raw        = ll_setattr_raw,
 #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0))
-        create_it:          ll_create_it,
-        lookup_it:          ll_lookup_it,
-        revalidate_it:      ll_inode_revalidate_it,
+        .create_it          = ll_create_it,
+        .lookup_it          = ll_lookup_it,
+        .revalidate_it      = ll_inode_revalidate_it,
 #else
-        lookup:             ll_lookup_nd,
-        create:             ll_create_nd,
-        getattr_it:         ll_getattr,
+        .lookup             = ll_lookup_nd,
+        .create             = ll_create_nd,
+        .getattr_it         = ll_getattr,
 #endif
 };
index 71e194d..8a3099f 100644 (file)
@@ -177,12 +177,12 @@ static int ll_direct_IO_24(int rw,
 }
 
 struct address_space_operations ll_aops = {
-        readpage: ll_readpage,
-        direct_IO: ll_direct_IO_24,
-        writepage: ll_writepage_24,
-        prepare_write: ll_prepare_write,
-        commit_write: ll_commit_write,
-        removepage: ll_removepage,
-        sync_page: NULL,
-        bmap: NULL
+        .readpage       = ll_readpage,
+        .direct_IO      = ll_direct_IO_24,
+        .writepage      = ll_writepage_24,
+        .prepare_write  = ll_prepare_write,
+        .commit_write   = ll_commit_write,
+        .removepage     = ll_removepage,
+        .sync_page      = NULL,
+        .bmap           = NULL
 };
index d048848..b9193e8 100644 (file)
@@ -95,15 +95,15 @@ out:
 }
 
 struct address_space_operations ll_aops = {
-        readpage: ll_readpage,
-//        readpages: ll_readpages,
-//        direct_IO: ll_direct_IO_26,
-        writepage: ll_writepage_26,
-        writepages: generic_writepages,
-        set_page_dirty: __set_page_dirty_nobuffers,
-        sync_page: NULL,
-        prepare_write: ll_prepare_write,
-        commit_write: ll_commit_write,
-        removepage: ll_removepage,
-        bmap: NULL
+        .readpage       = ll_readpage,
+//        .readpages      = ll_readpages,
+//        .direct_IO      = ll_direct_IO_26,
+        .writepage      = ll_writepage_26,
+        .writepages     = generic_writepages,
+        .set_page_dirty = __set_page_dirty_nobuffers,
+        .sync_page      = NULL,
+        .prepare_write  = ll_prepare_write,
+        .commit_write   = ll_commit_write,
+        .removepage     = ll_removepage,
+        .bmap           = NULL
 };
index 4a63218..5bf9ec7 100644 (file)
@@ -191,6 +191,7 @@ static int ll_special_ioctl(struct inode *inode, struct file *filp,
                 struct file_operations *sfops = filp->f_op;
 
                 rc = (*pfop)->ioctl(inode, filp, cmd, arg);
+
                 /* sometimes, file_operations will be changed in ioctl */
                 save_fops(filp, inode, sfops);
         }
@@ -319,61 +320,62 @@ static int ll_special_file_release(struct inode *inode, struct file *filp)
 }
 
 struct inode_operations ll_special_inode_operations = {
-        setattr_raw:    ll_setattr_raw,
-        setattr:        ll_setattr,
+        .setattr_raw    = ll_setattr_raw,
+        .setattr        = ll_setattr,
 #if (LINUX_VERSION_CODE > KERNEL_VERSION(2,5,0))
-        getattr_it:     ll_getattr,
+        .getattr_it     = ll_getattr,
 #else
-        revalidate_it:  ll_inode_revalidate_it,
+        .revalidate_it  = ll_inode_revalidate_it,
 #endif
 };
 
 struct file_operations ll_special_chr_inode_fops = {
-        owner:          THIS_MODULE,
-        open:           ll_special_open,
+        .owner          = THIS_MODULE,
+        .open           = ll_special_open,
 };
 
 struct file_operations ll_special_blk_inode_fops = {
-        owner:          THIS_MODULE,
-        read:           ll_special_read,
-        write:          ll_special_write,
-        ioctl:          ll_special_ioctl,
-        open:           ll_special_open,
-        release:        ll_special_release,
-        mmap:           ll_special_mmap,
-        llseek:         ll_special_seek,
-        fsync:          ll_special_fsync,
+        .owner          = THIS_MODULE,
+        .read           = ll_special_read,
+        .write          = ll_special_write,
+        .ioctl          = ll_special_ioctl,
+        .open           = ll_special_open,
+        .release        = ll_special_release,
+        .mmap           = ll_special_mmap,
+        .llseek         = ll_special_seek,
+        .fsync          = ll_special_fsync,
 };
 
 struct file_operations ll_special_fifo_inode_fops = {
-        owner:          THIS_MODULE,
-        open:           ll_special_open,
+        .owner          = THIS_MODULE,
+        .open           = ll_special_open,
 };
 
 struct file_operations ll_special_sock_inode_fops = {
-        owner:          THIS_MODULE,
-        open:           ll_special_open
+        .owner          = THIS_MODULE,
+        .open           = ll_special_open
 };
 
 struct file_operations ll_special_chr_file_fops = {
-        owner:          THIS_MODULE,
-       llseek:         ll_special_file_seek,
-       read:           ll_special_file_read,
-       write:          ll_special_file_write,
-       poll:           ll_special_file_poll,
-       ioctl:          ll_special_file_ioctl,
-       open:           ll_special_file_open,
-       release:        ll_special_file_release,
-       fasync:         ll_special_file_fasync,
+        .owner          = THIS_MODULE,
+        .llseek         = ll_special_file_seek,
+        .read           = ll_special_file_read,
+        .write          = ll_special_file_write,
+        .poll           = ll_special_file_poll,
+        .ioctl          = ll_special_file_ioctl,
+        .open           = ll_special_file_open,
+        .release        = ll_special_file_release,
+        .fasync         = ll_special_file_fasync,
 };
 
 struct file_operations ll_special_fifo_file_fops = {
-        owner:          THIS_MODULE,
-       llseek:         ll_special_file_seek,
-       read:           ll_special_file_read,
-       write:          ll_special_file_write,
-       poll:           ll_special_file_poll,
-       ioctl:          ll_special_file_ioctl,
-       open:           ll_special_file_open,
-       release:        ll_special_file_release,
+        .owner          = THIS_MODULE,
+        .llseek         = ll_special_file_seek,
+        .read           = ll_special_file_read,
+        .write          = ll_special_file_write,
+        .poll           = ll_special_file_poll,
+        .ioctl          = ll_special_file_ioctl,
+        .open           = ll_special_file_open,
+        .release        = ll_special_file_release,
 };
+
index e248be7..133407a 100644 (file)
@@ -60,44 +60,31 @@ static struct super_block *lustre_read_super(struct super_block *sb,
         RETURN(sb);
 }
 
-/* exported operations */
-struct super_operations ll_super_operations =
-{
-        read_inode2: ll_read_inode2,
-        clear_inode: ll_clear_inode,
-        //        delete_inode: ll_delete_inode,
-        put_super: ll_put_super,
-        statfs: ll_statfs,
-        umount_begin: ll_umount_begin,
-        fh_to_dentry: ll_fh_to_dentry,
-        dentry_to_fh: ll_dentry_to_fh
-};
-
 static struct file_system_type lustre_lite_fs_type = {
-        name:           "lustre_lite",
-        fs_flags:       FS_NFSEXP_FSID,
-        read_super:     ll_read_super,
-        owner:          THIS_MODULE,
+        .owner          = THIS_MODULE,
+        .name           = "lustre_lite",
+        .fs_flags       = FS_NFSEXP_FSID,
+        .read_super     = ll_read_super,
 };
 
 /* exported operations */
 struct super_operations lustre_super_operations =
 {
-        read_inode2: ll_read_inode2,
-        clear_inode: ll_clear_inode,
-        //        delete_inode: ll_delete_inode,
-        put_super: lustre_put_super,
-        statfs: ll_statfs,
-        umount_begin: ll_umount_begin,
-        fh_to_dentry: ll_fh_to_dentry,
-        dentry_to_fh: ll_dentry_to_fh
+        .read_inode2    = ll_read_inode2,
+        .clear_inode    = ll_clear_inode,
+//        .delete_inode   = ll_delete_inode,
+        .put_super      = lustre_put_super,
+        .statfs         = ll_statfs,
+        .umount_begin   = ll_umount_begin,
+        .fh_to_dentry   = ll_fh_to_dentry,
+        .dentry_to_fh   = ll_dentry_to_fh
 };
 
 static struct file_system_type lustre_fs_type = {
-        name:           "lustre",
-        fs_flags:       FS_NFSEXP_FSID,
-        read_super:     lustre_read_super,
-        owner:          THIS_MODULE,
+        .owner          = THIS_MODULE,
+        .name           = "lustre",
+        .fs_flags       = FS_NFSEXP_FSID,
+        .read_super     = lustre_read_super,
 };
 
 static int __init init_lustre_lite(void)
index 526776b..1f5425e 100644 (file)
@@ -100,27 +100,29 @@ void ll_destroy_inodecache(void)
 /* exported operations */
 struct super_operations lustre_super_operations =
 {
-        alloc_inode: ll_alloc_inode,
-        destroy_inode: ll_destroy_inode,
-        clear_inode: ll_clear_inode,
-        put_super: ll_put_super,
-        statfs: ll_statfs,
-        umount_begin: ll_umount_begin
+        .alloc_inode   = ll_alloc_inode,
+        .destroy_inode = ll_destroy_inode,
+        .clear_inode   = ll_clear_inode,
+        .put_super     = lustre_put_super,
+        .statfs        = ll_statfs,
+        .umount_begin  = ll_umount_begin
 };
 
 
 struct file_system_type lustre_lite_fs_type = {
-        .owner  = THIS_MODULE,
-        .name =   "lustre_lite",
-        .get_sb = ll_get_sb,
-        .kill_sb = kill_anon_super,
+        .owner        = THIS_MODULE,
+        .name         = "lustre_lite",
+        .get_sb       = ll_get_sb,
+        .kill_sb      = kill_anon_super,
+        .fs_flags     = FS_BINARY_MOUNTDATA,
 };
 
 struct file_system_type lustre_fs_type = {
-        .owner  = THIS_MODULE,
-        .name =   "lustre",
-        .get_sb = lustre_get_sb,
-        .kill_sb = kill_anon_super,
+        .owner        = THIS_MODULE,
+        .name         = "lustre",
+        .get_sb       = lustre_get_sb,
+        .kill_sb      = kill_anon_super,
+        .fs_flags     = FS_BINARY_MOUNTDATA,
 };
 
 static int __init init_lustre_lite(void)
index 3056bf5..e401266 100644 (file)
@@ -148,13 +148,13 @@ static int ll_follow_link(struct dentry *dentry, struct nameidata *nd)
 }
 
 struct inode_operations ll_fast_symlink_inode_operations = {
-        readlink:       ll_readlink,
-        setattr:        ll_setattr,
-        setattr_raw:    ll_setattr_raw,
-        follow_link:    ll_follow_link,
+        .readlink       = ll_readlink,
+        .setattr        = ll_setattr,
+        .setattr_raw    = ll_setattr_raw,
+        .follow_link    = ll_follow_link,
 #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0))
-        revalidate_it:  ll_inode_revalidate_it
+        .revalidate_it  = ll_inode_revalidate_it
 #else 
-        getattr_it:     ll_getattr
+        .getattr_it     = ll_getattr
 #endif
 };
index e69dc6d..5ed596b 100644 (file)
@@ -1,4 +1,10 @@
 .deps
 Makefile
-Makefile.in
 .*.cmd
+autoMakefile.in
+autoMakefile
+*.ko
+*.mod.c
+.*.flags
+.tmp_versions
+.depend
diff --git a/lustre/lov/Makefile.am b/lustre/lov/Makefile.am
deleted file mode 100644 (file)
index 468d064..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-# Copyright (C) 2002 Cluster File Systems, Inc.
-#
-# This code is issued under the GNU General Public License.
-# See the file COPYING in this distribution
-
-DEFS=
-
-if LIBLUSTRE
-noinst_LIBRARIES = liblov.a
-liblov_a_SOURCES = lov_log.c lov_obd.c lov_pack.c lov_internal.h
-liblov_a_CFLAGS = -fPIC
-else
-MODULE = lov
-modulefs_DATA = lov.o
-EXTRA_PROGRAMS = lov
-lov_SOURCES = lov_log.c lov_obd.c lov_pack.c lproc_lov.c lov_internal.h
-endif
-
-include $(top_srcdir)/Rules
index cd1ca69..82018b1 100644 (file)
@@ -147,7 +147,7 @@ static int lov_connect(struct lustre_handle *conn, struct obd_device *obd,
 
                 LASSERT( tgt_uuid != NULL);
 
-                tgt_obd = class_find_client_obd(tgt_uuid, LUSTRE_OSC_NAME, 
+                tgt_obd = class_find_client_obd(tgt_uuid, LUSTRE_OSC_NAME,
                                                 &obd->obd_uuid);
 
                 if (!tgt_obd) {
@@ -470,7 +470,6 @@ static obd_size lov_stripe_size(struct lov_stripe_md *lsm, obd_size ost_size,
 
         /* do_div(a, b) returns a % b, and a = a / b */
         stripe_size = do_div(ost_size, ssize);
-
         if (stripe_size)
                 lov_size = ost_size * swidth + stripeno * ssize + stripe_size;
         else
@@ -544,7 +543,7 @@ static int lov_clear_orphans(struct obd_export *export, struct obdo *src_oa,
                 struct lov_stripe_md *obj_mdp = &obj_md;
                 int err;
 
-                /* if called for a specific target, we don't 
+                /* if called for a specific target, we don't
                    care if it is not active. */
                 if (lov->tgts[i].active == 0 && ost_uuid == NULL) {
                         CDEBUG(D_HA, "lov idx %d inactive\n", i);
@@ -983,7 +982,7 @@ static int lov_getattr(struct obd_export *exp, struct obdo *oa,
         RETURN(rc);
 }
 
-static int lov_getattr_interpret(struct ptlrpc_request_set *rqset, void *data, 
+static int lov_getattr_interpret(struct ptlrpc_request_set *rqset, void *data,
                                  int rc)
 {
         struct lov_getattr_async_args *aa = data;
@@ -1571,8 +1570,8 @@ static int lov_brw(int cmd, struct obd_export *exp, struct obdo *src_oa,
                                 memcpy(tmp_oa, src_oa, sizeof(*tmp_oa));
 
                         tmp_oa->o_id = si->lsm.lsm_object_id;
-                        rc = obd_brw(cmd, lov->tgts[si->ost_idx].ltd_exp, 
-                                     tmp_oa, &si->lsm, si->bufct, 
+                        rc = obd_brw(cmd, lov->tgts[si->ost_idx].ltd_exp,
+                                     tmp_oa, &si->lsm, si->bufct,
                                      &ioarr[shift], oti);
                         if (rc)
                                 GOTO(out_ioarr, rc);
@@ -1781,7 +1780,7 @@ static int lov_ap_refresh_count(void *data, int cmd)
         if (IS_ERR(lap))
                 return -EINVAL;
 
-        return lap->lap_caller_ops->ap_refresh_count(lap->lap_caller_data, 
+        return lap->lap_caller_ops->ap_refresh_count(lap->lap_caller_data,
                                                      cmd);
 }
 static void lov_ap_fill_obdo(void *data, int cmd, struct obdo *oa)
@@ -1817,7 +1816,7 @@ static struct obd_async_page_ops lov_async_page_ops = {
 
 int lov_prep_async_page(struct obd_export *exp, struct lov_stripe_md *lsm,
                            struct lov_oinfo *loi, struct page *page,
-                           obd_off offset, struct obd_async_page_ops *ops, 
+                           obd_off offset, struct obd_async_page_ops *ops,
                            void *data, void **res)
 {
         struct lov_obd *lov = &exp->exp_obd->u.lov;
@@ -1842,7 +1841,7 @@ int lov_prep_async_page(struct obd_export *exp, struct lov_stripe_md *lsm,
         lov_stripe_offset(lsm, offset, lap->lap_stripe, &lap->lap_sub_offset);
         loi = &lsm->lsm_oinfo[lap->lap_stripe];
 
-        /* so the callback doesn't need the lsm */ 
+        /* so the callback doesn't need the lsm */
         lap->lap_loi_id = loi->loi_id;
 
         rc = obd_prep_async_page(lov->tgts[loi->loi_ost_idx].ltd_exp,
@@ -1954,7 +1953,7 @@ static int lov_trigger_group_io(struct obd_export *exp,
 
         for (i = 0, loi = lsm->lsm_oinfo; i < lsm->lsm_stripe_count;
              i++, loi++) {
-                err = obd_trigger_group_io(lov->tgts[loi->loi_ost_idx].ltd_exp, 
+                err = obd_trigger_group_io(lov->tgts[loi->loi_ost_idx].ltd_exp,
                                            lsm, loi, oig);
                 if (rc == 0 && err != 0)
                         rc = err;
@@ -1980,10 +1979,10 @@ static int lov_teardown_async_page(struct obd_export *exp,
                 RETURN(PTR_ERR(lap));
 
         loi = &lsm->lsm_oinfo[lap->lap_stripe];
-        rc = obd_teardown_async_page(lov->tgts[loi->loi_ost_idx].ltd_exp, 
+        rc = obd_teardown_async_page(lov->tgts[loi->loi_ost_idx].ltd_exp,
                                      lsm, loi, lap->lap_sub_cookie);
         if (rc) {
-                CERROR("unable to teardown sub cookie %p: %d\n", 
+                CERROR("unable to teardown sub cookie %p: %d\n",
                        lap->lap_sub_cookie, rc);
                 RETURN(rc);
         }
@@ -2556,7 +2555,7 @@ static int lov_get_info(struct obd_export *exp, __u32 keylen,
                 for (i = 0, loi = data->lsm->lsm_oinfo;
                      i < data->lsm->lsm_stripe_count;
                      i++, loi++) {
-                        if (lov->tgts[loi->loi_ost_idx].ltd_exp == 
+                        if (lov->tgts[loi->loi_ost_idx].ltd_exp ==
                             data->lock->l_conn_export) {
                                 *stripe = i;
                                 RETURN(0);
@@ -2592,7 +2591,7 @@ static int lov_get_info(struct obd_export *exp, __u32 keylen,
         } else if (keylen >= strlen("lovdesc") && strcmp(key, "lovdesc") == 0) {
                 struct lov_desc *desc_ret = val;
                 *desc_ret = lov->desc;
-                
+
                 RETURN(0);
         }
 
@@ -2639,7 +2638,7 @@ static int lov_set_info(struct obd_export *exp, obd_count keylen,
         for (i = 0; i < lov->desc.ld_tgt_count; i++) {
                 int er;
 
-                if (val && !obd_uuid_equals(val, &lov->tgts[i].uuid)) 
+                if (val && !obd_uuid_equals(val, &lov->tgts[i].uuid))
                         continue;
 
                 if (!val && !lov->tgts[i].active)
@@ -2678,6 +2677,7 @@ __u64 lov_merge_size(struct lov_stripe_md *lsm, int kms)
                 if (lov_size > size)
                         size = lov_size;
         }
+
         return size;
 }
 EXPORT_SYMBOL(lov_merge_size);
@@ -2823,40 +2823,40 @@ void lov_increase_kms(struct obd_export *exp, struct lov_stripe_md *lsm,
 EXPORT_SYMBOL(lov_increase_kms);
 
 struct obd_ops lov_obd_ops = {
-        o_owner:       THIS_MODULE,
-        o_setup:       lov_setup,
-        o_cleanup:     lov_cleanup,
-        o_connect:     lov_connect,
-        o_disconnect:  lov_disconnect,
-        o_statfs:      lov_statfs,
-        o_packmd:      lov_packmd,
-        o_unpackmd:    lov_unpackmd,
-        o_create:      lov_create,
-        o_destroy:     lov_destroy,
-        o_getattr:     lov_getattr,
-        o_getattr_async: lov_getattr_async,
-        o_setattr:     lov_setattr,
-        o_brw:         lov_brw,
-        o_brw_async:   lov_brw_async,
-        .o_prep_async_page =    lov_prep_async_page,
-        .o_queue_async_io =     lov_queue_async_io,
-        .o_set_async_flags =    lov_set_async_flags,
-        .o_queue_group_io =     lov_queue_group_io,
-        .o_trigger_group_io =   lov_trigger_group_io,
-        .o_teardown_async_page  lov_teardown_async_page,
-        o_punch:       lov_punch,
-        o_sync:        lov_sync,
-        o_enqueue:     lov_enqueue,
-        o_match:       lov_match,
-        o_change_cbdata: lov_change_cbdata,
-        o_cancel:      lov_cancel,
-        o_cancel_unused: lov_cancel_unused,
-        o_iocontrol:   lov_iocontrol,
-        o_get_info:    lov_get_info,
-        o_set_info:    lov_set_info,
-        o_llog_init:   lov_llog_init,
-        o_llog_finish: lov_llog_finish,
-        o_notify: lov_notify,
+        .o_owner               = THIS_MODULE,
+        .o_setup               = lov_setup,
+        .o_cleanup             = lov_cleanup,
+        .o_connect             = lov_connect,
+        .o_disconnect          = lov_disconnect,
+        .o_statfs              = lov_statfs,
+        .o_packmd              = lov_packmd,
+        .o_unpackmd            = lov_unpackmd,
+        .o_create              = lov_create,
+        .o_destroy             = lov_destroy,
+        .o_getattr             = lov_getattr,
+        .o_getattr_async       = lov_getattr_async,
+        .o_setattr             = lov_setattr,
+        .o_brw                 = lov_brw,
+        .o_brw_async           = lov_brw_async,
+        .o_prep_async_page     = lov_prep_async_page,
+        .o_queue_async_io      = lov_queue_async_io,
+        .o_set_async_flags     = lov_set_async_flags,
+        .o_queue_group_io      = lov_queue_group_io,
+        .o_trigger_group_io    = lov_trigger_group_io,
+        .o_teardown_async_page = lov_teardown_async_page,
+        .o_punch               = lov_punch,
+        .o_sync                = lov_sync,
+        .o_enqueue             = lov_enqueue,
+        .o_match               = lov_match,
+        .o_change_cbdata       = lov_change_cbdata,
+        .o_cancel              = lov_cancel,
+        .o_cancel_unused       = lov_cancel_unused,
+        .o_iocontrol           = lov_iocontrol,
+        .o_get_info            = lov_get_info,
+        .o_set_info            = lov_set_info,
+        .o_llog_init           = lov_llog_init,
+        .o_llog_finish         = lov_llog_finish,
+        .o_notify              = lov_notify,
 };
 
 int __init lov_init(void)
index 608787c..419f3ba 100644 (file)
@@ -516,25 +516,26 @@ int lov_setea(struct obd_export *exp, struct lov_stripe_md **lsmp,
         for (i = 0; i < lump->lmm_stripe_count; i++) {
                 __u32 len = sizeof(last_id);
                 oexp = lov->tgts[lump->lmm_objects[i].l_ost_idx].ltd_exp;
-                rc = obd_get_info(oexp, strlen("last_id"), "last_id", 
-                                  &len, &last_id); 
+                rc = obd_get_info(oexp, strlen("last_id"), "last_id",
+                                  &len, &last_id);
                 if (rc)
                         RETURN(rc);
-                if (last_id < lump->lmm_objects[i].l_object_id) {
+                if (lump->lmm_objects[i].l_object_id > last_id) {
                         CERROR("Setting EA for object > than last id on "
-                          "ost idx %d "LPD64" > "LPD64" \n", 
-                          lump->lmm_objects[i].l_ost_idx,
-                          lump->lmm_objects[i].l_object_id, last_id);
+                               "ost idx %d "LPD64" > "LPD64" \n",
+                               lump->lmm_objects[i].l_ost_idx,
+                               lump->lmm_objects[i].l_object_id, last_id);
                         RETURN(-EINVAL);
                 }
         }
 
         rc = lov_setstripe(exp, lsmp, lump);
-        if (rc) 
+        if (rc)
                 RETURN(rc);
+
         for (i = 0; i < lump->lmm_stripe_count; i++) {
-                (*lsmp)->lsm_oinfo[i].loi_ost_idx = 
-                                                 lump->lmm_objects[i].l_ost_idx;
+                (*lsmp)->lsm_oinfo[i].loi_ost_idx =
+                        lump->lmm_objects[i].l_ost_idx;
                 (*lsmp)->lsm_oinfo[i].loi_id = lump->lmm_objects[i].l_object_id;
                 (*lsmp)->lsm_oinfo[i].loi_gr = lump->lmm_objects[i].l_object_gr;
         }
index f686b81..ffeec5c 100644 (file)
@@ -3,8 +3,15 @@ config.log
 config.status
 configure
 Makefile
-Makefile.in
 .deps
 TAGS
 .*.cmd
-fsfilt_extN.c
+fsfilt-*.c
+autoMakefile.in
+autoMakefile
+*.ko
+*.mod.c
+.*.flags
+.tmp_versions
+.depend
+sources
diff --git a/lustre/lvfs/Makefile.am b/lustre/lvfs/Makefile.am
deleted file mode 100644 (file)
index 9e91de3..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-# Copyright (C) 2001  Cluster File Systems, Inc.
-#
-# This code is issued under the GNU General Public License.
-# See the file COPYING in this distribution
-DEFS= 
-
-if LIBLUSTRE
-noinst_LIBRARIES = liblvfs.a
-liblvfs_a_SOURCES = lvfs_userfs.c
-liblvfs_a_CFLAGS = -fPIC
-
-#if MYSQL
-#liblvfs_a_SOURCES += lvfs_user_mysql.c
-#endif
-
-else
-
-MODULE = lvfs
-
-if EXTN
-FSMOD = fsfilt_extN
-else
-FSMOD = fsfilt_ext3
-endif
-
-modulefs_DATA = lvfs.o $(FSMOD).o
-
-EXTRA_PROGRAMS = lvfs $(FSMOD)
-lvfs_SOURCES = lvfs_common.c lvfs_linux.c fsfilt.c lvfs_internal.h
-if EXTN
-fsfilt_extN_SOURCES = fsfilt_extN.c lvfs_internal.h
-else
-fsfilt_ext3_SOURCES = fsfilt_ext3.c lvfs_internal.h
-endif
-endif
-
-fsfilt_extN.c: fsfilt_ext3.c
-       sed -e "s/EXT3/EXTN/g" -e "s/ext3/extN/g" $< > $@
-
-include $(top_srcdir)/Rules
-
-if LINUX25
-# workaround for fsfilt_ext3
-$(FSMOD).o: $(FSMOD).c
-       $(COMPILE) -UKBUILD_MODNAME -DKBUILD_MODNAME=$(FSMOD) -c -o $(FSMOD)_tmp.o $<
-       rm -f $(FSMOD)_tmp.c
-       $(LINUX)/scripts/modpost $(LINUX)/vmlinux $(FSMOD)_tmp.o
-       $(COMPILE) -UKBUILD_MODNAME -UKBUILD_BASENAME -DKBUILD_BASENAME=$(FSMOD) \
-               -c $(FSMOD)_tmp.mod.c
-       $(LD) -m "`$(LD) --help | awk '/supported emulations/ {print $$4}'`" -r \
-               -o $(FSMOD).o $(FSMOD)_tmp.o $(FSMOD)_tmp.mod.o
-endif
index 25eb31c..811d50f 100644 (file)
 #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>
@@ -304,15 +304,17 @@ static int fsfilt_ext3_commit(struct inode *inode, void *h, int force_sync)
         rc = journal_stop(handle);
         unlock_kernel();
 
-        // LASSERT(current->journal_info == NULL);
         return rc;
 }
 
 static int fsfilt_ext3_commit_async(struct inode *inode, void *h,
-                                        void **wait_handle)
+                                    void **wait_handle)
 {
+        unsigned long tid;
         transaction_t *transaction;
-        unsigned long tid, rtid;
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)
+        unsigned long rtid;
+#endif
         handle_t *handle = h;
         journal_t *journal;
         int rc;
@@ -888,27 +890,27 @@ static int fsfilt_ext3_get_op_len(int op, struct fsfilt_objinfo *fso, int logs)
 }
 
 static struct fsfilt_operations fsfilt_ext3_ops = {
-        fs_type:                "ext3",
-        fs_owner:               THIS_MODULE,
-        fs_start:               fsfilt_ext3_start,
-        fs_brw_start:           fsfilt_ext3_brw_start,
-        fs_commit:              fsfilt_ext3_commit,
-        fs_commit_async:        fsfilt_ext3_commit_async,
-        fs_commit_wait:         fsfilt_ext3_commit_wait,
-        fs_setattr:             fsfilt_ext3_setattr,
-        fs_iocontrol:           fsfilt_ext3_iocontrol,
-        fs_set_md:              fsfilt_ext3_set_md,
-        fs_get_md:              fsfilt_ext3_get_md,
-        fs_readpage:            fsfilt_ext3_readpage,
-        fs_add_journal_cb:      fsfilt_ext3_add_journal_cb,
-        fs_statfs:              fsfilt_ext3_statfs,
-        fs_sync:                fsfilt_ext3_sync,
-        fs_map_inode_page:      fsfilt_ext3_map_inode_page,
-        fs_prep_san_write:      fsfilt_ext3_prep_san_write,
-        fs_write_record:        fsfilt_ext3_write_record,
-        fs_read_record:         fsfilt_ext3_read_record,
-        fs_setup:               fsfilt_ext3_setup,
-        fs_get_op_len:          fsfilt_ext3_get_op_len,
+        .fs_type                = "ext3",
+        .fs_owner               = THIS_MODULE,
+        .fs_start               = fsfilt_ext3_start,
+        .fs_brw_start           = fsfilt_ext3_brw_start,
+        .fs_commit              = fsfilt_ext3_commit,
+        .fs_commit_async        = fsfilt_ext3_commit_async,
+        .fs_commit_wait         = fsfilt_ext3_commit_wait,
+        .fs_setattr             = fsfilt_ext3_setattr,
+        .fs_iocontrol           = fsfilt_ext3_iocontrol,
+        .fs_set_md              = fsfilt_ext3_set_md,
+        .fs_get_md              = fsfilt_ext3_get_md,
+        .fs_readpage            = fsfilt_ext3_readpage,
+        .fs_add_journal_cb      = fsfilt_ext3_add_journal_cb,
+        .fs_statfs              = fsfilt_ext3_statfs,
+        .fs_sync                = fsfilt_ext3_sync,
+        .fs_map_inode_page      = fsfilt_ext3_map_inode_page,
+        .fs_prep_san_write      = fsfilt_ext3_prep_san_write,
+        .fs_write_record        = fsfilt_ext3_write_record,
+        .fs_read_record         = fsfilt_ext3_read_record,
+        .fs_setup               = fsfilt_ext3_setup,
+        .fs_get_op_len          = fsfilt_ext3_get_op_len,
 };
 
 static int __init fsfilt_ext3_init(void)
index b38ba4a..861b663 100644 (file)
@@ -213,19 +213,19 @@ static int fsfilt_reiserfs_get_op_len(int op, struct fsfilt_objinfo *fso,
         return 0;
 }
 static struct fsfilt_operations fsfilt_reiserfs_ops = {
-        fs_type:                "reiserfs",
-        fs_owner:               THIS_MODULE,
-        fs_start:               fsfilt_reiserfs_start,
-        fs_brw_start:           fsfilt_reiserfs_brw_start,
-        fs_commit:              fsfilt_reiserfs_commit,
-        fs_setattr:             fsfilt_reiserfs_setattr,
-        fs_set_md:              fsfilt_reiserfs_set_md,
-        fs_get_md:              fsfilt_reiserfs_get_md,
-        fs_readpage:            fsfilt_reiserfs_readpage,
-        fs_add_journal_cb:      fsfilt_reiserfs_add_journal_cb,
-        fs_statfs:              fsfilt_reiserfs_statfs,
-        fs_sync:                fsfilt_reiserfs_sync,
-        fs_get_op_len:          fsfilt_reiserfs_get_op_len,
+        .fs_type                = "reiserfs",
+        .fs_owner               = THIS_MODULE,
+        .fs_start               = fsfilt_reiserfs_start,
+        .fs_brw_start           = fsfilt_reiserfs_brw_start,
+        .fs_commit              = fsfilt_reiserfs_commit,
+        .fs_setattr             = fsfilt_reiserfs_setattr,
+        .fs_set_md              = fsfilt_reiserfs_set_md,
+        .fs_get_md              = fsfilt_reiserfs_get_md,
+        .fs_readpage            = fsfilt_reiserfs_readpage,
+        .fs_add_journal_cb      = fsfilt_reiserfs_add_journal_cb,
+        .fs_statfs              = fsfilt_reiserfs_statfs,
+        .fs_sync                = fsfilt_reiserfs_sync,
+        .fs_get_op_len          = fsfilt_reiserfs_get_op_len,
 };
 
 static int __init fsfilt_reiserfs_init(void)
index 49c6100..5d26f00 100644 (file)
@@ -3,7 +3,13 @@ config.log
 config.status
 configure
 Makefile
-Makefile.in
 .deps
 TAGS
 .*.cmd
+autoMakefile.in
+autoMakefile
+*.ko
+*.mod.c
+.*.flags
+.tmp_versions
+.depend
diff --git a/lustre/mdc/Makefile.am b/lustre/mdc/Makefile.am
deleted file mode 100644 (file)
index 0200532..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-# Copyright (C) 2001  Cluster File Systems, Inc.
-#
-# This code is issued under the GNU General Public License.
-# See the file COPYING in this distribution
-
-DEFS=
-
-if LIBLUSTRE
-noinst_LIBRARIES = libmdc.a
-libmdc_a_SOURCES = mdc_request.c mdc_reint.c mdc_lib.c mdc_internal.h mdc_locks.c
-libmdc_a_CFLAGS = -fPIC
-else
-MODULE = mdc
-modulefs_DATA = mdc.o
-EXTRA_PROGRAMS = mdc
-
-mdc_SOURCES = mdc_request.c mdc_reint.c lproc_mdc.c mdc_lib.c mdc_locks.c mdc_internal.h
-endif
-
-include $(top_srcdir)/Rules
index 7b1aa8b..2f9c27b 100644 (file)
@@ -166,6 +166,7 @@ int mdc_change_cbdata(struct obd_export *exp, struct ll_fid *fid,
 
         ldlm_change_cbdata(class_exp2obd(exp)->obd_namespace, &res_id, it, 
                            data);
+
         EXIT;
         return 0;
 }
index a524061..afa8ec0 100644 (file)
@@ -497,11 +497,10 @@ int mdc_close(struct obd_export *exp, struct obdo *obdo,
         rc = l_wait_event(req->rq_reply_waitq, mdc_close_check_reply(req),
                           &lwi);
         if (req->rq_repmsg == NULL) {
-                CDEBUG(D_HA, "request failed to send: %p, %d\n", req, 
+                CDEBUG(D_HA, "request failed to send: %p, %d\n", req,
                        req->rq_status);
                 rc = req->rq_status;
         } else if (rc == 0) {
-                LASSERTF(req->rq_repmsg != NULL, "req = %p", req);
                 rc = req->rq_repmsg->status;
                 if (req->rq_repmsg->type == PTL_RPC_MSG_ERR) {
                         DEBUG_REQ(D_ERROR, req, "type == PTL_RPC_MSG_ERR, err "
@@ -619,9 +618,15 @@ static int mdc_iocontrol(unsigned int cmd, struct obd_export *exp, int len,
         struct llog_ctxt *ctxt;
         int rc;
         ENTRY;
-        
-        MOD_INC_USE_COUNT;
 
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0))
+        MOD_INC_USE_COUNT;
+#else
+       if (!try_module_get(THIS_MODULE)) {
+               CERROR("Can't get module. Is it alive?");
+               return -EINVAL;
+       }
+#endif
         switch (cmd) {
         case OBD_IOC_CLIENT_RECOVER:
                 rc = ptlrpc_recover_import(imp, data->ioc_inlbuf1);
@@ -646,11 +651,16 @@ static int mdc_iocontrol(unsigned int cmd, struct obd_export *exp, int len,
         }
 #endif
         default:
-                CERROR("osc_ioctl(): unrecognised ioctl %#x\n", cmd);
+                CERROR("mdc_ioctl(): unrecognised ioctl %#x\n", cmd);
                 GOTO(out, rc = -ENOTTY);
         }
 out:
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0))
         MOD_DEC_USE_COUNT;
+#else
+       module_put(THIS_MODULE);
+#endif
+
         return rc;
 }
 
@@ -836,13 +846,16 @@ static int mdc_import_event(struct obd_device *obd,
         case IMP_EVENT_DISCON: {
                 break;
         }
+        case IMP_EVENT_INACTIVE: {
+                if (obd->obd_observer)
+                        rc = obd_notify(obd->obd_observer, obd, 0);
+                break;
+        }
         case IMP_EVENT_INVALIDATE: {
                 struct ldlm_namespace *ns = obd->obd_namespace;
 
                 ldlm_namespace_cleanup(ns, LDLM_FL_LOCAL_ONLY);
 
-                if (obd->obd_observer)
-                        rc = obd_notify(obd->obd_observer, obd, 0);
                 break;
         }
         case IMP_EVENT_ACTIVE: {
@@ -985,20 +998,20 @@ static int mdc_llog_finish(struct obd_device *obd, int count)
 }
 
 struct obd_ops mdc_obd_ops = {
-        o_owner:       THIS_MODULE,
-        o_setup:       mdc_setup,
-        o_precleanup:  mdc_precleanup,
-        o_cleanup:     mdc_cleanup,
-        o_connect:     client_connect_import,
-        o_disconnect:  client_disconnect_export,
-        o_iocontrol:   mdc_iocontrol,
-        o_set_info:    mdc_set_info,
-        o_statfs:      mdc_statfs,
-        o_pin:         mdc_pin,
-        o_unpin:       mdc_unpin,
-        o_import_event: mdc_import_event,
-        o_llog_init:   mdc_llog_init,
-        o_llog_finish: mdc_llog_finish,
+        .o_owner        = THIS_MODULE,
+        .o_setup        = mdc_setup,
+        .o_precleanup   = mdc_precleanup,
+        .o_cleanup      = mdc_cleanup,
+        .o_connect      = client_connect_import,
+        .o_disconnect   = client_disconnect_export,
+        .o_iocontrol    = mdc_iocontrol,
+        .o_set_info     = mdc_set_info,
+        .o_statfs       = mdc_statfs,
+        .o_pin          = mdc_pin,
+        .o_unpin        = mdc_unpin,
+        .o_import_event = mdc_import_event,
+        .o_llog_init    = mdc_llog_init,
+        .o_llog_finish  = mdc_llog_finish,
 };
 
 int __init mdc_init(void)
@@ -1009,12 +1022,12 @@ int __init mdc_init(void)
                                    LUSTRE_MDC_NAME);
 }
 
+#ifdef __KERNEL__
 static void /*__exit*/ mdc_exit(void)
 {
         class_unregister_type(LUSTRE_MDC_NAME);
 }
 
-#ifdef __KERNEL__
 MODULE_AUTHOR("Cluster File Systems, Inc. <info@clusterfs.com>");
 MODULE_DESCRIPTION("Lustre Metadata Client");
 MODULE_LICENSE("GPL");
index 49c6100..d5103fa 100644 (file)
@@ -3,7 +3,13 @@ config.log
 config.status
 configure
 Makefile
-Makefile.in
 .deps
 TAGS
 .*.cmd
+autoMakefile.in
+autoMakefile
+*.ko
+*.mod.c
+.*.o.flags
+.tmp_versions
+.depend
diff --git a/lustre/mds/Makefile.am b/lustre/mds/Makefile.am
deleted file mode 100644 (file)
index c526510..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-# Copyright (C) 2001  Cluster File Systems, Inc.
-#
-# This code is issued under the GNU General Public License.
-# See the file COPYING in this distribution
-
-DEFS= 
-MODULE = mds
-modulefs_DATA = mds.o
-EXTRA_PROGRAMS = mds
-mds_SOURCES = mds_log.c mds_unlink_open.c mds_lov.c handler.c mds_reint.c mds_fs.c lproc_mds.c mds_open.c \
-mds_lib.c mds_internal.h
-
-include $(top_srcdir)/Rules
index a9ccebd..3d9da59 100644 (file)
@@ -1849,7 +1849,7 @@ static int mdt_setup(struct obd_device *obd, obd_count len, void *buf)
         }
 
         rc = ptlrpc_start_n_threads(obd, mds->mds_setattr_service,
-                                 MDT_NUM_THREADS, "ll_mdt_attr");
+                                    MDT_NUM_THREADS, "ll_mdt_attr");
         if (rc)
                 GOTO(err_thread2, rc);
 
@@ -1917,28 +1917,28 @@ struct lvfs_callback_ops mds_lvfs_ops = {
 
 /* use obd ops to offer management infrastructure */
 static struct obd_ops mds_obd_ops = {
-        o_owner:       THIS_MODULE,
-        o_connect:     mds_connect,
-        o_init_export:  mds_init_export,
-        o_destroy_export:  mds_destroy_export,
-        o_disconnect:  mds_disconnect,
-        o_setup:       mds_setup,
-        o_precleanup:  mds_precleanup,
-        o_cleanup:     mds_cleanup,
-        o_postrecov:   mds_postrecov,
-        o_statfs:      mds_obd_statfs,
-        o_iocontrol:   mds_iocontrol,
-        o_create:      mds_obd_create,
-        o_destroy:     mds_obd_destroy,
-        o_llog_init:   mds_llog_init,
-        o_llog_finish: mds_llog_finish,
-        o_notify:      mds_notify,
+        .o_owner           = THIS_MODULE,
+        .o_connect         = mds_connect,
+        .o_init_export     = mds_init_export,
+        .o_destroy_export  = mds_destroy_export,
+        .o_disconnect      = mds_disconnect,
+        .o_setup           = mds_setup,
+        .o_precleanup      = mds_precleanup,
+        .o_cleanup         = mds_cleanup,
+        .o_postrecov       = mds_postrecov,
+        .o_statfs          = mds_obd_statfs,
+        .o_iocontrol       = mds_iocontrol,
+        .o_create          = mds_obd_create,
+        .o_destroy         = mds_obd_destroy,
+        .o_llog_init       = mds_llog_init,
+        .o_llog_finish     = mds_llog_finish,
+        .o_notify          = mds_notify,
 };
 
 static struct obd_ops mdt_obd_ops = {
-        o_owner:       THIS_MODULE,
-        o_setup:       mdt_setup,
-        o_cleanup:     mdt_cleanup,
+        .o_owner           = THIS_MODULE,
+        .o_setup           = mdt_setup,
+        .o_cleanup         = mdt_cleanup,
 };
 
 static int __init mds_init(void)
index c4d0d11..0c74ec0 100644 (file)
@@ -95,7 +95,8 @@ int mds_client_add(struct obd_device *obd, struct mds_obd *mds,
                cl_idx, med->med_mcd->mcd_uuid);
 
         med->med_idx = cl_idx;
-        med->med_off = MDS_LR_CLIENT_START + (cl_idx * MDS_LR_CLIENT_SIZE);
+        med->med_off = le32_to_cpu(mds->mds_server_data->msd_client_start) +
+                (cl_idx * le16_to_cpu(mds->mds_server_data->msd_client_size));
 
         if (new_client) {
                 struct obd_run_ctxt saved;
@@ -193,10 +194,10 @@ static int mds_read_last_rcvd(struct obd_device *obd, struct file *file)
         ENTRY;
 
         /* ensure padding in the struct is the correct size */
-        LASSERT (offsetof(struct mds_server_data, msd_padding) +
-                 sizeof(msd->msd_padding) == MDS_LR_SERVER_SIZE);
-        LASSERT (offsetof(struct mds_client_data, mcd_padding) +
-                 sizeof(mcd->mcd_padding) == MDS_LR_CLIENT_SIZE);
+        LASSERT(offsetof(struct mds_server_data, msd_padding) +
+                sizeof(msd->msd_padding) == MDS_LR_SERVER_SIZE);
+        LASSERT(offsetof(struct mds_client_data, mcd_padding) +
+                sizeof(mcd->mcd_padding) == MDS_LR_CLIENT_SIZE);
 
         OBD_ALLOC_WAIT(msd, sizeof(*msd));
         if (!msd)
@@ -216,7 +217,7 @@ static int mds_read_last_rcvd(struct obd_device *obd, struct file *file)
 
                 memcpy(msd->msd_uuid, obd->obd_uuid.uuid,sizeof(msd->msd_uuid));
                 msd->msd_last_transno = 0;
-                mount_count = msd->msd_mount_count = 0; 
+                mount_count = msd->msd_mount_count = 0;
                 msd->msd_server_size = cpu_to_le32(MDS_LR_SERVER_SIZE);
                 msd->msd_client_start = cpu_to_le32(MDS_LR_CLIENT_START);
                 msd->msd_client_size = cpu_to_le16(MDS_LR_CLIENT_SIZE);
@@ -265,8 +266,9 @@ static int mds_read_last_rcvd(struct obd_device *obd, struct file *file)
         CDEBUG(D_INODE, "%s: last_rcvd size: %lu\n",
                obd->obd_name, last_rcvd_size);
         CDEBUG(D_INODE, "%s: last_rcvd clients: %lu\n", obd->obd_name,
-               last_rcvd_size <= MDS_LR_CLIENT_START ? 0 :
-               (last_rcvd_size - MDS_LR_CLIENT_START) / MDS_LR_CLIENT_SIZE);
+               last_rcvd_size <= le32_to_cpu(msd->msd_client_start) ? 0 :
+               (last_rcvd_size - le32_to_cpu(msd->msd_client_start)) /
+                le16_to_cpu(msd->msd_client_size));
 
         /* When we do a clean MDS shutdown, we save the last_transno into
          * the header.  If we find clients with higher last_transno values
@@ -647,7 +649,7 @@ int mds_obd_destroy(struct obd_export *exp, struct obdo *oa,
         down(&parent_inode->i_sem);
         de = lookup_one_len(fidname, mds->mds_objects_dir, namelen);
         if (de == NULL || de->d_inode == NULL) {
-                CERROR("destroying non-existent object "LPU64" %s\n",
+                CERROR("destroying non-existent object "LPU64" %s\n", 
                        oa->o_id, fidname);
                 GOTO(out_dput, rc = IS_ERR(de) ? PTR_ERR(de) : -ENOENT);
         }
index c6b6839..2d0bed0 100644 (file)
@@ -192,16 +192,14 @@ int mds_lov_connect(struct obd_device *obd, char * lov_name)
 
         mds->mds_osc_obd = class_name2obd(lov_name);
         if (!mds->mds_osc_obd) {
-                CERROR("MDS cannot locate LOV %s\n",
-                       lov_name);
+                CERROR("MDS cannot locate LOV %s\n", lov_name);
                 mds->mds_osc_obd = ERR_PTR(-ENOTCONN);
                 RETURN(-ENOTCONN);
         }
 
         rc = obd_connect(&conn, mds->mds_osc_obd, &obd->obd_uuid);
         if (rc) {
-                CERROR("MDS cannot connect to LOV %s (%d)\n",
-                       lov_name, rc);
+                CERROR("MDS cannot connect to LOV %s (%d)\n", lov_name, rc);
                 mds->mds_osc_obd = ERR_PTR(rc);
                 RETURN(rc);
         }
@@ -571,8 +569,8 @@ int mds_convert_lov_ea(struct obd_device *obd, struct inode *inode,
         if (le32_to_cpu(lmm->lmm_magic) == LOV_MAGIC)
                 RETURN(0);
 
-        CWARN("converting LOV EA on %lu/%u from V0 to V1\n",
-              inode->i_ino, inode->i_generation);
+        CDEBUG(D_INODE, "converting LOV EA on %lu/%u from V0 to V1\n",
+               inode->i_ino, inode->i_generation);
         rc = obd_unpackmd(obd->u.mds.mds_osc_exp, &lsm, lmm, lmm_size);
         if (rc < 0)
                 GOTO(conv_end, rc);
index c8e7763..8880a74 100644 (file)
@@ -78,11 +78,10 @@ static void mds_cancel_cookies_cb(struct obd_device *obd, __u64 transno,
                        rc);
         } else {
                 ///* XXX 0 normally, SENDNOW for debug */);
-                ctxt = llog_get_context(obd, mlcd->mlcd_cookies[0].lgc_subsys + 1);
-                rc = llog_cancel(ctxt, lsm,
-                                         mlcd->mlcd_cookielen /
-                                         sizeof(*mlcd->mlcd_cookies),
-                                         mlcd->mlcd_cookies, OBD_LLOG_FL_SENDNOW);
+                ctxt = llog_get_context(obd,mlcd->mlcd_cookies[0].lgc_subsys+1);
+                rc = llog_cancel(ctxt, lsm, mlcd->mlcd_cookielen /
+                                                sizeof(*mlcd->mlcd_cookies),
+                                 mlcd->mlcd_cookies, OBD_LLOG_FL_SENDNOW);
                 if (rc)
                         CERROR("error cancelling %d log cookies: rc %d\n",
                                (int)(mlcd->mlcd_cookielen /
index 067f05c..c79cb94 100644 (file)
@@ -3,7 +3,10 @@ config.log
 config.status
 configure
 Makefile
-Makefile.in
 .deps
 tags
 TAGS
+autoMakefile.in
+autoMakefile
+*.ko
+*.mod.c
diff --git a/lustre/mgmt/Makefile.am b/lustre/mgmt/Makefile.am
deleted file mode 100644 (file)
index f7307c8..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-# Copyright (C) 2001  Cluster File Systems, Inc.
-#
-# This code is issued under the GNU General Public License.
-# See the file COPYING in this distribution
-
-DEFS=
-
-modulefs_DATA = mgmt_svc.o mgmt_cli.o
-EXTRA_PROGRAMS = mgmt_svc mgmt_cli
-
-include $(top_srcdir)/Rules
index 5cbcfae..313a9d5 100644 (file)
@@ -253,9 +253,9 @@ static int mgmtcli_cleanup(struct obd_device *obd, int flags)
 }
 
 static struct obd_ops mgmtcli_obd_ops = {
-        o_owner:   THIS_MODULE,
-        o_setup:   mgmtcli_setup,
-        o_cleanup: client_obd_cleanup
+        .o_owner   = THIS_MODULE,
+        .o_setup   = mgmtcli_setup,
+        .o_cleanup = client_obd_cleanup
 };
 
 static int __init mgmtcli_init(void)
index 8743e72..88fbf48 100644 (file)
@@ -125,11 +125,11 @@ static int mgmt_cleanup(struct obd_device *obd, int flags)
 }
 
 static struct obd_ops mgmt_obd_ops = {
-        o_owner:      THIS_MODULE,
-        o_setup:      mgmt_setup,
-        o_cleanup:    mgmt_cleanup,
-        o_connect:    class_connect,
-        o_disconnect: class_disconnect
+        .o_owner      = THIS_MODULE,
+        .o_setup      = mgmt_setup,
+        .o_cleanup    = mgmt_cleanup,
+        .o_connect    = class_connect,
+        .o_disconnect = class_disconnect
 };
 
 static int __init mgmt_init(void)
diff --git a/lustre/missing b/lustre/missing
deleted file mode 100755 (executable)
index 6a37006..0000000
+++ /dev/null
@@ -1,336 +0,0 @@
-#! /bin/sh
-# Common stub for a few missing GNU programs while installing.
-# Copyright (C) 1996, 1997, 1999, 2000, 2002 Free Software Foundation, Inc.
-# Originally by Fran,cois Pinard <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
diff --git a/lustre/mkinstalldirs b/lustre/mkinstalldirs
deleted file mode 100755 (executable)
index a08f3ca..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-#! /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
index 49c6100..5d26f00 100644 (file)
@@ -3,7 +3,13 @@ config.log
 config.status
 configure
 Makefile
-Makefile.in
 .deps
 TAGS
 .*.cmd
+autoMakefile.in
+autoMakefile
+*.ko
+*.mod.c
+.*.flags
+.tmp_versions
+.depend
diff --git a/lustre/obdclass/Makefile.am b/lustre/obdclass/Makefile.am
deleted file mode 100644 (file)
index 4451952..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-DEFS=
-MODULE = obdclass
-
-if LIBLUSTRE
-
-noinst_LIBRARIES = liblustreclass.a
-liblustreclass_a_SOURCES = class_obd.c debug.c genops.c statfs_pack.c uuid.c 
-liblustreclass_a_SOURCES += lustre_handles.c lustre_peer.c lprocfs_status.c
-liblustreclass_a_SOURCES += obdo.c obd_config.c llog.c llog_obd.c llog_cat.c
-liblustreclass_a_SOURCES += llog_lvfs.c #llog_ioctl.c rbtree.c
-liblustreclass_a_CFLAGS = -fPIC
-
-class_obd.c: lustre_build_version
-
-lustre_build_version:
-       echo '#define LUSTRE_VERSION 32' > $(top_builddir)/include/linux/lustre_build_version.h
-       echo '#define BUILD_VERSION "1"' >> $(top_builddir)/include/linux/lustre_build_version.h
-
-else
-
-class_obd.o: lustre_build_version
-
-modulefs_DATA = lustre_build_version obdclass.o llog_test.o
-EXTRA_PROGRAMS = obdclass llog_test
-
-obdclass_SOURCES = llog.c llog_cat.c llog_lvfs.c llog_obd.c  class_obd.c debug.c genops.c sysctl.c uuid.c llog_ioctl.c
-obdclass_SOURCES += lprocfs_status.c lustre_handles.c lustre_peer.c
-obdclass_SOURCES += statfs_pack.c obdo.c obd_config.c llog_internal.h
-
-lustre_build_version:
-       perl $(top_srcdir)/scripts/version_tag.pl $(top_srcdir) $(top_builddir) > tmpver
-       echo "#define LUSTRE_RELEASE @RELEASE@" >> tmpver
-       cmp -s $(top_builddir)/include/linux/lustre_build_version.h tmpver \
-                2> /dev/null &&                                            \
-                $(RM) tmpver ||                                            \
-                mv tmpver $(top_builddir)/include/linux/lustre_build_version.h
-endif
-
-include $(top_srcdir)/Rules
-
-if LINUX25
-# workaround for llog_test
-llog_test.o: llog_test.c
-       $(COMPILE) -UKBUILD_MODNAME -DKBUILD_MODNAME=llog_test -c -o llog_test_tmp.o $<
-       rm -f llog_test_tmp.c
-       $(LINUX)/scripts/modpost $(LINUX)/vmlinux llog_test_tmp.o
-       $(COMPILE) -UKBUILD_MODNAME -UKBUILD_BASENAME -DKBUILD_BASENAME=llog_test \
-               -c llog_test_tmp.mod.c
-       $(LD) -m "`$(LD) --help | awk '/supported emulations/ {print $$4}'`" -r \
-               -o llog_test.o llog_test_tmp.o llog_test_tmp.mod.o
-endif
diff --git a/lustre/obdclass/Makefile.in b/lustre/obdclass/Makefile.in
new file mode 100644 (file)
index 0000000..d092fc5
--- /dev/null
@@ -0,0 +1,15 @@
+MODULES := obdclass llog_test
+
+obdclass-objs := llog.o llog_cat.o llog_lvfs.o llog_obd.o class_obd.o
+obdclass-objs += debug.o genops.o sysctl.o uuid.o llog_ioctl.o
+obdclass-objs += lprocfs_status.o lustre_handles.o lustre_peer.o
+obdclass-objs += statfs_pack.o obdo.o obd_config.o
+
+ifeq ($(PATCHLEVEL),6)
+llog_test-objs := llog-test.o
+
+$(obj)/llog-test.c: $(obj)/llog_test.c
+       ln -sf $< $@
+endif
+
+@INCLUDE_RULES@
index 119c782..f525c55 100644 (file)
@@ -63,7 +63,9 @@
 #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"
 
@@ -601,17 +603,14 @@ int init_obdclass(void)
         return 0;
 }
 
+/* liblustre doesn't call cleanup_obdclass, apparently.  we carry on in this
+ * ifdef to the end of the file to cover module and versioning goo.*/
 #ifdef __KERNEL__
-static void /*__exit*/ cleanup_obdclass(void)
-#else
+
 static void cleanup_obdclass(void)
-#endif
 {
-#ifdef __KERNEL__
         int i;
-#else
-        int i, leaked;
-#endif
+        int leaked;
         ENTRY;
 
         misc_deregister(&obd_psdev);
@@ -625,9 +624,7 @@ static void cleanup_obdclass(void)
         }
 
         obd_cleanup_caches();
-#ifdef __KERNEL__
         obd_sysctl_clean();
-#endif
 #ifdef LPROCFS
         if (proc_lustre_root) {
                 lprocfs_remove(proc_lustre_root);
@@ -638,18 +635,15 @@ static void cleanup_obdclass(void)
         class_handle_cleanup();
         class_exit_uuidlist();
 
-#ifndef __KERNEL__
         leaked = atomic_read(&obd_memory);
         CDEBUG(leaked ? D_ERROR : D_INFO,
                "obd mem max: %d leaked: %d\n", obd_memmax, leaked);
-#endif
 
         EXIT;
 }
 
 /* Check that we're building against the appropriate version of the Lustre
  * kernel patch */
-#ifdef __KERNEL__
 #include <linux/lustre_version.h>
 #define LUSTRE_MIN_VERSION 28
 #define LUSTRE_MAX_VERSION 34
@@ -658,11 +652,7 @@ static void cleanup_obdclass(void)
 #elif (LUSTRE_KERNEL_VERSION > LUSTRE_MAX_VERSION)
 # error Cannot continue: Your Lustre sources are older than the kernel patch
 #endif
- #else
-# warning "Lib Lustre - no versioning information"
-#endif
 
-#ifdef __KERNEL__
 MODULE_AUTHOR("Cluster File Systems, Inc. <info@clusterfs.com>");
 MODULE_DESCRIPTION("Lustre Class Driver Build Version: " BUILD_VERSION);
 MODULE_LICENSE("GPL");
index a45e57d..049db79 100644 (file)
@@ -652,12 +652,11 @@ static int llog_test_setup(struct obd_device *obd, obd_count len, void *buf)
 }
 
 static struct obd_ops llog_obd_ops = {
-        o_owner:       THIS_MODULE,
-        o_setup:       llog_test_setup,
-        o_cleanup:     llog_test_cleanup,
-        o_llog_init:   llog_test_llog_init,
-        o_llog_finish: llog_test_llog_finish,
-
+        .o_owner       = THIS_MODULE,
+        .o_setup       = llog_test_setup,
+        .o_cleanup     = llog_test_cleanup,
+        .o_llog_init   = llog_test_llog_init,
+        .o_llog_finish = llog_test_llog_finish,
 };
 
 static struct lprocfs_vars lprocfs_obd_vars[] = { {0} };
index fcfb991..d5ef04c 100644 (file)
@@ -542,11 +542,11 @@ static int lprocfs_stats_seq_open(struct inode *inode, struct file *file)
 }
 
 struct file_operations lprocfs_stats_seq_fops = {
-        owner:   THIS_MODULE,
-        open:    lprocfs_stats_seq_open,
-        read:    seq_read,
-        llseek:  seq_lseek,
-        release: seq_release,
+        .owner   = THIS_MODULE,
+        .open    = lprocfs_stats_seq_open,
+        .read    = seq_read,
+        .llseek  = seq_lseek,
+        .release = seq_release,
 };
 
 int lprocfs_register_stats(struct proc_dir_entry *root, const char *name,
index 41f2258..d5009ef 100644 (file)
  */
 int class_attach(struct lustre_cfg *lcfg)
 {
-        int minor;
         struct obd_type *type;
-        int err = 0;
-        int len;
-        char *typename;
-        char *name;
-        char *uuid;
         struct obd_device *obd;
-        int dev;
+        char *typename, *name, *uuid;
+        int minor, rc, len, dev, stage = 0;
 
         if (!lcfg->lcfg_inllen1 || !lcfg->lcfg_inlbuf1) {
                 CERROR("No type passed!\n");
@@ -95,22 +90,23 @@ int class_attach(struct lustre_cfg *lcfg)
                 CERROR("OBD: unknown type: %s\n", typename);
                 RETURN(-EINVAL);
         }
+        stage = 1;
 
         obd = class_name2obd(name);
         if (obd != NULL) {
                 CERROR("obd %s already attached\n", name);
-                RETURN(-EEXIST);
+                GOTO(out, rc = -EEXIST);
         }
 
         obd = class_newdev(&dev);
         if (obd == NULL)
-                RETURN(-EINVAL);
+                GOTO(out, rc = -EINVAL);
 
         /* have we attached a type to this device */
         if (obd->obd_attached || obd->obd_type) {
                 CERROR("OBD: Device %d already typed as %s.\n",
                        obd->obd_minor, MKSTR(obd->obd_type->typ_name));
-                RETURN(-EBUSY);
+                GOTO(out, rc = -EBUSY);
         }
 
         LASSERT(obd == (obd_dev + obd->obd_minor));
@@ -128,49 +124,51 @@ int class_attach(struct lustre_cfg *lcfg)
 
         /* XXX belongs in setup not attach  */
         /* recovery data */
+        init_timer(&obd->obd_recovery_timer);
         spin_lock_init(&obd->obd_processing_task_lock);
         init_waitqueue_head(&obd->obd_next_transno_waitq);
         INIT_LIST_HEAD(&obd->obd_recovery_queue);
         INIT_LIST_HEAD(&obd->obd_delayed_reply_queue);
 
-        spin_lock_init (&obd->obd_uncommitted_replies_lock);
-        INIT_LIST_HEAD (&obd->obd_uncommitted_replies);
+        spin_lock_init(&obd->obd_uncommitted_replies_lock);
+        INIT_LIST_HEAD(&obd->obd_uncommitted_replies);
 
         len = strlen(name) + 1;
         OBD_ALLOC(obd->obd_name, len);
-        if (!obd->obd_name) {
-                class_put_type(obd->obd_type);
-                obd->obd_type = NULL;
-                RETURN(-ENOMEM);
-        }
+        if (!obd->obd_name)
+                GOTO(out, rc = -ENOMEM);
         memcpy(obd->obd_name, name, len);
+        stage = 2;
 
         len = strlen(uuid);
         if (len >= sizeof(obd->obd_uuid)) {
                 CERROR("uuid must be < "LPSZ" bytes long\n",
                        sizeof(obd->obd_uuid));
-                OBD_FREE(obd->obd_name, strlen(obd->obd_name) + 1);
-                class_put_type(obd->obd_type);
-                obd->obd_type = NULL;
-                RETURN(-EINVAL);
+                GOTO(out, rc = -EINVAL);
         }
         memcpy(obd->obd_uuid.uuid, uuid, len);
 
         /* do the attach */
-        if (OBP(obd, attach))
-                err = OBP(obd,attach)(obd, sizeof *lcfg, lcfg);
+        if (OBP(obd, attach)) {
+                rc = OBP(obd,attach)(obd, sizeof *lcfg, lcfg);
+                if (rc)
+                        GOTO(out, rc = -EINVAL);
+        }
 
-        if (err) {
+        obd->obd_attached = 1;
+        type->typ_refcnt++;
+        CDEBUG(D_IOCTL, "OBD: dev %d attached type %s\n",
+               obd->obd_minor, typename);
+        RETURN(0);
+ out:
+        switch (stage) {
+        case 2:
                 OBD_FREE(obd->obd_name, strlen(obd->obd_name) + 1);
+        case 1:
                 class_put_type(obd->obd_type);
                 obd->obd_type = NULL;
-        } else {
-                obd->obd_attached = 1;
-                type->typ_refcnt++;
-                CDEBUG(D_IOCTL, "OBD: dev %d attached type %s\n",
-                       obd->obd_minor, typename);
         }
-        RETURN(err);
+        return rc;
 }
 
 int class_setup(struct obd_device *obd, struct lustre_cfg *lcfg)
index 49c6100..d09de6b 100644 (file)
@@ -3,7 +3,13 @@ config.log
 config.status
 configure
 Makefile
-Makefile.in
 .deps
+.depend
 TAGS
 .*.cmd
+autoMakefile.in
+autoMakefile
+*.ko
+*.mod.c
+.*.flags
+.tmp_versions
diff --git a/lustre/obdecho/Makefile.am b/lustre/obdecho/Makefile.am
deleted file mode 100644 (file)
index b9fa3b8..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-# Copyright (C) 2001  Cluster File Systems, Inc.
-#
-# This code is issued under the GNU General Public License.
-# See the file COPYING in this distribution
-
-DEFS= 
-
-if LIBLUSTRE
-noinst_LIBRARIES = libobdecho.a
-libobdecho_a_SOURCES = echo_client.c 
-libobdecho_a_CFLAGS = -fPIC
-else
-MODULE = obdecho
-modulefs_DATA = obdecho.o
-EXTRA_PROGRAMS = obdecho
-LINX=
-obdecho_SOURCES = echo.c echo_client.c lproc_echo.c $(LINX)
-endif
-
-include $(top_srcdir)/Rules
index 34d061d..e9be311 100644 (file)
@@ -33,8 +33,6 @@
 #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>
@@ -491,18 +489,18 @@ static int echo_cleanup(struct obd_device *obd, int flags)
 }
 
 static struct obd_ops echo_obd_ops = {
-        o_owner:           THIS_MODULE,
-        o_connect:         echo_connect,
-        o_disconnect:      echo_disconnect,
-        o_destroy_export:  echo_destroy_export,
-        o_create:          echo_create,
-        o_destroy:         echo_destroy,
-        o_getattr:         echo_getattr,
-        o_setattr:         echo_setattr,
-        o_preprw:          echo_preprw,
-        o_commitrw:        echo_commitrw,
-        o_setup:           echo_setup,
-        o_cleanup:         echo_cleanup
+        .o_owner           = THIS_MODULE,
+        .o_connect         = echo_connect,
+        .o_disconnect      = echo_disconnect,
+        .o_destroy_export  = echo_destroy_export,
+        .o_create          = echo_create,
+        .o_destroy         = echo_destroy,
+        .o_getattr         = echo_getattr,
+        .o_setattr         = echo_setattr,
+        .o_preprw          = echo_preprw,
+        .o_commitrw        = echo_commitrw,
+        .o_setup           = echo_setup,
+        .o_cleanup         = echo_cleanup
 };
 
 extern int echo_client_init(void);
index 5d174fe..67935cb 100644 (file)
@@ -794,7 +794,7 @@ static int echo_client_async_page(struct obd_export *exp, int rw,
                         GOTO(out, rc = -ENOMEM);
 
                 page->private = 0;
-                list_add_tail(&page->list, &pages);
+                list_add_tail(&PAGE_LIST(page), &pages);
 
                 OBD_ALLOC(eap, sizeof(*eap));
                 if (eap == NULL)
@@ -880,9 +880,10 @@ static int echo_client_async_page(struct obd_export *exp, int rw,
 
 out:
         list_for_each_safe(pos, n, &pages) {
-                struct page *page = list_entry(pos, struct page, list);
+                struct page *page = list_entry(pos, struct page, 
+                                               PAGE_LIST_ENTRY);
 
-                list_del(&page->list);
+                list_del(&PAGE_LIST(page));
                 if (page->private != 0) {
                         eap = (struct echo_async_page *)page->private;
                         if (eap->eap_cookie != NULL)
@@ -1435,12 +1436,12 @@ static int echo_client_disconnect(struct obd_export *exp, int flags)
 }
 
 static struct obd_ops echo_obd_ops = {
-        o_owner:       THIS_MODULE,
-        o_setup:       echo_client_setup,
-        o_cleanup:     echo_client_cleanup,
-        o_iocontrol:   echo_client_iocontrol,
-        o_connect:     echo_client_connect,
-        o_disconnect:  echo_client_disconnect
+        .o_owner       = THIS_MODULE,
+        .o_setup       = echo_client_setup,
+        .o_cleanup     = echo_client_cleanup,
+        .o_iocontrol   = echo_client_iocontrol,
+        .o_connect     = echo_client_connect,
+        .o_disconnect  = echo_client_disconnect
 };
 
 int echo_client_init(void)
index 49c6100..5d26f00 100644 (file)
@@ -3,7 +3,13 @@ config.log
 config.status
 configure
 Makefile
-Makefile.in
 .deps
 TAGS
 .*.cmd
+autoMakefile.in
+autoMakefile
+*.ko
+*.mod.c
+.*.flags
+.tmp_versions
+.depend
diff --git a/lustre/obdfilter/Makefile.am b/lustre/obdfilter/Makefile.am
deleted file mode 100644 (file)
index afa74fd..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-# Copyright (C) 2001  Cluster File Systems, Inc.
-#
-# This code is issued under the GNU General Public License.
-# See the file COPYING in this distribution
-
-MODULE = obdfilter
-modulefs_DATA = obdfilter.o
-EXTRA_PROGRAMS = obdfilter
-
-COMMON_SRC = filter.c filter_io.c filter_log.c filter_san.c lproc_obdfilter.c \
-             filter_internal.h filter_lvb.c
-
-if LINUX25
-obdfilter_SOURCES = $(COMMON_SRC) filter_io_26.c
-else
-obdfilter_SOURCES = $(COMMON_SRC) filter_io_24.c
-endif
-
-include $(top_srcdir)/Rules
index 4d60890..4809e22 100644 (file)
@@ -626,13 +626,13 @@ static int filter_prep_groups(struct obd_device *obd)
                 GOTO(cleanup_O0, rc);
 
         cleanup_O0:
-                dput(O0_dentry);
+                f_dput(O0_dentry);
         cleanup_R:
-                dput(dentry);
+                f_dput(dentry);
                 if (rc)
                         GOTO(cleanup, rc);
         } else {
-                dput(dentry);
+                f_dput(dentry);
         }
 
         OBD_ALLOC(filter->fo_last_objids, FILTER_GROUPS * sizeof(__u64));
@@ -1259,7 +1259,8 @@ static int filter_setup(struct obd_device *obd, obd_count len, void *buf)
         if (!lcfg->lcfg_inlbuf1 || !lcfg->lcfg_inlbuf2)
                 RETURN(-EINVAL);
 
-        if (!strcmp(lcfg->lcfg_inlbuf2, "ext3")) {
+        if (!strcmp(lcfg->lcfg_inlbuf2, "ext3") ||
+            !strcmp(lcfg->lcfg_inlbuf2, "ldiskfs")) {
 #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0))
         /* bug 1577: implement async-delete for 2.5 */
                 str = "errors=remount-ro,asyncdel";
@@ -1406,7 +1407,7 @@ static int filter_precleanup(struct obd_device *obd, int flags)
 /* Do extra sanity checks for grant accounting.  We do this at connect,
  * disconnect, and statfs RPC time, so it shouldn't be too bad.  We can
  * always get rid of it or turn it off when we know accounting is good. */
-static void filter_grant_sanity_check(struct obd_device *obd, char *func)
+static void filter_grant_sanity_check(struct obd_device *obd, const char *func)
 {
         struct filter_export_data *fed;
         struct obd_export *exp;
@@ -1745,12 +1746,15 @@ static void filter_destroy_precreated(struct obd_export *exp, struct obdo *oa,
         LASSERT(oa);
 
         memset(&doa, 0, sizeof(doa));
-        if (oa->o_valid & OBD_MD_FLGROUP)
+        if (oa->o_valid & OBD_MD_FLGROUP) {
+                doa.o_valid |= OBD_MD_FLGROUP;
                 doa.o_gr = oa->o_gr;
-        else
+        } else {
                 doa.o_gr = 0;
+        }
         doa.o_mode = S_IFREG;
-        last = filter_last_id(filter, &doa); /* FIXME: object groups */
+
+        last = filter_last_id(filter, &doa);
         CWARN("deleting orphan objects from "LPU64" to "LPU64"\n",
                oa->o_id + 1, last);
         for (id = oa->o_id + 1; id <= last; id++) {
@@ -1758,14 +1762,14 @@ static void filter_destroy_precreated(struct obd_export *exp, struct obdo *oa,
                 filter_destroy(exp, &doa, NULL, NULL);
         }
         spin_lock(&filter->fo_objidlock);
-        filter->fo_last_objids[0] = oa->o_id; /* FIXME: object groups */
+        filter->fo_last_objids[doa.o_gr] = oa->o_id;
         spin_unlock(&filter->fo_objidlock);
         EXIT;
 }
 
 /* returns a negative error or a nonnegative number of files to create */
 static int filter_should_precreate(struct obd_export *exp, struct obdo *oa,
-                                   int group)
+                                   obd_gr group)
 {
         struct obd_device *obd = exp->exp_obd;
         struct filter_obd *filter = &obd->u.filter;
@@ -1838,7 +1842,7 @@ static int filter_precreate(struct obd_device *obd, struct obdo *oa,
                 if (recreate_obj) {
                         __u64 last_id;
                         next_id = oa->o_id;
-                        last_id = filter_last_id(filter, NULL);
+                        last_id = filter_last_id(filter, oa);
                         if (next_id > last_id) {
                                 CERROR("Error: Trying to recreate obj greater"
                                        "than last id "LPD64" > "LPD64"\n",
@@ -1846,7 +1850,7 @@ static int filter_precreate(struct obd_device *obd, struct obdo *oa,
                                 RETURN(-EINVAL);
                         }
                 } else
-                        next_id = filter_last_id(filter, NULL) + 1;
+                        next_id = filter_last_id(filter, oa) + 1;
 
                 CDEBUG(D_INFO, "precreate objid "LPU64"\n", next_id);
 
@@ -1890,7 +1894,7 @@ static int filter_precreate(struct obd_device *obd, struct obdo *oa,
                 }
 
                 if (!recreate_obj) {
-                        filter_set_last_id(filter, NULL, next_id);
+                        filter_set_last_id(filter, oa, next_id);
                         err = filter_update_last_objid(obd, group, 0);
                         if (err)
                                 CERROR("unable to write lastobjid "
@@ -2377,56 +2381,56 @@ static struct lvfs_callback_ops filter_lvfs_ops = {
 };
 
 static struct obd_ops filter_obd_ops = {
-        o_owner:          THIS_MODULE,
-        o_get_info:       filter_get_info,
-        o_set_info:       filter_set_info,
-        o_setup:          filter_setup,
-        o_precleanup:     filter_precleanup,
-        o_cleanup:        filter_cleanup,
-        o_connect:        filter_connect,
-        o_disconnect:     filter_disconnect,
-        o_statfs:         filter_statfs,
-        o_getattr:        filter_getattr,
-        o_unpackmd:       filter_unpackmd,
-        o_create:         filter_create,
-        o_setattr:        filter_setattr,
-        o_destroy:        filter_destroy,
-        o_brw:            filter_brw,
-        o_punch:          filter_truncate,
-        o_sync:           filter_sync,
-        o_preprw:         filter_preprw,
-        o_commitrw:       filter_commitrw,
-        o_destroy_export: filter_destroy_export,
-        o_llog_init:      filter_llog_init,
-        o_llog_finish:    filter_llog_finish,
-        o_iocontrol:      filter_iocontrol,
+        .o_owner          = THIS_MODULE,
+        .o_get_info       = filter_get_info,
+        .o_set_info       = filter_set_info,
+        .o_setup          = filter_setup,
+        .o_precleanup     = filter_precleanup,
+        .o_cleanup        = filter_cleanup,
+        .o_connect        = filter_connect,
+        .o_disconnect     = filter_disconnect,
+        .o_statfs         = filter_statfs,
+        .o_getattr        = filter_getattr,
+        .o_unpackmd       = filter_unpackmd,
+        .o_create         = filter_create,
+        .o_setattr        = filter_setattr,
+        .o_destroy        = filter_destroy,
+        .o_brw            = filter_brw,
+        .o_punch          = filter_truncate,
+        .o_sync           = filter_sync,
+        .o_preprw         = filter_preprw,
+        .o_commitrw       = filter_commitrw,
+        .o_destroy_export = filter_destroy_export,
+        .o_llog_init      = filter_llog_init,
+        .o_llog_finish    = filter_llog_finish,
+        .o_iocontrol      = filter_iocontrol,
 };
 
 static struct obd_ops filter_sanobd_ops = {
-        o_owner:          THIS_MODULE,
-        o_get_info:       filter_get_info,
-        o_set_info:       filter_set_info,
-        o_setup:          filter_san_setup,
-        o_precleanup:     filter_precleanup,
-        o_cleanup:        filter_cleanup,
-        o_connect:        filter_connect,
-        o_disconnect:     filter_disconnect,
-        o_statfs:         filter_statfs,
-        o_getattr:        filter_getattr,
-        o_unpackmd:       filter_unpackmd,
-        o_create:         filter_create,
-        o_setattr:        filter_setattr,
-        o_destroy:        filter_destroy,
-        o_brw:            filter_brw,
-        o_punch:          filter_truncate,
-        o_sync:           filter_sync,
-        o_preprw:         filter_preprw,
-        o_commitrw:       filter_commitrw,
-        o_san_preprw:     filter_san_preprw,
-        o_destroy_export: filter_destroy_export,
-        o_llog_init:      filter_llog_init,
-        o_llog_finish:    filter_llog_finish,
-        o_iocontrol:      filter_iocontrol,
+        .o_owner          = THIS_MODULE,
+        .o_get_info       = filter_get_info,
+        .o_set_info       = filter_set_info,
+        .o_setup          = filter_san_setup,
+        .o_precleanup     = filter_precleanup,
+        .o_cleanup        = filter_cleanup,
+        .o_connect        = filter_connect,
+        .o_disconnect     = filter_disconnect,
+        .o_statfs         = filter_statfs,
+        .o_getattr        = filter_getattr,
+        .o_unpackmd       = filter_unpackmd,
+        .o_create         = filter_create,
+        .o_setattr        = filter_setattr,
+        .o_destroy        = filter_destroy,
+        .o_brw            = filter_brw,
+        .o_punch          = filter_truncate,
+        .o_sync           = filter_sync,
+        .o_preprw         = filter_preprw,
+        .o_commitrw       = filter_commitrw,
+        .o_san_preprw     = filter_san_preprw,
+        .o_destroy_export = filter_destroy_export,
+        .o_llog_init      = filter_llog_init,
+        .o_llog_finish    = filter_llog_finish,
+        .o_iocontrol      = filter_iocontrol,
 };
 
 static int __init obdfilter_init(void)
index 5ce65c7..c90d371 100644 (file)
@@ -95,22 +95,24 @@ static int filter_range_is_mapped(struct inode *inode, obd_size offset, int len)
         return 1;
 }
 
-int filter_commitrw_write(struct obd_export *exp, struct obdo *oa, int objcount,
-                          struct obd_ioobj *obj, int niocount,
+int filter_commitrw_write(struct obd_export *exp, struct obdo *oa,
+                          int objcount, struct obd_ioobj *obj, int niocount,
                           struct niobuf_local *res, struct obd_trans_info *oti,
                           int rc)
 {
-        struct obd_device *obd = exp->exp_obd;
-        struct obd_run_ctxt saved;
+        struct bio *bio = NULL;
+        int blocks_per_page, err;
         struct niobuf_local *lnb;
+        struct obd_run_ctxt saved;
         struct fsfilt_objinfo fso;
-        struct iattr iattr = { .ia_valid = ATTR_SIZE, .ia_size = 0, };
+        struct iattr iattr = { 0 };
         struct inode *inode = NULL;
-        int i, k, cleanup_phase = 0, err;
-        unsigned long now = jiffies; /* DEBUGGING OST TIMEOUTS */
-        int blocks_per_page;
-        struct dio_request *dreq;
-        struct bio *bio = NULL;
+        unsigned long now = jiffies;
+        int i, k, cleanup_phase = 0;
+
+        struct dio_request *dreq = NULL;
+        struct obd_device *obd = exp->exp_obd;
+
         ENTRY;
         LASSERT(oti != NULL);
         LASSERT(objcount == 1);
@@ -124,8 +126,10 @@ int filter_commitrw_write(struct obd_export *exp, struct obdo *oa, int objcount,
         LASSERT(blocks_per_page <= MAX_BLOCKS_PER_PAGE);
 
         OBD_ALLOC(dreq, sizeof(*dreq));
+
         if (dreq == NULL)
                 RETURN(-ENOMEM);
+
         dreq->bio_list = NULL;
         init_waitqueue_head(&dreq->wait);
         atomic_set(&dreq->numreqs, 0);
@@ -138,7 +142,9 @@ int filter_commitrw_write(struct obd_export *exp, struct obdo *oa, int objcount,
         push_ctxt(&saved, &obd->obd_ctxt, NULL);
         cleanup_phase = 2;
 
-        oti->oti_handle = fsfilt_brw_start(obd, objcount, &fso, niocount, res, oti);
+        oti->oti_handle = fsfilt_brw_start(obd, objcount, &fso,
+                                           niocount, res, oti);
+        
         if (IS_ERR(oti->oti_handle)) {
                 rc = PTR_ERR(oti->oti_handle);
                 CDEBUG(rc == -ENOSPC ? D_INODE : D_ERROR,
@@ -161,13 +167,13 @@ int filter_commitrw_write(struct obd_export *exp, struct obdo *oa, int objcount,
                     filter_range_is_mapped(inode, lnb->offset, lnb->len))
                         lnb->rc = 0;
 
-                if (lnb->rc) /* ENOSPC, network RPC error */
+                if (lnb->rc) /* ENOSPC, network RPC error, etc. */ 
                         continue;
 
                 /* get block number for next page */
                 rc = fsfilt_map_inode_page(obd, inode, lnb->page, dreq->blocks,
                                            dreq->created, 1);
-                if (rc)
+                if (rc != 0)
                         GOTO(cleanup, rc);
 
                 for (k = 0; k < blocks_per_page; k++) {
@@ -216,26 +222,30 @@ int filter_commitrw_write(struct obd_export *exp, struct obdo *oa, int objcount,
                 bio_put(bio);
         }
 
-        if (rc == 0) {
-                down(&inode->i_sem);
-                if (iattr.ia_size > inode->i_size) {
-                        CDEBUG(D_INFO, "setting i_size to "LPU64"\n",
-                               iattr.ia_size);
-                        fsfilt_setattr(obd, res->dentry, oti->oti_handle,
-                                       &iattr, 0);
-                }
-                up(&inode->i_sem);
+        down(&inode->i_sem);
+        if (iattr.ia_size > inode->i_size) {
+                CDEBUG(D_INFO, "setting i_size to "LPU64"\n",
+                       iattr.ia_size);
+                       
+                iattr.ia_valid |= ATTR_SIZE;
+                       
+                fsfilt_setattr(obd, res->dentry, oti->oti_handle,
+                               &iattr, 0);
         }
+        up(&inode->i_sem);
 
         if (time_after(jiffies, now + 15 * HZ))
                 CERROR("slow direct_io %lus\n", (jiffies - now) / HZ);
 
         rc = filter_finish_transno(exp, oti, rc);
+
         err = fsfilt_commit(obd, inode, oti->oti_handle, obd_sync_filter);
         if (err)
                 rc = err;
+
         if (obd_sync_filter)
                 LASSERT(oti->oti_transno <= obd->obd_last_committed);
+
         if (time_after(jiffies, now + 15 * HZ))
                 CERROR("slow commitrw commit %lus\n", (jiffies - now) / HZ);
 
index aa08aa5..3ca1fad 100644 (file)
@@ -179,15 +179,14 @@ static int filter_lvbo_update(struct ldlm_resource *res, struct lustre_msg *m,
                lvb->lvb_blocks, dentry->d_inode->i_blocks);
         lvb->lvb_blocks = dentry->d_inode->i_blocks;
 
- out_dentry:
+out_dentry:
         f_dput(dentry);
- out:
+
+out:
         up(&res->lr_lvb_sem);
         return rc;
 }
 
-
-
 struct ldlm_valblock_ops filter_lvbo = {
         lvbo_init: filter_lvbo_init,
         lvbo_update: filter_lvbo_update
index 49c6100..5d26f00 100644 (file)
@@ -3,7 +3,13 @@ config.log
 config.status
 configure
 Makefile
-Makefile.in
 .deps
 TAGS
 .*.cmd
+autoMakefile.in
+autoMakefile
+*.ko
+*.mod.c
+.*.flags
+.tmp_versions
+.depend
diff --git a/lustre/osc/Makefile.am b/lustre/osc/Makefile.am
deleted file mode 100644 (file)
index 0cb3bcd..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-# Copyright (C) 2001  Cluster File Systems, Inc.
-#
-# This code is issued under the GNU General Public License.
-# See the file COPYING in this distribution
-
-DEFS=
-
-if LIBLUSTRE
-noinst_LIBRARIES = libosc.a
-libosc_a_SOURCES = osc_request.c osc_lib.c osc_create.c osc_internal.h
-libosc_a_CFLAGS = -fPIC
-else
-MODULE = osc
-modulefs_DATA = osc.o
-EXTRA_PROGRAMS = osc
-osc_SOURCES = osc_request.c lproc_osc.c osc_lib.c  osc_create.c osc_internal.h
-endif
-
-include $(top_srcdir)/Rules
index 55b690f..8e65721 100644 (file)
@@ -2569,9 +2569,15 @@ static int osc_iocontrol(unsigned int cmd, struct obd_export *exp, int len,
         struct obd_ioctl_data *data = karg;
         int err = 0;
         ENTRY;
-        
-        MOD_INC_USE_COUNT;
 
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0))
+        MOD_INC_USE_COUNT;
+#else
+       if (!try_module_get(THIS_MODULE)) {
+               CERROR("Can't get module. Is it alive?");
+               return -EINVAL;
+       }
+#endif
         switch (cmd) {
         case OBD_IOC_LOV_GET_CONFIG: {
                 char *buf;
@@ -2635,7 +2641,11 @@ static int osc_iocontrol(unsigned int cmd, struct obd_export *exp, int len,
                 GOTO(out, err = -ENOTTY);
         }
 out:
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0))
         MOD_DEC_USE_COUNT;
+#else
+       module_put(THIS_MODULE);
+#endif
         return err;
 }
 
@@ -2921,80 +2931,85 @@ int osc_cleanup(struct obd_device *obd, int flags)
 
 
 struct obd_ops osc_obd_ops = {
-        o_owner:        THIS_MODULE,
-        o_setup:        osc_setup,
-        o_cleanup:      osc_cleanup,
-        o_connect:      osc_connect,
-        o_disconnect:   osc_disconnect,
-        o_statfs:       osc_statfs,
-        o_packmd:       osc_packmd,
-        o_unpackmd:     osc_unpackmd,
-        o_create:       osc_create,
-        o_destroy:      osc_destroy,
-        o_getattr:      osc_getattr,
-        o_getattr_async:osc_getattr_async,
-        o_setattr:      osc_setattr,
-        o_brw:          osc_brw,
-        o_brw_async:    osc_brw_async,
-        .o_prep_async_page =            osc_prep_async_page,
-        .o_queue_async_io =             osc_queue_async_io,
-        .o_set_async_flags =            osc_set_async_flags,
-        .o_queue_group_io =             osc_queue_group_io,
-        .o_trigger_group_io =           osc_trigger_group_io,
-        .o_teardown_async_page =        osc_teardown_async_page,
-        o_punch:        osc_punch,
-        o_sync:         osc_sync,
-        o_enqueue:      osc_enqueue,
-        o_match:        osc_match,
-        o_change_cbdata:osc_change_cbdata,
-        o_cancel:       osc_cancel,
-        o_cancel_unused:osc_cancel_unused,
-        o_iocontrol:    osc_iocontrol,
-        o_get_info:     osc_get_info,
-        o_set_info:     osc_set_info,
-        o_import_event: osc_import_event,
-        o_llog_init:    osc_llog_init,
-        o_llog_finish:  osc_llog_finish,
+        .o_owner                = THIS_MODULE,
+        .o_setup                = osc_setup,
+        .o_cleanup              = osc_cleanup,
+        .o_connect              = osc_connect,
+        .o_disconnect           = osc_disconnect,
+        .o_statfs               = osc_statfs,
+        .o_packmd               = osc_packmd,
+        .o_unpackmd             = osc_unpackmd,
+        .o_create               = osc_create,
+        .o_destroy              = osc_destroy,
+        .o_getattr              = osc_getattr,
+        .o_getattr_async        = osc_getattr_async,
+        .o_setattr              = osc_setattr,
+        .o_brw                  = osc_brw,
+        .o_brw_async            = osc_brw_async,
+        .o_prep_async_page      = osc_prep_async_page,
+        .o_queue_async_io       = osc_queue_async_io,
+        .o_set_async_flags      = osc_set_async_flags,
+        .o_queue_group_io       = osc_queue_group_io,
+        .o_trigger_group_io     = osc_trigger_group_io,
+        .o_teardown_async_page  = osc_teardown_async_page,
+        .o_punch                = osc_punch,
+        .o_sync                 = osc_sync,
+        .o_enqueue              = osc_enqueue,
+        .o_match                = osc_match,
+        .o_change_cbdata        = osc_change_cbdata,
+        .o_cancel               = osc_cancel,
+        .o_cancel_unused        = osc_cancel_unused,
+        .o_iocontrol            = osc_iocontrol,
+        .o_get_info             = osc_get_info,
+        .o_set_info             = osc_set_info,
+        .o_import_event         = osc_import_event,
+        .o_llog_init            = osc_llog_init,
+        .o_llog_finish          = osc_llog_finish,
 };
 
 #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0))
 struct obd_ops sanosc_obd_ops = {
-        o_owner:        THIS_MODULE,
-        o_cleanup:      client_obd_cleanup,
-        o_connect:      osc_connect,
-        o_disconnect:   client_disconnect_export,
-        o_statfs:       osc_statfs,
-        o_packmd:       osc_packmd,
-        o_unpackmd:     osc_unpackmd,
-        o_create:       osc_real_create,
-        o_destroy:      osc_destroy,
-        o_getattr:      osc_getattr,
-        o_getattr_async:osc_getattr_async,
-        o_setattr:      osc_setattr,
-        o_setup:        client_sanobd_setup,
-        o_brw:          sanosc_brw,
-        o_punch:        osc_punch,
-        o_sync:         osc_sync,
-        o_enqueue:      osc_enqueue,
-        o_match:        osc_match,
-        o_change_cbdata:osc_change_cbdata,
-        o_cancel:       osc_cancel,
-        o_cancel_unused:osc_cancel_unused,
-        o_iocontrol:    osc_iocontrol,
-        o_import_event: osc_import_event,
-        o_llog_init:    osc_llog_init,
-        o_llog_finish:  osc_llog_finish,
+        .o_owner                = THIS_MODULE,
+        .o_cleanup              = client_obd_cleanup,
+        .o_connect              = osc_connect,
+        .o_disconnect           = client_disconnect_export,
+        .o_statfs               = osc_statfs,
+        .o_packmd               = osc_packmd,
+        .o_unpackmd             = osc_unpackmd,
+        .o_create               = osc_real_create,
+        .o_destroy              = osc_destroy,
+        .o_getattr              = osc_getattr,
+        .o_getattr_async        = osc_getattr_async,
+        .o_setattr              = osc_setattr,
+        .o_setup                = client_sanobd_setup,
+        .o_brw                  = sanosc_brw,
+        .o_punch                = osc_punch,
+        .o_sync                 = osc_sync,
+        .o_enqueue              = osc_enqueue,
+        .o_match                = osc_match,
+        .o_change_cbdata        = osc_change_cbdata,
+        .o_cancel               = osc_cancel,
+        .o_cancel_unused        = osc_cancel_unused,
+        .o_iocontrol            = osc_iocontrol,
+        .o_import_event         = osc_import_event,
+        .o_llog_init            = osc_llog_init,
+        .o_llog_finish          = osc_llog_finish,
 };
 #endif
 
 int __init osc_init(void)
 {
-        struct lprocfs_static_vars lvars, sanlvars;
+        struct lprocfs_static_vars lvars;
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0))
+        struct lprocfs_static_vars sanlvars;
+#endif
         int rc;
         ENTRY;
 
         lprocfs_init_vars(osc, &lvars);
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0))
         lprocfs_init_vars(osc, &sanlvars);
+#endif
 
         rc = class_register_type(&osc_obd_ops, lvars.module_vars,
                                  LUSTRE_OSC_NAME);
@@ -3011,6 +3026,7 @@ int __init osc_init(void)
         RETURN(rc);
 }
 
+#ifdef __KERNEL__
 static void /*__exit*/ osc_exit(void)
 {
 #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0))
@@ -3019,7 +3035,6 @@ static void /*__exit*/ osc_exit(void)
         class_unregister_type(LUSTRE_OSC_NAME);
 }
 
-#ifdef __KERNEL__
 MODULE_AUTHOR("Cluster File Systems, Inc. <info@clusterfs.com>");
 MODULE_DESCRIPTION("Lustre Object Storage Client (OSC)");
 MODULE_LICENSE("GPL");
index 49c6100..5d26f00 100644 (file)
@@ -3,7 +3,13 @@ config.log
 config.status
 configure
 Makefile
-Makefile.in
 .deps
 TAGS
 .*.cmd
+autoMakefile.in
+autoMakefile
+*.ko
+*.mod.c
+.*.flags
+.tmp_versions
+.depend
diff --git a/lustre/ost/Makefile.am b/lustre/ost/Makefile.am
deleted file mode 100644 (file)
index b2e51c3..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-# Copyright (C) 2001  Cluster File Systems, Inc.
-#
-# This code is issued under the GNU General Public License.
-# See the file COPYING in this distribution
-
-DEFS= 
-
-MODULE = ost
-modulefs_DATA = ost.o
-EXTRA_PROGRAMS = ost
-ost_SOURCES = ost_handler.c lproc_ost.c
-
-include $(top_srcdir)/Rules
index f1c5e45..b778df5 100644 (file)
@@ -1162,7 +1162,7 @@ static int ost_setup(struct obd_device *obd, obd_count len, void *buf)
         }
 
         rc = ptlrpc_start_n_threads(obd, ost->ost_create_service, 1,
-                                    "ll_ost_create");
+                                    "ll_ost_creat");
         if (rc)
                 GOTO(out_create, rc = -EINVAL);
 
@@ -1203,9 +1203,9 @@ static int ost_cleanup(struct obd_device *obd, int flags)
 
 /* use obd ops to offer management infrastructure */
 static struct obd_ops ost_obd_ops = {
-        o_owner:        THIS_MODULE,
-        o_setup:        ost_setup,
-        o_cleanup:      ost_cleanup,
+        .o_owner        = THIS_MODULE,
+        .o_setup        = ost_setup,
+        .o_cleanup      = ost_cleanup,
 };
 
 static int __init ost_init(void)
index c1a9bdf..f30d862 100644 (file)
@@ -1,9 +1,11 @@
 Kernelenv
 Makefile
-Makefile.in
+autoMakefile
+autoMakefile.in
 aclocal.m4
 autom4te.cache
 config.log
 config.status
 configure
-.*.o.cmd
+.*.cmd
+.depend
diff --git a/lustre/portals/Makefile.am b/lustre/portals/Makefile.am
deleted file mode 100644 (file)
index 1a223f2..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-# Copyright (C) 2001  Cluster File Systems, Inc.
-#
-# This code is issued under the GNU General Public License.
-# See the file COPYING in this distribution
-
-EXTRA_DIST = Rules.linux archdep.m4 include 
-DIST_SUBDIRS = libcfs portals knals unals utils tests doc router
-if LIBLUSTRE
-SUBDIRS = portals unals utils
-else
-SUBDIRS = libcfs portals knals unals utils tests doc router
-endif
diff --git a/lustre/portals/Rules.linux b/lustre/portals/Rules.linux
deleted file mode 100644 (file)
index 232a248..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-# included in Linux kernel directories
-# Rules for module building
-
-if LINUX25
-
-basename=$(shell echo $< | sed -e 's/\.c//g' | sed -e 's/-//g' | sed -e 's/\.o//g' | sed -e 's/^.*\///g')
-AM_CPPFLAGS= -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -pipe -mpreferred-stack-boundary=2  -DKBUILD_MODNAME=$(MODULE) -DKBUILD_BASENAME=$(basename)
-
-$(MODULE).o: $($(MODULE)_OBJECTS) $($(MODULE)_DEPENDENCIES)
-       $(LD) -m $(MOD_LINK) -r -o $(MODULE)_tmp.o $($(MODULE)_OBJECTS)
-       rm -f $(MODULE)_tmp.c
-       $(LINUX)/scripts/modpost $(LINUX)/vmlinux $(MODULE)_tmp.o
-       $(COMPILE) -UKBUILD_BASENAME -DKBUILD_BASENAME=$(MODULE) -c $(MODULE)_tmp.mod.c
-       $(LD) -m $(MOD_LINK) -r -o $(MODULE).o $(MODULE)_tmp.o $(MODULE)_tmp.mod.o
-
-else
-
-$(MODULE).o: $($(MODULE)_OBJECTS)
-       $(LD) -m $(MOD_LINK) -r -o $(MODULE).o $($(MODULE)_OBJECTS)
-
-endif
-
-tags:
-       rm -f $(top_srcdir)/TAGS
-       rm -f $(top_srcdir)/tags
-       find $(top_srcdir)/../portals/ -name '*.[hc]' | xargs etags -a
-       find $(top_srcdir) -name '*.[hc]' | grep -v ".orig" | xargs etags -a
-       find $(top_srcdir)/../portals/ -name '*.[hc]' | xargs ctags -a
-       find $(top_srcdir) -name '*.[hc]' | grep -v ".orig" | xargs ctags -a
index e9eef5e..95c9b4a 100644 (file)
@@ -1,15 +1,46 @@
+# -------- we can't build modules unless srcdir = builddir
+if test x$enable_modules != xno ; then
+AC_CHECK_FILE([autoMakefile.am],[],
+       [AC_MSG_ERROR([At this time, Lustre does not support building kernel modules with srcdir != buildir.])])
+fi
 
 # -------- in kernel compilation? (2.5 only) -------------
-AC_ARG_ENABLE(inkernel, [  --enable-inkernel set up 2.5 kernel makefiles])
+AC_MSG_CHECKING([if inkernel build support is requested])
+AC_ARG_ENABLE([inkernel],
+       AC_HELP_STRING([--enable-inkernel],
+                      [set up 2.5 kernel makefiles]),
+       [],[enable_inkernel=no])
+AC_MSG_RESULT([$enable_inkernel])
 AM_CONDITIONAL(INKERNEL, test x$enable_inkernel = xyes)
-echo "Makefile for in kernel build: $INKERNEL"
 
-# -------- liblustre compilation --------------
-AC_ARG_WITH(lib, [  --with-lib compile lustre library], host_cpu="lib")
+# -------- are we building against an external portals? -------
+AC_MSG_CHECKING([if Cray portals should be used])
+AC_ARG_WITH([cray-portals],
+       AC_HELP_STRING([--with-cray-portals=path],
+                      [path to cray portals]),
+       [
+               CRAY_PORTALS_INCLUDE="-I$with_cray_portals"
+               AC_DEFINE(CRAY_PORTALS, 1, [Building with Cray Portals])
+       ],[with_cray_portals=no])
+AC_MSG_RESULT([$with_cray_portals])
+AM_CONDITIONAL(CRAY_PORTALS, test x$with_cray_portals != xno)
+if test x$enable_tests = xno ; then
+       AC_MSG_NOTICE([disabling tests])
+       enable_tests=no
+fi
+if test x$enable_utils = xno ; then
+       AC_MSG_NOTICE([disabling utilities])
+       enable_utils=no
+fi
 
 # -------- set linuxdir ------------
-
-AC_ARG_WITH(linux, [  --with-linux=[path] set path to Linux source (default=/usr/src/linux)],LINUX=$with_linux,LINUX=/usr/src/linux)
+AC_MSG_CHECKING([for Linux sources])
+AC_ARG_WITH([linux],
+       AC_HELP_STRING([--with-linux=path],
+                      [set path to Linux source (default=/usr/src/linux)]),
+       [LINUX=$with_linux],
+       [LINUX=/usr/src/linux])
+AC_MSG_RESULT([$LINUX])
 AC_SUBST(LINUX)
 if test x$enable_inkernel = xyes ; then
         echo ln -s `pwd` $LINUX/fs/lustre
@@ -17,200 +48,196 @@ if test x$enable_inkernel = xyes ; then
         ln -s `pwd` $LINUX/fs/lustre
 fi
 
-#  --------------------
-AC_MSG_CHECKING(if you are running user mode linux for $host_cpu ...)
-if test $host_cpu = "lib" ; then 
-        host_cpu="lib"
-       AC_MSG_RESULT(no building Lustre library)
-else
-  if test -e $LINUX/include/asm-um ; then
-    if test  X`ls -id $LINUX/include/asm/ | awk '{print $1}'` = X`ls -id $LINUX/include/asm-um | awk '{print $1}'` ; then
-       host_cpu="um";
-       AC_MSG_RESULT(yes)
-    else
-       AC_MSG_RESULT(no (asm doesn't point at asm-um))
-    fi
+# -------- check for .confg --------
+AC_ARG_WITH([linux-config],
+       [AC_HELP_STRING([--with-linux-config=path],
+                       [set path to Linux .conf (default=\$LINUX/.config)])],
+       [LINUX_CONFIG=$with_linux_config],
+       [LINUX_CONFIG=$LINUX/.config])
+AC_SUBST(LINUX_CONFIG)
 
-  else 
-        AC_MSG_RESULT(no (asm-um missing))
-  fi
-fi
+AC_CHECK_FILE([/boot/kernel.h],
+       [KERNEL_SOURCE_HEADER='/boot/kernel.h'],
+       [AC_CHECK_FILE([/var/adm/running-kernel.h]),
+               [KERNEL_SOURCE_HEADER='/var/adm/running-kernel.h']])
 
-# --------- Linux 25 ------------------
+AC_ARG_WITH([kernel-source-header],
+       AC_HELP_STRING([--with-kernel-source-header=path],
+                       [Use a different kernel version header.  Consult README.kernel-source for details.]),
+       [KERNEL_SOURCE_HEADER=$with_kernel_source_header])
 
-AC_MSG_CHECKING(if you are running linux 2.5)
-if test -e $LINUX/include/linux/namei.h ; then
-        linux25="yes"
-        AC_MSG_RESULT(yes)
-else
-        linux25="no"
-        AC_MSG_RESULT(no)
+#  --------------------
+ARCH_UM=
+UML_CFLAGS=
+if test x$enable_modules != xno ; then
+       AC_MSG_CHECKING([if you are running user mode linux for $host_cpu])
+       if test -e $LINUX/include/asm-um ; then
+               if test  X`ls -id $LINUX/include/asm/ | awk '{print $1}'` = X`ls -id $LINUX/include/asm-um | awk '{print $1}'` ; then
+                       ARCH_UM='ARCH=um'
+                       # see notes in Rules.in
+                       UML_CFLAGS='-O0'
+                       AC_MSG_RESULT(yes)
+               else
+                       AC_MSG_RESULT([no (asm doesn't point at asm-um)])
+               fi
+       else
+               AC_MSG_RESULT([no (asm-um missing)])
+       fi
 fi
+AC_SUBST(ARCH_UM)
+AC_SUBST(UML_CFLAGS)
+# --------- Linux 25 ------------------
+
+AC_CHECK_FILE([$LINUX/include/linux/namei.h],
+       [
+               linux25="yes"
+               KMODEXT=".ko"
+       ],[
+               KMODEXT=".o"
+               linux25="no"
+       ])
+AC_MSG_CHECKING([if you are using Linux 2.6])
+AC_MSG_RESULT([$linux25])
 AM_CONDITIONAL(LINUX25, test x$linux25 = xyes)
-echo "Makefiles for in linux 2.5 build: $LINUX25"
+AC_SUBST(KMODEXT)
 
 # -------  Makeflags ------------------
 
-AC_MSG_CHECKING(setting make flags system architecture: )
-case ${host_cpu} in
-       lib )
-       AC_MSG_RESULT($host_cpu)
-       KCFLAGS='-g -Wall '
-       KCPPFLAGS='-D__arch_lib__ '
-       libdir='${exec_prefix}/lib/lustre'
-        MOD_LINK=elf_i386
-;;
-       um )
-       AC_MSG_RESULT($host_cpu)
-       KCFLAGS='-g -Wall -pipe -Wno-trigraphs -Wstrict-prototypes -fno-strict-aliasing -fno-common '
-        case ${linux25} in
-                yes )
-                KCPPFLAGS='-D__KERNEL__ -U__i386__ -Ui386 -DUM_FASTCALL -D__arch_um__ -DSUBARCH="i386" -DNESTING=0 -D_LARGEFILE64_SOURCE  -Derrno=kernel_errno -DPATCHLEVEL=4 -DMODULE -I$(LINUX)/arch/um/include -I$(LINUX)/arch/um/kernel/tt/include -I$(LINUX)/arch/um/kernel/skas/include -O2 -nostdinc -iwithprefix include'
-        ;;
-                * )
-                KCPPFLAGS='-D__KERNEL__ -U__i386__ -Ui386 -DUM_FASTCALL -D__arch_um__ -DSUBARCH="i386" -DNESTING=0 -D_LARGEFILE64_SOURCE  -Derrno=kernel_errno -DPATCHLEVEL=4 -DMODULE -I$(LINUX)/arch/um/kernel/tt/include -I$(LINUX)/arch/um/include '
-        ;;
-        esac
-
-        MOD_LINK=elf_i386
-;;
-       i*86 )
-       AC_MSG_RESULT($host_cpu)
-        KCFLAGS='-g -O2 -Wall -Wstrict-prototypes -pipe'
-        case ${linux25} in
-                yes )
-                KCPPFLAGS='-D__KERNEL__ -DMODULE -march=i686 -I$(LINUX)/include/asm-i386/mach-default -nostdinc -iwithprefix include '
-        ;;
-                * )
-                KCPPFLAGS='-D__KERNEL__ -DMODULE '
-        ;;
-        esac
-        MOD_LINK=elf_i386
-;;
-
-       alphaev6 )
-       AC_MSG_RESULT($host_cpu)
-        KCFLAGS='-g -O2  -Wall -Wstrict-prototypes -Wno-trigraphs -fomit-frame-pointer -fno-strict-aliasing -fno-common -pipe -mno-fp-regs -ffixed-8 -mcpu=ev5 -Wa,-mev6'
-        KCPPFLAGS='-D__KERNEL__ -DMODULE '
-        MOD_LINK=elf64alpha
-;;
-
-       alphaev67 )
-       AC_MSG_RESULT($host_cpu)
-        KCFLAGS='-g -O2  -Wall -Wstrict-prototypes -Wno-trigraphs -fomit-frame-pointer -fno-strict-aliasing -fno-common -pipe -mno-fp-regs -ffixed-8 -mcpu=ev5 -Wa,-mev6'
-        KCPPFLAGS='-D__KERNEL__ -DMODULE '
-        MOD_LINK=elf64alpha
-;;
-
-       alpha* )
-       AC_MSG_RESULT($host_cpu)
-        KCFLAGS='-g -O2  -Wall -Wstrict-prototypes -Wno-trigraphs -fomit-frame-pointer -fno-strict-aliasing -fno-common -pipe -mno-fp-regs -ffixed-8 -mcpu=ev5 -Wa,-mev5'
-        KCPPFLAGS='-D__KERNEL__ -DMODULE '
-        MOD_LINK=elf64alpha
-;;
-
-       ia64 )
-       AC_MSG_RESULT($host_cpu)
-        KCFLAGS='-g -O2 -Wall -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -pipe -ffixed-r13 -mfixed-range=f10-f15,f32-f127 -falign-functions=32 -mb-step'
-       KCPPFLAGS='-D__KERNEL__ -DMODULE'
-        MOD_LINK=elf64_ia64
-;;
-
-       x86_64 )
-       AC_MSG_RESULT($host_cpu)
-        KCFLAGS='-g -O2 -Wall -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -fomit-frame-pointer -mno-red-zone -mcmodel=kernel -pipe -fno-reorder-blocks -finline-limit=2000 -fno-strength-reduce -fno-asynchronous-unwind-tables'
-       KCPPFLAGS='-D__KERNEL__ -DMODULE'
-        MOD_LINK=elf_x86_64
-;;
-
-       sparc64 )
-       AC_MSG_RESULT($host_cpu)
-        KCFLAGS='-O2 -Wall -Wstrict-prototypes -Wno-trigraphs -fomit-frame-pointer -fno-strict-aliasing -fno-common -Wno-unused -m64 -pipe -mno-fpu -mcpu=ultrasparc -mcmodel=medlow -ffixed-g4 -fcall-used-g5 -fcall-used-g7 -Wno-sign-compare -Wa,--undeclared-regs'
-        KCPPFLAGS='-D__KERNEL__'
-        MOD_LINK=elf64_sparc
-
-;;
-
-       powerpc )
-       AC_MSG_RESULT($host_cpu)
-        KCFLAGS='-O2 -g -Wall -Wstrict-prototypes -Wno-trigraphs -fomit-frame-pointer -fno-strict-aliasing -fno-common -D__powerpc__ -fsigned-char -msoft-float -pipe -ffixed-r2 -Wno-uninitialized -mmultiple -mstring'
-        KCPPFLAGS='-D__KERNEL__ -DMODULE'
-        MOD_LINK=elf32ppclinux
-;;
-
-        *)
-       AC_ERROR("Unknown Linux Platform: $host_cpu")
-;;
-esac
-
-# ----------- make dep run? ------------------
-
-if test $host_cpu != "lib" ; then 
-  AC_MSG_CHECKING(if make dep has been run in kernel source (host $host_cpu) )
-  if test -f $LINUX/include/linux/config.h ; then
-  AC_MSG_RESULT(yes)
- else
-  AC_MSG_ERROR(** cannot find $LINUX/include/linux/config.h. Run make dep in $LINUX.)
-  fi
+CPPFLAGS="$CRAY_PORTALS_INCLUDE $CRAY_PORTALS_COMMANDLINE -I\$(top_srcdir)/include -I\$(top_srcdir)/portals/include"
+
+# liblustre are all the same
+LLCPPFLAGS="-D__arch_lib__ -D_LARGEFILE64_SOURCE=1"
+AC_SUBST(LLCPPFLAGS)
+
+LLCFLAGS="-g -Wall -fPIC"
+AC_SUBST(LLCFLAGS)
+
+# everyone builds against portals and lustre
+
+if test x$enable_ldiskfs = xyes ; then
+       AC_DEFINE(CONFIG_LDISKFS_FS_MODULE, 1, [build ldiskfs as a module])
+       AC_DEFINE(CONFIG_LDISKFS_FS_XATTR, 1, [enable extended attributes for ldiskfs])
+       AC_DEFINE(CONFIG_LDISKFS_FS_POSIX_ACL, 1, [enable posix acls])
+       AC_DEFINE(CONFIG_LDISKFS_FS_SECURITY, 1, [enable fs security])
 fi
 
+EXTRA_KCFLAGS="-g $CRAY_PORTALS_INCLUDE $CRAY_PORTALS_COMMANDLINE -I$PWD/portals/include -I$PWD/include"
+
+# these are like AC_TRY_COMPILE, but try to build modules against the
+# kernel, inside the kernel-tests directory
+
+AC_DEFUN([LUSTRE_MODULE_CONFTEST],
+[cat >conftest.c <<_ACEOF
+$1
+_ACEOF
+])
+
+AC_DEFUN([LUSTRE_MODULE_COMPILE_IFELSE],
+[m4_ifvaln([$1], [LUSTRE_MODULE_CONFTEST([$1])])dnl
+rm -f kernel-tests/conftest.o kernel-tests/conftest.mod.c kernel-tests/conftest.ko
+AS_IF([AC_TRY_COMMAND(cp conftest.c kernel-tests && make [$2] -f $PWD/kernel-tests/Makefile LUSTRE_LINUX_CONFIG=$LINUX_CONFIG -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX EXTRA_CFLAGS="$EXTRA_KCFLAGS" $ARCH_UM SUBDIRS=$PWD/kernel-tests) >/dev/null && AC_TRY_COMMAND([$3])],
+       [$4],
+       [_AC_MSG_LOG_CONFTEST
+m4_ifvaln([$5],[$5])dnl])dnl
+rm -f kernel-tests/conftest.o kernel-tests/conftest.mod.c kernel-tests/conftest.mod.o kernel-tests/conftest.ko m4_ifval([$1], [kernel-tests/conftest.c conftest.c])[]dnl
+])
+
+AC_DEFUN([LUSTRE_MODULE_TRY_COMPILE],
+[LUSTRE_MODULE_COMPILE_IFELSE(
+       [AC_LANG_PROGRAM([[$1]], [[$2]])],
+       [modules],
+       [test -s kernel-tests/conftest.o],
+       [$3], [$4])])
+
+AC_DEFUN([LUSTRE_MODULE_TRY_MAKE],
+[LUSTRE_MODULE_COMPILE_IFELSE([AC_LANG_PROGRAM([[$1]], [[$2]])], [$3], [$4], [$5], [$6])])
+
 # ------------ include paths ------------------
 
-if test $host_cpu != "lib" ; then 
-    KINCFLAGS="-I\$(top_srcdir)/include -I\$(top_srcdir)/portals/include -I$LINUX/include"
-else
-    KINCFLAGS='-I$(top_srcdir)/include -I$(top_srcdir)/portals/include'
-fi
-CPPFLAGS="$KINCFLAGS $ARCHCPPFLAGS"
-
-if test $host_cpu != "lib" ; then 
-# ------------ autoconf.h ------------------
-  AC_MSG_CHECKING(if autoconf.h is in kernel source)
-  if test -f $LINUX/include/linux/autoconf.h ; then
-      AC_MSG_RESULT(yes)
-  else
-      AC_MSG_ERROR(** cannot find $LINUX/include/linux/autoconf.h. Run make config in $LINUX.)
-  fi
-
-# ------------ LINUXRELEASE and moduledir ------------------
-  AC_MSG_CHECKING(for Linux release)
-  
-  dnl We need to rid ourselves of the nasty [ ] quotes.
-  changequote(, )
-  dnl Get release from version.h
-  LINUXRELEASE="`sed -ne 's/.*UTS_RELEASE[ \"]*\([0-9.a-zA-Z_-]*\).*/\1/p' $LINUX/include/linux/version.h`"
-  changequote([, ])
-  
-  moduledir='$(libdir)/modules/'$LINUXRELEASE/kernel
-  AC_SUBST(moduledir)
-  
-  modulefsdir='$(moduledir)/fs/$(PACKAGE)'
-  AC_SUBST(modulefsdir)
-  
-  AC_MSG_RESULT($LINUXRELEASE)
-  AC_SUBST(LINUXRELEASE)
-
-# ------------ RELEASE --------------------------------
-  AC_MSG_CHECKING(lustre release)
-  
-  dnl We need to rid ourselves of the nasty [ ] quotes.
-  changequote(, )
-  dnl Get release from version.h
-  RELEASE="`sed -ne 's/-/_/g' -e 's/.*UTS_RELEASE[ \"]*\([0-9.a-zA-Z_]*\).*/\1/p' $LINUX/include/linux/version.h`_`date +%Y%m%d%H%M`"
-  changequote([, ])
-
-  AC_MSG_RESULT($RELEASE)
-  AC_SUBST(RELEASE)
-
-# ---------- modversions? --------------------
-  AC_MSG_CHECKING(for MODVERSIONS)
-  if egrep -e 'MODVERSIONS.*1' $LINUX/include/linux/autoconf.h >/dev/null 2>&1;
-  then
-       if test $linux25 != "yes"; then
-                MFLAGS="-DMODULE -DMODVERSIONS -include $LINUX/include/linux/modversions.h -DEXPORT_SYMTAB"
-                AC_MSG_RESULT(yes)
-        fi
-  fi
+if test x$enable_modules != xno ; then
+       # ------------ .config exists ----------------
+       AC_CHECK_FILE([$LINUX_CONFIG],[],
+               [AC_MSG_ERROR([Kernel config could not be found.  If you are building from a kernel-source rpm consult README.kernel-source])])
+
+       # ----------- make dep run? ------------------
+       AC_CHECK_FILES([$LINUX/include/linux/autoconf.h
+                       $LINUX/include/linux/version.h
+                       $LINUX/include/linux/config.h],[],
+               [AC_MSG_ERROR([Run make config in $LINUX.])])
+
+       # ------------ rhconfig.h includes runtime-generated bits --
+       # red hat kernel-source checks
+
+       # we know this exists after the check above.  if the user
+       # tarred up the tree and ran make dep etc. in it, then
+       # version.h gets overwritten with a standard linux one.
+
+       if grep rhconfig $LINUX/include/linux/version.h >/dev/null ; then
+               # This is a clean kernel-source tree, we need to
+               # enable extensive workarounds to get this to build
+               # modules
+               AC_CHECK_FILE([$KERNEL_SOURCE_HEADER],
+                       [if test $KERNEL_SOURCE_HEADER = '/boot/kernel.h' ; then
+                               AC_MSG_WARN([Using /boot/kernel.h from RUNNING kernel.])
+                               AC_MSG_WARN([If this is not what you want, use --with-kernel-source-header.])
+                               AC_MSG_WARN([Consult README.kernel-source for details.])
+                       fi],
+                       [AC_MSG_ERROR([$KERNEL_SOURCE_HEADER not found.  Consult README.kernel-source for details.])])
+               EXTRA_KCFLAGS="-include $KERNEL_SOURCE_HEADER $EXTRA_KCFLAGS"
+       fi
+
+       # --- check that we can build modules at all
+       AC_MSG_CHECKING([that modules can be built])
+       LUSTRE_MODULE_TRY_COMPILE([],[],
+               [
+                       AC_MSG_RESULT([yes])
+               ],[
+                       AC_MSG_RESULT([no])
+                       AC_MSG_WARN([Consult config.log for details.])
+                       AC_MSG_WARN([If you are trying to build with a kernel-source rpm, consult README.kernel-source])
+                       AC_MSG_ERROR([Kernel modules could not be built.])
+               ])
+
+       # ------------ LINUXRELEASE and moduledir ------------------
+       AC_MSG_CHECKING([for Linux release])
+       rm -f kernel-tests/conftest.i
+       LINUXRELEASE=
+       if test $linux25 = 'yes' ; then
+               makerule="$PWD/kernel-tests"
+       else
+               makerule="_dir_$PWD/kernel-tests"
+       fi
+       LUSTRE_MODULE_TRY_MAKE(
+               [#include <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 --------------------
@@ -223,204 +250,328 @@ fi
 #fi
 #AC_SUBST(usrprefix)
 
-AC_MSG_CHECKING(if kernel has CPU affinity support)
-SET_CPUS_ALLOW="`grep -c set_cpus_allowed $LINUX/kernel/softirq.c`"
-if test "$SET_CPUS_ALLOW" != 0 ; then
-  enable_affinity_temp="-DCPU_AFFINITY=1"
-  AC_MSG_RESULT(yes)
+AC_MSG_CHECKING([for zero-copy TCP support])
+AC_ARG_ENABLE([zerocopy],
+       AC_HELP_STRING([--disable-zerocopy],
+                      [disable socknal zerocopy]),
+       [],[enable_zerocopy='yes'])
+if test x$enable_zerocopy = xno ; then
+       AC_MSG_RESULT([no (by request)])
 else
-  enable_affinity_temp=""
-  AC_MSG_RESULT(no)
+       ZCCD="`grep -c zccd $LINUX/include/linux/skbuff.h`"
+       if test "$ZCCD" != 0 ; then
+               AC_DEFINE(SOCKNAL_ZC, 1, [use zero-copy TCP])
+               AC_MSG_RESULT(yes)
+       else
+               AC_MSG_RESULT([no (no kernel support)])
+       fi
 fi
 
-AC_MSG_CHECKING(if kernel has zero-copy TCP support)
-ZCCD="`grep -c zccd $LINUX/include/linux/skbuff.h`"
-if test "$ZCCD" != 0 ; then
-  enable_zerocopy_temp="-DSOCKNAL_ZC=1"
-  AC_MSG_RESULT(yes)
+AC_MSG_CHECKING([for CPU affinity support])
+AC_ARG_ENABLE([affinity],
+       AC_HELP_STRING([--disable-affinity],
+                      [disable process/irq affinity]),
+       [],[enable_affinity='yes'])
+if test x$enable_affinity = xno ; then
+       AC_MSG_RESULT([no (by request)])
 else
-  enable_zerocopy_temp=""
-  AC_MSG_RESULT(no)
+       SET_CPUS_ALLOW="`grep -c set_cpus_allowed $LINUX/kernel/softirq.c`"
+       if test "$SET_CPUS_ALLOW" != 0 ; then
+               AC_DEFINE(CPU_AFFINITY, 1, [kernel has cpu affinity support])
+               AC_MSG_RESULT([yes])
+       else
+               AC_MSG_RESULT([no (no kernel support)])
+       fi
 fi
 
-AC_ARG_ENABLE(zerocopy, [  --disable-zerocopy disable socknal zerocopy],enable_zerocopy="", enable_zerocopy=$enable_zerocopy_temp)
 
-AC_ARG_ENABLE(affinity, [  --disable-affinity disable process/irq affinity],enable_affinity="", enable_affinity=$enable_affinity_temp)
 #####################################
 
-AC_MSG_CHECKING(if quadrics kernel headers are present)
+AC_MSG_CHECKING([if quadrics kernel headers are present])
 if test -d $LINUX/drivers/net/qsnet ; then
-  AC_MSG_RESULT(yes)
-  QSWNAL="qswnal"
-  AC_MSG_CHECKING(for multirail EKC)
-  if test -f $LINUX/include/elan/epcomms.h; then
-       AC_MSG_RESULT(supported)
-       with_quadrics="-DMULTIRAIL_EKC=1"
-  else
-       AC_MSG_RESULT(not supported)
-       with_quadrics="-I$LINUX/drivers/net/qsnet/include"
-  fi
-  :
+       AC_MSG_RESULT([yes])
+       QSWNAL="qswnal"
+       AC_MSG_CHECKING([for multirail EKC])
+       if test -f $LINUX/include/elan/epcomms.h; then
+               AC_MSG_RESULT([supported])
+               QSWCPPFLAGS="-DMULTIRAIL_EKC=1"
+       else
+               AC_MSG_RESULT([not supported])
+               QSWCPPFLAGS="-I$LINUX/drivers/net/qsnet/include"
+       fi
 else
-  AC_MSG_RESULT(no)
-  QSWNAL=""
-  with_quadrics=""
-  :
+       AC_MSG_RESULT([no])
+       QSWNAL=""
+       QSWCPPFLAGS=""
 fi
-AC_SUBST(with_quadrics)
+AC_SUBST(QSWCPPFLAGS)
 AC_SUBST(QSWNAL)
-
-# R. Read 5/02
-GMNAL=""
-echo "checking with-gm=" ${with_gm}
-if test "${with_gm+set}" = set; then
-  if test "${with_gm}" = yes; then
-    with_gm="-I/usr/local/gm/include"
-  else
-    with_gm="-I$with_gm/include -I$with_gm/drivers -I$with_gm/drivers/linux/gm"
-  fi
-  GMNAL="gmnal"
-else
-# default case - no GM
-  with_gm=""
-fi
-AC_SUBST(with_gm)
+AM_CONDITIONAL(BUILD_QSWNAL, test x$QSWNAL = "xqswnal")
+
+AC_MSG_CHECKING([if gm support was requested])
+AC_ARG_WITH([gm],
+       AC_HELP_STRING([--with-gm=path],
+                      [build gmnal against path]),
+       [
+               case $with_gm in 
+                       yes)
+                               AC_MSG_RESULT([yes])
+                               GMCPPFLAGS="-I/usr/local/gm/include"
+                               GMNAL="gmnal"
+                               ;;
+                       no)
+                               AC_MSG_RESULT([no])
+                               GMCPPFLAGS=""
+                               GMNAL=""
+                               ;;
+                       *)
+                               AC_MSG_RESULT([yes])
+                               GMCPPFLAGS="-I$with_gm/include -I$with_gm/drivers -I$with_gm/drivers/linux/gm"
+                               GMNAL="gmnal"
+                               ;;
+               esac
+       ],[
+               AC_MSG_RESULT([no])
+               GMCPPFLAGS=""
+               GMNAL=""
+       ])
+AC_SUBST(GMCPPFLAGS)
 AC_SUBST(GMNAL)
-
+AM_CONDITIONAL(BUILD_GMNAL, test x$GMNAL = "xgmnal")
 
 #fixme: where are the default IB includes?
 default_ib_include_dir=/usr/local/ib/include
 an_ib_include_file=vapi.h
 
-AC_ARG_WITH(ib, [  --with-ib=[yes/no/path] Path to IB includes], with_ib=$withval, with_ib=$default_ib)
-AC_MSG_CHECKING(if IB headers are present)
-if test "$with_ib" = yes; then
-    with_ib=$default_ib_include_dir
-fi
-if test "$with_ib" != no -a -f ${with_ib}/${an_ib_include_file}; then
-    AC_MSG_RESULT(yes)
-    IBNAL="ibnal"
-    with_ib="-I${with_ib}"
-else
-    AC_MSG_RESULT(no)
-    IBNAL=""
-    with_ib=""
-fi
+AC_MSG_CHECKING([if ib nal support was requested])
+AC_ARG_WITH([ib],
+       AC_HELP_STRING([--with-ib=yes/no/path],
+                      [Path to IB includes]),
+       [
+               case $with_ib in
+                       yes)
+                               AC_MSG_RESULT([yes])
+                               IBCPPFLAGS="-I/usr/local/ib/include"
+                               IBNAL="ibnal"
+                               ;;
+                       no)
+                               AC_MSG_RESULT([no])
+                               IBCPPFLAGS=""
+                               IBNAL=""
+                               ;;
+                       *)
+                               AC_MSG_RESULT([yes])
+                               IBCPPFLAGS="-I$with_ib"
+                               IBNAL=""
+                               ;;
+               esac
+       ],[
+               AC_MSG_RESULT([no])
+               IBFLAGS=""
+               IBNAL=""
+       ])
 AC_SUBST(IBNAL)
-AC_SUBST(with_ib)
-
+AC_SUBST(IBCPPFLAGS)
+AM_CONDITIONAL(BUILD_IBNAL, test x$IBNAL = "xibnal")
 
 def_scamac=/opt/scali/include
-AC_ARG_WITH(scamac, [  --with-scamac=[yes/no/path] Path to ScaMAC includes (default=/opt/scali/include)], with_scamac=$withval, with_scamac=$def_scamac)
-AC_MSG_CHECKING(if ScaMAC headers are present)
-if test "$with_scamac" = yes; then
-  with_scamac=$def_scamac
-fi
-if test "$with_scamac" != no -a -f ${with_scamac}/scamac.h; then
-  AC_MSG_RESULT(yes)
-  SCIMACNAL="scimacnal"
-  with_scamac="-I${with_scamac} -I${with_scamac}/icm"
-else
-  AC_MSG_RESULT(no)
-  SCIMACNAL=""
-  with_scamac=""
-fi
-
-AC_SUBST(with_scamac)
+AC_MSG_CHECKING([if ScaMAC support was requested])
+AC_ARG_WITH([scamac],
+       AC_HELP_STRING([--with-scamac=yes/no/path],
+                      [Path to ScaMAC includes (default=/opt/scali/include)]),
+       [
+               case $with_scamac in
+                       yes)
+                               AC_MSG_RESULT([yes])
+                               SCIMACCPPFLAGS="-I/opt/scali/include"
+                               SCIMACNAL="scimacnal"
+                               ;;
+                       no)
+                               AC_MSG_RESULT([no])
+                               SCIMACCPPFLAGS=""
+                               SCIMACNAL=""
+                               ;;
+                       *)
+                               AC_MSG_RESULT([yes])
+                               SCIMACCPPFLAGS="-I$with_scamac -I$with_scamac/icm"
+                               SCIMACNAL="scimacnal"
+                               ;;
+               esac
+       ],[
+               AC_MSG_RESULT([no])
+               SCIMACCPPFLAGS=""
+               SCIMACNAL=""
+       ])
+AC_SUBST(SCIMACCPPFLAGS)
 AC_SUBST(SCIMACNAL)
+AM_CONDITIONAL(BUILD_SCIMACNAL, test x$SCIMACNAL = "xscimacnal")
+# if test "$with_scamac" != no -a -f ${with_scamac}/scamac.h; then
 
-CFLAGS="$KCFLAGS"
-CPPFLAGS="$KINCFLAGS $KCPPFLAGS $MFLAGS $enable_zerocopy $enable_affinity $with_quadrics $with_gm $with_scamac $with_ib"
-if test $host_cpu == "lib" ; then 
-CPPFLAGS="$CPPFLAGS -fPIC -D_LARGEFILE64_SOURCE=1 -g"
-fi
-
-AM_CONDITIONAL(LIBLUSTRE, test x$host_cpu = xlib)
 AC_SUBST(MOD_LINK)
 AC_SUBST(LINUX25)
-AM_CONDITIONAL(LIBLUSTRE, test x$host_cpu = xlib)
 
 # ---------- Red Hat 2.4.18 has iobuf->dovary --------------
 # But other kernels don't
 
 AC_MSG_CHECKING([if struct kiobuf has a dovary field])
-AC_TRY_COMPILE([#define __KERNEL__
-               #include <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"
index 8c55b20..93a370f 100644 (file)
@@ -1,5 +1,9 @@
 # ----------  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? -------
 
@@ -28,6 +32,9 @@ pkgexampledir='${prefix}/usr/lib/$(PACKAGE)/examples'
 AC_SUBST(pkgexampledir)
 pymoddir='${prefix}/usr/lib/${PACKAGE}/python/Lustre'
 AC_SUBST(pymoddir)
+# for substitution in lconf
+PYMOD_DIR="/usr/lib/$PACKAGE/python"
+AC_SUBST(PYMOD_DIR)
 modulenetdir='$(moduledir)/net/$(PACKAGE)'
 AC_SUBST(modulenetdir)
 
@@ -35,14 +42,15 @@ AC_SUBST(modulenetdir)
 # ----------  BAD gcc? ------------
 AC_PROG_RANLIB
 AC_PROG_CC
-AC_MSG_CHECKING(for buggy compiler)
+AC_MSG_CHECKING([for buggy compiler])
 CC_VERSION=`$CC -v 2>&1 | grep "^gcc version"`
 bad_cc() {
+       AC_MSG_RESULT([buggy compiler found!])
        echo
        echo "   '$CC_VERSION'"
        echo "  has been known to generate bad code, "
        echo "  please get an updated compiler."
-       AC_MSG_ERROR(sorry)
+       AC_MSG_ERROR([sorry])
 }
 TMP_VERSION=`echo $CC_VERSION | cut -c 1-16`
 if test "$TMP_VERSION" = "gcc version 2.95"; then
@@ -61,7 +69,7 @@ case "$CC_VERSION" in
                bad_cc
                ;;
        *)
-               AC_MSG_RESULT(no known problems)
+               AC_MSG_RESULT([no known problems])
                ;;
 esac
 # end ------  BAD gcc? ------------
@@ -70,29 +78,30 @@ esac
 
 # this doesn't seem to work on older autoconf
 # AC_CHECK_LIB(readline, readline,,)
-AC_ARG_ENABLE(readline,        [  --enable-readline  use readline library],,
-                       enable_readline="yes")
-if test "$enable_readline" = "yes" ; then
-   LIBREADLINE="-lreadline -lncurses"
-   HAVE_LIBREADLINE="-DHAVE_LIBREADLINE=1"
+AC_MSG_CHECKING([for readline support])
+AC_ARG_ENABLE(readline,
+       AC_HELP_STRING([--disable-readline],
+                       [do not use readline library]),
+       [],[enable_readline='yes'])
+AC_MSG_RESULT([$enable_readline]) 
+if test x$enable_readline = xyes ; then
+       LIBREADLINE="-lreadline -lncurses"
+       AC_DEFINE(HAVE_LIBREADLINE, 1, [readline library is available])
 else 
-   LIBREADLINE=""
-   HAVE_LIBREADLINE=""
+       LIBREADLINE=""
 fi
 AC_SUBST(LIBREADLINE)
-AC_SUBST(HAVE_LIBREADLINE)
 
-AC_ARG_ENABLE(efence,  [  --enable-efence  use efence library],,
-                       enable_efence="no")
+AC_MSG_CHECKING([if efence debugging support is requested])
+AC_ARG_ENABLE(efence,
+       AC_HELP_STRING([--enable-efence],
+                       [use efence library]),
+       [],[enable_efence='no'])
+AC_MSG_RESULT([$enable_efence])
 if test "$enable_efence" = "yes" ; then
-   LIBEFENCE="-lefence"
-   HAVE_LIBEFENCE="-DHAVE_LIBEFENCE=1"
+       LIBEFENCE="-lefence"
+       AC_DEFINE(HAVE_LIBEFENCE, 1, [libefence support is requested])
 else 
-   LIBEFENCE=""
-   HAVE_LIBEFENCE=""
+       LIBEFENCE=""
 fi
 AC_SUBST(LIBEFENCE)
-AC_SUBST(HAVE_LIBEFENCE)
-
diff --git a/lustre/portals/configure.in b/lustre/portals/configure.in
deleted file mode 100644 (file)
index bacf532..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-# This version is here to make autoconf happy; the name is a file which is
-# "unique" to this directory so that configure knows where it should run.
-AC_INIT(knals/Makefile.am, 3.0)
-AC_CANONICAL_SYSTEM
-# Copyright (C) 2001  Cluster File Systems, Inc.
-#
-# This code is issued under the GNU General Public License.
-# See the file COPYING in this distribution
-
-# Automake variables.  Steal the version number from packaging/intersync.spec
-AM_INIT_AUTOMAKE(portals, builtin([esyscmd], [sed -ne '/.*define IVERSION /{ s/.*IVERSION //; p; }' libcfs/module.c]))
-# AM_MAINTAINER_MODE
-
-sinclude(build.m4)
-sinclude(archdep.m4)
-
-if test x$enable_inkernel = xyes ; then
-cp Kernelenv.mk Kernelenv.in
-cp Makefile.mk Makefile.in
-cp libcfs/Makefile.mk libcfs/Makefile.in
-cp portals/Makefile.mk portals/Makefile.in
-cp knals/Makefile.mk knals/Makefile.in
-cp knals/socknal/Makefile.mk knals/socknal/Makefile.in
-cp router/Makefile.mk router/Makefile.in
-fi
-
-AM_CONFIG_HEADER(include/config.h)
-
-AC_OUTPUT([Makefile Kernelenv libcfs/Makefile portals/Makefile \
-          unals/Makefile knals/Makefile router/Makefile \
-         knals/socknal/Makefile knals/gmnal/Makefile knals/qswnal/Makefile \
-         knals/scimacnal/Makefile knals/ibnal/Makefile\
-          utils/Makefile tests/Makefile doc/Makefile ])
-
diff --git a/lustre/portals/include/Makefile.am b/lustre/portals/include/Makefile.am
deleted file mode 100644 (file)
index 2cf7f99..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-# Copyright (C) 2001  Cluster File Systems, Inc.
-#
-# This code is issued under the GNU General Public License.
-# See the file COPYING in this distribution
-
-SUBDIRS = portals linux
-EXTRA_DIST = config.h.in
-include $(top_srcdir)/Rules
diff --git a/lustre/portals/include/config.h.in b/lustre/portals/include/config.h.in
deleted file mode 100644 (file)
index f295154..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-/* portals/include/config.h.in.  Generated from configure.in by autoheader.  */
-
-/* Use the Pinger */
-#undef ENABLE_PINGER
-
-/* Define to 1 if you have the <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
diff --git a/lustre/portals/include/linux/Makefile.am b/lustre/portals/include/linux/Makefile.am
deleted file mode 100644 (file)
index 6a65cb5..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-# Copyright (C) 2001  Cluster File Systems, Inc.
-#
-# This code is issued under the GNU General Public License.
-# See the file COPYING in this distribution
-
-include $(top_srcdir)/Rules
-
-linuxincludedir = $(includedir)/linux
-
-linuxinclude_HEADERS=kp30.h portals_lib.h
index 4c3e85f..b27eaa0 100644 (file)
@@ -4,6 +4,7 @@
 #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>
@@ -172,7 +21,7 @@ do {                                                                    \
 # 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>
 
@@ -353,188 +202,6 @@ do {                                                                    \
 #endif
 
 /******************************************************************************/
-/* Kernel Portals Router interface */
-
-typedef void (*kpr_fwd_callback_t)(void *arg, int error); // completion callback
-
-/* space for routing targets to stash "stuff" in a forwarded packet */
-typedef union {
-        long long        _alignment;
-        void            *_space[16];            /* scale with CPU arch */
-} kprfd_scratch_t;
-
-/* Kernel Portals Routing Forwarded message Descriptor */
-typedef struct {
-        struct list_head     kprfd_list;        /* stash in queues (routing target can use) */
-        ptl_nid_t            kprfd_target_nid;  /* final destination NID */
-        ptl_nid_t            kprfd_gateway_nid; /* gateway NID */
-        ptl_hdr_t           *kprfd_hdr;         /* header in wire byte order */
-        int                  kprfd_nob;         /* # payload bytes */
-        int                  kprfd_niov;        /* # payload frags */
-        ptl_kiov_t          *kprfd_kiov;        /* payload fragments */
-        void                *kprfd_router_arg;  /* originating NAL's router arg */
-        kpr_fwd_callback_t   kprfd_callback;    /* completion callback */
-        void                *kprfd_callback_arg; /* completion callback arg */
-        kprfd_scratch_t      kprfd_scratch;     /* scratchpad for routing targets */
-} kpr_fwd_desc_t;
-
-typedef void  (*kpr_fwd_t)(void *arg, kpr_fwd_desc_t *fwd);
-typedef void  (*kpr_notify_t)(void *arg, ptl_nid_t peer, int alive);
-
-/* NAL's routing interface (Kernel Portals Routing Nal Interface) */
-typedef const struct {
-        int             kprni_nalid;    /* NAL's id */
-        void           *kprni_arg;      /* Arg to pass when calling into NAL */
-        kpr_fwd_t       kprni_fwd;      /* NAL's forwarding entrypoint */
-        kpr_notify_t    kprni_notify;   /* NAL's notification entrypoint */
-} kpr_nal_interface_t;
-
-/* Router's routing interface (Kernel Portals Routing Router Interface) */
-typedef const struct {
-        /* register the calling NAL with the router and get back the handle for
-         * subsequent calls */
-        int     (*kprri_register) (kpr_nal_interface_t *nal_interface,
-                                   void **router_arg);
-
-        /* ask the router to find a gateway that forwards to 'nid' and is a
-         * peer of the calling NAL; assume caller will send 'nob' bytes of
-         * payload there */
-        int     (*kprri_lookup) (void *router_arg, ptl_nid_t nid, int nob,
-                                 ptl_nid_t *gateway_nid);
-
-        /* hand a packet over to the router for forwarding */
-        kpr_fwd_t kprri_fwd_start;
-
-        /* hand a packet back to the router for completion */
-        void    (*kprri_fwd_done) (void *router_arg, kpr_fwd_desc_t *fwd,
-                                   int error);
-
-        /* notify the router about peer state */
-        void    (*kprri_notify) (void *router_arg, ptl_nid_t peer,
-                                 int alive, time_t when);
-
-        /* the calling NAL is shutting down */
-        void    (*kprri_shutdown) (void *router_arg);
-
-        /* deregister the calling NAL with the router */
-        void    (*kprri_deregister) (void *router_arg);
-
-} kpr_router_interface_t;
-
-/* Convenient struct for NAL to stash router interface/args */
-typedef struct {
-        kpr_router_interface_t  *kpr_interface;
-        void                    *kpr_arg;
-} kpr_router_t;
-
-/* Router's control interface (Kernel Portals Routing Control Interface) */
-typedef const struct {
-        int     (*kprci_add_route)(int gateway_nal, ptl_nid_t gateway_nid,
-                                   ptl_nid_t lo_nid, ptl_nid_t hi_nid);
-        int     (*kprci_del_route)(int gateway_nal, ptl_nid_t gateway_nid,
-                                   ptl_nid_t lo_nid, ptl_nid_t hi_nid);
-        int     (*kprci_get_route)(int index, int *gateway_nal,
-                                   ptl_nid_t *gateway,
-                                   ptl_nid_t *lo_nid, ptl_nid_t *hi_nid,
-                                   int *alive);
-        int     (*kprci_notify)(int gateway_nal, ptl_nid_t gateway_nid,
-                                int alive, time_t when);
-} kpr_control_interface_t;
-
-extern kpr_control_interface_t  kpr_control_interface;
-extern kpr_router_interface_t   kpr_router_interface;
-
-static inline int
-kpr_register (kpr_router_t *router, kpr_nal_interface_t *nalif)
-{
-        int    rc;
-
-        router->kpr_interface = PORTAL_SYMBOL_GET (kpr_router_interface);
-        if (router->kpr_interface == NULL)
-                return (-ENOENT);
-
-        rc = (router->kpr_interface)->kprri_register (nalif, &router->kpr_arg);
-        if (rc != 0)
-                router->kpr_interface = NULL;
-
-        PORTAL_SYMBOL_PUT (kpr_router_interface);
-        return (rc);
-}
-
-static inline int
-kpr_routing (kpr_router_t *router)
-{
-        return (router->kpr_interface != NULL);
-}
-
-static inline int
-kpr_lookup (kpr_router_t *router, ptl_nid_t nid, int nob, ptl_nid_t *gateway_nid)
-{
-        if (!kpr_routing (router))
-                return (-ENETUNREACH);
-
-        return (router->kpr_interface->kprri_lookup(router->kpr_arg, nid, nob,
-                                                    gateway_nid));
-}
-
-static inline void
-kpr_fwd_init (kpr_fwd_desc_t *fwd, ptl_nid_t nid, ptl_hdr_t *hdr,
-              int nob, int niov, ptl_kiov_t *kiov,
-              kpr_fwd_callback_t callback, void *callback_arg)
-{
-        fwd->kprfd_target_nid   = nid;
-        fwd->kprfd_gateway_nid  = nid;
-        fwd->kprfd_hdr          = hdr;
-        fwd->kprfd_nob          = nob;
-        fwd->kprfd_niov         = niov;
-        fwd->kprfd_kiov         = kiov;
-        fwd->kprfd_callback     = callback;
-        fwd->kprfd_callback_arg = callback_arg;
-}
-
-static inline void
-kpr_fwd_start (kpr_router_t *router, kpr_fwd_desc_t *fwd)
-{
-        if (!kpr_routing (router))
-                fwd->kprfd_callback (fwd->kprfd_callback_arg, -ENETUNREACH);
-        else
-                router->kpr_interface->kprri_fwd_start (router->kpr_arg, fwd);
-}
-
-static inline void
-kpr_fwd_done (kpr_router_t *router, kpr_fwd_desc_t *fwd, int error)
-{
-        LASSERT (kpr_routing (router));
-        router->kpr_interface->kprri_fwd_done (router->kpr_arg, fwd, error);
-}
-
-static inline void
-kpr_notify (kpr_router_t *router,
-            ptl_nid_t peer, int alive, time_t when)
-{
-        if (!kpr_routing (router))
-                return;
-
-        router->kpr_interface->kprri_notify(router->kpr_arg, peer, alive, when);
-}
-
-static inline void
-kpr_shutdown (kpr_router_t *router)
-{
-        if (kpr_routing (router))
-                router->kpr_interface->kprri_shutdown (router->kpr_arg);
-}
-
-static inline void
-kpr_deregister (kpr_router_t *router)
-{
-        if (!kpr_routing (router))
-                return;
-        router->kpr_interface->kprri_deregister (router->kpr_arg);
-        router->kpr_interface = NULL;
-}
-
-/******************************************************************************/
 
 #ifdef PORTALS_PROFILING
 #define prof_enum(FOO) PROF__##FOO
@@ -634,6 +301,7 @@ extern void kportal_blockallsigs (void);
 #endif
 # include <unistd.h>
 # include <time.h>
+# include <limits.h>
 # include <asm/types.h>
 # ifndef DEBUG_SUBSYSTEM
 #  define DEBUG_SUBSYSTEM S_UNDEFINED
@@ -650,6 +318,7 @@ extern void kportal_blockallsigs (void);
 # define printk(format, args...) printf (format, ## args)
 # define PORTAL_ALLOC(ptr, size) do { (ptr) = malloc(size); } while (0);
 # define PORTAL_FREE(a, b) do { free(a); } while (0);
+void portals_debug_dumplog(void);
 # define portals_debug_msg(subsys, mask, file, fn, line, stack, format, a...) \
     printf("%02x:%06x (@%lu %s:%s,l. %d %d %lu): " format,                    \
            (subsys), (mask), (long)time(0), file, fn, line,                   \
@@ -766,76 +435,10 @@ struct portals_device_userstate
  * USER LEVEL STUFF BELOW
  */
 
-#define PORTALS_CFG_VERSION 0x00010001;
-
-struct portals_cfg {
-        __u32 pcfg_version;
-        __u32 pcfg_command;
-
-        __u32 pcfg_nal;
-        __u32 pcfg_flags;
-
-        __u32 pcfg_gw_nal;
-        __u64 pcfg_nid;
-        __u64 pcfg_nid2;
-        __u64 pcfg_nid3;
-        __u32 pcfg_id;
-        __u32 pcfg_misc;
-        __u32 pcfg_fd;
-        __u32 pcfg_count;
-        __u32 pcfg_size;
-        __u32 pcfg_wait;
-
-        __u32 pcfg_plen1; /* buffers in userspace */
-        char *pcfg_pbuf1;
-        __u32 pcfg_plen2; /* buffers in userspace */
-        char *pcfg_pbuf2;
-};
-
-#define PCFG_INIT(pcfg, cmd)                            \
-do {                                                    \
-        memset(&pcfg, 0, sizeof(pcfg));                 \
-        pcfg.pcfg_version = PORTALS_CFG_VERSION;        \
-        pcfg.pcfg_command = (cmd);                      \
-                                                        \
-} while (0)
-
 #define PORTAL_IOCTL_VERSION 0x00010007
 #define PING_SYNC       0
 #define PING_ASYNC      1
 
-struct portal_ioctl_data {
-        __u32 ioc_len;
-        __u32 ioc_version;
-        __u64 ioc_nid;
-        __u64 ioc_nid2;
-        __u64 ioc_nid3;
-        __u32 ioc_count;
-        __u32 ioc_nal;
-        __u32 ioc_nal_cmd;
-        __u32 ioc_fd;
-        __u32 ioc_id;
-
-        __u32 ioc_flags;
-        __u32 ioc_size;
-
-        __u32 ioc_wait;
-        __u32 ioc_timeout;
-        __u32 ioc_misc;
-
-        __u32 ioc_inllen1;
-        char *ioc_inlbuf1;
-        __u32 ioc_inllen2;
-        char *ioc_inlbuf2;
-
-        __u32 ioc_plen1; /* buffers in userspace */
-        char *ioc_pbuf1;
-        __u32 ioc_plen2; /* buffers in userspace */
-        char *ioc_pbuf2;
-
-        char ioc_bulk[0];
-};
-
 struct portal_ioctl_hdr {
         __u32 ioc_len;
         __u32 ioc_version;
@@ -1051,7 +654,7 @@ extern ptl_handle_ni_t  kibnal_ni;
 extern ptl_handle_ni_t  kscimacnal_ni;
 #endif
 
-#define PTL_NALFMT_SIZE         16
+#define PTL_NALFMT_SIZE               26 /* %u:%u.%u.%u.%u (10+4+4+4+3+1) */
 
 #define NAL_MAX_NR (NAL_ENUM_END_MARKER - 1)
 
@@ -1082,7 +685,6 @@ struct lustre_peer {
         ptl_handle_ni_t peer_ni;
 };
 
-
 /* module.c */
 typedef int (*nal_cmd_handler_t)(struct portals_cfg *, void * private);
 int kportal_nal_register(int nal, nal_cmd_handler_t handler, void * private);
index 51d2d2f..ee50b59 100644 (file)
@@ -1,6 +1,6 @@
 /* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*-
- * vim:expandtab:shiftwidth=8:tabstop=8:
- */
+ *  * vim:expandtab:shiftwidth=8:tabstop=8:
+ *   */
 #ifndef _KPR_H
 #define _KPR_H
 
@@ -81,6 +81,21 @@ typedef struct {
         void                    *kpr_arg;
 } kpr_router_t;
 
+/* Router's control interface (Kernel Portals Routing Control Interface) */
+typedef const struct {
+        int     (*kprci_add_route)(int gateway_nal, ptl_nid_t gateway_nid,
+                                   ptl_nid_t lo_nid, ptl_nid_t hi_nid);
+        int     (*kprci_del_route)(int gateway_nal, ptl_nid_t gateway_nid,
+                                   ptl_nid_t lo_nid, ptl_nid_t hi_nid);
+        int     (*kprci_get_route)(int index, int *gateway_nal,
+                                   ptl_nid_t *gateway,
+                                   ptl_nid_t *lo_nid, ptl_nid_t *hi_nid,
+                                   int *alive);
+        int     (*kprci_notify)(int gateway_nal, ptl_nid_t gateway_nid,
+                                int alive, time_t when);
+} kpr_control_interface_t;
+
+extern kpr_control_interface_t  kpr_control_interface;
 extern kpr_router_interface_t   kpr_router_interface;
 
 static inline int
index 99d3877..efdc8fe 100644 (file)
@@ -6,28 +6,6 @@
 
 #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
@@ -220,11 +198,6 @@ do {                                                    \
                                                         \
 } while (0)
 
-typedef int (nal_cmd_handler_fn)(struct portals_cfg *, void *);
-int libcfs_nal_cmd_register(int nal, nal_cmd_handler_fn *handler, void *arg);
-int libcfs_nal_cmd(struct portals_cfg *pcfg);
-void libcfs_nal_cmd_unregister(int nal);
-
 struct portal_ioctl_data {
         __u32 ioc_len;
         __u32 ioc_version;
@@ -257,7 +230,6 @@ struct portal_ioctl_data {
         char ioc_bulk[0];
 };
 
-
 #ifdef __KERNEL__
 
 #include <linux/list.h>
index 4361858..9ab4020 100644 (file)
@@ -40,6 +40,9 @@
 # define RECALC_SIGPENDING         recalc_sigpending()
 # define CURRENT_SECONDS           CURRENT_TIME
 
+# define kernel_text_address(addr) is_kernel_text_address(addr)
+extern int is_kernel_text_address(unsigned long addr);
+
 #else /* 2.4.x */
 
 # define SIGNAL_MASK_LOCK(task, flags)                                  \
 # define RECALC_SIGPENDING         recalc_sigpending(current)
 # define CURRENT_SECONDS           CURRENT_TIME
 
+# define kernel_text_address(addr) is_kernel_text_address(addr)
+extern int is_kernel_text_address(unsigned long addr);
+
 #endif
 
 #if defined(__arch_um__) && (LINUX_VERSION_CODE < KERNEL_VERSION(2,4,20))
-# define THREAD_NAME(comm, fmt, a...)                                   \
-        sprintf(comm, fmt "|%d", ## a, current->thread.extern_pid)
+# define THREAD_NAME(comm, len, fmt, a...)                              \
+        snprintf(comm, len, fmt "|%d", ## a, current->thread.extern_pid)
 #elif defined(__arch_um__) && (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0))
-# define THREAD_NAME(comm, fmt, a...)                                   \
-        sprintf(comm, fmt "|%d", ## a, current->thread.mode.tt.extern_pid)
+# define THREAD_NAME(comm, len, fmt, a...)                              \
+        snprintf(comm, len,fmt"|%d", ## a,current->thread.mode.tt.extern_pid)
+#else
+# define THREAD_NAME(comm, len, fmt, a...)                              \
+        snprintf(comm, len, fmt, ## a)
+#endif
+
+#ifdef HAVE_PAGE_LIST
+/* 2.4 alloc_page users can use page->list */
+#define PAGE_LIST_ENTRY list
+#define PAGE_LIST(page) ((page)->list)
 #else
-# define THREAD_NAME(comm, fmt, a...)                                   \
-        sprintf(comm, fmt, ## a)
+/* 2.6 alloc_page users can use page->lru */
+#define PAGE_LIST_ENTRY lru
+#define PAGE_LIST(page) ((page)->lru)
 #endif
 
 #endif /* _PORTALS_COMPAT_H */
diff --git a/lustre/portals/include/portals/Makefile.am b/lustre/portals/include/portals/Makefile.am
deleted file mode 100644 (file)
index c61b084..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-# Copyright (C) 2001  Cluster File Systems, Inc.
-#
-# This code is issued under the GNU General Public License.
-# See the file COPYING in this distribution
-
-SUBDIRS = base
-include $(top_srcdir)/Rules
-
-pkginclude_HEADERS=api-support.h api.h arg-blocks.h defines.h errno.h internal.h lib-dispatch.h lib-nal.h lib-p30.h lib-types.h myrnal.h nal.h p30.h ppid.h ptlctl.h stringtab.h types.h nalids.h list.h bridge.h ipmap.h procbridge.h lltrace.h
-
index e9e4635..b1a6e04 100644 (file)
@@ -245,10 +245,14 @@ lib_me_free(nal_cb_t *nal, lib_me_t *me)
 static inline lib_msg_t *
 lib_msg_alloc(nal_cb_t *nal)
 {
-        /* NEVER called with statelock held */
+        /* NEVER called with statelock held; may be in interrupt... */
         lib_msg_t *msg;
 
-        PORTAL_ALLOC(msg, sizeof(*msg));
+        if (in_interrupt())
+                PORTAL_ALLOC_ATOMIC(msg, sizeof(*msg));
+        else
+                PORTAL_ALLOC(msg, sizeof(*msg));
+
         if (msg != NULL) {
                 /* NULL pointers, clear flags etc */
                 memset (msg, 0, sizeof (*msg));
index 89a4aa6..f5fd0b0 100644 (file)
@@ -1,3 +1,5 @@
 Makefile
-Makefile.in
-.*.o.cmd
+autoMakefile
+autoMakefile.in
+.*.cmd
+.depend
diff --git a/lustre/portals/knals/Makefile.am b/lustre/portals/knals/Makefile.am
deleted file mode 100644 (file)
index df6ee5c..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-# Copyright (C) 2001  Cluster File Systems, Inc.
-#
-# This code is issued under the GNU General Public License.
-# See the file COPYING in this distribution
-
-DIST_SUBDIRS= socknal qswnal gmnal scimacnal ibnal
-SUBDIRS= socknal @QSWNAL@ @GMNAL@ @SCIMACNAL@ @IBNAL@
index e995588..642e2e6 100644 (file)
@@ -1,3 +1,10 @@
 .deps
 Makefile
-Makefile.in
+autoMakefile.in
+autoMakefile
+*.ko
+*.mod.c
+.*.cmd
+.*.flags
+.tmp_versions
+.depend
diff --git a/lustre/portals/knals/gmnal/Makefile.am b/lustre/portals/knals/gmnal/Makefile.am
deleted file mode 100644 (file)
index bac4680..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-# Copyright (C) 2001  Cluster File Systems, Inc.
-#
-# This code is issued under the GNU General Public License.
-# See the file COPYING in this distribution
-
-include ../../Rules.linux
-
-MODULE = kgmnal
-modulenet_DATA = kgmnal.o
-EXTRA_PROGRAMS = kgmnal
-
-DEFS = -DGM_KERNEL
-kgmnal_SOURCES = gmnal.h gmnal_api.c gmnal_cb.c gmnal_comm.c gmnal_utils.c gmnal_module.c
index e995588..48b17e9 100644 (file)
@@ -1,3 +1,10 @@
 .deps
 Makefile
-Makefile.in
+autoMakefile.in
+autoMakefile
+*.ko
+*.mod.c
+.*.flags
+.*.cmd
+.tmp_versions
+.depend
diff --git a/lustre/portals/knals/ibnal/Makefile.am b/lustre/portals/knals/ibnal/Makefile.am
deleted file mode 100644 (file)
index 84818dc..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-include ../../Rules.linux
-
-MODULE = kibnal
-modulenet_DATA = kibnal.o
-EXTRA_PROGRAMS = kibnal
-
-
-DEFS =
-CPPFLAGS=@CPPFLAGS@ @with_ib@
-kibnal_SOURCES = ibnal.h ibnal.c ibnal_cb.c
index ff5aeb3..4a1f0d7 100644 (file)
@@ -29,6 +29,7 @@
 #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
index e995588..48b17e9 100644 (file)
@@ -1,3 +1,10 @@
 .deps
 Makefile
-Makefile.in
+autoMakefile.in
+autoMakefile
+*.ko
+*.mod.c
+.*.flags
+.*.cmd
+.tmp_versions
+.depend
diff --git a/lustre/portals/knals/qswnal/Makefile.am b/lustre/portals/knals/qswnal/Makefile.am
deleted file mode 100644 (file)
index 3eb4dd5..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-# Copyright (C) 2001  Cluster File Systems, Inc.
-#
-# This code is issued under the GNU General Public License.
-# See the file COPYING in this distribution
-
-include ../../Rules.linux
-
-MODULE = kqswnal
-modulenet_DATA = kqswnal.o
-EXTRA_PROGRAMS = kqswnal
-
-
-#CFLAGS:= @KCFLAGS@ 
-#CPPFLAGS:=@KCPPFLAGS@
-DEFS =
-CPPFLAGS=@CPPFLAGS@ @with_quadrics@
-kqswnal_SOURCES = qswnal.c qswnal_cb.c qswnal.h
index 5ebf30a..bedc6e0 100644 (file)
 #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
index 157dc70..731357e 100644 (file)
@@ -85,6 +85,9 @@ kqswnal_printf (nal_cb_t * nal, const char *fmt, ...)
         CDEBUG (D_NET, "%s", msg);
 }
 
+#if (defined(CONFIG_SPARC32) || defined(CONFIG_SPARC64))
+# error "Can't save/restore irq contexts in different procedures"
+#endif
 
 static void
 kqswnal_cli(nal_cb_t *nal, unsigned long *flags)
index e995588..48b17e9 100644 (file)
@@ -1,3 +1,10 @@
 .deps
 Makefile
-Makefile.in
+autoMakefile.in
+autoMakefile
+*.ko
+*.mod.c
+.*.flags
+.*.cmd
+.tmp_versions
+.depend
diff --git a/lustre/portals/knals/scimacnal/Makefile.am b/lustre/portals/knals/scimacnal/Makefile.am
deleted file mode 100644 (file)
index 6da31f0..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-# This code is issued under the GNU General Public License.
-# See the file COPYING in this distribution
-
-include ../../Rules.linux
-
-MODULE = kscimacnal
-modulenet_DATA = kscimacnal.o
-EXTRA_PROGRAMS = kscimacnal
-
-DEFS =
-kscimacnal_SOURCES = scimacnal.c scimacnal_cb.c scimacnal.h
index 6949557..f132769 100644 (file)
@@ -34,6 +34,7 @@
 #define DEBUG_SUBSYSTEM S_UNDEFINED
 
 #include <linux/kp30.h>
+#include <linux/kpr.h>
 #include <portals/p30.h>
 #include <portals/lib-p30.h>
 
index 95973d6..5ed596b 100644 (file)
@@ -1,4 +1,10 @@
 .deps
 Makefile
-Makefile.in
-.*.o.cmd
+.*.cmd
+autoMakefile.in
+autoMakefile
+*.ko
+*.mod.c
+.*.flags
+.tmp_versions
+.depend
diff --git a/lustre/portals/knals/socknal/Makefile.am b/lustre/portals/knals/socknal/Makefile.am
deleted file mode 100644 (file)
index acdba5e..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-# Copyright (C) 2001  Cluster File Systems, Inc.
-#
-# This code is issued under the GNU General Public License.
-# See the file COPYING in this distribution
-
-include ../../Rules.linux
-
-MODULE = ksocknal
-modulenet_DATA = ksocknal.o
-EXTRA_PROGRAMS = ksocknal
-
-# If you don't build with -O2, your modules won't insert, becahse htonl is
-# just special that way.
-AM_CFLAGS = -O2
-
-DEFS =
-ksocknal_SOURCES = socknal.c socknal_cb.c socknal.h
index a768ae5..194ac98 100644 (file)
 
 #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
 
index c89e20e..f02cbda 100644 (file)
@@ -24,6 +24,9 @@
  */
 
 #include "socknal.h"
+#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,5,0))
+# include <linux/syscalls.h>
+#endif
 
 /*
  *  LIB functions follow
@@ -90,6 +93,8 @@ ksocknal_cli(nal_cb_t *nal, unsigned long *flags)
 {
         ksock_nal_data_t *data = nal->nal_data;
 
+        /* OK to ignore 'flags'; we're only ever serialise threads and
+         * never need to lock out interrupts */
         spin_lock(&data->ksnd_nal_cb_lock);
 }
 
index 7fa686f..df12db6 100644 (file)
@@ -1,5 +1,12 @@
 .deps
 Makefile
-Makefile.in
 link-stamp
-.*.o.cmd
+.*.cmd
+autoMakefile.in
+autoMakefile
+sources
+*.ko
+*.mod.c
+.*.flags
+.tmp_versions
+.depend
diff --git a/lustre/portals/libcfs/Makefile.am b/lustre/portals/libcfs/Makefile.am
deleted file mode 100644 (file)
index cf9220b..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-# Copyright (C) 2001, 2002 Cluster File Systems, Inc.
-#
-# This code is issued under the GNU General Public License.
-# See the file COPYING in this distribution
-
-
-MODULE = portals
-modulenet_DATA = portals.o
-EXTRA_PROGRAMS = portals
-
-LIBLINKS := lib-dispatch.c lib-eq.c lib-init.c lib-md.c lib-me.c lib-move.c lib-msg.c lib-ni.c lib-pid.c
-APILINKS := api-eq.c api-errno.c api-init.c api-me.c api-ni.c api-wrap.c
-LINKS = $(APILINKS) $(LIBLINKS) 
-DISTCLEANFILES = $(LINKS) link-stamp *.orig *.rej
-
-$(LINKS): link-stamp
-link-stamp:
-       -list='$(LIBLINKS)'; for f in $$list; do echo $$f ; ln -sf $(srcdir)/../portals/$$f .; done
-       -list='$(APILINKS)'; for f in $$list; do echo $$f ; ln -sf $(srcdir)/../portals/$$f .; done
-       echo timestamp > link-stamp
-
-DEFS =
-portals_SOURCES = $(LINKS) module.c proc.c debug.c lwt.c
-
-# Don't distribute any patched files.
-dist-hook:
-       list='$(EXT2C)'; for f in $$list; do rm -f $(distdir)/$$f; done
-
-include ../Rules.linux
index 6f9c981..5d2688e 100644 (file)
@@ -1,4 +1,9 @@
-MODULES = libcfs
+MODULES = portals
 libcfs-objs := debug.o lwt.o module.o proc.o
 
+api-sources := $(wildcard @LUSTRE@/portals/portals/api-*.c)
+lib-sources := $(wildcard @LUSTRE@/portals/portals/lib-*.c)
+
+portals-objs += $(libcfs-objs) $(patsubst %.c,%.o,$(notdir $(api-sources) $(lib-sources)))
+
 @INCLUDE_RULES@
index 192c3ef..50adb3f 100644 (file)
@@ -4,8 +4,17 @@
 # See the file COPYING in this distribution
 
 if MODULES
-modulenet_DATA := libcfs$(KMODEXT)
+modulenet_DATA := portals$(KMODEXT)
 endif
 
+sources:
+       rm -f sources
+       @for i in $(api-sources) $(lib-sources) ; do \
+               echo ln -sf $$i . ; \
+               ln -sf $$i . || exit 1 ; \
+       done
+       touch sources
+
 MOSTLYCLEANFILES = *.o *.ko *.mod.c
-DIST_SOURCES = $(libcfs-objs:%.o=%.c)
+CLEANFILES = sources lib-*.c api-*.c
+DIST_SOURCES = $(portals-objs:%.o=%.c)
index 538b7a2..a9c1adc 100644 (file)
 #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;
@@ -671,7 +699,7 @@ __s32 portals_debug_copy_to_user(char *buf, unsigned long len)
                         rc = -ENOMEM;
                         goto cleanup;
                 }
-                list_add(&page->list, &my_pages);
+                list_add(&PAGE_LIST(page), &my_pages);
         }
 
         spin_lock_irqsave(&portals_debug_lock, flags);
@@ -696,7 +724,7 @@ __s32 portals_debug_copy_to_user(char *buf, unsigned long len)
                 unsigned long to_copy;
                 void *addr;
 
-                page = list_entry(pos, struct page, list);
+                page = list_entry(pos, struct page, PAGE_LIST_ENTRY);
                 to_copy = min(total - off, PAGE_SIZE);
                 if (to_copy == 0) {
                         off = 0;
@@ -725,7 +753,7 @@ finish_partial:
         off = 0;
         list_for_each(pos, &my_pages) {
                 unsigned long to_copy;
-                page = list_entry(pos, struct page, list);
+                page = list_entry(pos, struct page, PAGE_LIST_ENTRY);
 
                 to_copy = min(copied - off, PAGE_SIZE);
                 rc = copy_to_user(buf + off, kmap(page), to_copy);
@@ -742,8 +770,8 @@ finish_partial:
 
 cleanup:
         list_for_each_safe(pos, n, &my_pages) {
-                page = list_entry(pos, struct page, list);
-                list_del(&page->list);
+                page = list_entry(pos, struct page, PAGE_LIST_ENTRY);
+                list_del(&PAGE_LIST(page));
                 __free_page(page);
         }
         return rc;
@@ -934,20 +962,26 @@ void portals_run_lbug_upcall(char *file, const char *fn, const int line)
 char *portals_nid2str(int nal, ptl_nid_t nid, char *str)
 {
         switch(nal){
+/* XXX this could be a nal method of some sort, 'cept it's config
+ * dependent whether (say) socknal NIDs are actually IP addresses... */
+#ifndef CRAY_PORTALS 
         case TCPNAL:
                 /* userspace NAL */
         case SOCKNAL:
-                sprintf(str, "%u:%d.%d.%d.%d", (__u32)(nid >> 32),
-                        HIPQUAD(nid));
+                snprintf(str, PTL_NALFMT_SIZE - 1, "%u:%u.%u.%u.%u",
+                         (__u32)(nid >> 32), HIPQUAD(nid));
                 break;
         case QSWNAL:
         case GMNAL:
         case IBNAL:
         case SCIMACNAL:
-                sprintf(str, "%u:%u", (__u32)(nid >> 32), (__u32)nid);
+                snprintf(str, PTL_NALFMT_SIZE - 1, "%u:%u",
+                         (__u32)(nid >> 32), (__u32)nid);
                 break;
+#endif
         default:
-                return NULL;
+                snprintf(str, PTL_NALFMT_SIZE - 1, "?%d? %llx",
+                         nal, (long long)nid);
         }
         return str;
 }
@@ -958,8 +992,6 @@ spinlock_t stack_backtrace_lock = SPIN_LOCK_UNLOCKED;
 
 #if defined(__arch_um__)
 
-extern int is_kernel_text_address(unsigned long addr);
-
 char *portals_debug_dumpstack(void)
 {
         asm("int $3");
@@ -968,33 +1000,45 @@ char *portals_debug_dumpstack(void)
 
 #elif defined(__i386__)
 
-extern int is_kernel_text_address(unsigned long addr);
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0))
 extern int lookup_symbol(unsigned long address, char *buf, int buflen);
+const char *kallsyms_lookup(unsigned long addr,
+                            unsigned long *symbolsize,
+                            unsigned long *offset,
+                            char **modname, char *namebuf)
+{
+        int rc = lookup_symbol(addr, namebuf, 128);
+        if (rc == -ENOSYS)
+                return NULL;
+        return namebuf;
+}
+#endif
 
 char *portals_debug_dumpstack(void)
 {
-        unsigned long esp = current->thread.esp;
+        unsigned long esp = current->thread.esp, addr;
         unsigned long *stack = (unsigned long *)&esp;
+        char *buf = stack_backtrace, *pbuf = buf;
         int size;
-        unsigned long addr;
-        char *buf = stack_backtrace;
-        char *pbuf = buf;
-        static char buffer[512];
-        int rc = 0;
 
         /* User space on another CPU? */
-        if ((esp ^ (unsigned long)current) & (PAGE_MASK<<1)){
+        if ((esp ^ (unsigned long)current) & (PAGE_MASK << 1)){
                 buf[0] = '\0';
                 goto out;
         }
 
         size = sprintf(pbuf, " Call Trace: ");
         pbuf += size;
-        while (((long) stack & (THREAD_SIZE-1)) != 0) {
+        while (((long) stack & (THREAD_SIZE - 1)) != 0) {
                 addr = *stack++;
-                if (is_kernel_text_address(addr)) {
-                        rc = lookup_symbol(addr, buffer, 512);
-                        if (rc == -ENOSYS) {
+                if (kernel_text_address(addr)) {
+                        const char *sym_name;
+                        char *modname, buffer[128];
+                        unsigned long junk, offset;
+
+                        sym_name = kallsyms_lookup(addr, &junk, &offset,
+                                                   &modname, buffer);
+                        if (sym_name == NULL) {
                                 if (buf + LUSTRE_TRACE_SIZE <= pbuf + 12)
                                         break;
                                 size = sprintf(pbuf, "[<%08lx>] ", addr);
@@ -1004,7 +1048,7 @@ char *portals_debug_dumpstack(void)
                                     <= pbuf + strlen(buffer) + 28 + 1)
                                         break;
                                 size = sprintf(pbuf, "([<%08lx>] %s (0x%p)) ",
-                                               addr, buffer, stack-1);
+                                               addr, buffer, stack - 1);
                         }
                         pbuf += size;
                 }
index 2f5a852..f46c855 100644 (file)
@@ -47,6 +47,7 @@
 #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
@@ -59,7 +60,7 @@ struct nal_cmd_handler {
 };
 
 static struct nal_cmd_handler nal_cmd[NAL_MAX_NR + 1];
-struct semaphore nal_cmd_sem;
+static DECLARE_MUTEX(nal_cmd_sem);
 
 #ifdef PORTAL_DEBUG
 void kportal_assertion_failed(char *expr, char *file, const char *func,
@@ -799,11 +800,6 @@ EXPORT_SYMBOL(PtlFini);
 EXPORT_SYMBOL(PtlPut);
 EXPORT_SYMBOL(PtlGet);
 EXPORT_SYMBOL(ptl_err_str);
-EXPORT_SYMBOL(portal_subsystem_debug);
-EXPORT_SYMBOL(portal_debug);
-EXPORT_SYMBOL(portal_stack);
-EXPORT_SYMBOL(portal_printk);
-EXPORT_SYMBOL(portal_cerror);
 EXPORT_SYMBOL(PtlEQWait);
 EXPORT_SYMBOL(PtlEQFree);
 EXPORT_SYMBOL(PtlEQGet);
@@ -822,13 +818,12 @@ EXPORT_SYMBOL(lib_parse);
 EXPORT_SYMBOL(lib_fake_reply_msg);
 EXPORT_SYMBOL(lib_init);
 EXPORT_SYMBOL(lib_fini);
-EXPORT_SYMBOL(portal_kmemory);
+EXPORT_SYMBOL(dispatch_name);
 EXPORT_SYMBOL(kportal_daemonize);
 EXPORT_SYMBOL(kportal_blockallsigs);
 EXPORT_SYMBOL(kportal_nal_register);
 EXPORT_SYMBOL(kportal_nal_unregister);
 EXPORT_SYMBOL(kportal_assertion_failed);
-EXPORT_SYMBOL(dispatch_name);
 EXPORT_SYMBOL(kportal_get_ni);
 EXPORT_SYMBOL(kportal_put_ni);
 EXPORT_SYMBOL(kportal_nal_cmd);
index 95973d6..5ed596b 100644 (file)
@@ -1,4 +1,10 @@
 .deps
 Makefile
-Makefile.in
-.*.o.cmd
+.*.cmd
+autoMakefile.in
+autoMakefile
+*.ko
+*.mod.c
+.*.flags
+.tmp_versions
+.depend
diff --git a/lustre/portals/portals/Makefile.am b/lustre/portals/portals/Makefile.am
deleted file mode 100644 (file)
index d17db61..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-# Copyright (C) 2002  Cluster File Systems, Inc.
-#
-# This code is issued under the GNU General Public License.
-# See the file COPYING in this distribution
-
-
-CPPFLAGS=
-INCLUDES=-I$(top_srcdir)/portals/include -I$(top_srcdir)/include
-noinst_LIBRARIES= libportals.a
-libportals_a_SOURCES= api-eq.c api-init.c api-me.c api-errno.c api-ni.c api-wrap.c lib-dispatch.c lib-init.c lib-me.c lib-msg.c lib-eq.c lib-md.c lib-move.c lib-ni.c lib-pid.c
-
-if LIBLUSTRE
-libportals_a_CFLAGS= -fPIC
-endif
index 6ce334b..71067ac 100644 (file)
@@ -1,6 +1,6 @@
-MODULES := portals
-portals-objs := api-eq.o api-init.o api-me.o api-errno.o api-ni.o api-wrap.o
-portals-objs += lib-dispatch.o lib-init.o lib-me.o lib-msg.o lib-eq.o lib-md.o
-portals-objs += lib-move.o lib-ni.o lib-pid.o module.o
+#MODULES := portals
+#portals-objs := api-eq.o api-init.o api-me.o api-errno.o api-ni.o api-wrap.o
+#portals-objs += lib-dispatch.o lib-init.o lib-me.o lib-msg.o lib-eq.o lib-md.o
+#portals-objs += lib-move.o lib-ni.o lib-pid.o
 
 @INCLUDE_RULES@
index 7822846..de01765 100644 (file)
@@ -9,4 +9,4 @@ obj-y += portals.o
 portals-objs    :=     lib-dispatch.o lib-eq.o lib-init.o lib-md.o lib-me.o \
                        lib-move.o lib-msg.o lib-ni.o lib-pid.o \
                        api-eq.o api-errno.o api-init.o api-me.o api-ni.o \
-                       api-wrap.o
+                       api-wrap.o module.o
index b811391..0a64864 100644 (file)
 #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;
index bf7a107..22565dd 100644 (file)
@@ -16,11 +16,11 @@ libportals_a_CPPFLAGS = $(LLCPPFLAGS)
 libportals_a_CFLAGS = $(LLCFLAGS)
 endif
 
-if MODULES
-modulenet_DATA = portals$(KMODEXT)
-endif # MODULES
+#if MODULES
+#modulenet_DATA = portals$(KMODEXT)
+#endif # MODULES
 
 endif # CRAY_PORTALS
 
 MOSTLYCLEANFILES = *.o *.ko *.mod.c
-DIST_SOURCES = $(portals-objs:%.o=%.c)
+#DIST_SOURCES = $(portals-objs:%.o=%.c)
index 95973d6..5ed596b 100644 (file)
@@ -1,4 +1,10 @@
 .deps
 Makefile
-Makefile.in
-.*.o.cmd
+.*.cmd
+autoMakefile.in
+autoMakefile
+*.ko
+*.mod.c
+.*.flags
+.tmp_versions
+.depend
diff --git a/lustre/portals/router/Makefile.am b/lustre/portals/router/Makefile.am
deleted file mode 100644 (file)
index 1c8087b..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-# Copyright (C) 2001  Cluster File Systems, Inc.
-#
-# This code is issued under the GNU General Public License.
-# See the file COPYING in this distribution
-
-include ../Rules.linux
-
-MODULE = kptlrouter
-modulenet_DATA = kptlrouter.o
-EXTRA_PROGRAMS = kptlrouter
-
-
-#CFLAGS:= @KCFLAGS@ 
-#CPPFLAGS:=@KCPPFLAGS@
-DEFS =
-kptlrouter_SOURCES = router.c proc.c router.h
index ea25439..309025b 100644 (file)
@@ -39,6 +39,7 @@
 #define DEBUG_SUBSYSTEM S_PTLROUTER
 
 #include <linux/kp30.h>
+#include <linux/kpr.h>
 #include <portals/p30.h>
 #include <portals/lib-p30.h>
 
index d0c4c88..e034130 100644 (file)
@@ -1,4 +1,10 @@
 Makefile
-Makefile.in
 .deps
-.*.o.cmd
+.*.cmd
+autoMakefile.in
+autoMakefile
+*.ko
+*.mod.c
+.*.flags
+.tmp_versions
+.depend
diff --git a/lustre/portals/tests/Makefile.am b/lustre/portals/tests/Makefile.am
deleted file mode 100644 (file)
index 7b47ae0..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-# Copyright (C) 2001  Cluster File Systems, Inc.
-#
-# This code is issued under the GNU General Public License.
-# See the file COPYING in this distribution
-
-include ../Rules.linux
-
-LDFLAGS = -m "`$(LD) --help | awk '/supported emulations/ {print $$4}'`" -r
-LINK = $(LD) $(LDFLAGS) -o $@
-DEFS =
-LIBS =
-MODULE = $(basename)
-EXTRA_DIST = startserver.sh startclient.sh stopserver.sh stopclient.sh
-
-noinst_PROGRAMS = pingsrv.o pingcli.o spingsrv.o spingcli.o 
-
-pingsrv_o_SOURCES = ping_srv.c ping.h
-
-pingcli_o_SOURCES = ping_cli.c ping.h
-
-spingsrv_o_SOURCES = sping_srv.c ping.h
-
-spingcli_o_SOURCES = sping_cli.c ping.h
index 6035ca1..4c842a1 100644 (file)
@@ -1,9 +1,8 @@
-CPPFLAGS=
-INCLUDES=-I$(top_srcdir)/portals/include -I$(top_srcdir)/include -I$(srcdir)
+if LIBLUSTRE
 noinst_LIBRARIES = libtcpnal.a
+endif
+
 pkginclude_HEADERS =  pqtimer.h dispatch.h table.h timer.h connection.h ipmap.h bridge.h procbridge.h
 libtcpnal_a_SOURCES = debug.c pqtimer.c select.c table.c pqtimer.h dispatch.h table.h timer.h address.c procapi.c proclib.c connection.c tcpnal.c connection.h
-
-if LIBLUSTRE
-libtcpnal_a_CFLAGS = -fPIC
-endif
+libtcpnal_a_CPPFLAGS = $(LLCPPFLAGS)
+libtcpnal_a_CFLAGS = $(LLCFLAGS)
index 925406f..15c1774 100644 (file)
@@ -3,21 +3,21 @@
 # This code is issued under the GNU General Public License.
 # See the file COPYING in this distribution
 
-COMPILE = $(CC) -Wall -g -I$(srcdir)/../include
-LINK = $(CC) -o $@
+## $(srcdir)/../ for <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
 
@@ -34,4 +34,3 @@ debugctl_LDADD = -L. -lptlctl $(LIBREADLINE) $(LIBEFENCE)
 debugctl_DEPENDENCIES = libptlctl.a
 
 routerstat_SOURCES = routerstat.c
-endif
index 29b8d1e..f6367d4 100644 (file)
@@ -11,9 +11,7 @@
 #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>
index ff6631c..e45fae4 100644 (file)
@@ -29,9 +29,7 @@
 #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>
index db5292d..82b4022 100644 (file)
 #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 *);
@@ -221,14 +225,15 @@ static char **command_completion(char * text, int start, int end)
     char       * pos;
 
     match_tbl = top_level;
+    
     for (table = find_cmd(rl_line_buffer, match_tbl, &pos);
-        table;
-        table = find_cmd(pos, match_tbl, &pos)) {
+        table; table = find_cmd(pos, match_tbl, &pos)) 
+    {
 
        if (*(pos - 1) == ' ') match_tbl = table->pc_sub_cmd;
     }
 
-    return(completion_matches(text, command_generator));
+    return completion_matches(text, command_generator);
 }
 #endif
 
index fb031ae..f078099 100644 (file)
@@ -34,7 +34,7 @@
 #include <unistd.h>
 #include <time.h>
 #include <stdarg.h>
-#include <asm/byteorder.h>
+#include <endian.h>
 
 #ifdef __CYGWIN__
 
@@ -61,7 +61,7 @@
 unsigned int portal_debug;
 unsigned int portal_printk;
 unsigned int portal_stack;
-unsigned int portal_cerror;
+unsigned int portal_cerror = 1;
 
 static unsigned int g_nal = 0;
 
index e995588..8d9434e 100644 (file)
@@ -1,3 +1,9 @@
 .deps
 Makefile
-Makefile.in
+autoMakefile.in
+autoMakefile
+*.ko
+*.mod.c
+.*.flags
+.tmp_versions
+.depend
diff --git a/lustre/ptlbd/Makefile.am b/lustre/ptlbd/Makefile.am
deleted file mode 100644 (file)
index bfaeb25..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-# Copyright (C) 2002  Cluster File Systems, Inc.
-#
-# This code is issued under the GNU General Public License.
-# See the file COPYING in this distribution
-
-DEFS=
-
-MODULE = ptlbd
-modulefs_DATA = ptlbd.o
-EXTRA_PROGRAMS = ptlbd
-
-ptlbd_SOURCES = blk.c client.c main.c rpc.c server.c
-
-include $(top_srcdir)/Rules
index 0446dc8..6b76199 100644 (file)
@@ -3,9 +3,11 @@
 # This code is issued under the GNU General Public License.
 # See the file COPYING in this distribution
 
+if MODULES
 if !LINUX25
 modulefs_DATA = ptlbd$(KMODEXT)
 endif
+endif
 
 MOSTLYCLEANFILES = *.o *.ko *.mod.c
 DIST_SOURCES = $(ptlbd-objs:%.o=%.c)
index ccef070..77c0dd8 100644 (file)
@@ -255,10 +255,10 @@ static void ptlbd_request(request_queue_t *q)
 }
 
 static struct block_device_operations ptlbd_ops = {
-        .owner = THIS_MODULE,
-        .open = ptlbd_open,
+        .owner   = THIS_MODULE,
+        .open    = ptlbd_open,
+        .ioctl   = ptlbd_ioctl,
         .release = ptlbd_release,
-        .ioctl = ptlbd_ioctl,
 };
 
 int ptlbd_blk_init(void)
index 2ccf00e..94fc1f2 100644 (file)
@@ -191,11 +191,11 @@ out_req:
 
 
 static struct obd_ops ptlbd_cl_obd_ops = {
-        o_owner:        THIS_MODULE,
-        o_setup:        ptlbd_cl_setup,
-        o_cleanup:      ptlbd_cl_cleanup,
-        o_connect:      ptlbd_cl_connect,
-        o_disconnect:   ptlbd_cl_disconnect,
+        .o_owner        = THIS_MODULE,
+        .o_setup        = ptlbd_cl_setup,
+        .o_cleanup      = ptlbd_cl_cleanup,
+        .o_connect      = ptlbd_cl_connect,
+        .o_disconnect   = ptlbd_cl_disconnect,
 };
 
 static struct lprocfs_vars lprocfs_obd_vars[] = { {0} };
index daa0b3c..f25b811 100644 (file)
@@ -98,11 +98,11 @@ static int ptlbd_sv_cleanup(struct obd_device *obd, int flags)
 }
 
 static struct obd_ops ptlbd_sv_obd_ops = {
-        o_owner:        THIS_MODULE,
-        o_setup:        ptlbd_sv_setup,
-        o_cleanup:      ptlbd_sv_cleanup,
-        o_connect:      class_connect,
-        o_disconnect:   class_disconnect,
+        .o_owner        = THIS_MODULE,
+        .o_setup        = ptlbd_sv_setup,
+        .o_cleanup      = ptlbd_sv_cleanup,
+        .o_connect      = class_connect,
+        .o_disconnect   = class_disconnect,
 };
 
 static struct lprocfs_vars lprocfs_obd_vars[] = { {0} };
index cf51f30..7496232 100644 (file)
@@ -3,8 +3,14 @@ config.log
 config.status
 configure
 Makefile
-Makefile.in
 .deps
 tags
 TAGS
 .*.cmd
+autoMakefile.in
+autoMakefile
+*.ko
+*.mod.c
+.*.flags
+.tmp_versions
+.depend
diff --git a/lustre/ptlrpc/Makefile.am b/lustre/ptlrpc/Makefile.am
deleted file mode 100644 (file)
index 4822d33..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-# Copyright (C) 2001  Cluster File Systems, Inc.
-#
-# This code is issued under the GNU General Public License.
-# See the file COPYING in this distribution
-
-DEFS=
-
-LDLM_COMM_SOURCES= $(top_srcdir)/ldlm/l_lock.c $(top_srcdir)/ldlm/ldlm_lock.c \
-    $(top_srcdir)/ldlm/ldlm_resource.c $(top_srcdir)/ldlm/ldlm_lib.c          \
-    $(top_srcdir)/ldlm/ldlm_plain.c $(top_srcdir)/ldlm/ldlm_extent.c          \
-    $(top_srcdir)/ldlm/ldlm_request.c $(top_srcdir)/ldlm/ldlm_lockd.c         \
-    $(top_srcdir)/ldlm/ldlm_internal.h
-
-COMMON_SOURCES =  client.c recover.c connection.c niobuf.c pack_generic.c   \
-    events.c ptlrpc_module.c service.c pinger.c recov_thread.c llog_net.c   \
-    llog_client.c llog_server.c import.c ptlrpcd.c ptlrpc_internal.h        \
-    $(LDLM_COMM_SOURCES)
-
-if LIBLUSTRE
-
-noinst_LIBRARIES = libptlrpc.a
-libptlrpc_a_CFLAGS = -fPIC
-libptlrpc_a_SOURCES = $(COMMON_SOURCES)
-
-else
-
-MODULE = ptlrpc
-modulefs_DATA = ptlrpc.o
-EXTRA_PROGRAMS = ptlrpc
-
-ptlrpc_SOURCES = $(top_srcdir)/ldlm/ldlm_flock.c $(COMMON_SOURCES) \
-    lproc_ptlrpc.c
-
-endif
-
-ptlrpc_DEPENDENCIES=symlinks
-
-symlinks:
-       ln -sf $(subst /ldlm/,/ptlrpc/,$(addsuffix .o,$(basename $(LDLMSOURCES)))) ../ldlm
-
-include $(top_srcdir)/Rules
index 6b27d3e..bd319a4 100644 (file)
@@ -8,11 +8,11 @@ ptlrpc-objs := $(LDLM)l_lock.o $(LDLM)ldlm_lock.o
 ptlrpc-objs += $(LDLM)ldlm_resource.o $(LDLM)ldlm_lib.o
 ptlrpc-objs += $(LDLM)ldlm_plain.o $(LDLM)ldlm_extent.o
 ptlrpc-objs += $(LDLM)ldlm_request.o $(LDLM)ldlm_lockd.o
-ptlrpc-objs += $(LDLM)ldlm_flock.o $(LDLM)ldlm_inodebits.o
+ptlrpc-objs += $(LDLM)ldlm_flock.o
 ptlrpc-objs += client.o recover.o connection.o niobuf.o pack_generic.o
 ptlrpc-objs += events.o ptlrpc_module.o service.o pinger.o recov_thread.o
 ptlrpc-objs += llog_net.o llog_client.o llog_server.o import.o ptlrpcd.o
-ptlrpc-objs += pers.o lproc_ptlrpc.o
+ptlrpc-objs += lproc_ptlrpc.o
 
 default: all
 
index 96dcfe3..bac9ea4 100644 (file)
@@ -7,11 +7,11 @@ LDLM_COMM_SOURCES= $(top_srcdir)/ldlm/l_lock.c $(top_srcdir)/ldlm/ldlm_lock.c \
     $(top_srcdir)/ldlm/ldlm_resource.c $(top_srcdir)/ldlm/ldlm_lib.c          \
     $(top_srcdir)/ldlm/ldlm_plain.c $(top_srcdir)/ldlm/ldlm_extent.c          \
     $(top_srcdir)/ldlm/ldlm_request.c $(top_srcdir)/ldlm/ldlm_lockd.c         \
-    $(top_srcdir)/ldlm/ldlm_internal.h $(top_srcdir)/ldlm/ldlm_inodebits.c
+    $(top_srcdir)/ldlm/ldlm_internal.h
 
 COMMON_SOURCES =  client.c recover.c connection.c niobuf.c pack_generic.c   \
     events.c ptlrpc_module.c service.c pinger.c recov_thread.c llog_net.c   \
-    llog_client.c llog_server.c import.c ptlrpcd.c pers.c                  \
+    llog_client.c llog_server.c import.c ptlrpcd.c                         \
     ptlrpc_internal.h $(LDLM_COMM_SOURCES)
 
 if LIBLUSTRE
index 45bae96..1887589 100644 (file)
@@ -409,9 +409,9 @@ static int ptlrpc_check_reply(struct ptlrpc_request *req)
         
         if (req->rq_net_err && !req->rq_timedout) {
                 spin_unlock_irqrestore (&req->rq_lock, flags);
-                ptlrpc_expire_one_request(req); 
+                rc = ptlrpc_expire_one_request(req); 
                 spin_lock_irqsave (&req->rq_lock, flags);
-                GOTO(out, rc = 0);
+                GOTO(out, rc);
         }
 
         if (req->rq_err) {
@@ -631,6 +631,9 @@ int ptlrpc_check_set(struct ptlrpc_request_set *set)
                 if (req->rq_phase == RQ_PHASE_INTERPRET)
                         GOTO(interpret, req->rq_status);
 
+                if (req->rq_net_err && !req->rq_timedout)
+                        ptlrpc_expire_one_request(req); 
+
                 if (req->rq_err) {
                         ptlrpc_unregister_reply(req);
                         if (req->rq_status == 0)
@@ -663,10 +666,6 @@ int ptlrpc_check_set(struct ptlrpc_request_set *set)
                 }
 
                 if (req->rq_phase == RQ_PHASE_RPC) {
-                        if (req->rq_net_err && !req->rq_timedout) {
-                                ptlrpc_expire_one_request(req); 
-                                continue;
-                        }
                         if (req->rq_waiting || req->rq_resend) {
                                 int status;
 
index 466916b..c6a4163 100644 (file)
@@ -84,7 +84,8 @@ struct ptlrpc_connection *ptlrpc_get_connection(struct ptlrpc_peer *peer,
 
         /* FIXME: this should be a slab once we can validate slab addresses
          * without OOPSing */
-        OBD_ALLOC(c, sizeof(*c));
+        OBD_ALLOC_GFP(c, sizeof(*c), GFP_ATOMIC);
+       
         if (c == NULL)
                 GOTO(out, c);
 
index f424e53..f369733 100644 (file)
@@ -27,7 +27,7 @@
 
 #define DEBUG_SUBSYSTEM S_RPC
 #ifndef __KERNEL__
-#include <liblustre.h>
+# include <liblustre.h>
 #endif
 
 #include <linux/obd_support.h>
index ad1d502..551ec6f 100644 (file)
@@ -38,9 +38,6 @@
 static DECLARE_MUTEX(pinger_sem);
 static struct list_head pinger_imports = LIST_HEAD_INIT(pinger_imports);
 
-#ifdef __KERNEL__
-static struct ptlrpc_thread *pinger_thread = NULL;
-
 int ptlrpc_ping(struct obd_import *imp) 
 {
         struct ptlrpc_request *req;
@@ -67,6 +64,7 @@ int ptlrpc_ping(struct obd_import *imp)
         RETURN(rc);
 }
 
+#ifdef __KERNEL__
 static int ptlrpc_pinger_main(void *arg)
 {
         struct ptlrpc_svc_data *data = (struct ptlrpc_svc_data *)arg;
@@ -82,7 +80,9 @@ static int ptlrpc_pinger_main(void *arg)
         RECALC_SIGPENDING;
         SIGNAL_MASK_UNLOCK(current, flags);
 
-        THREAD_NAME(current->comm, "%s", data->name);
+        LASSERTF(strlen(data->name) < sizeof(current->comm),
+                 "name %d > len %d\n",strlen(data->name),sizeof(current->comm));
+        THREAD_NAME(current->comm, sizeof(current->comm) - 1, "%s", data->name);
         unlock_kernel();
 
         /* Record that the thread is running */
@@ -170,6 +170,8 @@ static int ptlrpc_pinger_main(void *arg)
         return 0;
 }
 
+static struct ptlrpc_thread *pinger_thread = NULL;
+
 int ptlrpc_start_pinger(void)
 {
         struct l_wait_info lwi = { 0 };
@@ -279,7 +281,8 @@ void ptlrpc_pinger_wake_up()
 #endif
 }
 
-#else
+#else /* !__KERNEL__ */
+
 /* XXX
  * the current implementation of pinger in liblustre is not optimized
  */
index 3d66eae..490dc36 100644 (file)
@@ -232,8 +232,8 @@ static int log_commit_thread(void *arg)
         SIGNAL_MASK_UNLOCK(current, flags);
 
         spin_lock(&lcm->lcm_thread_lock);
-        THREAD_NAME(current->comm, "ll_log_commit_%d",
-                    atomic_read(&lcm->lcm_thread_total));
+        THREAD_NAME(current->comm, sizeof(current->comm) - 1,
+                    "ll_log_comt_%02d", atomic_read(&lcm->lcm_thread_total));
         atomic_inc(&lcm->lcm_thread_total);
         spin_unlock(&lcm->lcm_thread_lock);
         unlock_kernel();
index 939e9dd..8b63519 100644 (file)
@@ -663,7 +663,9 @@ static int ptlrpc_main(void *arg)
         RECALC_SIGPENDING;
         SIGNAL_MASK_UNLOCK(current, flags);
 
-        THREAD_NAME(current->comm, "%s", data->name);
+        LASSERTF(strlen(data->name) < sizeof(current->comm),
+                 "name %d > len %d\n",strlen(data->name),sizeof(current->comm));
+        THREAD_NAME(current->comm, sizeof(current->comm) - 1, "%s", data->name);
         unlock_kernel();
 
         /* Record that the thread is running */
@@ -673,7 +675,7 @@ static int ptlrpc_main(void *arg)
         spin_lock_irqsave(&svc->srv_lock, flags);
         svc->srv_nthreads++;
         spin_unlock_irqrestore(&svc->srv_lock, flags);
-        
+
         /* XXX maintain a list of all managed devices: insert here */
 
         while ((thread->t_flags & SVC_STOPPING) == 0 ||
@@ -681,7 +683,7 @@ static int ptlrpc_main(void *arg)
                 /* Don't exit while there are replies to be handled */
                 struct l_wait_info lwi = LWI_TIMEOUT(svc->srv_rqbd_timeout,
                                                      ptlrpc_retry_rqbds, svc);
-                                  
+
                 l_wait_event_exclusive (svc->srv_waitq,
                               ((thread->t_flags & SVC_STOPPING) != 0 &&
                                svc->srv_n_difficult_replies == 0) ||
@@ -690,7 +692,7 @@ static int ptlrpc_main(void *arg)
                               !list_empty (&svc->srv_reply_queue) ||
                               (!list_empty (&svc->srv_request_queue) &&
                                (svc->srv_n_difficult_replies == 0 ||
-                                svc->srv_n_active_reqs < 
+                                svc->srv_n_active_reqs <
                                 (svc->srv_nthreads - 1))),
                               &lwi);
 
@@ -743,7 +745,7 @@ static void ptlrpc_stop_thread(struct ptlrpc_service *svc,
         spin_lock_irqsave(&svc->srv_lock, flags);
         list_del(&thread->t_link);
         spin_unlock_irqrestore(&svc->srv_lock, flags);
-        
+
         OBD_FREE(thread, sizeof(*thread));
 }
 
@@ -754,7 +756,7 @@ void ptlrpc_stop_all_threads(struct ptlrpc_service *svc)
 
         spin_lock_irqsave(&svc->srv_lock, flags);
         while (!list_empty(&svc->srv_threads)) {
-                thread = list_entry(svc->srv_threads.next, 
+                thread = list_entry(svc->srv_threads.next,
                                     struct ptlrpc_thread, t_link);
 
                 spin_unlock_irqrestore(&svc->srv_lock, flags);
@@ -765,6 +767,7 @@ void ptlrpc_stop_all_threads(struct ptlrpc_service *svc)
         spin_unlock_irqrestore(&svc->srv_lock, flags);
 }
 
+/* @base_name should be 12 characters or less - 3 will be added on */
 int ptlrpc_start_n_threads(struct obd_device *dev, struct ptlrpc_service *svc,
                            int num_threads, char *base_name)
 {
index 104ddf7..9db437f 100644 (file)
@@ -7,3 +7,4 @@ Makefile
 Makefile.in
 .deps
 TAGS
+version_tag.pl
index 4da183e..5e57916 100644 (file)
@@ -3,7 +3,7 @@
 # This code is issued under the GNU General Public License.
 # See the file COPYING in this distribution
 
-EXTRA_DIST = license-status maketags.sh lustre.spec version_tag.pl     \
+EXTRA_DIST = license-status maketags.sh lustre.spec version_tag.pl.in  \
        $(initd_SCRIPTS) lustre.spec.in lustre-kernel-2.4.spec.in       \
        lmake linux-merge-config.awk linux-merge-modules.awk            \
        linux-rhconfig.h
@@ -11,5 +11,3 @@ EXTRA_DIST = license-status maketags.sh lustre.spec version_tag.pl    \
 initddir = $(sysconfdir)/init.d
 initd_SCRIPTS = lustre
 
-include $(top_srcdir)/Rules
-
index 16f6b20..76ca062 100755 (executable)
@@ -93,4 +93,4 @@ else
 fi
 echo "done"
 
-echo "Test, commit and then run land2.sh (no arguments)"
+echo "Build, test, commit and then run land2.sh (no arguments)"
index 2c76308..1cd283e 100755 (executable)
@@ -270,6 +270,7 @@ patch_linux()
     popd >/dev/null
     echo "Full patch has been saved in ${FULL_PATCH##*/}."
     echo "Replacing .config files..."
+    [ -d linux/configs ] || mkdir linux/configs
     rm -f linux/configs/*
     cp -v lustre/kernel_patches/kernel_configs/kernel-${VERSION}-${TARGET}*.config linux/configs/
 }
index a79f89b..9f92230 100755 (executable)
@@ -275,20 +275,34 @@ patch_kernel()
     popd >/dev/null
 }
 
+set_make()
+{
+    MAKE="make -s CC=$CC"
+    if [ "$ARCH" ] ; then
+       MAKE="$MAKE ARCH=$ARCH"
+    fi
+    MAKE_J="$MAKE -j $JOBS"
+}
+
 depend_kernel()
 {
     (( $DEPEND_KERNEL )) || return 0
     # we need to override $CC at make time, since there is no
     # configure
-    MAKE="make -s CC=$CC"
+    set_make
     pushd "$TOPDIR/linux" >/dev/null
     echo "Overriding EXTRAVERSION in kernel..."
     perl -p -i -e "s/^EXTRAVERSION.*/EXTRAVERSION = -${EXTRA_VERSION}${TARGET_CONFIG}/" Makefile
     echo "Making depend in $PWD..."
     $MAKE mrproper || fatal 1 "Error running make mrproper"
     cp "$CONFIG_FILE" .config
-    $MAKE oldconfig_nonint || fatal 1 "Error running make oldconfig"
-    $MAKE -j $JOBS dep || fatal 1 "Error running make dep"
+    if grep -q oldconfig_nonint Makefile ; then
+       OLDCONFIG='oldconfig_nonint'
+    else
+       OLDCONFIG='oldconfig'
+    fi
+    $MAKE $OLDCONFIG || fatal 1 "Error running make oldconfig"
+    $MAKE_J dep || fatal 1 "Error running make dep"
     $MAKE include/linux/version.h || fatal 1 "Error making include/linux/version.h"
 }
 
@@ -297,17 +311,17 @@ build_kernel()
     (( $BUILD_KERNEL )) || return 0
     # we need to override $CC at make time, since there is no
     # configure
-    MAKE="make -s CC=$CC"
+    set_make
     echo "Building kernel in $PWD..."
     case "$TARGET_ARCH" in
        i386 | i586 | i686 | athlon | x86_64)
-           $MAKE -j $JOBS -s bzImage || fatal 1 "Error making bzImage."
+           $MAKE_J bzImage || fatal 1 "Error making bzImage."
            ;;
        *)
-           $MAKE -j $JOBS -s boot || fatal 1 "Error making boot."
+           $MAKE_J boot || fatal 1 "Error making boot."
            ;;
     esac
-    $MAKE -j $JOBS -s modules || fatal 1 "Error building modules."
+    $MAKE_J modules || fatal 1 "Error building modules."
 
     popd >/dev/null
 }
@@ -326,8 +340,9 @@ configure_lustre()
 build_lustre()
 {
     (( $BUILD_LUSTRE )) || return 0
+    set_make
     pushd "$TOPDIR" >/dev/null
-    make -j $JOBS -s || fatal 1 "Error building Lustre."
+    $MAKE_J || fatal 1 "Error building Lustre."
     popd >/dev/null
 }
 
index 0ff57ea..a7d2764 100644 (file)
@@ -21,6 +21,7 @@ Summary: The Linux kernel (the core of the Linux operating system)
 %define nptlarchs %{all_x86}
 #define nptlarchs noarch
 %define rhbuild @RHBUILD@
+%define linux26 @LINUX26@
 
 # disable build root strip policy
 %define __spec_install_post /usr/lib/rpm/brp-compress || :
@@ -105,8 +106,11 @@ Second, per-architecture exclusions (ifarch)
 
 %{expand: %%define kernel_conflicts  ppp <= 2.3.15, pcmcia-cs <= 3.1.20, isdn4k-utils <= 3.0, mount < 2.10r-5, nfs-utils < 0.3.1, cipe < 1.4.5, tux < 2.1.0, kudzu <= 0.92, e2fsprogs < 1.22, initscripts < 5.84, dev < 3.2-7, iptables < 1.2.5-3, bcm5820 < 1.81, nvidia-rh72 <= 1.0, oprofile < 0.4}
 
+%if %{rhbuild}
 %define BOOT_kernel_prereq fileutils, modutils >=  2.4.18
 %define kernel_prereq %{BOOT_kernel_prereq}, initscripts >= 5.83, mkinitrd >= 3.2.6
+%endif
+
 %ifarch ia64
 %define initrd_dir /boot/efi/redhat
 %else
@@ -139,11 +143,13 @@ BuildConflicts: rhbuildsys(DiscFree) < 500Mb
 Provides: kernel-drm = 4.1.0, kernel-drm = 4.2.0, kernel-drm = 4.3.0, kernel-drm = 4.2.99.3
 %endif
 Autoreqprov: no
+%if %{rhbuild}
 Prereq: %{kernel_prereq}
 Conflicts: %{kernel_conflicts}
 
 BuildPreReq: patch >= 2.5.4, bash >= 2.03, sh-utils, gnupg, tar
 BuildPreReq: bzip2, findutils, dev, gzip, m4
+%endif
 
 Vendor: Cluster File Systems, Inc.
 URL: http://www.kernel.org/
@@ -195,8 +201,10 @@ Provides: module-info, kernel = %{version}
 %ifarch %{all_x86} ia64 x86_64
 Provides: kernel-drm = 4.1.0, kernel-drm = 4.2.0, kernel-drm = 4.3.0, kernel-drm = 4.2.99.3
 %endif
+%if %{rhbuild}
 Prereq: %{kernel_prereq}
 Conflicts: %{kernel_conflicts}
+%endif
 
 %description smp
 This package includes a SMP version of the Linux kernel. It is
@@ -212,9 +220,11 @@ Provides: module-info, kernel = %{version}
 %ifarch %{all_x86} ia64 x86_64
 Provides: kernel-drm = 4.1.0, kernel-drm = 4.2.0, kernel-drm = 4.3.0, kernel-drm = 4.2.99.3
 %endif
+%if %{rhbuild}
 Prereq: %{kernel_prereq}
 Conflicts: %{kernel_conflicts}
 Obsoletes: kernel-enterprise <= 2.4.10
+%endif
 
 %description bigmem
 This package includes a kernel that has appropriate configuration options
@@ -224,8 +234,10 @@ enabled for Pentium III machines with 4 Gigabyte of memory or more.
 Summary: The version of the Linux kernel used on installation boot disks.
 Group: System Environment/Kernel
 Provides: kernel = %{version}
+%if %{rhbuild}
 Prereq: %{BOOT_kernel_prereq}
 Conflicts: %{kernel_conflicts}
+%endif
 
 %description BOOT
 This package includes a trimmed down version of the Linux kernel.
@@ -237,8 +249,10 @@ turned off because of the size constraints.
 Summary: The Linux kernel used on installation boot disks for SMP machines.
 Group: System Environment/Kernel
 Provides: kernel = %{version}
+%if %{rhbuild}
 Prereq: %{BOOT_kernel_prereq}
 Conflicts: %{kernel_conflicts}
+%endif
 
 %description BOOTsmp
 This package includes a trimmed down version of the Linux kernel. This
@@ -251,8 +265,10 @@ machines that have trouble coming up to life with the uniprocessor kernel.
 Summary: The Linux Kernel compiled for the Alpha Jensen platform.
 Group: System Environment/Kernel
 Provides: kernel = %{version}
+%if %{rhbuild}
 Prereq: %{kernel_prereq}
 Conflicts: %{kernel_conflicts}
+%endif
 
 %description jensen
 This package includes a kernel that has appropriate configuration
@@ -429,11 +445,21 @@ ln -sf linux-%{KVERREL} $RPM_BUILD_ROOT/usr/src/linux
 
 #clean up the destination
 make -s mrproper -C $RPM_BUILD_ROOT/usr/src/linux-%{KVERREL}
-rm -rf $RPM_BUILD_ROOT/usr/src/linux-%{KVERREL}/configs/*
+rm -rf $RPM_BUILD_ROOT/usr/src/linux-%{KVERREL}/configs
+mkdir -p $RPM_BUILD_ROOT/usr/src/linux-%{KVERREL}/configs
 cp ../kernel_patches/kernel_configs/kernel-%{kversion}-@LUSTRE_TARGET@*.config $RPM_BUILD_ROOT/usr/src/linux-%{KVERREL}/configs
 cp ../kernel_patches/kernel_configs/kernel-%{kversion}-@LUSTRE_TARGET@-%{_target_cpu}%{dashtargetboard}.config $RPM_BUILD_ROOT/usr/src/linux-%{KVERREL}/.config
-make -s oldconfig_nonint -C $RPM_BUILD_ROOT/usr/src/linux-%{KVERREL}
+if grep -q oldconfig_nonint $RPM_BUILD_ROOT/usr/src/linux-%{KVERREL}/Makefile ; then
+       OLDCONFIG='oldconfig_nonint'
+else
+       OLDCONFIG='oldconfig'
+fi
+make -s $OLDCONFIG -C $RPM_BUILD_ROOT/usr/src/linux-%{KVERREL}
+%if %{linux26}
+make -s include/asm -C $RPM_BUILD_ROOT/usr/src/linux-%{KVERREL}
+%else
 make -s symlinks -C $RPM_BUILD_ROOT/usr/src/linux-%{KVERREL}
+%endif
 make -s include/linux/version.h -C $RPM_BUILD_ROOT/usr/src/linux-%{KVERREL}
 
 #this generates modversions info which we want to include and we may as
@@ -733,7 +759,6 @@ exit 0
 /usr/src/linux-%{KVERREL}/Makefile
 /usr/src/linux-%{KVERREL}/README
 /usr/src/linux-%{KVERREL}/REPORTING-BUGS
-/usr/src/linux-%{KVERREL}/Rules.make
 /usr/src/linux-%{KVERREL}/arch
 %ifarch sparc
 /usr/src/linux-%{KVERREL}/arch/sparc64
@@ -775,6 +800,15 @@ exit 0
 %ifarch alpha sparc
 /usr/src/linux-%{KVERREL}/include/math-emu
 %endif
+%if %{linux26}
+%dir /usr/src/linux-%{KVERREL}/crypto
+%dir /usr/src/linux-%{KVERREL}/kdb
+/usr/src/linux-%{KVERREL}/Makefile.suse
+%dir /usr/src/linux-%{KVERREL}/rpmify
+%dir /usr/src/linux-%{KVERREL}/security
+%else
+/usr/src/linux-%{KVERREL}/Rules.make
+%endif
 %endif
 
 %files doc
@@ -785,10 +819,10 @@ exit 0
 %defattr(-, root, root)
 %doc lustre/COPYING lustre/BUGS lustre/ChangeLog lustre/README lustre/doc/lustre.pdf
 /sbin/*
-%{_sbindir}/*
-%{_bindir}/*
-%{_libdir}/lustre/python
-%{_sysconfdir}/init.d/lustre
+/usr/sbin/*
+/usr/bin/*
+/usr/lib/lustre/python
+/etc/init.d/lustre
 /usr/include/lustre
 /lib/lib*.a
 
index 33e169a..329ef4c 100644 (file)
@@ -1,5 +1,5 @@
 # lustre.spec
-%define version 1.2.1.6
+%define version @VERSION@
 %define kversion @LINUXRELEASE@
 %define linuxdir @LINUX@
 %define enable_doc @ENABLE_DOC@
@@ -72,7 +72,7 @@ rm -rf $RPM_BUILD_ROOT
 
 # Set an explicit path to our Linux tree, if we can.
 cd $RPM_BUILD_DIR/lustre-%{version}
-./configure --with-linux='%{linuxdir}' %{disable_doc}
+./configure --with-linux='%{linuxdir}' %{disable_doc} --disable-liblustre
 make
 
 %install
index 9bdc9b5..244c8d1 100755 (executable)
@@ -70,4 +70,4 @@ else
     echo "No conflicts found"
     rm -f $CONFLICTS
 fi
-echo "Test, commit and then run merge2.sh (no arguments)"
+echo "Build, test, commit and then run merge2.sh (no arguments)"
diff --git a/lustre/scripts/version_tag.pl b/lustre/scripts/version_tag.pl
deleted file mode 100644 (file)
index 334d2d6..0000000
+++ /dev/null
@@ -1,188 +0,0 @@
-#!/usr/bin/perl
-# -*- Mode: perl; indent-tabs-mode: nil; cperl-indent-level: 4 -*-
-
-use strict;
-use diagnostics;
-use IO::File;
-use Time::Local;
-
-my $pristine = 1;
-my $kernver;
-
-# Use the CVS tag first otherwise use the portals version
-sub get_tag()
-{
-    my $tag;
-    my $line;
-
-    my $tagfile = new IO::File;
-    if (!$tagfile->open("CVS/Tag")) {
-        my $verfile = new IO::File;
-        if (!$verfile->open("portals/include/config.h")) {
-          return "UNKNOWN";
-        }
-        while(defined($line = <$verfile>)) {
-            $line =~ /\#define VERSION "(.*)"/;
-            if ($1) {
-                $tag = $1;
-                last;
-            }
-        }
-        $verfile->close();
-        return $tag
-    } else {
-        my $tmp = <$tagfile>;
-        $tagfile->close();
-
-        $tmp =~ m/T(.*)/;
-        return $1;
-    }
-}
-
-sub get_latest_mtime()
-{
-    my %months=("Jan" => 0, "Feb" => 1, "Mar" => 2, "Apr" => 3, "May" => 4,
-                "Jun" => 5, "Jul" => 6, "Aug" => 7, "Sep" => 8, "Oct" => 9,
-                "Nov" => 10, "Dec" => 11);
-
-    my $last_mtime = 0;
-    my @entries = `find . -name Entries`;
-    my $entry_file;
-    foreach $entry_file (@entries) {
-        chomp($entry_file);
-        my $entry = new IO::File;
-        if (!$entry->open($entry_file)) {
-            die "unable to open $entry_file: $!\n";
-        }
-        my $line;
-        while (defined($line = <$entry>)) {
-            chomp($line);
-            #print "line: $line\n";
-            my ($junk, $file, $version, $date) = split(/\//, $line);
-
-            #print "junk: $junk\nfile: $file\nver: $version\ndate: $date\n";
-            #print "last_mtime: " . localtime($last_mtime) . "\n";
-
-            if ($junk eq "D" ||
-                $file eq "lustre.spec.in" ||
-                $file !~ m/\.(c|h|am|in)$/) {
-                next;
-            }
-
-            my $cur_dir = $entry_file;
-            $cur_dir =~ s/\/CVS\/Entries$//;
-            my @statbuf = stat("$cur_dir/$file");
-            my $mtime = $statbuf[9];
-            if (!defined($mtime)) {
-                next;
-            }
-            my $local_date = gmtime($mtime);
-            if ($local_date ne $date &&
-                $file ne "lustre.spec.in") {
-                #print "$file : " . localtime($mtime) . "\n";
-                $pristine = 0;
-            }
-
-            if ($mtime > $last_mtime) {
-                $last_mtime = $mtime;
-            }
-
-            if ($date) {
-                my @t = split(/ +/, $date);
-                if (int(@t) != 5) {
-                    #print "skipping: $date\n";
-                    next;
-                }
-                my ($hours, $min, $sec) = split(/:/, $t[3]);
-                my ($mon, $mday, $year) = ($t[1], $t[2], $t[4]);
-                my $secs = 0;
-                $mon = $months{$mon};
-                $secs = timelocal($sec, $min, $hours, $mday, $mon, $year);
-                if ($secs > $last_mtime) {
-                    $last_mtime = $secs;
-                }
-            }
-        }
-        $entry->close();
-    }
-    return $last_mtime;
-}
-
-sub get_linuxdir()
-{
-    my $config = new IO::File;
-    my ($line, $dir);
-    if (!$config->open("Makefile")) {
-        die "Run ./configure first\n";
-    }
-    while (defined($line = <$config>)) {
-        chomp($line);
-        if ($line =~ /LINUX :?= (.*)/) {
-            $dir = $1;
-            last;
-        }
-    }
-    $config->close();
-    my $ver = new IO::File;
-    if (!$ver->open("$dir/include/linux/version.h")) {
-        die "Run make dep on $dir\n";
-    }
-    while(defined($line = <$ver>)) {
-        $line =~ /\#define UTS_RELEASE "(.*)"/;
-        if ($1) {
-            $kernver = $1;
-            last;
-        }
-    }
-    $ver->close();
-    chomp($kernver);
-    $dir =~ s/\//\./g;
-    return $dir;
-}
-
-sub generate_ver($$$)
-{
-    my $tag = shift;
-    my $mtime = shift;
-    my $linuxdir = shift;
-
-    #print "localtime: " . localtime($mtime) . "\n";
-
-    my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) =
-      localtime($mtime);
-    $year += 1900;
-    $mon++;
-    my $show_last = sprintf("%04d%02d%02d%02d%02d%02d", $year, $mon, $mday,
-                            $hour, $min, $sec);
-
-    print "#define BUILD_VERSION \"";
-    if ($pristine) {
-        print "$tag-$show_last-PRISTINE-$linuxdir-$kernver\"\n";
-    } else {
-        print "$tag-$show_last-CHANGED-$linuxdir-$kernver\"\n";
-    }
-}
-chomp(my $cwd = `pwd`);
-
-# ARGV[0] = srcdir
-# ARGV[1] = builddir
-
-# for get_latest_mtime and get_tag you need to be in srcdir
-
-if ($ARGV[0]) {
-    chdir($ARGV[0]);
-}
-my $tag = get_tag();
-my $mtime = get_latest_mtime();
-
-# for get_linuxdir you need to be in builddir 
-
-if ($ARGV[1]) {
-   chdir($cwd);
-   chdir($ARGV[1]);
-}
-my $linuxdir = get_linuxdir();
-
-generate_ver($tag, $mtime, $linuxdir);
-
-exit(0);
index 49c6100..e31a39b 100644 (file)
@@ -3,7 +3,12 @@ config.log
 config.status
 configure
 Makefile
-Makefile.in
 .deps
 TAGS
 .*.cmd
+autoMakefile.in
+autoMakefile
+*.ko
+*.mod.c
+.*.flags
+.tmp_versions
diff --git a/lustre/smfs/Makefile.am b/lustre/smfs/Makefile.am
deleted file mode 100644 (file)
index 529d029..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-# Copyright (C) 2001  Cluster File Systems, Inc.
-#
-# This code is issued under the GNU General Public License.
-# See the file COPYING in this distribution
-
-
-DEFS= 
-
-MODULE = smfs
-modulefs_DATA = smfs.o
-EXTRA_PROGRAMS = smfs
-
-smfs_SOURCES = super.c options.c inode.c cache.c dir.c sysctl.c file.c 
-smfs_SOURCES += symlink.c sm_fs.c kml.c reint.c journal.c journal_ext3.c
-smfs_SOURCES += smfs_llog.c
-include $(top_srcdir)/Rules
index 3b277a9..eca9004 100644 (file)
@@ -3,9 +3,11 @@
 # This code is issued under the GNU General Public License.
 # See the file COPYING in this distribution
 
+if MODULES
 if SMFS
 modulefs_DATA = smfs$(KMODEXT)
 endif
+endif
 
 MOSTLYCLEANFILES = *.o *.ko *.mod.c
 DIST_SOURCES = $(smfs-objs:%.o=%.c) kml_idl.h smfs_internal.h smfs_support.h
index 49c6100..e31a39b 100644 (file)
@@ -3,7 +3,12 @@ config.log
 config.status
 configure
 Makefile
-Makefile.in
 .deps
 TAGS
 .*.cmd
+autoMakefile.in
+autoMakefile
+*.ko
+*.mod.c
+.*.flags
+.tmp_versions
diff --git a/lustre/snapfs/Makefile.am b/lustre/snapfs/Makefile.am
deleted file mode 100644 (file)
index 63a57a0..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-# Copyright (C) 2001  Cluster File Systems, Inc.
-#
-# This code is issued under the GNU General Public License.
-# See the file COPYING in this distribution
-
-
-DEFS= 
-SUBDIRS = . utils
-
-MODULE = snapfs
-modulefs_DATA = snapfs.o
-EXTRA_PROGRAMS = snapfs
-
-snapfs_SOURCES = cache.c  clonefs.c  dcache.c  dir.c  dotsnap.c  file.c 
-snapfs_SOURCES += filter.c  inode.c  journal_ext3.c  psdev.c 
-snapfs_SOURCES += snap.c  snaptable.c  super.c  symlink.c  sysctl.c options.c
-
-
-include $(top_srcdir)/Rules
index e5a57a9..8d2f79e 100644 (file)
@@ -5,9 +5,11 @@
 
 SUBDIRS = . utils
 
+if MODULES
 if SNAPFS
 modulefs_DATA = snapfs$(KMODEXT)
 endif
+endif
 
 MOSTLYCLEANFILES = *.o *.ko *.mod.c
 DIST_SOURCES = $(snapfs-objs:%.o=%.c) snapfs_internal.h snapfs_support.h
index e6fcc25..1487ee1 100644 (file)
@@ -1,13 +1,8 @@
 # Administration utilities Makefile
-#CPPFLAGS = $(HAVE_LIBREADLINE) -I$(top_srcdir)/utils -I$(top_srcdir)/portals/include  -I$(srcdir)/../ -Wall -L../../portals/utils
-#CFLAGS:= -g -O2 
-DEFS=
 
-CFLAGS:=-g -O2 -I$(top_srcdir)/utils -I$(top_srcdir)/portals/include  -I$(srcdir)/../ -Wall -L../../portals/utils
-CPPFLAGS = $(HAVE_LIBREADLINE)
-KFLAGS:=
+if SNAPFS
 noinst_PROGRAMS = snapconf
 snapconf_LDADD := $(LIBREADLINE)  -ltermcap
-snapconf_SOURCES = parser.c snapctl.c snapconf.c parser.h snapctl.h
-include $(top_srcdir)/Rules
+endif
 
+snapconf_SOURCES = parser.c snapctl.c snapconf.c parser.h snapctl.h
index a2bbe20..da73223 100644 (file)
@@ -34,7 +34,7 @@
 
 /* completion_matches() is #if 0-ed out in modern glibc */
 #ifndef completion_matches
-#define completion_matches rl_completion_matches
+#  define completion_matches rl_completion_matches
 #endif
 extern void using_history(void);
 extern void stifle_history(int);
@@ -248,18 +248,19 @@ static char * command_generator(const char * text, int state)
 /* probably called by readline */
 static char **command_completion(char * text, int start, int end)
 {
-        command_t         * table;
+        command_t   * table;
         char        * pos;
 
         match_tbl = top_level;
+
         for (table = find_cmd(rl_line_buffer, match_tbl, &pos);
-             table;
-             table = find_cmd(pos, match_tbl, &pos)) {
+             table; table = find_cmd(pos, match_tbl, &pos)) 
+        {
 
                 if (*(pos - 1) == ' ') match_tbl = table->pc_sub_cmd;
         }
 
-        return(completion_matches(text, command_generator));
+        return completion_matches(text, command_generator);
 }
 #endif
 
index d37259c..f313234 100644 (file)
@@ -1,11 +1,11 @@
 # Lustre test Makefile
-DEFS=
-CPPFLAGS = -I. -I$(top_srcdir)/portals/include/ -I$(top_srcdir)/include -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64
-CFLAGS := -g -Wall
+AM_CPPFLAGS = $(LLCPPFLAGS) -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64
+AM_CFLAGS = $(LLCFLAGS)
 # LDADD = -lldap
 # LDADD := -lreadline -ltermcap # -lefence
 EXTRA_DIST = $(pkgexample_SCRIPTS) $(noinst_SCRIPTS) $(noinst_DATA) \
        sanity.sh rundbench
+if TESTS
 pkgexample_SCRIPTS = llmount.sh llmountcleanup.sh llecho.sh llechocleanup.sh
 pkgexample_SCRIPTS += local.sh echo.sh uml.sh lov.sh
 noinst_DATA =
@@ -22,6 +22,7 @@ noinst_PROGRAMS += small_write multiop sleeptest ll_sparseness_verify
 noinst_PROGRAMS += ll_sparseness_write mrename ll_dirstripe_verify
 # noinst_PROGRAMS += ldaptest
 bin_PROGRAMS = mcreate munlink mkdirmany iopentest1 iopentest2
+endif # TESTS
 
 # ldaptest_SOURCES = ldaptest.c
 tchmod_SOURCES = tchmod.c
@@ -62,8 +63,7 @@ o_directory_SOURCES = o_directory.c
 utime_SOURCES = utime.c
 cmknod_SOURCES = cmknod.c
 mkdirdeep_SOURCES = mkdirdeep.c
-mkdirdeep_LDADD=-L$(top_builddir)/portals/utils -lptlctl
-mkdirdeep_CPPFLAGS=-I$(top_srcdir)/portals/include
+mkdirdeep_LDADD=-L$(top_builddir)/portals/utils -lptlctl $(LIBREADLINE)
 small_write_SOURCES = small_write.c
 sleeptest_SOURCES = sleeptest.c
 #write_append_truncate_SOURCES=write_append_truncate.c
@@ -75,5 +75,3 @@ sleeptest_SOURCES = sleeptest.c
 ll_sparseness_verify_SOURCES = ll_sparseness_verify.c
 ll_sparseness_write_SOURCES = ll_sparseness_write.c
 ll_dirstripe_verify_SOURCE = ll_dirstripe_verify.c
-
-include $(top_srcdir)/Rules
index fa42e2b..c8659e4 100644 (file)
@@ -46,7 +46,7 @@ int main( int argc, char **argv)
                fprintf(stderr, "%s: created device other than requested: (%d,%d) instead of (%d,%d)\n", prog, major(st.st_rdev),minor(st.st_rdev),major(device),minor(device));
                return 4;
        }
-       if ( ! (st.st_mode | S_IFBLK) ) {
+       if (!S_ISBLK(st.st_mode)) {
                fprintf(stderr, "%s: created device of different type. Requested block device, got mode %o\n", prog, st.st_mode);
                return 5;
        }
@@ -76,7 +76,7 @@ int main( int argc, char **argv)
                fprintf(stderr, "%s: created device other than requested: (%d,%d) instead of (%d,%d)\n", prog, major(st.st_rdev),minor(st.st_rdev),major(device),minor(device));
                return 9;
        }
-       if ( ! (st.st_mode | S_IFCHR) ) {
+       if (!S_ISCHR(st.st_mode)) {
                fprintf(stderr, "%s: created device of different type. Requested char device, got mode %o\n", prog, st.st_mode);
                return 10;
        }
index f1e7f4b..cec369b 100644 (file)
@@ -1,3 +1,6 @@
+/* -*- 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>
@@ -95,44 +98,44 @@ static int get_verbose(char *func, const char *arg)
 int main(int argc, char *argv[])
 {
         char filename[1024];
-       int verbose = 0;
+        int verbose = 0;
         unsigned long count, i;
-       int threads = 0;
-       char *end;
-       int rc;
+        int threads = 0;
+        char *end;
+        int rc = 0;
 
         if (argc < 3 || argc > 5) {
                 fprintf(stderr,
-                       "usage: %s <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;
@@ -143,7 +146,7 @@ int main(int argc, char *argv[])
                 rc = 0;
         }
 
-        if (threads && thread == 0) {  /* parent process */
+        if (threads && thread == 0) {   /* parent process */
                 int live_threads = threads;
 
                 while (live_threads > 0) {
@@ -178,47 +181,47 @@ int main(int argc, char *argv[])
                                 live_threads--;
                         }
                 }
-       } else {
+        } else {
                 struct timeval start, end, next_time;
-               unsigned long next_count;
-               double diff;
-
-               gettimeofday(&start, NULL);
-               next_time.tv_sec = start.tv_sec - verbose;
-               next_time.tv_usec = start.tv_usec;
-
-               for (i = 0, next_count = verbose; i < count; i++) {
-                       if (threads)
-                               sprintf(filename, "%s-%d-%ld",
-                                       argv[1], thread, i);
-                       else
-                               sprintf(filename, "%s-%ld", argv[1], i);
-
-                       rc = mknod(filename, S_IFREG, 0);
-                       if (rc < 0) {
-                               fprintf(stderr, "%s: error: mknod(%s): %s\n",
-                                       cmdname(argv[0]), filename,
-                                       strerror(errno));
-                               rc = errno;
-                               break;
-                       }
-                       if (unlink(filename) < 0) {
-                               fprintf(stderr, "%s: error: unlink(%s): %s\n",
-                                       cmdname(argv[0]), filename,
-                                       strerror(errno));
-                               rc = errno;
-                               break;
-                       }
-                       if (be_verbose(verbose, &next_time,i,&next_count,count))
-                               printf("%s: number %ld\n", cmdname(argv[0]), i);
-               }
-
-               gettimeofday(&end, NULL);
+                unsigned long next_count;
+                double diff;
+
+                gettimeofday(&start, NULL);
+                next_time.tv_sec = start.tv_sec - verbose;
+                next_time.tv_usec = start.tv_usec;
+
+                for (i = 0, next_count = verbose; i < count; i++) {
+                        if (threads)
+                                sprintf(filename, "%s-%d-%ld",
+                                        argv[1], thread, i);
+                        else
+                                sprintf(filename, "%s-%ld", argv[1], i);
+
+                        rc = mknod(filename, S_IFREG, 0);
+                        if (rc < 0) {
+                                fprintf(stderr, "%s: error: mknod(%s): %s\n",
+                                        cmdname(argv[0]), filename,
+                                        strerror(errno));
+                                rc = errno;
+                                break;
+                        }
+                        if (unlink(filename) < 0) {
+                                fprintf(stderr, "%s: error: unlink(%s): %s\n",
+                                        cmdname(argv[0]), filename,
+                                        strerror(errno));
+                                rc = errno;
+                                break;
+                        }
+                        if (be_verbose(verbose, &next_time,i,&next_count,count))
+                                printf("%s: number %ld\n", cmdname(argv[0]), i);
+                }
+
+                gettimeofday(&end, NULL);
                 diff = difftime(&end, &start);
 
-               printf("%s: %ldx2 files in %.4gs (%.4g ops/s): rc = %d: %s",
-                      cmdname(argv[0]), i, diff, (double)i * 2 / diff,
-                      rc, ctime(&end.tv_sec));
-       }
+                printf("%s: %ldx2 files in %.4gs (%.4g ops/s): rc = %d: %s",
+                       cmdname(argv[0]), i, diff, (double)i * 2 / diff,
+                       rc, ctime(&end.tv_sec));
+        }
         return rc;
 }
index f426488..1d62b20 100644 (file)
@@ -22,7 +22,7 @@ void usage(char *prog)
 int main(int argc, char ** argv)
 {
         int i, rc = 0, do_open = 0, do_link = 0;
-        char format[4096], *fmt, *tgt;
+        char format[4096], *fmt, *tgt = NULL;
         char filename[4096];
         long start, last, end;
         long begin = 0, count;
index 8524c91..12027d0 100644 (file)
@@ -96,7 +96,6 @@ char  *temp_buf;                      /* a pointer to the current data */
 char   *fname;                         /* name of our test file */
 char   logfile[1024];                  /* name of our log file */
 char   goodfile[1024];                 /* name of our test file */
-int    fd;                             /* fd for our test file */
 
 off_t          file_size = 0;
 off_t          biggest = 0;
@@ -384,12 +383,125 @@ check_buffers(unsigned offset, unsigned size)
        }
 }
 
+struct test_file {
+       char *path;
+       int fd;
+} *test_files = NULL;
+
+int num_test_files = 0;
+enum fd_iteration_policy {
+       FD_SINGLE,
+       FD_ROTATE,
+       FD_RANDOM,
+};
+int fd_policy = FD_RANDOM;
+int fd_last = 0;
+
+struct test_file * 
+get_tf(void)
+{
+       unsigned index = 0;
+
+       switch (fd_policy) {
+               case FD_ROTATE:
+                       index = fd_last++;
+                       break;
+               case FD_RANDOM:
+                       index = random();
+                       break;
+               case FD_SINGLE:
+                       index = 0;
+                       break;
+               default:
+                       prt("unknown policy");
+                       exit(1);
+                       break;
+       }
+       return &test_files[ index % num_test_files ];
+}
+
+void
+assign_fd_policy(char *policy)
+{
+       if (!strcmp(policy, "random"))
+               fd_policy = FD_RANDOM;
+       else if (!strcmp(policy, "rotate"))
+               fd_policy = FD_ROTATE;
+       else {
+               prt("unknown -I policy: '%s'\n", policy);
+               exit(1);
+       }
+}
+
+int 
+get_fd(void)
+{
+       struct test_file *tf = get_tf();
+       return tf->fd;
+}
+
+static const char *basename(const char *path)
+{
+       char *c = strrchr(path, '/');
+
+       return c ? c++ : path;
+}
+
+void 
+open_test_files(char **argv, int argc)
+{
+       struct test_file *tf;
+       int i;
+
+       num_test_files = argc;
+       if (num_test_files == 1)
+               fd_policy = FD_SINGLE;
+
+       test_files = calloc(num_test_files, sizeof(*test_files));
+       if (test_files == NULL) {
+               prterr("reallocating space for test files");
+               exit(1);
+       }
+
+       for (i = 0, tf = test_files; i < num_test_files; i++, tf++) {
+
+               tf->path = argv[i];
+               tf->fd = open(tf->path, O_RDWR|(lite ? 0 : O_CREAT|O_TRUNC), 
+                               0666);
+               if (tf->fd < 0) {
+                       prterr(tf->path);
+                       exit(91);
+               }
+       }
+
+       if (quiet || fd_policy == FD_SINGLE)
+               return;
+
+       for (i = 0, tf = test_files; i < num_test_files; i++, tf++)
+               prt("fd %d: %s\n", i, tf->path);
+}
+
+void
+close_test_files(void)
+{
+       int i;
+       struct test_file *tf;
+
+       for (i = 0, tf = test_files; i < num_test_files; i++, tf++) {
+               if (close(tf->fd)) {
+                       prterr("close");
+                       report_failure(99);
+               }
+       }
+}
+
 
 void
 check_size(void)
 {
        struct stat     statbuf;
        off_t   size_by_seek;
+       int fd = get_fd();
 
        if (fstat(fd, &statbuf)) {
                prterr("check_size: fstat");
@@ -410,6 +522,7 @@ void
 check_trunc_hack(void)
 {
        struct stat statbuf;
+       int fd = get_fd();
 
        ftruncate(fd, (off_t)0);
        ftruncate(fd, (off_t)100000);
@@ -421,6 +534,71 @@ check_trunc_hack(void)
        ftruncate(fd, 0);
 }
 
+static char *tf_buf = NULL;
+static int max_tf_len = 0;
+
+void
+alloc_tf_buf(void)
+{
+       char dummy = '\0';
+       int highest = num_test_files - 1;
+       int len;
+
+       len = snprintf(&dummy, 0, "%u ", highest);
+       if (len < 0) {
+               prterr("finding max tf_buf");
+               exit(1);
+       }
+       tf_buf = malloc(len + 1);
+       if (tf_buf == NULL) {
+               prterr("allocating tf_buf");
+               exit(1);
+       }
+       max_tf_len = sprintf(tf_buf, "%u ", highest);
+}
+
+char * 
+fill_tf_buf(struct test_file *tf)
+{
+       if (tf_buf == NULL)
+               alloc_tf_buf();
+
+       sprintf(tf_buf,"%u ", tf - test_files);
+       return tf_buf;
+}
+
+void
+output_line(struct test_file *tf, int op, unsigned long offset, 
+               unsigned long size, struct timeval *tv)
+{
+       char *tf_num = "";
+
+       char *ops[] = {
+               [OP_READ] = "read",
+               [OP_WRITE] = "write",
+               [OP_TRUNCATE] = "trunc from",
+               [OP_MAPREAD] = "mapread",
+               [OP_MAPWRITE] = "mapwrite",
+       };
+
+       if (fd_policy != FD_SINGLE)
+               tf_num = fill_tf_buf(tf);
+
+       /* W. */
+       if (!(!quiet && ((progressinterval &&
+                       testcalls % progressinterval == 0) ||
+                      (debug &&
+                       (monitorstart == -1 ||
+                        (offset + size > monitorstart &&
+                         (monitorend == -1 || offset <= monitorend)))))))
+               return;
+
+       prt("%06lu %lu.%06lu %*s%-10s %#08x %s %#08x\t(0x%x bytes)\n",
+               testcalls, tv->tv_sec, tv->tv_usec, max_tf_len,
+               tf_num, ops[op], 
+               offset, op == OP_TRUNCATE ? " to " : "thru",
+               offset + size - 1, size);
+}
 
 void
 doread(unsigned offset, unsigned size)
@@ -428,6 +606,8 @@ doread(unsigned offset, unsigned size)
        struct timeval t;
        off_t ret;
        unsigned iret;
+       struct test_file *tf = get_tf();
+       int fd = tf->fd;
 
        offset -= offset % readbdy;
        gettimeofday(&t, NULL);
@@ -449,15 +629,8 @@ doread(unsigned offset, unsigned size)
        if (testcalls <= simulatedopcount)
                return;
 
-       if (!quiet && ((progressinterval &&
-                       testcalls % progressinterval == 0) ||
-                      (debug &&
-                       (monitorstart == -1 ||
-                        (offset + size > monitorstart &&
-                         (monitorend == -1 || offset <= monitorend))))))
-               prt("%06lu %lu.%06lu read       %#08x thru %#08x\t(0x%x bytes)\n",
-                   testcalls, t.tv_sec, t.tv_usec, offset, offset + size - 1,
-                   size);
+       output_line(tf, OP_READ, offset, size, &t);
+
        ret = lseek(fd, (off_t)offset, SEEK_SET);
        if (ret == (off_t)-1) {
                prterr("doread: lseek");
@@ -490,6 +663,8 @@ domapread(unsigned offset, unsigned size)
        unsigned pg_offset;
        unsigned map_size;
        char    *p;
+       struct test_file *tf = get_tf();
+       int fd = tf->fd;
 
        offset -= offset % readbdy;
        gettimeofday(&t, NULL);
@@ -511,15 +686,7 @@ domapread(unsigned offset, unsigned size)
        if (testcalls <= simulatedopcount)
                return;
 
-       if (!quiet && ((progressinterval &&
-                       testcalls % progressinterval == 0) ||
-                      (debug &&
-                       (monitorstart == -1 ||
-                        (offset + size > monitorstart &&
-                         (monitorend == -1 || offset <= monitorend))))))
-               prt("%06lu %lu.%06lu mapread    %#08x thru %#08x\t(0x%x bytes)\n",
-                   testcalls, t.tv_sec, t.tv_usec, offset, offset + size - 1,
-                   size);
+       output_line(tf, OP_MAPREAD, offset, size, &t);
 
        pg_offset = offset & page_mask;
        map_size  = pg_offset + size;
@@ -578,6 +745,8 @@ dowrite(unsigned offset, unsigned size)
        struct timeval t;
        off_t ret;
        unsigned iret;
+       struct test_file *tf = get_tf();
+       int fd = tf->fd;
 
        offset -= offset % writebdy;
        gettimeofday(&t, NULL);
@@ -604,15 +773,8 @@ dowrite(unsigned offset, unsigned size)
        if (testcalls <= simulatedopcount)
                return;
 
-       if (!quiet && ((progressinterval &&
-                       testcalls % progressinterval == 0) ||
-                      (debug &&
-                       (monitorstart == -1 ||
-                        (offset + size > monitorstart &&
-                         (monitorend == -1 || offset <= monitorend))))))
-               prt("%06lu %lu.%06lu write      %#08x thru %#08x\t(0x%x bytes)\n",
-                   testcalls, t.tv_sec, t.tv_usec, offset, offset + size - 1,
-                   size);
+       output_line(tf, OP_WRITE, offset, size, &t);
+
        ret = lseek(fd, (off_t)offset, SEEK_SET);
        if (ret == (off_t)-1) {
                prterr("dowrite: lseek");
@@ -645,6 +807,8 @@ domapwrite(unsigned offset, unsigned size)
        unsigned map_size;
        off_t    cur_filesize;
        char    *p;
+       struct test_file *tf = get_tf();
+       int fd = tf->fd;
 
        offset -= offset % writebdy;
        gettimeofday(&t, NULL);
@@ -672,15 +836,7 @@ domapwrite(unsigned offset, unsigned size)
        if (testcalls <= simulatedopcount)
                return;
 
-       if (!quiet && ((progressinterval &&
-                       testcalls % progressinterval == 0) ||
-                      (debug &&
-                       (monitorstart == -1 ||
-                        (offset + size > monitorstart &&
-                         (monitorend == -1 || offset <= monitorend))))))
-               prt("%06lu %lu.%06lu mapwrite   %#08x thru %#08x\t(0x%x bytes)\n",
-                   testcalls, t.tv_sec, t.tv_usec, offset, offset + size - 1,
-                   size);
+       output_line(tf, OP_MAPWRITE, offset, size, &t);
 
        if (file_size > cur_filesize) {
                if (ftruncate(fd, file_size) == -1) {
@@ -748,6 +904,8 @@ dotruncate(unsigned size)
 {
        struct timeval t;
        int oldsize = file_size;
+       struct test_file *tf = get_tf();
+       int fd = tf->fd;
 
        size -= size % truncbdy;
        gettimeofday(&t, NULL);
@@ -766,11 +924,8 @@ dotruncate(unsigned size)
        if (testcalls <= simulatedopcount)
                return;
 
-       if ((progressinterval && testcalls % progressinterval == 0) ||
-           (debug && (monitorstart == -1 || monitorend == -1 ||
-                      size <= monitorend)))
-               prt("%06lu %lu.%06lu trunc from %#08x  to  %#08x\n",
-                   testcalls, t.tv_sec, t.tv_usec, oldsize, size);
+       output_line(tf, OP_TRUNCATE, oldsize, size, &t);
+
        if (ftruncate(fd, (off_t)size) == -1) {
                prt("ftruncate1: %x\n", size);
                prterr("dotruncate: ftruncate");
@@ -787,6 +942,7 @@ void
 writefileimage()
 {
        ssize_t iret;
+       int fd = get_fd();
 
        if (lseek(fd, (off_t)0, SEEK_SET) == (off_t)-1) {
                prterr("writefileimage: lseek");
@@ -813,6 +969,7 @@ void
 docloseopen(void)
 {
        struct timeval t;
+       struct test_file *tf = get_tf();
 
        if (testcalls <= simulatedopcount)
                return;
@@ -823,7 +980,7 @@ docloseopen(void)
        if (debug)
                prt("%06lu %lu.%06lu close/open\n", testcalls, t.tv_sec,
                    t.tv_usec);
-       if (close(fd)) {
+       if (close(tf->fd)) {
                prterr("docloseopen: close");
                report_failure(180);
        }
@@ -831,8 +988,8 @@ docloseopen(void)
                gettimeofday(&t, NULL);
                prt("       %lu.%06lu close done\n", t.tv_sec, t.tv_usec);
        }
-       fd = open(fname, O_RDWR, 0);
-       if (fd < 0) {
+       tf->fd = open(tf->path, O_RDWR, 0);
+       if (tf->fd < 0) {
                prterr("docloseopen: open");
                report_failure(181);
        }
@@ -930,7 +1087,7 @@ usage(void)
                "fsx [-dnqLOW] [-b opnum] [-c Prob] [-l flen] [-m "
 "start:end] [-o oplen] [-p progressinterval] [-r readbdy] [-s style] [-t "
 "truncbdy] [-w writebdy] [-D startingop] [-N numops] [-P dirpath] [-S seed] "
-"fname\n"
+"[ -I random|rotate ] fname [additional paths to fname..]\n"
 "      -b opnum: beginning operation number (default 1)\n"
 "      -c P: 1 in P chance of file close+open at each op (default infinity)\n"
 "      -d: debug output for all operations [-d -d = more debugging]\n"
@@ -953,6 +1110,9 @@ usage(void)
 "      -S seed: for random # generator (default 1) 0 gets timestamp\n"
 "      -W: mapped write operations DISabled\n"
 "        -R: read() system calls only (mapped reads disabled)\n"
+"      -I: When multiple paths to the file are given each operation uses"
+"           a different path.  Iterate through them in order with 'rotate'"
+"           or chose then at 'random'.  (defaults to random)\n"
 "      fname: this filename is REQUIRED (no default)\n");
        exit(90);
 }
@@ -991,14 +1151,6 @@ getnum(char *s, char **e)
        return (ret);
 }
 
-
-static const char *basename(const char *path)
-{
-       char *c = strrchr(path, '/');
-
-       return c ? c++ : path;
-}
-
 int
 main(int argc, char **argv)
 {
@@ -1014,7 +1166,8 @@ main(int argc, char **argv)
 
        setvbuf(stdout, (char *)0, _IOLBF, 0); /* line buffered stdout */
 
-       while ((ch = getopt(argc, argv, "b:c:dl:m:no:p:qr:s:t:w:D:LN:OP:RS:W"))
+       while ((ch = getopt(argc, argv, 
+                               "b:c:dl:m:no:p:qr:s:t:w:D:I:LN:OP:RS:W"))
               != EOF)
                switch (ch) {
                case 'b':
@@ -1097,6 +1250,9 @@ main(int argc, char **argv)
                        if (debugstart < 1)
                                usage();
                        break;
+               case 'I':
+                       assign_fd_policy(optarg);
+                       break;
                case 'L':
                        lite = 1;
                        break;
@@ -1139,7 +1295,7 @@ main(int argc, char **argv)
                }
        argc -= optind;
        argv += optind;
-       if (argc != 1)
+       if (argc < 1)
                usage();
        fname = argv[0];
 
@@ -1156,11 +1312,9 @@ main(int argc, char **argv)
 
        initstate(seed, state, 256);
        setstate(state);
-       fd = open(fname, O_RDWR|(lite ? 0 : O_CREAT|O_TRUNC), 0666);
-       if (fd < 0) {
-               prterr(fname);
-               exit(91);
-       }
+
+       open_test_files(argv, argc);
+
        strncat(goodfile, dirpath ? basename(fname) : fname, 256);
        strcat (goodfile, ".fsxgood");
        fsxgoodfd = open(goodfile, O_RDWR|O_CREAT|O_TRUNC, 0666);
@@ -1177,6 +1331,7 @@ main(int argc, char **argv)
        }
        if (lite) {
                off_t ret;
+               int fd = get_fd();
                file_size = maxfilelen = lseek(fd, (off_t)0, SEEK_END);
                if (file_size == (off_t)-1) {
                        prterr(fname);
@@ -1199,6 +1354,7 @@ main(int argc, char **argv)
        memset(temp_buf, '\0', maxoplen);
        if (lite) {     /* zero entire existing file */
                ssize_t written;
+               int fd = get_fd();
 
                written = write(fd, good_buf, (size_t)maxfilelen);
                if (written != maxfilelen) {
@@ -1217,10 +1373,7 @@ main(int argc, char **argv)
        while (numops == -1 || numops--)
                test();
 
-       if (close(fd)) {
-               prterr("close");
-               report_failure(99);
-       }
+       close_test_files();
        prt("All operations completed A-OK!\n");
 
        exit(0);
index a4ce6d1..bfbe7bc 100644 (file)
@@ -118,7 +118,7 @@ int compare(struct lov_user_md *lum_dir, struct lov_user_md *lum_file1,
 int main(int argc, char **argv)
 {
         DIR * dir;
-        struct lov_user_md *lum_dir, *lum_file1, *lum_file2=NULL;
+        struct lov_user_md *lum_dir, *lum_file1 = NULL, *lum_file2 = NULL;
         int rc;
         int lum_size;
         char *fname;
index 26c3016..0f7a1b6 100755 (executable)
@@ -10,7 +10,7 @@
 
 int main(int argc, char ** argv)
 {
-        int i, rc, count;
+        int i, rc = 0, count;
         char dirname[4096];
 
         if (argc < 3) {
@@ -25,7 +25,7 @@ int main(int argc, char ** argv)
 
         count = strtoul(argv[2], NULL, 0);
 
-        for (i=0 ; i < count ; i++) {
+        for (i = 0; i < count; i++) {
                 sprintf(dirname, "%s-%d", argv[1], i);
                 rc = mkdir(dirname, 0444);
                 if (rc) {
diff --git a/lustre/tests/mount2.sh b/lustre/tests/mount2.sh
deleted file mode 100644 (file)
index eaed7e3..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-#!/bin/bash
-
-config=${1:-mount2.xml}
-
-SRCDIR=`dirname $0`
-PATH=$SRCDIR:$SRCDIR/../utils:$PATH
-LMC="${LMC:-lmc} -m $config"
-TMP=${TMP:-/tmp}
-
-MDSDEV=${MDSDEV:-$TMP/mds1-`hostname`}
-MDSSIZE=${MDSSIZE:-50000}
-MOUNT=${MOUNT:-/mnt/lustre}
-MOUNT1=${MOUNT1:-${MOUNT}1}
-MOUNT2=${MOUNT2:-${MOUNT}2}
-FSTYPE=${FSTYPE:-ext3}
-
-OSTDEV=${OSTDEV:-$TMP/ost1-`hostname`}
-OSTSIZE=${OSTSIZE:-200000}
-
-rm -f $config
-
-# create nodes
-${LMC} --add node --node localhost || exit 10
-${LMC} --add net --node  localhost --nid localhost --nettype tcp || exit 11
-
-# configure mds server
-${LMC} --add mds  --node localhost --mds mds1 --fstype $FSTYPE --dev $MDSDEV --size $MDSSIZE || exit 20
-
-# configure ost
-${LMC} --add ost --node localhost --ost ost1 --fstype $FSTYPE --dev $OSTDEV --size  $OSTSIZE || exit 30
-
-# create client config
-${LMC} --add mtpt --node localhost --path $MOUNT1 --mds mds1 --ost ost1 || exit 40
-${LMC} --add mtpt --node localhost --path $MOUNT2 --mds mds1 --ost ost1 || exit 40
diff --git a/lustre/tests/mount2lov.sh b/lustre/tests/mount2lov.sh
deleted file mode 100644 (file)
index 1840d19..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-#!/bin/bash
-
-config=${1:-mount2.xml}
-
-SRCDIR=`dirname $0`
-PATH=$SRCDIR:$SRCDIR/../utils:$PATH
-LMC="${LMC:-lmc} -m $config"
-TMP=${TMP:-/tmp}
-
-MDSDEV=${MDSDEV:-$TMP/mds1-`hostname`}
-MDSSIZE=${MDSSIZE:-50000}
-FSTYPE=${FSTYPE:-ext3}
-
-OSTDEV1=${OSTDEV1:-$TMP/ost1-`hostname`}
-OSTDEV2=${OSTDEV2:-$TMP/ost2-`hostname`}
-OSTDEV3=${OSTDEV3:-$TMP/ost3-`hostname`}
-OSTSIZE=${OSTSIZE:-100000}
-
-STRIPE_BYTES=65536
-STRIPES_PER_OBJ=2      # 0 means stripe over all OSTs
-
-rm -f $config
-
-# create nodes
-${LMC} --add net --node  localhost --nid localhost --nettype tcp || exit 1
-
-# configure MDS server
-${LMC} --add mds  --node localhost --mds mds1 --fstype $FSTYPE --dev $MDSDEV --size $MDSSIZE || exit 10
-
-# configure OSTs
-${LMC} --add lov --lov lov1 --mds mds1 --stripe_sz $STRIPE_BYTES --stripe_cnt $STRIPES_PER_OBJ --stripe_pattern 0 || exit 20
-${LMC} --add ost --node localhost --lov lov1 --fstype $FSTYPE --dev $OSTDEV1 --size $OSTSIZE || exit 21
-${LMC} --add ost --node localhost --lov lov1 --fstype $FSTYPE --dev $OSTDEV2 --size $OSTSIZE || exit 22
-${LMC} --add ost --node localhost --lov lov1 --fstype $FSTYPE --dev $OSTDEV3 --size $OSTSIZE || exit 23
-
-# create client config
-${LMC} --add mtpt --node localhost --path /mnt/lustre1 --mds mds1 --ost lov1 || exit 40
-${LMC} --add mtpt --node localhost --path /mnt/lustre2 --mds mds1 --ost lov1 || exit 41
index de59be6..0402aff 100755 (executable)
@@ -1,3 +1,6 @@
+/* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*-
+ * vim:expandtab:shiftwidth=8:tabstop=8:
+ */
 #define _GNU_SOURCE /* pull in O_DIRECTORY in bits/fcntl.h */
 #include <stdio.h>
 #include <fcntl.h>
@@ -47,22 +50,22 @@ void null_handler(int unused) { }
 static const char *
 pop_arg(int argc, char *argv[])
 {
-       static int cur_arg = 3;
+        static int cur_arg = 3;
 
-       if (cur_arg >= argc)
-               return NULL;
+        if (cur_arg >= argc)
+                return NULL;
 
-       return argv[cur_arg++];
+        return argv[cur_arg++];
 }
 #define POP_ARG() (pop_arg(argc, argv))
 
 int main(int argc, char **argv)
 {
         char *fname, *commands;
-       const char *newfile;
+        const char *newfile;
         struct stat st;
-       size_t mmap_len, i;
-       unsigned char *mmap_ptr = NULL, junk = 0;
+        size_t mmap_len = 0, i;
+        unsigned char *mmap_ptr = NULL, junk = 0;
         int fd = -1;
 
         if (argc < 3) {
@@ -84,7 +87,7 @@ int main(int argc, char **argv)
                                 perror("close");
                                 exit(1);
                         }
-                       fd = -1;
+                        fd = -1;
                         break;
                 case 'd':
                         if (mkdir(fname, 0755) == -1) {
@@ -92,54 +95,54 @@ int main(int argc, char **argv)
                                 exit(1);
                         }
                         break;
-               case 'D':
-                       if (open(fname, O_DIRECTORY) == -1) {
-                               perror("open(O_DIRECTORY)");
-                               exit(1);
-                       }
-                       break;
-               case 'l':
-                       newfile = POP_ARG();
-                       if (!newfile)
-                               newfile = fname;
-                       if (symlink(fname, newfile)) {
-                               perror("symlink()");
-                               exit(1);
-                       }
-                       break;
-               case 'L':
-                       newfile = POP_ARG();
-                       if (!newfile)
-                               newfile = fname;
-                       if (link(fname, newfile)) {
-                               perror("symlink()");
-                               exit(1);
-                       }
-                       break;
+                case 'D':
+                        if (open(fname, O_DIRECTORY) == -1) {
+                                perror("open(O_DIRECTORY)");
+                                exit(1);
+                        }
+                        break;
+                case 'l':
+                        newfile = POP_ARG();
+                        if (!newfile)
+                                newfile = fname;
+                        if (symlink(fname, newfile)) {
+                                perror("symlink()");
+                                exit(1);
+                        }
+                        break;
+                case 'L':
+                        newfile = POP_ARG();
+                        if (!newfile)
+                                newfile = fname;
+                        if (link(fname, newfile)) {
+                                perror("symlink()");
+                                exit(1);
+                        }
+                        break;
                 case 'm':
                         if (mknod(fname, S_IFREG | 0644, 0) == -1) {
                                 perror("mknod(S_IFREG|0644, 0)");
                                 exit(1);
                         }
                         break;
-               case 'M':
-                       mmap_len = st.st_size;
-                       mmap_ptr = mmap(NULL, mmap_len, PROT_WRITE | PROT_READ,
-                                       MAP_SHARED, fd, 0);
-                       if (mmap_ptr == MAP_FAILED) {
-                               perror("mmap");
-                               exit(1);
-                       }
-                       break;
-               case 'N':
-                       newfile = POP_ARG();
-                       if (!newfile)
-                               newfile = fname;
-                       if (rename (fname, newfile)) {
-                               perror("rename()");
-                               exit(1);
-                       }
-                       break;
+                case 'M':
+                        mmap_len = st.st_size;
+                        mmap_ptr = mmap(NULL, mmap_len, PROT_WRITE | PROT_READ,
+                                        MAP_SHARED, fd, 0);
+                        if (mmap_ptr == MAP_FAILED) {
+                                perror("mmap");
+                                exit(1);
+                        }
+                        break;
+                case 'N':
+                        newfile = POP_ARG();
+                        if (!newfile)
+                                newfile = fname;
+                        if (rename (fname, newfile)) {
+                                perror("rename()");
+                                exit(1);
+                        }
+                        break;
                 case 'O':
                         fd = open(fname, O_CREAT|O_RDWR, 0644);
                         if (fd == -1) {
@@ -154,23 +157,23 @@ int main(int argc, char **argv)
                                 exit(1);
                         }
                         break;
-               case 'r': {
-                       char buf;
-                       if (read(fd, &buf, 1) == -1) {
-                               perror("read");
-                               exit(1);
-                       }
-               }
+                case 'r': {
+                        char buf;
+                        if (read(fd, &buf, 1) == -1) {
+                                perror("read");
+                                exit(1);
+                        }
+                        }
                 case 'S':
                         if (fstat(fd, &st) == -1) {
                                 perror("fstat");
                                 exit(1);
                         }
                         break;
-               case 'R':
-                       for (i = 0; i < mmap_len && mmap_ptr; i += 4096)
-                               junk += mmap_ptr[i];
-                       break;
+                case 'R':
+                        for (i = 0; i < mmap_len && mmap_ptr; i += 4096)
+                                junk += mmap_ptr[i];
+                        break;
                 case 's':
                         if (stat(fname, &st) == -1) {
                                 perror("stat");
@@ -195,39 +198,39 @@ int main(int argc, char **argv)
                                 exit(1);
                         }
                         break;
-               case 'U':
-                       if (munmap(mmap_ptr, mmap_len)) {
-                               perror("munmap");
-                               exit(1);
-                       }
-                       break;
-               case 'w':
-                       if (write(fd, "w", 1) == -1) {
-                               perror("write");
-                               exit(1);
-                       }
-                       break;
-               case 'W':
-                       for (i = 0; i < mmap_len && mmap_ptr; i += 4096)
-                               mmap_ptr[i] += junk++;
-                       break;
-               case 'y':
-                       if (fsync(fd) == -1) {
-                               perror("fsync");
-                               exit(1);
-                       }
-                       break;
-               case 'Y':
-                       if (fdatasync(fd) == -1) {
-                               perror("fdatasync");
-                               exit(1);
-                       }
-               case 'z':
-                       if (lseek(fd, 0, SEEK_SET) == -1) {
-                               perror("lseek");
-                               exit(1);
-                       }
-                       break;
+                case 'U':
+                        if (munmap(mmap_ptr, mmap_len)) {
+                                perror("munmap");
+                                exit(1);
+                        }
+                        break;
+                case 'w':
+                        if (write(fd, "w", 1) == -1) {
+                                perror("write");
+                                exit(1);
+                        }
+                        break;
+                case 'W':
+                        for (i = 0; i < mmap_len && mmap_ptr; i += 4096)
+                                mmap_ptr[i] += junk++;
+                        break;
+                case 'y':
+                        if (fsync(fd) == -1) {
+                                perror("fsync");
+                                exit(1);
+                        }
+                        break;
+                case 'Y':
+                        if (fdatasync(fd) == -1) {
+                                perror("fdatasync");
+                                exit(1);
+                        }
+                case 'z':
+                        if (lseek(fd, 0, SEEK_SET) == -1) {
+                                perror("lseek");
+                                exit(1);
+                        }
+                        break;
                 default:
                         fprintf(stderr, "unknown command \"%c\"\n", *commands);
                         fprintf(stderr, usage, argv[0]);
index 62c2765..2390cd9 100755 (executable)
@@ -11,7 +11,7 @@
 
 int main(int argc, char ** argv)
 {
-        int rc, i;
+        int rc = 0, i;
 
         if (argc < 2) {
                 printf("Usage %s filename {filename ...}\n", argv[0]);
index 5a2646a..4e6b261 100755 (executable)
@@ -49,12 +49,14 @@ fi
 # flush cache to OST(s) so avail numbers are correct
 sync; sleep 1 ; sync
 
-for AVAIL in /proc/fs/lustre/osc/OSC*MNT*/kbytesavail; do
-       [ `cat $AVAIL` -lt 400 ] && OSCFULL=full
+for OSC in /proc/fs/lustre/osc/OSC*MNT*; do
+       AVAIL=`cat $OSC/kbytesavail`
+       GRANT=`cat $OSC/cur_grant_bytes`
+       [ $(($AVAIL - $GRANT / 1024)) -lt 400 ] && OSCFULL=full
 done
 if [ -z "$OSCFULL" ]; then
        echo "no OSTs are close to full"
-       grep "[0-9]" /proc/fs/lustre/osc/OSC*MNT*/{kbytesavail,cur*}
+       grep [0-9] /proc/fs/lustre/osc/OSC*MNT*/{kbytesavail,cur*}
        SUCCESS=0
 fi
 
index 22c6893..c9755cb 100644 (file)
@@ -54,12 +54,14 @@ fi
 # flush cache to OST(s) so avail numbers are correct
 sync; sleep 1 ; sync
 
-for AVAIL in /proc/fs/lustre/osc/OSC*MNT*/kbytesavail; do
-       [ `cat $AVAIL` -lt 400 ] && OSCFULL=full
+for OSC in /proc/fs/lustre/osc/OSC*MNT*; do
+       AVAIL=`cat $OSC/kbytesavail`
+       GRANT=`cat $OSC/cur_grant_bytes`
+       [ $(($AVAIL - $GRANT / 1024)) -lt 400 ] && OSCFULL=full
 done
 if [ -z "$OSCFULL" ]; then
        echo "no OSTs are close to full"
-       grep "[0-9]" /proc/fs/lustre/osc/OSC*MNT*/{kbytesavail,cur*} |tee -a $LOG
+       grep [0-9] /proc/fs/lustre/osc/OSC*MNT*/{kbytesavail,cur*} |tee -a $LOG
        SUCCESS=0
 fi
 
index 0c5081d..1cb36ea 100644 (file)
@@ -61,7 +61,7 @@ int main(int argc, char** argv)
         int    flag_set=0;
         int    file_set=0;
         char   c;
-        char*  cloned_flags;
+        char*  cloned_flags = NULL;
 
         if (argc == 1)
                 Usage_and_abort();
index 02e9f69..b1ad60c 100755 (executable)
@@ -1,3 +1,4 @@
 #!/bin/sh
 LUSTRE=`dirname $0`/..
-$LUSTRE/utils/lctl --device %$3 recover || logger -p kern.info recovery failed: $@
+PATH=$LUSTRE/utils:$PATH
+lctl --device %$3 recover || logger -p kern.info recovery failed: $@
index b30bee7..241feec 100755 (executable)
@@ -75,13 +75,13 @@ unset REFORMAT
 
 test_1() {
     drop_request "mcreate $MOUNT/1"  || return 1
-    drop_reply "mcreate $MOUNT/2"    || return 2
+    drop_reint_reply "mcreate $MOUNT/2"    || return 2
 }
 run_test 1 "mcreate: drop req, drop rep"
 
 test_2() {
     drop_request "tchmod 111 $MOUNT/2"  || return 1
-    drop_reply "tchmod 666 $MOUNT/2"    || return 2
+    drop_reint_reply "tchmod 666 $MOUNT/2"    || return 2
 }
 run_test 2 "chmod: drop req, drop rep"
 
@@ -100,26 +100,26 @@ run_test 4 "open: drop req, drop rep"
 
 test_5() {
     drop_request "mv $MOUNT/resolv.conf $MOUNT/renamed" || return 1
-    drop_reply "mv $MOUNT/renamed $MOUNT/renamed-again" || return 2
+    drop_reint_reply "mv $MOUNT/renamed $MOUNT/renamed-again" || return 2
     do_facet client "checkstat -v $MOUNT/renamed-again"  || return 3
 }
 run_test 5 "rename: drop req, drop rep"
 
 test_6() {
     drop_request "mlink $MOUNT/renamed-again $MOUNT/link1" || return 1
-    drop_reply "mlink $MOUNT/renamed-again $MOUNT/link2"   || return 2
+    drop_reint_reply "mlink $MOUNT/renamed-again $MOUNT/link2"   || return 2
 }
 run_test 6 "link: drop req, drop rep"
 
 test_7() {
     drop_request "munlink $MOUNT/link1"   || return 1
-    drop_reply "munlink $MOUNT/link2"     || return 2
+    drop_reint_reply "munlink $MOUNT/link2"     || return 2
 }
 run_test 7 "unlink: drop req, drop rep"
 
 #bug 1423
 test_8() {
-    drop_reply "touch $MOUNT/renamed"    || return 1
+    drop_reint_reply "touch $MOUNT/renamed"    || return 1
 }
 run_test 8 "touch: drop rep (bug 1423)"
 
@@ -215,21 +215,23 @@ test_16() {
     sysctl -w lustre.fail_loc=0x80000504
     cancel_lru_locks OSC
     # will get evicted here
-    do_facet client "diff /etc/termcap $MOUNT/termcap"  && return 1
+    do_facet client "cmp /etc/termcap $MOUNT/termcap"  && return 1
     sysctl -w lustre.fail_loc=0
-    do_facet client "diff /etc/termcap $MOUNT/termcap"  || return 2
+    # give recovery a chance to finish (shouldn't take long)
+    sleep 1
+    do_facet client "cmp /etc/termcap $MOUNT/termcap"  || return 2
 }
 run_test 16 "timeout bulk put, evict client (2732)"
 
 test_17() {
-# OBD_FAIL_PTLRPC_BULK_GET_NET 0x0503 | OBD_FAIL_ONCE
+#define OBD_FAIL_PTLRPC_BULK_GET_NET 0x0503 | OBD_FAIL_ONCE
     # will get evicted here
     sysctl -w lustre.fail_loc=0x80000503
     do_facet client cp /etc/termcap $MOUNT && return 1
 
-    do_facet client "diff /etc/termcap $MOUNT/termcap"  && return 1
+    do_facet client "cmp /etc/termcap $MOUNT/termcap"  && return 1
     sysctl -w lustre.fail_loc=0
-    do_facet client "diff /etc/termcap $MOUNT/termcap"  || return 2
+    do_facet client "cmp /etc/termcap $MOUNT/termcap"  || return 2
 }
 run_test 17 "timeout bulk get, evict client (2732)"
 
@@ -321,12 +323,10 @@ test_20a() {      # bug 2983 - ldlm_handle_enqueue cleanup
        cancel_lru_locks OSC
 #define OBD_FAIL_LDLM_ENQUEUE_EXTENT_ERR 0x308
        do_facet ost sysctl -w lustre.fail_loc=0x80000308
-       set -vx
        kill -USR1 $MULTI_PID
        wait $MULTI_PID
        rc=$?
        [ $rc -eq 0 ] && error "multiop didn't fail enqueue: rc $rc" || true
-       set +vx
 }
 run_test 20a "ldlm_handle_enqueue error (should return error)" 
 
index 9108569..3425372 100755 (executable)
@@ -16,7 +16,6 @@ init_test_env $@
 # Skip these tests
 ALWAYS_EXCEPT=""
 
-
 gen_config() {
     rm -f $XMLCONFIG
     add_mds mds --dev $MDSDEV --size $MDSSIZE
@@ -63,6 +62,7 @@ setup() {
     [ "$DAEMONFILE" ] && $LCTL debug_daemon start $DAEMONFILE $DAEMONSIZE
     start mds $MDSLCONFARGS --reformat
     zconf_mount `hostname` $MOUNT
+    echo 0x3f0410 > /proc/sys/portals/debug
 }
 
 $SETUP
@@ -831,6 +831,7 @@ test_42() {
     facet_failover ost
     
     # osc is evicted, fs is smaller
+    set -vx
     blocks_after=`df $MOUNT | tail -1 | awk '{ print $1 }'`
     if [ "$blocks_after" = "Filesystem" ]; then
        echo "df failed, assuming caused by OST failout"
@@ -841,6 +842,7 @@ test_42() {
     sleep $((TIMEOUT * 2))
     unlinkmany $DIR/$tfile-%d 400 400
     $CHECKSTAT -t file $DIR/$tfile-* && return 2 || true
+    set +vx
 }
 run_test 42 "recovery after ost failure"
 
index 1e859aa..f1df775 100644 (file)
@@ -32,8 +32,8 @@ int main(int argc, char **argv)
         int gid_is_set = 0;
         int uid_is_set = 0;
         int clear_supp_groups = 0;
-        uid_t user_id;
-        gid_t grp_id;
+        uid_t user_id = 0;
+        gid_t grp_id = 0;
 
         if (argc == 1)
                 Usage_and_abort(name);
index fa0a05a..60f4805 100644 (file)
@@ -10,6 +10,9 @@ ONLY=${ONLY:-"$*"}
 # bug number for skipped test:
 ALWAYS_EXCEPT=${ALWAYS_EXCEPT:-""}
 # UPDATE THE COMMENT ABOVE WITH BUG NUMBERS WHEN CHANGING ALWAYS_EXCEPT!
+case `uname -r` in
+2.6.*) ALWAYS_EXCEPT="$ALWAYS_EXCEPT 54c" # bug 3117
+esac
 
 [ "$ALWAYS_EXCEPT$EXCEPT" ] && echo "Skipping tests: $ALWAYS_EXCEPT $EXCEPT"
 
@@ -1241,14 +1244,31 @@ count_ost_writes() {
         cat /proc/fs/lustre/osc/*/stats |
             awk -vwrites=0 '/ost_write/ { writes += $2 } END { print writes; }'
 }
-start_kupdated() {
+
+# decent default
+WRITEBACK_SAVE=500
+
+start_writeback() {
        # in 2.6, restore /proc/sys/vm/dirty_writeback_centisecs
-       kill -CONT `pidof kupdated`
+       if [ -f /proc/sys/vm/dirty_writeback_centisecs ]; then
+               echo $WRITEBACK_SAVE > /proc/sys/vm/dirty_writeback_centisecs
+       else
+               # if file not here, we are a 2.4 kernel
+               kill -CONT `pidof kupdated`
+       fi
 }
-stop_kupdated() {
+stop_writeback() {
+       # setup the trap first, so someone cannot exit the test at the
+       # exact wrong time and mess up a machine
+       trap start_writeback EXIT
        # in 2.6, save and 0 /proc/sys/vm/dirty_writeback_centisecs
-       kill -STOP `pidof kupdated`
-       trap start_kupdated EXIT
+       if [ -f /proc/sys/vm/dirty_writeback_centisecs ]; then
+               WRITEBACK_SAVE=`cat /proc/sys/vm/dirty_writeback_centisecs`
+               echo 0 > /proc/sys/vm/dirty_writeback_centisecs
+       else
+               # if file not here, we are a 2.4 kernel
+               kill -STOP `pidof kupdated`
+       fi
 }
 
 # ensure that all stripes have some grant before we test client-side cache
@@ -1266,7 +1286,7 @@ setup_test42() {
 test_42a() {
        setup_test42
        cancel_lru_locks OSC
-       stop_kupdated
+       stop_writeback
        sync; sleep 1; sync # just to be safe
        BEFOREWRITES=`count_ost_writes`
        grep [0-9] /proc/fs/lustre/osc/OSC*MNT*/cur_grant_bytes
@@ -1274,14 +1294,14 @@ test_42a() {
        AFTERWRITES=`count_ost_writes`
        [ $BEFOREWRITES -eq $AFTERWRITES ] || \
                error "$BEFOREWRITES < $AFTERWRITES"
-       start_kupdated
+       start_writeback
 }
 run_test 42a "ensure that we don't flush on close =============="
 
 test_42b() {
        setup_test42
        cancel_lru_locks OSC
-       stop_kupdated
+       stop_writeback
         sync
         dd if=/dev/zero of=$DIR/f42b bs=1024 count=100
         BEFOREWRITES=`count_ost_writes`
@@ -1295,7 +1315,7 @@ test_42b() {
         [ $BEFOREWRITES -eq $AFTERWRITES ] ||
             error "$BEFOREWRITES < $AFTERWRITES on sync"
         dmesg | grep 'error from obd_brw_async' && error 'error writing back'
-       start_kupdated
+       start_writeback
         return 0
 }
 run_test 42b "test destroy of file with cached dirty data ======"
@@ -1318,7 +1338,7 @@ trunc_test() {
         file=$DIR/$test
         offset=$2
        cancel_lru_locks OSC
-       stop_kupdated
+       stop_writeback
        # prime the file with 0,EOF PW to match
        touch $file
         $TRUNCATE $file 0
@@ -1329,7 +1349,7 @@ trunc_test() {
         $TRUNCATE $file $offset
         cancel_lru_locks OSC
         AFTERWRITES=`count_ost_writes`
-       start_kupdated
+       start_writeback
 }
 
 test_42c() {
@@ -1447,7 +1467,7 @@ test_45() {
        f="$DIR/f45"
        # Obtain grants from OST if it supports it
        echo blah > ${f}_grant
-       stop_kupdated
+       stop_writeback
        sync
        do_dirty_record "echo blah > $f"
        [ $before -eq $after ] && error "write wasn't cached"
@@ -1461,7 +1481,7 @@ test_45() {
        [ $before -eq $after ] && error "write wasn't cached"
        do_dirty_record "cancel_lru_locks OSC"
        [ $before -gt $after ] || error "lock cancellation didn't lower dirty count"
-       start_kupdated
+       start_writeback
 }
 run_test 45 "osc io page accounting ============================"
 
@@ -1475,14 +1495,14 @@ page_size() {
 # offset 31 and 31's raw 31 offset. it also found general redirtying bugs.
 test_46() {
        f="$DIR/f46"
-       stop_kupdated
+       stop_writeback
        sync
        dd if=/dev/zero of=$f bs=`page_size` seek=31 count=1
        sync
        dd conv=notrunc if=/dev/zero of=$f bs=`page_size` seek=63 count=1
        dd conv=notrunc if=/dev/zero of=$f bs=`page_size` seek=31 count=1
        sync
-       start_kupdated
+       start_writeback
 }
 run_test 46 "dirtying a previously written page ================"
 
@@ -1600,8 +1620,7 @@ test_53() {
 run_test 53 "verify that MDS and OSTs agree on pre-creation ===="
 
 test_54a() {
-       $SOCKETSERVER $DIR/socket &
-       sleep 1
+       $SOCKETSERVER $DIR/socket
        $SOCKETCLIENT $DIR/socket || error
        $MUNLINK $DIR/socket
 }
index f475dda..e884b73 100644 (file)
@@ -322,6 +322,12 @@ test_15() {        # bug 974 - ENOSPC
 }
 run_test 15 "test out-of-space with multiple writers ==========="
 
+test_16() {
+       ./fsx -R -W -c 50 -p 100 -N 2500 \
+               $MOUNT1/fsxfile $MOUNT2/fsxfile
+}
+run_test 16 "2500 iterations of dual-mount fsx ================="
+
 log "cleanup: ======================================================"
 rm -rf $DIR1/[df][0-9]* $DIR1/lnk || true
 
index 25bbb6e..e2fd66a 100755 (executable)
@@ -15,6 +15,14 @@ listen(Server,SOMAXCONN)                     || die "listen: $!";
 
 logmsg "server started on $NAME";
 
+my $rc = fork();
+if ($rc > 0) { #parent
+    exit();
+} elsif ($rc < 0) { # error
+    logmsg "fork failed: $rc";
+    exit();
+}
+
 accept(Client,Server);
 logmsg "connection on $NAME";
 print Client "from server\n";
index 4ef6bbe..f27957d 100644 (file)
@@ -145,6 +145,9 @@ void print_human_fstype(struct statfs *statfsbuf)
        case S_MAGIC_ROMFS:
          type = strdup("romfs");
          break;
+       case S_MAGIC_LUSTRE:
+         type = strdup("lustre");
+         break;
 #elif __GNU__
         case FSTYPE_UFS:
           type = strdup("ufs");
@@ -290,12 +293,21 @@ void print_human_access(struct stat *statbuf)
     printf (access);
 }
 
+/* trick gcc into being unable to recognize the %c format so it doesn't
+ * issue its inane warning about %c and two-digit year representations. */
+static size_t strftime_wrapper(char *s, size_t max, const char *fmt,
+                              struct tm *tm) {
+       return strftime(s, max, fmt, tm);
+}
+
 void print_human_time(time_t *t)
 {
   char str[40];
-  
-  if (strftime(str, 40, "%c", localtime(t)) > 0) printf(str);
-  else printf("Cannot calculate human readable time, sorry");
+
+  if (strftime_wrapper(str, 40, "%c", localtime(t)) > 0)
+         printf(str);
+  else
+         printf("Cannot calculate human readable time, sorry");
 }
 
 /* print statfs info */
@@ -307,7 +319,7 @@ void print_statfs(char *pformat, char m, char *filename, void *data, SECURITY_ID
     int rv;
     unsigned int sbuflen = sizeof(sbuf);
 #endif
-    
+
     switch(m) {
        case 'n':
            strcat(pformat, "s");
index a07fc12..c5fa3b4 100644 (file)
@@ -31,6 +31,7 @@
 #define S_MAGIC_REISERFS        0x52654973
 #define S_MAGIC_CRAMFS          0x28cd3d45
 #define S_MAGIC_ROMFS           0x7275
+#define S_MAGIC_LUSTRE          0x0BD00BD0
 #elif defined (__GNU__)
 #include <hurd/hurd_types.h>
 #endif
index edfa47b..7d4d2c9 100644 (file)
@@ -44,7 +44,7 @@ static int usage(char *prog, FILE *out)
 
 int main(int argc, char ** argv)
 {
-        long i, count, iter = LONG_MAX, mode, offset;
+        long i, count, iter = LONG_MAX, mode = 0, offset;
         long int start, length = LONG_MAX, last, rc = 0;
         char parent[4096], *t;
        char c, *prog = argv[0], *base;
index 36eceb9..791b523 100644 (file)
@@ -39,6 +39,7 @@ init_test_env() {
     export LMC=${LMC:-"lmc"}
     export LCTL=${LCTL:-"$LUSTRE/utils/lctl"}
     export CHECKSTAT="${CHECKSTAT:-checkstat} "
+    export FSYTPE=${FSTYPE:-"ext3"}
 
     # Paths on remote nodes, if different 
     export RLUSTRE=${RLUSTRE:-$LUSTRE}
@@ -297,14 +298,14 @@ add_mds() {
     shift
     rm -f ${facet}active
     add_facet $facet
-    do_lmc --add mds --node ${facet}_facet --mds ${facet}_svc $*
+    do_lmc --add mds --node ${facet}_facet --mds ${facet}_svc --fstype $FSTYPE $*
 }
 
 add_mdsfailover() {
     facet=$1
     shift
     add_facet ${facet}failover  --lustre_upcall $UPCALL
-    do_lmc --add mds  --node ${facet}failover_facet --mds ${facet}_svc $*
+    do_lmc --add mds  --node ${facet}failover_facet --mds ${facet}_svc --fstype $FSTYPE $*
 }
 
 add_ost() {
@@ -312,14 +313,14 @@ add_ost() {
     shift
     rm -f ${facet}active
     add_facet $facet
-    do_lmc --add ost --node ${facet}_facet --ost ${facet}_svc $*
+    do_lmc --add ost --node ${facet}_facet --ost ${facet}_svc --fstype $FSTYPE $*
 }
 
 add_ostfailover() {
     facet=$1
     shift
     add_facet ${facet}failover
-    do_lmc --add ost --failover --node ${facet}failover_facet --ost ${facet}_svc $*
+    do_lmc --add ost --failover --node ${facet}failover_facet --ost ${facet}_svc --fstype $FSTYPE $*
 }
 
 add_lov() {
@@ -404,6 +405,15 @@ drop_reply() {
     return $RC
 }
 
+drop_reint_reply() {
+# OBD_FAIL_MDS_REINT_NET_REP
+    RC=0
+    do_facet mds "echo 0x119 > /proc/sys/lustre/fail_loc"
+    do_facet client "$@" || RC=$?
+    do_facet mds "echo 0 > /proc/sys/lustre/fail_loc"
+    return $RC
+}
+
 pause_bulk() {
 #define OBD_FAIL_OST_BRW_PAUSE_BULK      0x214
     RC=0
index 0a3f785..1f7a8b5 100644 (file)
@@ -1,24 +1,12 @@
 # Administration utilities Makefile
-DEFS=
-SUBDIRS = Lustre
-
-CFLAGS:=-g -O2 -I$(top_srcdir)/utils -I$(top_srcdir)/portals/include  -I$(srcdir)/../include -Wall -L../portals/utils
-CPPFLAGS = $(HAVE_LIBREADLINE)
-
-if LIBLUSTRE
 
-bin_SCRIPTS = lrun
-
-EXTRA_DIST = $(sbin_SCRIPTS)
-
-include $(top_srcdir)/Rules
+SUBDIRS = Lustre
 
-else
+AM_CFLAGS=$(LLCFLAGS)
+AM_CPPFLAGS=$(LLCPPFLAGS)
+AM_LDFLAGS := -L$(top_builddir)/portals/utils
 
-KFLAGS:=
-lctl_LDADD := $(LIBREADLINE) -lptlctl
-lfs_LDADD := $(LIBREADLINE) parser.o liblustreapi.a -lptlctl obd.o
-lload_LDADD := -lptlctl
+if UTILS
 rootsbin_SCRIPTS = mount.lustre
 sbin_PROGRAMS = lctl obdio obdbarrier lload wirecheck wiretest llmount
 sbin_SCRIPTS = lconf lmc llanalyze llstat.pl llobdstat.pl lactive load_ldap.sh lrun
@@ -26,6 +14,14 @@ sbin_SCRIPTS += lwizard
 bin_SCRIPTS = lfind lstripe
 bin_PROGRAMS = lfs
 lib_LIBRARIES = liblustreapi.a
+if LIBLUSTRE
+sbin_SCRIPTS += lrun
+endif # LIBLUSTRE
+endif # UTILS
+
+lctl_LDADD := $(LIBREADLINE) -lptlctl
+lfs_LDADD := $(LIBREADLINE) parser.o liblustreapi.a -lptlctl obd.o
+lload_LDADD := $(LIBREADLINE) -lptlctl
 liblustreapi_a_SOURCES = liblustreapi.c
 wirecheck_SOURCES = wirecheck.c
 wiretest_SOURCES = wiretest.c
@@ -35,18 +31,14 @@ obdio_SOURCES = obdio.c obdiolib.c obdiolib.h
 obdbarrier_SOURCES = obdbarrier.c obdiolib.c obdiolib.h
 lfs_SOURCES = lfs.c 
 llmount_SOURCES = llmount.c 
-llmount_LDADD = -lptlctl
+llmount_LDADD = $(LIBREADLINE) -lptlctl
 
 EXTRA_DIST = $(bin_SCRIPTS) $(sbin_SCRIPTS)
 
-include $(top_srcdir)/Rules
-
 # NOTE: this should only be run on i386.
 newwiretest: wirehdr.c wirecheck
        cp wirehdr.c wiretest.c
        ./wirecheck >> wiretest.c
 
 mount.lustre$(EXEEXT): llmount
-       cp llmount mount.lustre
-
-endif
+       cp $< $@
index 2b3f0e2..8c2658d 100755 (executable)
@@ -39,11 +39,13 @@ PYMOD_DIR = "/usr/lib/lustre/python"
 
 def development_mode():
     base = os.path.dirname(sys.argv[0])
-    if os.access(base+"/Makefile.am", os.R_OK):
+    if os.access(base+"/Makefile", os.R_OK):
         return 1
     return 0
 
-if not development_mode():
+if development_mode():
+    sys.path.append('../utils')
+else:
     sys.path.append(PYMOD_DIR)
 
 import Lustre
@@ -699,13 +701,14 @@ def do_find_file(base, mod):
                 return module
 
 def find_module(src_dir, dev_dir, modname):
-    mod = '%s.o' % (modname)
-    module = src_dir +'/'+ dev_dir +'/'+ mod
-    try: 
-       if os.access(module, os.R_OK):
-            return module
-    except OSError:
-        pass
+    modbase = src_dir +'/'+ dev_dir +'/'+ modname
+    for modext in '.ko', '.o':
+        module = modbase + modext
+        try: 
+            if os.access(module, os.R_OK):
+                return module
+        except OSError:
+            pass
     return None
 
 # is the path a block device?
@@ -730,7 +733,7 @@ def mkfs(dev, devsize, fstype, jsize, isize, mkfsoptions, isblock=1):
         # devsize is in 1k, and fs block count is in 4k
         block_cnt = devsize/4
 
-    if fstype in ('ext3', 'extN'):
+    if fstype in ('ext3', 'extN', 'ldiskfs'):
         # ext3 journal size is in megabytes
         if jsize == 0:
             if devsize == 0:
@@ -764,7 +767,7 @@ def mkfs(dev, devsize, fstype, jsize, isize, mkfsoptions, isblock=1):
     if ret:
         panic("Unable to build fs:", dev, string.join(out))
     # enable hash tree indexing on fsswe
-    if fstype in ('ext3', 'extN'):
+    if fstype in ('ext3', 'extN', 'ldiskfs'):
         htree = 'echo "feature FEATURE_C5" | debugfs -w'
         (ret, out) = run (htree, dev)
         if ret:
@@ -1415,6 +1418,8 @@ class MDSDEV(Module):
         self.add_lustre_module('osc', 'osc')
         self.add_lustre_module('lov', 'lov')
         self.add_lustre_module('mds', 'mds')
+        if self.fstype == 'ldiskfs':
+            self.add_lustre_module('ldiskfs', 'ldiskfs')
         if self.fstype:
             self.add_lustre_module('lvfs', 'fsfilt_%s' % (self.fstype))
 
@@ -1600,6 +1605,8 @@ class OSD(Module):
         # modules
         self.add_lustre_module('ost', 'ost')
         # FIXME: should we default to ext3 here?
+        if self.fstype == 'ldiskfs':
+            self.add_lustre_module('ldiskfs', 'ldiskfs')
         if self.fstype:
             self.add_lustre_module('lvfs' , 'fsfilt_%s' % (self.fstype))
         self.add_lustre_module(self.osdtype, self.osdtype)
@@ -2351,6 +2358,7 @@ def setupModulePath(cmd, portals_dir = PORTALS_DIR):
     base = os.path.dirname(cmd)
     if development_mode():
         if not config.lustre:
+            debug('using objdir module paths')            
             config.lustre = (os.path.join(base, ".."))
         # normalize the portals dir, using command line arg if set
         if config.portals:
index ab354af..658a921 100644 (file)
@@ -51,27 +51,28 @@ static int lfs_catinfo(int argc, char **argv);
 /* all avaialable commands */
 command_t cmdlist[] = {
         {"setstripe", lfs_setstripe, 0,
-         "To create a new file with a specific striping pattern, or to set default striping pattern on an existing directory\n"
+         "Create a new file with a specific striping pattern or\n"
+         "Set the default striping pattern on an existing directory\n"
          "usage: setstripe <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"},
@@ -220,7 +221,7 @@ static int lfs_osts(int argc, char **argv)
         } else {
                 mnt = getmntent(fp);
                 while (feof(fp) == 0 && ferror(fp) ==0) {
-                        if (strcmp(mnt->mnt_type, "lustre_lite") == 0) {
+                        if (llapi_is_lustre_mnttype(mnt->mnt_type)) {
                                 rc = op_find(mnt->mnt_dir, obduuid, 0, 0, 0);
                                 if (rc)
                                         fprintf(stderr, "error: lfs osts failed for %s\n",
@@ -271,19 +272,19 @@ static int lfs_check(int argc, char **argv)
         } else {
                 mnt = getmntent(fp);
                 while (feof(fp) == 0 && ferror(fp) ==0) {
-                        if (strcmp(mnt->mnt_type, "lustre_lite") == 0) 
+                        if (llapi_is_lustre_mnttype(mnt->mnt_type))
                                 break;
                         mnt = getmntent(fp);
                 }
                 endmntent(fp);
         }
-           
+
         rc = op_check(type_num,obd_type_p,mnt->mnt_dir);
 
         if (rc)
                 fprintf(stderr, "error: %s: %s status failed\n",
                                 argv[0],argv[1]);
-                                                                                                                             
+
         return rc;
 
 }
@@ -293,7 +294,7 @@ static int lfs_catinfo(int argc, char **argv)
         FILE *fp;
         struct mntent *mnt = NULL;
         int rc;
-        
+
         if (argc < 2 || (!strcmp(argv[1],"config") && argc < 3))
                 return CMD_HELP;
 
@@ -302,12 +303,12 @@ static int lfs_catinfo(int argc, char **argv)
 
         fp = setmntent(MOUNTED, "r");
         if (fp == NULL) {
-                 fprintf(stderr, "setmntent(%s): %s:", MOUNTED, 
+                 fprintf(stderr, "setmntent(%s): %s:", MOUNTED,
                          strerror(errno));
         } else {
                 mnt = getmntent(fp);
                 while (feof(fp) == 0 && ferror(fp) == 0) {
-                        if (strcmp(mnt->mnt_type, "lustre_lite") == 0) 
+                        if (llapi_is_lustre_mnttype(mnt->mnt_type))
                                 break;
                         mnt = getmntent(fp);
                 }
@@ -332,13 +333,13 @@ int main(int argc, char **argv)
         int rc;
 
         setlinebuf(stdout);
-                                                                                                                             
+
         ptl_initialize(argc, argv);
         if (obd_initialize(argc, argv) < 0)
                 exit(2);
         if (dbg_initialize(argc, argv) < 0)
                 exit(3);
-                                                                                                                             
+
         Parser_init("lfs > ", cmdlist);
 
         if (argc > 1) {
index 987550c..254d7a0 100644 (file)
@@ -74,7 +74,7 @@ int op_create_file(char *name, long stripe_size, int stripe_offset,
         lum.lmm_stripe_count = stripe_count;
 
         fd = open(name, O_CREAT | O_RDWR | O_LOV_DELAY_CREATE, 0644);
-        if (errno == EISDIR) 
+        if (errno == EISDIR)
                 fd = open(name, O_DIRECTORY | O_RDONLY);
 
         if (fd < 0) {
@@ -259,9 +259,9 @@ void lov_dump_user_lmm_v1(struct lov_user_md_v1 *lum, char *dname, char *fname,
                         printf("count: %d, size: %d, offset: %d\n\n",
                                lum->lmm_stripe_count, lum->lmm_stripe_size,
                                (short int)lum->lmm_stripe_offset);
-                }                
+                }
                 return;
-        }        
+        }
 
         if (header && (obdstripe == 1)) {
                 printf("lmm_magic:          0x%08X\n",  lum->lmm_magic);
@@ -273,18 +273,16 @@ void lov_dump_user_lmm_v1(struct lov_user_md_v1 *lum, char *dname, char *fname,
         }
 
         if (body) {
-                long long oid;
-
                 if ((!quiet) && (obdstripe == 1))
                         printf("\tobdidx\t\t objid\t\tobjid\t\t group\n");
 
                 for (i = 0; i < lum->lmm_stripe_count; i++) {
                         int idx = lum->lmm_objects[i].l_ost_idx;
-                        oid = lum->lmm_objects[i].l_object_id;
+                        long long oid = lum->lmm_objects[i].l_object_id;
+                        long long gr = lum->lmm_objects[i].l_object_gr;
                         if ((obdindex == OBD_NOT_FOUND) || (obdindex == idx))
-                                printf("\t%6u\t%14llu\t%#13llx\t%14lld%s\n",
-                                       idx, oid, oid, 
-                                       (long long)lum->lmm_objects[i].l_object_gr,
+                                printf("\t%6u\t%14llu\t%#13llx\t%14llu%s\n",
+                                       idx, oid, oid, gr,
                                        obdindex == idx ? " *" : "");
                 }
                 printf("\n");
@@ -349,7 +347,7 @@ int get_file_stripe(char *path, struct lov_user_md *lum)
 }
 
 static int process_file(DIR *dir, char *dname, char *fname,
-                         struct find_param *param)
+                        struct find_param *param)
 {
         int rc;
 
@@ -419,9 +417,8 @@ static int process_dir(DIR *dir, char *dname, struct find_param *param)
         rc = ioctl(dirfd(dir), LL_IOC_LOV_GETSTRIPE, (void *)param->lum);
         if (rc) {
                 if (errno == ENODATA) {
-                        if (!param->obduuid && !param->quiet)
-                                printf("%s/%s has no stripe info\n", 
-                                       dname, "");
+                        if (!param->obduuid && param->verbose)
+                                printf("%s/%s has no stripe info\n", dname, "");
                         rc = 0;
                 } else {
                         err_msg("IOC_MDC_GETSTRIPE ioctl failed");
@@ -561,12 +558,11 @@ out:
 
 int op_check(int type_num, char **obd_type, char *dir)
 {
+        char buf[MAX_STRING_SIZE];
+        FILE *fp = fopen(DEVICES_LIST, "r");
         int rc = 0;
         int i;
 
-        char buf[MAX_STRING_SIZE];
-        FILE *fp = fopen(DEVICES_LIST, "r");
-                                                                                                                                               
         if (fp == NULL) {
                 fprintf(stderr, "error: %s could not open file "
                         DEVICES_LIST " .\n", strerror(rc =  errno));
@@ -576,44 +572,46 @@ int op_check(int type_num, char **obd_type, char *dir)
         while (fgets(buf, sizeof(buf), fp) != NULL) {
                 char *obd_type_name = NULL;
                 char *obd_name = NULL;
-
                 char rawbuf[OBD_MAX_IOCTL_BUFFER];
                 char *bufl = rawbuf;
                 char *bufp = buf;
                 int max = sizeof(rawbuf);
                 struct obd_ioctl_data datal;
                 struct obd_statfs osfs_buffer;
-                                                                                
-                while(bufp[0] == ' ') bufp += 1;
+
+                while(bufp[0] == ' ')
+                        ++bufp;
+
                 for(i = 0; i < 3; i++) {
                         obd_type_name = strsep(&bufp, " ");
                 }
                 obd_name = strsep(&bufp, " ");
 
-                memset (&osfs_buffer, 0, sizeof (osfs_buffer));
+                memset(&osfs_buffer, 0, sizeof (osfs_buffer));
 
                 memset(bufl, 0, sizeof(rawbuf));
                 datal.ioc_pbuf1 = (char *)&osfs_buffer;
-                datal.ioc_plen1 = sizeof (osfs_buffer);
+                datal.ioc_plen1 = sizeof(osfs_buffer);
 
-                for (i=0;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;
 }
@@ -629,7 +627,7 @@ int op_catinfo(char *dir, char *keyword, char *node_name)
         char key[30];
         DIR *root;
         int rc;
-        
+
         sprintf(key, "%s", keyword);
         memset(raw, 0, sizeof(buf));
         memset(out, 0, sizeof(out));
@@ -642,22 +640,26 @@ int op_catinfo(char *dir, char *keyword, char *node_name)
         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);
+}
index 1270f91..3ac52de 100644 (file)
@@ -70,7 +70,7 @@ update_mtab_entry(char *spec, char *node, char *type, char *opts,
 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;
@@ -194,7 +194,7 @@ set_local(struct lustre_mount_data *lmd)
                 if (rc != 0) {
                         fprintf(stderr, "%s: can't read Elan ID from /proc\n",
                                 progname);
-                                
+
                         return -1;
                 }
         }
index a2bbe20..26f66d8 100644 (file)
@@ -34,7 +34,7 @@
 
 /* completion_matches() is #if 0-ed out in modern glibc */
 #ifndef completion_matches
-#define completion_matches rl_completion_matches
+#  define completion_matches rl_completion_matches
 #endif
 extern void using_history(void);
 extern void stifle_history(int);
@@ -248,18 +248,19 @@ static char * command_generator(const char * text, int state)
 /* probably called by readline */
 static char **command_completion(char * text, int start, int end)
 {
-        command_t         * table;
+        command_t   * table;
         char        * pos;
 
         match_tbl = top_level;
+        
         for (table = find_cmd(rl_line_buffer, match_tbl, &pos);
-             table;
-             table = find_cmd(pos, match_tbl, &pos)) {
+             table; table = find_cmd(pos, match_tbl, &pos)) 
+        {
 
                 if (*(pos - 1) == ' ') match_tbl = table->pc_sub_cmd;
         }
 
-        return(completion_matches(text, command_generator));
+        return completion_matches(text, command_generator);
 }
 #endif