From 9a4644fc9e829c45e883b12a709958bdc98f2411 Mon Sep 17 00:00:00 2001
From: yangsheng <yangsheng>
Date: Thu, 3 Jan 2008 03:24:14 +0000
Subject: [PATCH] Branch HEAD b=14288 i=adilger i=kalpak

Update to RHEL4 U6 kernel-2.6.9-67.EL.
---
 lustre/ChangeLog                              |   6 +-
 lustre/autoconf/lustre-core.m4                |   1 +
 .../kernel-2.6.9-2.6-rhel4-i686-smp.config    |  56 +--
 .../kernel-2.6.9-2.6-rhel4-i686.config        |  77 ++--
 .../kernel-2.6.9-2.6-rhel4-ia64-smp.config    |  50 +--
 .../kernel-2.6.9-2.6-rhel4-ia64.config        |  50 +--
 .../kernel-2.6.9-2.6-rhel4-x86_64-smp.config  |  69 ++--
 .../kernel-2.6.9-2.6-rhel4-x86_64.config      |  56 +--
 .../patches/iopen-misc-2.6-suse.patch         |  37 +-
 .../patches/jbd-stats-2.6.9.patch             |  67 ++--
 .../patches/qsnet-rhel4-2.6.patch             |   2 +-
 .../patches/rollback-raid5ch-to-55.patch      | 329 ++++++++++++++++++
 .../patches/tcp-rto_proc-2.6.9.patch          |   8 +-
 ...fs-keep-inode-hashed-for-clear-inode.patch |  14 +-
 .../patches/vfs_intent-2.6-rhel4.patch        |  19 +-
 .../patches/vfs_races-2.6-rhel4.patch         |   8 +-
 lustre/kernel_patches/series/2.6-rhel4.series |   1 +
 .../targets/2.6-rhel4.target.in               |   2 +-
 lustre/kernel_patches/which_patch             |   2 +-
 19 files changed, 610 insertions(+), 244 deletions(-)
 create mode 100644 lustre/kernel_patches/patches/rollback-raid5ch-to-55.patch

diff --git a/lustre/ChangeLog b/lustre/ChangeLog
index 68d3faea89..505f88feda 100644
--- a/lustre/ChangeLog
+++ b/lustre/ChangeLog
@@ -1,7 +1,7 @@
        * version 1.8.0
        * Support for kernels:
         2.6.5-7.287.3 (SLES 9),
-        2.6.9-55.0.12.EL (RHEL 4),
+        2.6.9-67.EL (RHEL 4),
         2.6.16.54-0.2.3 (SLES 10),
         2.6.18-53.1.4.el5 (RHEL 5).
         2.6.18.8 vanilla (kernel.org)
@@ -12,6 +12,10 @@
        * Recommended e2fsprogs version: 1.40.2-cfs5
        * Note that reiserfs quotas are disabled on SLES 10 in this kernel.
 
+Severity   : enhancement
+Bugzilla   : 14288
+Description: Update to RHEL4 U6 kernel-2.6.9-67.EL.
+
 Severity   : enhancement
 Bugzilla   : 14368
 Description: Update to RHEL5 latest kernel-2.6.18-53.1.4.el5.
diff --git a/lustre/autoconf/lustre-core.m4 b/lustre/autoconf/lustre-core.m4
index 37cb83682e..727d1a98f9 100644
--- a/lustre/autoconf/lustre-core.m4
+++ b/lustre/autoconf/lustre-core.m4
@@ -817,6 +817,7 @@ AC_DEFUN([LC_INODE_I_MUTEX],
 LB_LINUX_TRY_COMPILE([
 	#include <linux/mutex.h>
 	#include <linux/fs.h>
+	#undef i_mutex
 ],[
 	struct inode i;
 
diff --git a/lustre/kernel_patches/kernel_configs/kernel-2.6.9-2.6-rhel4-i686-smp.config b/lustre/kernel_patches/kernel_configs/kernel-2.6.9-2.6-rhel4-i686-smp.config
index df67224013..3607fa2e12 100644
--- a/lustre/kernel_patches/kernel_configs/kernel-2.6.9-2.6-rhel4-i686-smp.config
+++ b/lustre/kernel_patches/kernel_configs/kernel-2.6.9-2.6-rhel4-i686-smp.config
@@ -1,7 +1,7 @@
 #
 # Automatically generated make config: don't edit
-# Linux kernel version: 2.6.9-prep.qp2.2.5.11.3qsnet
-# Mon Mar 12 20:13:46 2007
+# Linux kernel version: 2.6.9-prep.qp3.5.34.4qsnet
+# Sat Nov 24 21:29:36 2007
 #
 CONFIG_X86=y
 CONFIG_MMU=y
@@ -129,7 +129,6 @@ CONFIG_I8K=m
 CONFIG_MICROCODE=m
 CONFIG_X86_MSR=m
 CONFIG_X86_CPUID=m
-# CONFIG_HOTPLUG_CPU is not set
 
 #
 # Firmware Drivers
@@ -238,6 +237,7 @@ CONFIG_PCI=y
 # CONFIG_PCI_GOBIOS is not set
 # CONFIG_PCI_GOMMCONFIG is not set
 # CONFIG_PCI_GODIRECT is not set
+# CONFIG_PCI_GOXEN_FE is not set
 CONFIG_PCI_GOANY=y
 CONFIG_PCI_BIOS=y
 CONFIG_PCI_DIRECT=y
@@ -249,6 +249,7 @@ CONFIG_ISA=y
 # CONFIG_EISA is not set
 # CONFIG_MCA is not set
 # CONFIG_SCx200 is not set
+# CONFIG_HOTPLUG_CPU is not set
 
 #
 # PCMCIA/CardBus support
@@ -568,6 +569,7 @@ CONFIG_AIC79XX_RESET_DELAY_MS=15000
 CONFIG_AIC79XX_DEBUG_MASK=0
 # CONFIG_AIC79XX_REG_PRETTY_PRINT is not set
 # CONFIG_SCSI_DPT_I2O is not set
+CONFIG_SCSI_ARCMSR=m
 # CONFIG_SCSI_IN2000 is not set
 CONFIG_MEGARAID_NEWGEN=y
 CONFIG_MEGARAID_MM=m
@@ -613,7 +615,6 @@ CONFIG_SCSI_QLA2300=m
 CONFIG_SCSI_QLA2322=m
 CONFIG_SCSI_QLA6312=m
 CONFIG_SCSI_QLA24XX=m
-CONFIG_QLA3XXX=m
 CONFIG_SCSI_QLA4XXX=m
 # CONFIG_SCSI_SYM53C416 is not set
 # CONFIG_SCSI_DC395x is not set
@@ -636,7 +637,7 @@ CONFIG_PCMCIA_FDOMAIN=m
 #
 # Serial ATA (prod) and Parallel ATA (experimental) drivers
 #
-CONFIG_ATA=y
+CONFIG_ATA=m
 CONFIG_SATA_AHCI=m
 CONFIG_SATA_SVW=m
 CONFIG_ATA_PIIX=m
@@ -653,6 +654,8 @@ CONFIG_SATA_ULI=m
 CONFIG_SATA_VIA=m
 CONFIG_SATA_VITESSE=m
 CONFIG_SATA_INTEL_COMBINED=y
+CONFIG_PATA_PDC2027X=m
+CONFIG_PATA_JMICRON=m
 
 #
 # Old CD-ROM drivers (not SCSI, not IDE)
@@ -1133,6 +1136,8 @@ CONFIG_ACENIC=m
 CONFIG_DL2K=m
 CONFIG_E1000=m
 CONFIG_E1000_NAPI=y
+CONFIG_E1000E=m
+CONFIG_IGB=m
 CONFIG_NS83820=m
 # CONFIG_HAMACHI is not set
 # CONFIG_YELLOWFIN is not set
@@ -1144,14 +1149,17 @@ CONFIG_SK98LIN=m
 CONFIG_VIA_VELOCITY=m
 CONFIG_TIGON3=m
 CONFIG_BNX2=m
+CONFIG_QLA3XXX=m
 
 #
 # Ethernet (10000 Mbit)
 #
 CONFIG_IXGB=m
 CONFIG_IXGB_NAPI=y
+CONFIG_CHELSIO_T3=m
 CONFIG_S2IO=m
 CONFIG_S2IO_NAPI=y
+CONFIG_NETXEN_NIC=m
 
 #
 # Token Ring devices
@@ -1168,17 +1176,6 @@ CONFIG_PROTEON=m
 CONFIG_ABYSS=m
 CONFIG_SMCTR=m
 
-#
-# Quadrics QsNet
-#
-CONFIG_QSNET=m
-CONFIG_ELAN3=m
-CONFIG_ELAN4=m
-CONFIG_EP=m
-CONFIG_EIP=m
-CONFIG_RMS=m
-CONFIG_JTAG=m
-
 #
 # Wireless LAN (non-hamradio)
 #
@@ -1759,7 +1756,7 @@ CONFIG_VIDEO_DEV=m
 #
 # Video Adapters
 #
-# CONFIG_VIDEO_BT848 is not set
+CONFIG_VIDEO_BT848=m
 # CONFIG_VIDEO_PMS is not set
 # CONFIG_VIDEO_BWQCAM is not set
 # CONFIG_VIDEO_CQCAM is not set
@@ -1800,6 +1797,10 @@ CONFIG_VIDEO_OVCAMCHIP=m
 # Digital Video Broadcasting Devices
 #
 # CONFIG_DVB is not set
+CONFIG_VIDEO_TUNER=m
+CONFIG_VIDEO_BUF=m
+CONFIG_VIDEO_BTCX=m
+CONFIG_VIDEO_IR=m
 
 #
 # Graphics support
@@ -2173,15 +2174,20 @@ CONFIG_INFINIBAND_USER_ACCESS=m
 CONFIG_INFINIBAND_ADDR_TRANS=y
 CONFIG_INFINIBAND_MTHCA=m
 CONFIG_INFINIBAND_MTHCA_DEBUG=y
+CONFIG_INFINIBAND_AMSO1100=m
+# CONFIG_INFINIBAND_AMSO1100_DEBUG is not set
+CONFIG_INFINIBAND_CXGB3=m
+# CONFIG_INFINIBAND_CXGB3_DEBUG is not set
 CONFIG_INFINIBAND_IPOIB=m
+CONFIG_INFINIBAND_IPOIB_CM=y
 CONFIG_INFINIBAND_IPOIB_DEBUG=y
 # CONFIG_INFINIBAND_IPOIB_DEBUG_DATA is not set
+CONFIG_INFINIBAND_SRP=m
 CONFIG_INFINIBAND_SDP=m
 # CONFIG_INFINIBAND_SDP_DEBUG is not set
-CONFIG_INFINIBAND_SRP=m
-# CONFIG_INFINIBAND_ISER is not set
-# CONFIG_INFINIBAND_RDS
-# CONFIG_INFINIBAND_RDS_DEBUG is not set
+CONFIG_INFINIBAND_VNIC=m
+# CONFIG_INFINIBAND_VNIC_DEBUG is not set
+CONFIG_INFINIBAND_VNIC_STATS=y
 CONFIG_INFINIBAND_MADEYE=m
 
 #
@@ -2199,9 +2205,9 @@ CONFIG_EDAC_E7XXX=m
 CONFIG_EDAC_E752X=m
 CONFIG_EDAC_I82875P=m
 CONFIG_EDAC_I82860=m
+CONFIG_EDAC_K8=m
 CONFIG_EDAC_R82600=m
 CONFIG_EDAC_POLL=y
-CONFIG_EDAC_K8=m
 
 #
 # File systems
@@ -2413,12 +2419,8 @@ CONFIG_DEBUG_STACK_USAGE=y
 # CONFIG_DEBUG_PAGEALLOC is not set
 # CONFIG_4KSTACKS is not set
 # CONFIG_SCHEDSTATS is not set
-CONFIG_LOCKMETER=y
 CONFIG_X86_FIND_SMP_CONFIG=y
 CONFIG_X86_MPPARSE=y
-# CONFIG_KGDB is not set
-# CONFIG_PROC_SLEEP is not set
-
 
 #
 # Security options
@@ -2476,8 +2478,10 @@ CONFIG_CRC32=y
 CONFIG_LIBCRC32C=m
 CONFIG_ZLIB_INFLATE=y
 CONFIG_ZLIB_DEFLATE=m
+CONFIG_HAS_IOMEM=y
 CONFIG_X86_SMP=y
 CONFIG_X86_HT=y
 CONFIG_X86_BIOS_REBOOT=y
 CONFIG_X86_TRAMPOLINE=y
+CONFIG_X86_SYSENTER=y
 CONFIG_PC=y
diff --git a/lustre/kernel_patches/kernel_configs/kernel-2.6.9-2.6-rhel4-i686.config b/lustre/kernel_patches/kernel_configs/kernel-2.6.9-2.6-rhel4-i686.config
index 4d30fb3ab7..e0f96004e1 100644
--- a/lustre/kernel_patches/kernel_configs/kernel-2.6.9-2.6-rhel4-i686.config
+++ b/lustre/kernel_patches/kernel_configs/kernel-2.6.9-2.6-rhel4-i686.config
@@ -1,7 +1,7 @@
 #
 # Automatically generated make config: don't edit
-# Linux kernel version: 2.6.9-prep.qp2.2.5.11.3qsnet
-# Tue Nov  7 10:22:12 2006
+# Linux kernel version: 2.6.9-prep.qp3.5.34.4qsnet
+# Sat Nov 24 21:30:07 2007
 #
 CONFIG_X86=y
 CONFIG_MMU=y
@@ -112,7 +112,7 @@ CONFIG_HPET_TIMER=y
 CONFIG_HPET_EMULATE_RTC=y
 # CONFIG_SMP is not set
 # CONFIG_PREEMPT is not set
-# CONFIG_PREEMPT_VOLUNTARY is not set
+CONFIG_PREEMPT_VOLUNTARY=y
 # CONFIG_X86_UP_APIC is not set
 CONFIG_X86_TSC=y
 CONFIG_X86_MCE=y
@@ -122,7 +122,6 @@ CONFIG_I8K=m
 CONFIG_MICROCODE=m
 CONFIG_X86_MSR=m
 CONFIG_X86_CPUID=m
-# CONFIG_HOTPLUG_CPU is not set
 
 #
 # Firmware Drivers
@@ -130,12 +129,11 @@ CONFIG_X86_CPUID=m
 CONFIG_EDD=m
 CONFIG_DELL_RBU=m
 CONFIG_DCDBAS=m
-CONFIG_NOHIGHMEM=y
-# CONFIG_HIGHMEM4G is not set
+# CONFIG_NOHIGHMEM is not set
+CONFIG_HIGHMEM4G=y
 # CONFIG_HIGHMEM64G is not set
-# CONFIG_USER_3GB is not set
-# CONFIG_USER_2GB is not set
-CONFIG_USER_1GB=y
+CONFIG_HIGHMEM=y
+CONFIG_HIGHPTE=y
 # CONFIG_MATH_EMULATION is not set
 CONFIG_MTRR=y
 # CONFIG_EFI is not set
@@ -228,6 +226,7 @@ CONFIG_PCI=y
 # CONFIG_PCI_GOBIOS is not set
 # CONFIG_PCI_GOMMCONFIG is not set
 # CONFIG_PCI_GODIRECT is not set
+# CONFIG_PCI_GOXEN_FE is not set
 CONFIG_PCI_GOANY=y
 CONFIG_PCI_BIOS=y
 CONFIG_PCI_DIRECT=y
@@ -440,7 +439,7 @@ CONFIG_BLK_DEV_IDEDISK=y
 CONFIG_IDEDISK_MULTI_MODE=y
 CONFIG_BLK_DEV_IDECS=m
 CONFIG_BLK_DEV_DELKIN=m
-# CONFIG_BLK_DEV_IDECD is not set
+CONFIG_BLK_DEV_IDECD=y
 # CONFIG_BLK_DEV_IDETAPE is not set
 CONFIG_BLK_DEV_IDEFLOPPY=y
 CONFIG_BLK_DEV_IDESCSI=m
@@ -556,6 +555,7 @@ CONFIG_AIC79XX_RESET_DELAY_MS=15000
 CONFIG_AIC79XX_DEBUG_MASK=0
 # CONFIG_AIC79XX_REG_PRETTY_PRINT is not set
 # CONFIG_SCSI_DPT_I2O is not set
+CONFIG_SCSI_ARCMSR=m
 # CONFIG_SCSI_IN2000 is not set
 CONFIG_MEGARAID_NEWGEN=y
 CONFIG_MEGARAID_MM=m
@@ -601,7 +601,6 @@ CONFIG_SCSI_QLA2300=m
 CONFIG_SCSI_QLA2322=m
 CONFIG_SCSI_QLA6312=m
 CONFIG_SCSI_QLA24XX=m
-CONFIG_QLA3XXX=m
 CONFIG_SCSI_QLA4XXX=m
 # CONFIG_SCSI_SYM53C416 is not set
 # CONFIG_SCSI_DC395x is not set
@@ -624,7 +623,7 @@ CONFIG_PCMCIA_FDOMAIN=m
 #
 # Serial ATA (prod) and Parallel ATA (experimental) drivers
 #
-CONFIG_ATA=y
+CONFIG_ATA=m
 CONFIG_SATA_AHCI=m
 CONFIG_SATA_SVW=m
 CONFIG_ATA_PIIX=m
@@ -641,6 +640,8 @@ CONFIG_SATA_ULI=m
 CONFIG_SATA_VIA=m
 CONFIG_SATA_VITESSE=m
 CONFIG_SATA_INTEL_COMBINED=y
+CONFIG_PATA_PDC2027X=m
+CONFIG_PATA_JMICRON=m
 
 #
 # Old CD-ROM drivers (not SCSI, not IDE)
@@ -1123,6 +1124,8 @@ CONFIG_ACENIC=m
 CONFIG_DL2K=m
 CONFIG_E1000=m
 CONFIG_E1000_NAPI=y
+CONFIG_E1000E=m
+CONFIG_IGB=m
 CONFIG_NS83820=m
 # CONFIG_HAMACHI is not set
 # CONFIG_YELLOWFIN is not set
@@ -1134,14 +1137,17 @@ CONFIG_SK98LIN=m
 CONFIG_VIA_VELOCITY=m
 CONFIG_TIGON3=m
 CONFIG_BNX2=m
+CONFIG_QLA3XXX=m
 
 #
 # Ethernet (10000 Mbit)
 #
 CONFIG_IXGB=m
 CONFIG_IXGB_NAPI=y
+CONFIG_CHELSIO_T3=m
 CONFIG_S2IO=m
 CONFIG_S2IO_NAPI=y
+CONFIG_NETXEN_NIC=m
 
 #
 # Token Ring devices
@@ -1158,17 +1164,6 @@ CONFIG_PROTEON=m
 CONFIG_ABYSS=m
 CONFIG_SMCTR=m
 
-#
-# Quadrics QsNet
-#
-CONFIG_QSNET=m
-CONFIG_ELAN3=m
-CONFIG_ELAN4=m
-CONFIG_EP=m
-CONFIG_EIP=m
-CONFIG_RMS=m
-CONFIG_JTAG=m
-
 #
 # Wireless LAN (non-hamradio)
 #
@@ -1767,7 +1762,7 @@ CONFIG_VIDEO_DEV=m
 #
 # Video Adapters
 #
-# CONFIG_VIDEO_BT848 is not set
+CONFIG_VIDEO_BT848=m
 # CONFIG_VIDEO_PMS is not set
 # CONFIG_VIDEO_BWQCAM is not set
 # CONFIG_VIDEO_CQCAM is not set
@@ -1809,6 +1804,10 @@ CONFIG_VIDEO_OVCAMCHIP=m
 # Digital Video Broadcasting Devices
 #
 # CONFIG_DVB is not set
+CONFIG_VIDEO_TUNER=m
+CONFIG_VIDEO_BUF=m
+CONFIG_VIDEO_BTCX=m
+CONFIG_VIDEO_IR=m
 
 #
 # Graphics support
@@ -2001,9 +2000,11 @@ CONFIG_USB_SUSPEND=y
 #
 # USB Host Controller Drivers
 #
-# CONFIG_USB_EHCI_HCD is not set
-# CONFIG_USB_OHCI_HCD is not set
-# CONFIG_USB_UHCI_HCD is not set
+CONFIG_USB_EHCI_HCD=m
+CONFIG_USB_EHCI_SPLIT_ISO=y
+CONFIG_USB_EHCI_ROOT_HUB_TT=y
+CONFIG_USB_OHCI_HCD=m
+CONFIG_USB_UHCI_HCD=m
 
 #
 # USB Device Class drivers
@@ -2181,15 +2182,20 @@ CONFIG_INFINIBAND_USER_ACCESS=m
 CONFIG_INFINIBAND_ADDR_TRANS=y
 CONFIG_INFINIBAND_MTHCA=m
 CONFIG_INFINIBAND_MTHCA_DEBUG=y
+CONFIG_INFINIBAND_AMSO1100=m
+# CONFIG_INFINIBAND_AMSO1100_DEBUG is not set
+CONFIG_INFINIBAND_CXGB3=m
+# CONFIG_INFINIBAND_CXGB3_DEBUG is not set
 CONFIG_INFINIBAND_IPOIB=m
+CONFIG_INFINIBAND_IPOIB_CM=y
 CONFIG_INFINIBAND_IPOIB_DEBUG=y
 # CONFIG_INFINIBAND_IPOIB_DEBUG_DATA is not set
+CONFIG_INFINIBAND_SRP=m
 CONFIG_INFINIBAND_SDP=m
 # CONFIG_INFINIBAND_SDP_DEBUG is not set
-CONFIG_INFINIBAND_SRP=m
-# CONFIG_INFINIBAND_ISER is not set
-# CONFIG_INFINIBAND_RDS
-# CONFIG_INFINIBAND_RDS_DEBUG is not set
+CONFIG_INFINIBAND_VNIC=m
+# CONFIG_INFINIBAND_VNIC_DEBUG is not set
+CONFIG_INFINIBAND_VNIC_STATS=y
 CONFIG_INFINIBAND_MADEYE=m
 
 #
@@ -2207,9 +2213,9 @@ CONFIG_EDAC_E7XXX=m
 CONFIG_EDAC_E752X=m
 CONFIG_EDAC_I82875P=m
 CONFIG_EDAC_I82860=m
+CONFIG_EDAC_K8=m
 CONFIG_EDAC_R82600=m
 CONFIG_EDAC_POLL=y
-CONFIG_EDAC_K8=m
 
 #
 # File systems
@@ -2411,8 +2417,9 @@ CONFIG_MAGIC_SYSRQ=y
 # CONFIG_DEBUG_SLAB is not set
 CONFIG_DEBUG_SPINLOCK=y
 CONFIG_DEBUG_SPINLOCK_SLEEP=y
+CONFIG_DEBUG_HIGHMEM=y
 CONFIG_DEBUG_INFO=y
-CONFIG_FRAME_POINTER=y
+# CONFIG_FRAME_POINTER is not set
 CONFIG_EARLY_PRINTK=y
 CONFIG_DEBUG_STACKOVERFLOW=y
 CONFIG_KPROBES=y
@@ -2420,8 +2427,6 @@ CONFIG_DEBUG_STACK_USAGE=y
 # CONFIG_DEBUG_PAGEALLOC is not set
 # CONFIG_4KSTACKS is not set
 # CONFIG_SCHEDSTATS is not set
-# CONFIG_KGDB is not set
-CONFIG_PROC_SLEEP=y
 
 #
 # Security options
@@ -2479,5 +2484,7 @@ CONFIG_CRC32=y
 CONFIG_LIBCRC32C=m
 CONFIG_ZLIB_INFLATE=y
 CONFIG_ZLIB_DEFLATE=m
+CONFIG_HAS_IOMEM=y
 CONFIG_X86_BIOS_REBOOT=y
+CONFIG_X86_SYSENTER=y
 CONFIG_PC=y
diff --git a/lustre/kernel_patches/kernel_configs/kernel-2.6.9-2.6-rhel4-ia64-smp.config b/lustre/kernel_patches/kernel_configs/kernel-2.6.9-2.6-rhel4-ia64-smp.config
index 9c8c0573c6..157dcc2572 100644
--- a/lustre/kernel_patches/kernel_configs/kernel-2.6.9-2.6-rhel4-ia64-smp.config
+++ b/lustre/kernel_patches/kernel_configs/kernel-2.6.9-2.6-rhel4-ia64-smp.config
@@ -1,7 +1,7 @@
 #
 # Automatically generated make config: don't edit
-# Linux kernel version: 2.6.9-prep.qp2.2.5.11.3qsnet
-# Mon Jul 31 19:41:42 2006
+# Linux kernel version: 2.6.9-prep.qp3.5.34.4qsnet
+# Sat Nov 24 21:28:15 2007
 #
 
 #
@@ -80,6 +80,7 @@ CONFIG_VIRTUAL_MEM_MAP=y
 CONFIG_DISCONTIGMEM=y
 CONFIG_IA64_CYCLONE=y
 CONFIG_IOSAPIC=y
+CONFIG_IA64_LOCAL_APIC_INFO_MOD=m
 CONFIG_FORCE_MAX_ZONEORDER=18
 CONFIG_SMP=y
 CONFIG_NR_CPUS=64
@@ -93,7 +94,6 @@ CONFIG_PERFMON=y
 CONFIG_IA64_PALINFO=y
 CONFIG_IOPROC=y
 CONFIG_PTRACK=y
-CONFIG_IA64_LOCAL_APIC_INFO_MOD=m
 
 #
 # Firmware Drivers
@@ -336,6 +336,7 @@ CONFIG_AIC79XX_RESET_DELAY_MS=15000
 # CONFIG_AIC79XX_DEBUG_ENABLE is not set
 CONFIG_AIC79XX_DEBUG_MASK=0
 # CONFIG_AIC79XX_REG_PRETTY_PRINT is not set
+CONFIG_SCSI_ARCMSR=m
 CONFIG_MEGARAID_NEWGEN=y
 CONFIG_MEGARAID_MM=m
 CONFIG_MEGARAID_MAILBOX=m
@@ -373,7 +374,6 @@ CONFIG_SCSI_QLA2300=m
 CONFIG_SCSI_QLA2322=m
 CONFIG_SCSI_QLA6312=m
 CONFIG_SCSI_QLA24XX=m
-CONFIG_QLA3XXX=m
 CONFIG_SCSI_QLA4XXX=m
 # CONFIG_SCSI_DC395x is not set
 # CONFIG_SCSI_DC390T is not set
@@ -389,7 +389,7 @@ CONFIG_SCSI_QLA4XXX=m
 #
 # Serial ATA (prod) and Parallel ATA (experimental) drivers
 #
-CONFIG_ATA=y
+CONFIG_ATA=m
 CONFIG_SATA_AHCI=m
 CONFIG_SATA_SVW=m
 CONFIG_ATA_PIIX=m
@@ -406,6 +406,8 @@ CONFIG_SATA_ULI=m
 CONFIG_SATA_VIA=m
 CONFIG_SATA_VITESSE=m
 CONFIG_SATA_INTEL_COMBINED=y
+CONFIG_PATA_PDC2027X=m
+CONFIG_PATA_JMICRON=m
 
 #
 # Multi-device support (RAID and LVM)
@@ -851,6 +853,8 @@ CONFIG_ACENIC=m
 CONFIG_DL2K=m
 CONFIG_E1000=m
 CONFIG_E1000_NAPI=y
+CONFIG_E1000E=m
+CONFIG_IGB=m
 CONFIG_NS83820=m
 # CONFIG_HAMACHI is not set
 # CONFIG_YELLOWFIN is not set
@@ -862,14 +866,17 @@ CONFIG_SK98LIN=m
 CONFIG_VIA_VELOCITY=m
 CONFIG_TIGON3=m
 CONFIG_BNX2=m
+CONFIG_QLA3XXX=m
 
 #
 # Ethernet (10000 Mbit)
 #
 CONFIG_IXGB=m
 CONFIG_IXGB_NAPI=y
+CONFIG_CHELSIO_T3=m
 CONFIG_S2IO=m
 CONFIG_S2IO_NAPI=y
+CONFIG_NETXEN_NIC=m
 
 #
 # Token Ring devices
@@ -881,17 +888,6 @@ CONFIG_TMS380TR=m
 CONFIG_TMSPCI=m
 CONFIG_ABYSS=m
 
-#
-# Quadrics QsNet
-#
-CONFIG_QSNET=m
-CONFIG_ELAN3=m
-CONFIG_ELAN4=m
-CONFIG_EP=m
-CONFIG_EIP=m
-CONFIG_RMS=m
-CONFIG_JTAG=m
-
 #
 # Wireless LAN (non-hamradio)
 #
@@ -1392,7 +1388,7 @@ CONFIG_VIDEO_DEV=m
 #
 # Video Adapters
 #
-# CONFIG_VIDEO_BT848 is not set
+CONFIG_VIDEO_BT848=m
 # CONFIG_VIDEO_BWQCAM is not set
 # CONFIG_VIDEO_CQCAM is not set
 # CONFIG_VIDEO_W9966 is not set
@@ -1421,6 +1417,10 @@ CONFIG_VIDEO_OVCAMCHIP=m
 # Digital Video Broadcasting Devices
 #
 # CONFIG_DVB is not set
+CONFIG_VIDEO_TUNER=m
+CONFIG_VIDEO_BUF=m
+CONFIG_VIDEO_BTCX=m
+CONFIG_VIDEO_IR=m
 
 #
 # Graphics support
@@ -1755,17 +1755,23 @@ CONFIG_INFINIBAND=m
 CONFIG_INFINIBAND_USER_MAD=m
 CONFIG_INFINIBAND_USER_ACCESS=m
 CONFIG_INFINIBAND_ADDR_TRANS=y
-# CONFIG_IPATH_CORE is not set
 CONFIG_INFINIBAND_MTHCA=m
 CONFIG_INFINIBAND_MTHCA_DEBUG=y
+CONFIG_INFINIBAND_IPATH=m
+CONFIG_INFINIBAND_AMSO1100=m
+# CONFIG_INFINIBAND_AMSO1100_DEBUG is not set
+CONFIG_INFINIBAND_CXGB3=m
+# CONFIG_INFINIBAND_CXGB3_DEBUG is not set
 CONFIG_INFINIBAND_IPOIB=m
+CONFIG_INFINIBAND_IPOIB_CM=y
 CONFIG_INFINIBAND_IPOIB_DEBUG=y
 # CONFIG_INFINIBAND_IPOIB_DEBUG_DATA is not set
+CONFIG_INFINIBAND_SRP=m
 CONFIG_INFINIBAND_SDP=m
 # CONFIG_INFINIBAND_SDP_DEBUG is not set
-CONFIG_INFINIBAND_SRP=m
-# CONFIG_INFINIBAND_ISER is not set
-# CONFIG_INFINIBAND_RDS_DEBUG is not set
+CONFIG_INFINIBAND_VNIC=m
+# CONFIG_INFINIBAND_VNIC_DEBUG is not set
+CONFIG_INFINIBAND_VNIC_STATS=y
 CONFIG_INFINIBAND_MADEYE=m
 
 #
@@ -1959,6 +1965,7 @@ CONFIG_CRC32=y
 CONFIG_LIBCRC32C=m
 CONFIG_ZLIB_INFLATE=y
 CONFIG_ZLIB_DEFLATE=m
+CONFIG_HAS_IOMEM=y
 
 #
 # HP Simulator drivers
@@ -1989,7 +1996,6 @@ CONFIG_IA64_GRANULE_16MB=y
 # CONFIG_DISABLE_VHPT is not set
 # CONFIG_IA64_DEBUG_CMPXCHG is not set
 # CONFIG_IA64_DEBUG_IRQ is not set
-# CONFIG_KGDB is not set
 
 #
 # Security options
diff --git a/lustre/kernel_patches/kernel_configs/kernel-2.6.9-2.6-rhel4-ia64.config b/lustre/kernel_patches/kernel_configs/kernel-2.6.9-2.6-rhel4-ia64.config
index 8f2a26a318..2eb9678183 100644
--- a/lustre/kernel_patches/kernel_configs/kernel-2.6.9-2.6-rhel4-ia64.config
+++ b/lustre/kernel_patches/kernel_configs/kernel-2.6.9-2.6-rhel4-ia64.config
@@ -1,7 +1,7 @@
 #
 # Automatically generated make config: don't edit
-# Linux kernel version: 2.6.9-prep.qp2.2.5.11.3qsnet
-# Mon Jul 31 19:44:37 2006
+# Linux kernel version: 2.6.9-prep.qp3.5.34.4qsnet
+# Sat Nov 24 21:28:54 2007
 #
 
 #
@@ -80,6 +80,7 @@ CONFIG_VIRTUAL_MEM_MAP=y
 CONFIG_DISCONTIGMEM=y
 CONFIG_IA64_CYCLONE=y
 CONFIG_IOSAPIC=y
+CONFIG_IA64_LOCAL_APIC_INFO_MOD=m
 CONFIG_FORCE_MAX_ZONEORDER=18
 CONFIG_SMP=y
 CONFIG_NR_CPUS=64
@@ -93,7 +94,6 @@ CONFIG_PERFMON=y
 CONFIG_IA64_PALINFO=y
 CONFIG_IOPROC=y
 CONFIG_PTRACK=y
-CONFIG_IA64_LOCAL_APIC_INFO_MOD=m
 
 #
 # Firmware Drivers
@@ -336,6 +336,7 @@ CONFIG_AIC79XX_RESET_DELAY_MS=15000
 # CONFIG_AIC79XX_DEBUG_ENABLE is not set
 CONFIG_AIC79XX_DEBUG_MASK=0
 # CONFIG_AIC79XX_REG_PRETTY_PRINT is not set
+CONFIG_SCSI_ARCMSR=m
 CONFIG_MEGARAID_NEWGEN=y
 CONFIG_MEGARAID_MM=m
 CONFIG_MEGARAID_MAILBOX=m
@@ -373,7 +374,6 @@ CONFIG_SCSI_QLA2300=m
 CONFIG_SCSI_QLA2322=m
 CONFIG_SCSI_QLA6312=m
 CONFIG_SCSI_QLA24XX=m
-CONFIG_QLA3XXX=m
 CONFIG_SCSI_QLA4XXX=m
 # CONFIG_SCSI_DC395x is not set
 # CONFIG_SCSI_DC390T is not set
@@ -389,7 +389,7 @@ CONFIG_SCSI_QLA4XXX=m
 #
 # Serial ATA (prod) and Parallel ATA (experimental) drivers
 #
-CONFIG_ATA=y
+CONFIG_ATA=m
 CONFIG_SATA_AHCI=m
 CONFIG_SATA_SVW=m
 CONFIG_ATA_PIIX=m
@@ -406,6 +406,8 @@ CONFIG_SATA_ULI=m
 CONFIG_SATA_VIA=m
 CONFIG_SATA_VITESSE=m
 CONFIG_SATA_INTEL_COMBINED=y
+CONFIG_PATA_PDC2027X=m
+CONFIG_PATA_JMICRON=m
 
 #
 # Multi-device support (RAID and LVM)
@@ -851,6 +853,8 @@ CONFIG_ACENIC=m
 CONFIG_DL2K=m
 CONFIG_E1000=m
 CONFIG_E1000_NAPI=y
+CONFIG_E1000E=m
+CONFIG_IGB=m
 CONFIG_NS83820=m
 # CONFIG_HAMACHI is not set
 # CONFIG_YELLOWFIN is not set
@@ -862,14 +866,17 @@ CONFIG_SK98LIN=m
 CONFIG_VIA_VELOCITY=m
 CONFIG_TIGON3=m
 CONFIG_BNX2=m
+CONFIG_QLA3XXX=m
 
 #
 # Ethernet (10000 Mbit)
 #
 CONFIG_IXGB=m
 CONFIG_IXGB_NAPI=y
+CONFIG_CHELSIO_T3=m
 CONFIG_S2IO=m
 CONFIG_S2IO_NAPI=y
+CONFIG_NETXEN_NIC=m
 
 #
 # Token Ring devices
@@ -881,17 +888,6 @@ CONFIG_TMS380TR=m
 CONFIG_TMSPCI=m
 CONFIG_ABYSS=m
 
-#
-# Quadrics QsNet
-#
-CONFIG_QSNET=m
-CONFIG_ELAN3=m
-CONFIG_ELAN4=m
-CONFIG_EP=m
-CONFIG_EIP=m
-CONFIG_RMS=m
-CONFIG_JTAG=m
-
 #
 # Wireless LAN (non-hamradio)
 #
@@ -1392,7 +1388,7 @@ CONFIG_VIDEO_DEV=m
 #
 # Video Adapters
 #
-# CONFIG_VIDEO_BT848 is not set
+CONFIG_VIDEO_BT848=m
 # CONFIG_VIDEO_BWQCAM is not set
 # CONFIG_VIDEO_CQCAM is not set
 # CONFIG_VIDEO_W9966 is not set
@@ -1421,6 +1417,10 @@ CONFIG_VIDEO_OVCAMCHIP=m
 # Digital Video Broadcasting Devices
 #
 # CONFIG_DVB is not set
+CONFIG_VIDEO_TUNER=m
+CONFIG_VIDEO_BUF=m
+CONFIG_VIDEO_BTCX=m
+CONFIG_VIDEO_IR=m
 
 #
 # Graphics support
@@ -1755,17 +1755,23 @@ CONFIG_INFINIBAND=m
 CONFIG_INFINIBAND_USER_MAD=m
 CONFIG_INFINIBAND_USER_ACCESS=m
 CONFIG_INFINIBAND_ADDR_TRANS=y
-# CONFIG_IPATH_CORE is not set
 CONFIG_INFINIBAND_MTHCA=m
 CONFIG_INFINIBAND_MTHCA_DEBUG=y
+CONFIG_INFINIBAND_IPATH=m
+CONFIG_INFINIBAND_AMSO1100=m
+# CONFIG_INFINIBAND_AMSO1100_DEBUG is not set
+CONFIG_INFINIBAND_CXGB3=m
+# CONFIG_INFINIBAND_CXGB3_DEBUG is not set
 CONFIG_INFINIBAND_IPOIB=m
+CONFIG_INFINIBAND_IPOIB_CM=y
 CONFIG_INFINIBAND_IPOIB_DEBUG=y
 # CONFIG_INFINIBAND_IPOIB_DEBUG_DATA is not set
+CONFIG_INFINIBAND_SRP=m
 CONFIG_INFINIBAND_SDP=m
 # CONFIG_INFINIBAND_SDP_DEBUG is not set
-CONFIG_INFINIBAND_SRP=m
-# CONFIG_INFINIBAND_ISER is not set
-# CONFIG_INFINIBAND_RDS_DEBUG is not set
+CONFIG_INFINIBAND_VNIC=m
+# CONFIG_INFINIBAND_VNIC_DEBUG is not set
+CONFIG_INFINIBAND_VNIC_STATS=y
 CONFIG_INFINIBAND_MADEYE=m
 
 #
@@ -1959,6 +1965,7 @@ CONFIG_CRC32=y
 CONFIG_LIBCRC32C=m
 CONFIG_ZLIB_INFLATE=y
 CONFIG_ZLIB_DEFLATE=m
+CONFIG_HAS_IOMEM=y
 
 #
 # HP Simulator drivers
@@ -1989,7 +1996,6 @@ CONFIG_IA64_GRANULE_16MB=y
 # CONFIG_DISABLE_VHPT is not set
 # CONFIG_IA64_DEBUG_CMPXCHG is not set
 # CONFIG_IA64_DEBUG_IRQ is not set
-# CONFIG_KGDB is not set
 
 #
 # Security options
diff --git a/lustre/kernel_patches/kernel_configs/kernel-2.6.9-2.6-rhel4-x86_64-smp.config b/lustre/kernel_patches/kernel_configs/kernel-2.6.9-2.6-rhel4-x86_64-smp.config
index bfb5994003..028c475499 100644
--- a/lustre/kernel_patches/kernel_configs/kernel-2.6.9-2.6-rhel4-x86_64-smp.config
+++ b/lustre/kernel_patches/kernel_configs/kernel-2.6.9-2.6-rhel4-x86_64-smp.config
@@ -1,7 +1,7 @@
 #
 # Automatically generated make config: don't edit
-# Linux kernel version: 2.6.9-prep.qp2.2.5.11.3qsnet
-# Mon Jul 31 19:52:59 2006
+# Linux kernel version: 2.6.9-prep.qp3.5.34.4qsnet
+# Sat Nov 24 21:26:14 2007
 #
 CONFIG_X86_64=y
 CONFIG_64BIT=y
@@ -72,6 +72,7 @@ CONFIG_STOP_MACHINE=y
 # CONFIG_MPSC is not set
 CONFIG_GENERIC_CPU=y
 # CONFIG_MEM_MIRROR is not set
+# CONFIG_X86_64_XEN is not set
 CONFIG_X86_L1_CACHE_BYTES=128
 CONFIG_X86_L1_CACHE_SHIFT=7
 CONFIG_X86_TSC=y
@@ -98,8 +99,7 @@ CONFIG_X86_MCE=y
 CONFIG_X86_MCE_AMD=y
 CONFIG_IOPROC=y
 CONFIG_PTRACK=y
-# CONFIG_X86_64_XEN is not set
- 
+
 #
 # Power management options
 #
@@ -469,6 +469,7 @@ CONFIG_AIC79XX_RESET_DELAY_MS=15000
 # CONFIG_AIC79XX_DEBUG_ENABLE is not set
 CONFIG_AIC79XX_DEBUG_MASK=0
 # CONFIG_AIC79XX_REG_PRETTY_PRINT is not set
+CONFIG_SCSI_ARCMSR=m
 CONFIG_MEGARAID_NEWGEN=y
 CONFIG_MEGARAID_MM=m
 CONFIG_MEGARAID_MAILBOX=m
@@ -506,9 +507,7 @@ CONFIG_SCSI_QLA2300=m
 CONFIG_SCSI_QLA2322=m
 CONFIG_SCSI_QLA6312=m
 CONFIG_SCSI_QLA24XX=m
-CONFIG_QLA3XXX=m
 CONFIG_SCSI_QLA4XXX=m
-
 # CONFIG_SCSI_DC395x is not set
 # CONFIG_SCSI_DC390T is not set
 # CONFIG_SCSI_DEBUG is not set
@@ -523,7 +522,7 @@ CONFIG_SCSI_QLA4XXX=m
 #
 # Serial ATA (prod) and Parallel ATA (experimental) drivers
 #
-CONFIG_ATA=y
+CONFIG_ATA=m
 CONFIG_SATA_AHCI=m
 CONFIG_SATA_SVW=m
 CONFIG_ATA_PIIX=m
@@ -540,7 +539,8 @@ CONFIG_SATA_ULI=m
 CONFIG_SATA_VIA=m
 CONFIG_SATA_VITESSE=m
 CONFIG_SATA_INTEL_COMBINED=y
-
+CONFIG_PATA_PDC2027X=m
+CONFIG_PATA_JMICRON=m
 
 #
 # Multi-device support (RAID and LVM)
@@ -990,6 +990,8 @@ CONFIG_ACENIC=m
 CONFIG_DL2K=m
 CONFIG_E1000=m
 CONFIG_E1000_NAPI=y
+CONFIG_E1000E=m
+CONFIG_IGB=m
 CONFIG_NS83820=m
 # CONFIG_HAMACHI is not set
 # CONFIG_YELLOWFIN is not set
@@ -1001,14 +1003,17 @@ CONFIG_SK98LIN=m
 CONFIG_VIA_VELOCITY=m
 CONFIG_TIGON3=m
 CONFIG_BNX2=m
+CONFIG_QLA3XXX=m
 
 #
 # Ethernet (10000 Mbit)
 #
 CONFIG_IXGB=m
 CONFIG_IXGB_NAPI=y
+CONFIG_CHELSIO_T3=m
 CONFIG_S2IO=m
 CONFIG_S2IO_NAPI=y
+CONFIG_NETXEN_NIC=m
 
 #
 # Token Ring devices
@@ -1020,17 +1025,6 @@ CONFIG_TMS380TR=m
 CONFIG_TMSPCI=m
 CONFIG_ABYSS=m
 
-#
-# Quadrics QsNet
-#
-CONFIG_QSNET=m
-CONFIG_ELAN3=m
-CONFIG_ELAN4=m
-CONFIG_EP=m
-CONFIG_EIP=m
-CONFIG_RMS=m
-CONFIG_JTAG=m
-
 #
 # Wireless LAN (non-hamradio)
 #
@@ -1559,7 +1553,7 @@ CONFIG_VIDEO_DEV=m
 #
 # Video Adapters
 #
-# CONFIG_VIDEO_BT848 is not set
+CONFIG_VIDEO_BT848=m
 # CONFIG_VIDEO_BWQCAM is not set
 # CONFIG_VIDEO_CQCAM is not set
 # CONFIG_VIDEO_W9966 is not set
@@ -1588,6 +1582,10 @@ CONFIG_VIDEO_OVCAMCHIP=m
 # Digital Video Broadcasting Devices
 #
 # CONFIG_DVB is not set
+CONFIG_VIDEO_TUNER=m
+CONFIG_VIDEO_BUF=m
+CONFIG_VIDEO_BTCX=m
+CONFIG_VIDEO_IR=m
 
 #
 # Graphics support
@@ -1924,19 +1922,27 @@ CONFIG_USB_SPEEDTOUCH=m
 #
 # InfiniBand support
 #
-# CONFIG_INFINIBAND is not set
-CONFIG_IPATH_CORE=m
-CONFIG_INFINIBAND_IPATH=m
+CONFIG_INFINIBAND=m
+CONFIG_INFINIBAND_USER_MAD=m
+CONFIG_INFINIBAND_USER_ACCESS=m
+CONFIG_INFINIBAND_ADDR_TRANS=y
 CONFIG_INFINIBAND_MTHCA=m
 CONFIG_INFINIBAND_MTHCA_DEBUG=y
+CONFIG_INFINIBAND_IPATH=m
+CONFIG_INFINIBAND_AMSO1100=m
+# CONFIG_INFINIBAND_AMSO1100_DEBUG is not set
+CONFIG_INFINIBAND_CXGB3=m
+# CONFIG_INFINIBAND_CXGB3_DEBUG is not set
 CONFIG_INFINIBAND_IPOIB=m
+CONFIG_INFINIBAND_IPOIB_CM=y
 CONFIG_INFINIBAND_IPOIB_DEBUG=y
 # CONFIG_INFINIBAND_IPOIB_DEBUG_DATA is not set
+CONFIG_INFINIBAND_SRP=m
 CONFIG_INFINIBAND_SDP=m
 # CONFIG_INFINIBAND_SDP_DEBUG is not set
-CONFIG_INFINIBAND_SRP=m
-# CONFIG_INFINIBAND_ISER is not set
-# CONFIG_INFINIBAND_RDS_DEBUG is not set
+CONFIG_INFINIBAND_VNIC=m
+# CONFIG_INFINIBAND_VNIC_DEBUG is not set
+CONFIG_INFINIBAND_VNIC_STATS=y
 CONFIG_INFINIBAND_MADEYE=m
 
 #
@@ -1954,9 +1960,9 @@ CONFIG_EDAC_E7XXX=m
 CONFIG_EDAC_E752X=m
 CONFIG_EDAC_I82875P=m
 CONFIG_EDAC_I82860=m
+CONFIG_EDAC_K8=m
 CONFIG_EDAC_R82600=m
 CONFIG_EDAC_POLL=y
-CONFIG_EDAC_K8=m
 
 #
 # Firmware Drivers
@@ -2163,17 +2169,13 @@ CONFIG_OPROFILE=m
 CONFIG_DEBUG_KERNEL=y
 CONFIG_MAGIC_SYSRQ=y
 # CONFIG_DEBUG_SLAB is not set
-# CONFIG_DEBUG_SPINLOCK is not set
-# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
+CONFIG_DEBUG_SPINLOCK=y
+CONFIG_DEBUG_SPINLOCK_SLEEP=y
 # CONFIG_DEBUG_INFO is not set
-CONFIG_FRAME_POINTER=y
-CONFIG_FRAME_POINTER_FORCE=y
 CONFIG_INIT_DEBUG=y
 # CONFIG_SCHEDSTATS is not set
 # CONFIG_IOMMU_DEBUG is not set
 CONFIG_KPROBES=y
-# CONFIG_LOCKMETER is not set
-CONFIG_PROC_SLEEP=y
 
 #
 # Security options
@@ -2230,3 +2232,4 @@ CONFIG_CRC32=y
 CONFIG_LIBCRC32C=m
 CONFIG_ZLIB_INFLATE=y
 CONFIG_ZLIB_DEFLATE=m
+CONFIG_HAS_IOMEM=y
diff --git a/lustre/kernel_patches/kernel_configs/kernel-2.6.9-2.6-rhel4-x86_64.config b/lustre/kernel_patches/kernel_configs/kernel-2.6.9-2.6-rhel4-x86_64.config
index 2c52eaf893..df16a733f9 100644
--- a/lustre/kernel_patches/kernel_configs/kernel-2.6.9-2.6-rhel4-x86_64.config
+++ b/lustre/kernel_patches/kernel_configs/kernel-2.6.9-2.6-rhel4-x86_64.config
@@ -1,7 +1,7 @@
 #
 # Automatically generated make config: don't edit
-# Linux kernel version: 2.6.9-prep.qp2.2.5.11.3qsnet
-# Mon Jul 31 19:51:03 2006
+# Linux kernel version: 2.6.9-prep.qp3.5.34.4qsnet
+# Sat Nov 24 21:27:28 2007
 #
 CONFIG_X86_64=y
 CONFIG_64BIT=y
@@ -72,6 +72,7 @@ CONFIG_STOP_MACHINE=y
 # CONFIG_MPSC is not set
 CONFIG_GENERIC_CPU=y
 # CONFIG_MEM_MIRROR is not set
+# CONFIG_X86_64_XEN is not set
 CONFIG_X86_L1_CACHE_BYTES=128
 CONFIG_X86_L1_CACHE_SHIFT=7
 CONFIG_X86_TSC=y
@@ -98,8 +99,7 @@ CONFIG_X86_MCE=y
 CONFIG_X86_MCE_AMD=y
 CONFIG_IOPROC=y
 CONFIG_PTRACK=y
-# CONFIG_X86_64_XEN is not set
- 
+
 #
 # Power management options
 #
@@ -469,6 +469,7 @@ CONFIG_AIC79XX_RESET_DELAY_MS=15000
 # CONFIG_AIC79XX_DEBUG_ENABLE is not set
 CONFIG_AIC79XX_DEBUG_MASK=0
 # CONFIG_AIC79XX_REG_PRETTY_PRINT is not set
+CONFIG_SCSI_ARCMSR=m
 CONFIG_MEGARAID_NEWGEN=y
 CONFIG_MEGARAID_MM=m
 CONFIG_MEGARAID_MAILBOX=m
@@ -506,9 +507,7 @@ CONFIG_SCSI_QLA2300=m
 CONFIG_SCSI_QLA2322=m
 CONFIG_SCSI_QLA6312=m
 CONFIG_SCSI_QLA24XX=m
-CONFIG_QLA3XXX=m
 CONFIG_SCSI_QLA4XXX=m
-
 # CONFIG_SCSI_DC395x is not set
 # CONFIG_SCSI_DC390T is not set
 # CONFIG_SCSI_DEBUG is not set
@@ -523,7 +522,7 @@ CONFIG_SCSI_QLA4XXX=m
 #
 # Serial ATA (prod) and Parallel ATA (experimental) drivers
 #
-CONFIG_ATA=y
+CONFIG_ATA=m
 CONFIG_SATA_AHCI=m
 CONFIG_SATA_SVW=m
 CONFIG_ATA_PIIX=m
@@ -540,6 +539,8 @@ CONFIG_SATA_ULI=m
 CONFIG_SATA_VIA=m
 CONFIG_SATA_VITESSE=m
 CONFIG_SATA_INTEL_COMBINED=y
+CONFIG_PATA_PDC2027X=m
+CONFIG_PATA_JMICRON=m
 
 #
 # Multi-device support (RAID and LVM)
@@ -989,6 +990,8 @@ CONFIG_ACENIC=m
 CONFIG_DL2K=m
 CONFIG_E1000=m
 CONFIG_E1000_NAPI=y
+CONFIG_E1000E=m
+CONFIG_IGB=m
 CONFIG_NS83820=m
 # CONFIG_HAMACHI is not set
 # CONFIG_YELLOWFIN is not set
@@ -1000,14 +1003,17 @@ CONFIG_SK98LIN=m
 CONFIG_VIA_VELOCITY=m
 CONFIG_TIGON3=m
 CONFIG_BNX2=m
+CONFIG_QLA3XXX=m
 
 #
 # Ethernet (10000 Mbit)
 #
 CONFIG_IXGB=m
 CONFIG_IXGB_NAPI=y
+CONFIG_CHELSIO_T3=m
 CONFIG_S2IO=m
 CONFIG_S2IO_NAPI=y
+CONFIG_NETXEN_NIC=m
 
 #
 # Token Ring devices
@@ -1019,17 +1025,6 @@ CONFIG_TMS380TR=m
 CONFIG_TMSPCI=m
 CONFIG_ABYSS=m
 
-#
-# Quadrics QsNet
-#
-CONFIG_QSNET=m
-CONFIG_ELAN3=m
-CONFIG_ELAN4=m
-CONFIG_EP=m
-CONFIG_EIP=m
-CONFIG_RMS=m
-CONFIG_JTAG=m
-
 #
 # Wireless LAN (non-hamradio)
 #
@@ -1558,7 +1553,7 @@ CONFIG_VIDEO_DEV=m
 #
 # Video Adapters
 #
-# CONFIG_VIDEO_BT848 is not set
+CONFIG_VIDEO_BT848=m
 # CONFIG_VIDEO_BWQCAM is not set
 # CONFIG_VIDEO_CQCAM is not set
 # CONFIG_VIDEO_W9966 is not set
@@ -1587,6 +1582,10 @@ CONFIG_VIDEO_OVCAMCHIP=m
 # Digital Video Broadcasting Devices
 #
 # CONFIG_DVB is not set
+CONFIG_VIDEO_TUNER=m
+CONFIG_VIDEO_BUF=m
+CONFIG_VIDEO_BTCX=m
+CONFIG_VIDEO_IR=m
 
 #
 # Graphics support
@@ -1927,18 +1926,23 @@ CONFIG_INFINIBAND=m
 CONFIG_INFINIBAND_USER_MAD=m
 CONFIG_INFINIBAND_USER_ACCESS=m
 CONFIG_INFINIBAND_ADDR_TRANS=y
-CONFIG_IPATH_CORE=m
-CONFIG_INFINIBAND_IPATH=m
 CONFIG_INFINIBAND_MTHCA=m
 CONFIG_INFINIBAND_MTHCA_DEBUG=y
+CONFIG_INFINIBAND_IPATH=m
+CONFIG_INFINIBAND_AMSO1100=m
+# CONFIG_INFINIBAND_AMSO1100_DEBUG is not set
+CONFIG_INFINIBAND_CXGB3=m
+# CONFIG_INFINIBAND_CXGB3_DEBUG is not set
 CONFIG_INFINIBAND_IPOIB=m
+CONFIG_INFINIBAND_IPOIB_CM=y
 CONFIG_INFINIBAND_IPOIB_DEBUG=y
 # CONFIG_INFINIBAND_IPOIB_DEBUG_DATA is not set
+CONFIG_INFINIBAND_SRP=m
 CONFIG_INFINIBAND_SDP=m
 # CONFIG_INFINIBAND_SDP_DEBUG is not set
-CONFIG_INFINIBAND_SRP=m
-# CONFIG_INFINIBAND_ISER is not set
-# CONFIG_INFINIBAND_RDS_DEBUG is not set
+CONFIG_INFINIBAND_VNIC=m
+# CONFIG_INFINIBAND_VNIC_DEBUG is not set
+CONFIG_INFINIBAND_VNIC_STATS=y
 CONFIG_INFINIBAND_MADEYE=m
 
 #
@@ -1956,9 +1960,9 @@ CONFIG_EDAC_E7XXX=m
 CONFIG_EDAC_E752X=m
 CONFIG_EDAC_I82875P=m
 CONFIG_EDAC_I82860=m
+CONFIG_EDAC_K8=m
 CONFIG_EDAC_R82600=m
 CONFIG_EDAC_POLL=y
-CONFIG_EDAC_K8=m
 
 #
 # Firmware Drivers
@@ -2172,7 +2176,6 @@ CONFIG_INIT_DEBUG=y
 # CONFIG_SCHEDSTATS is not set
 # CONFIG_IOMMU_DEBUG is not set
 CONFIG_KPROBES=y
-# CONFIG_KGDB is not set
 
 #
 # Security options
@@ -2229,3 +2232,4 @@ CONFIG_CRC32=y
 CONFIG_LIBCRC32C=m
 CONFIG_ZLIB_INFLATE=y
 CONFIG_ZLIB_DEFLATE=m
+CONFIG_HAS_IOMEM=y
diff --git a/lustre/kernel_patches/patches/iopen-misc-2.6-suse.patch b/lustre/kernel_patches/patches/iopen-misc-2.6-suse.patch
index 2d70c7b70d..d9ef03b2e0 100644
--- a/lustre/kernel_patches/patches/iopen-misc-2.6-suse.patch
+++ b/lustre/kernel_patches/patches/iopen-misc-2.6-suse.patch
@@ -29,35 +29,24 @@ Index: linux-2.6.4-51.0/fs/dcache.c
 ===================================================================
 --- linux-2.6.4-51.0.orig/fs/dcache.c	2004-05-06 22:24:42.000000000 -0400
 +++ linux-2.6.4-51.0/fs/dcache.c	2004-05-06 22:58:37.000000000 -0400
-@@ -1195,12 +1195,11 @@
+@@ -1195,7 +1195,7 @@
   * dcache entries should not be moved in this way.
   */
  
--void d_move(struct dentry * dentry, struct dentry * target)
-+void __d_move(struct dentry * dentry, struct dentry * target)
+-static void d_move_locked(struct dentry * dentry, struct dentry * target)
++void d_move_locked(struct dentry * dentry, struct dentry * target)
  {
- 	if (!dentry->d_inode)
- 		printk(KERN_WARNING "VFS: moving negative dcache entry\n");
- 
--	spin_lock(&dcache_lock);
- 	write_seqlock(&rename_lock);
- 	/*
- 	 * XXXX: do we really need to take target->d_lock?
-@@ -1253,6 +1252,14 @@
- 	spin_unlock(&target->d_lock);
- 	spin_unlock(&dentry->d_lock);
+	struct hlist_head *list;
+
+@@ -1253,6 +1252,8 @@
  	write_sequnlock(&rename_lock);
-+}
-+
-+EXPORT_SYMBOL(__d_move);
-+
-+void d_move(struct dentry *dentry, struct dentry *target)
-+{
-+	spin_lock(&dcache_lock);
-+	__d_move(dentry, target);
- 	spin_unlock(&dcache_lock);
  }
  
++EXPORT_SYMBOL(d_move_locked);
++
+ /**
+  * d_move - move a dentry
+  * @dentry: entry to move
 Index: linux-2.6.4-51.0/include/linux/dcache.h
 ===================================================================
 --- linux-2.6.4-51.0.orig/include/linux/dcache.h	2004-05-06 22:24:42.000000000 -0400
@@ -66,7 +55,7 @@ Index: linux-2.6.4-51.0/include/linux/dcache.h
   * This adds the entry to the hash queues.
   */
  extern void d_rehash(struct dentry *);
-+extern void __d_rehash(struct dentry *, int lock);
++extern void d_rehash_cond(struct dentry *, int lock);
  
  /**
   * d_add - add dentry to hash queues
@@ -74,7 +63,7 @@ Index: linux-2.6.4-51.0/include/linux/dcache.h
  
  /* used for rename() and baskets */
  extern void d_move(struct dentry *, struct dentry *);
-+extern void __d_move(struct dentry *, struct dentry *);
++extern void d_move_locked(struct dentry *, struct dentry *);
  
  /* appendix may either be NULL or be used for transname suffixes */
  extern struct dentry * d_lookup(struct dentry *, struct qstr *);
diff --git a/lustre/kernel_patches/patches/jbd-stats-2.6.9.patch b/lustre/kernel_patches/patches/jbd-stats-2.6.9.patch
index 0140efdb19..3e38108366 100644
--- a/lustre/kernel_patches/patches/jbd-stats-2.6.9.patch
+++ b/lustre/kernel_patches/patches/jbd-stats-2.6.9.patch
@@ -20,9 +20,9 @@ Index: linux-2.6.9/include/linux/jbd.h
   * tracks a compound transaction through its various states:
   *
 @@ -553,6 +563,21 @@ struct transaction_s 
- 	spinlock_t		t_handle_lock;
- 
- 	/*
+	spinlock_t		t_handle_lock;
+
+	/*
 +	 * Longest time some handle had to wait for running transaction
 +	 */
 +	unsigned long		t_max_wait;
@@ -42,9 +42,9 @@ Index: linux-2.6.9/include/linux/jbd.h
  	 * [t_handle_lock]
  	 */
 @@ -592,6 +617,57 @@ struct transaction_s 
- 	struct list_head	t_jcb;
+ #endif
  };
- 
+
 +struct transaction_run_stats_s {
 +	unsigned long		rs_wait;
 +	unsigned long		rs_running;
@@ -228,48 +228,49 @@ Index: linux-2.6.9/fs/jbd/checkpoint.c
 ===================================================================
 --- linux-2.6.9.orig/fs/jbd/checkpoint.c
 +++ linux-2.6.9/fs/jbd/checkpoint.c
-@@ -166,6 +166,7 @@ static int __cleanup_transaction(journal
-			transaction_t *t = jh->b_transaction;
-			tid_t tid = t->t_tid;
-
-+			transaction->t_chp_stats.cs_forced_to_close++;
-			spin_unlock(&journal->j_list_lock);
-			jbd_unlock_bh_state(bh);
-			log_start_commit(journal, tid);
-@@ -226,7 +227,7 @@ __flush_batch(journal_t *journal, struct
+@@ -126,7 +127,8 @@
+  * Called under jbd_lock_bh_state(jh2bh(jh)), and drops it
   */
- static int __flush_buffer(journal_t *journal, struct journal_head *jh,
-			struct buffer_head **bhs, int *batch_count,
--			int *drop_count)
-+			int *drop_count, transaction_t *transaction)
+ static int __process_buffer(journal_t *journal, struct journal_head *jh,
+-			struct buffer_head **bhs, int *batch_count)
++			struct buffer_head **bhs, int *batch_count,
++			transaction_t *transaction)
  {
 	struct buffer_head *bh = jh2bh(jh);
 	int ret = 0;
-@@ -247,6 +248,7 @@ static int __flush_buffer(journal_t *jou
-		set_buffer_jwrite(bh);
+@@ -166,6 +166,7 @@
+		transaction_t *t = jh->b_transaction;
+		tid_t tid = t->t_tid;
+
++		transaction->t_chp_stats.cs_forced_to_close++;
+		spin_unlock(&journal->j_list_lock);
+		jbd_unlock_bh_state(bh);
+		log_start_commit(journal, tid);
+@@ -247,6 +248,7 @@
 		bhs[*batch_count] = bh;
+		__buffer_relink_io(jh);
 		jbd_unlock_bh_state(bh);
 +		transaction->t_chp_stats.cs_written++;
 		(*batch_count)++;
 		if (*batch_count == NR_BATCH) {
-			__flush_batch(journal, bhs, batch_count);
+			spin_unlock(&journal->j_list_lock);
 @@ -315,6 +317,8 @@ int log_do_checkpoint(journal_t *journal
-		tid_t this_tid;
-
-		transaction = journal->j_checkpoint_transactions;
-+		if (transaction->t_chp_stats.cs_chp_time == 0)
-+			transaction->t_chp_stats.cs_chp_time = CURRENT_MSECS;
-		this_tid = transaction->t_tid;
-		jh = transaction->t_checkpoint_list;
-		last_jh = jh->b_cpprev;
+	if (!journal->j_checkpoint_transactions)
+		goto out;
+	transaction = journal->j_checkpoint_transactions;
++	if (transaction->t_chp_stats.cs_chp_time == 0)
++		transaction->t_chp_stats.cs_chp_time = CURRENT_MSECS;
+	this_tid = transaction->t_tid;
+ restart:
+	/*
 @@ -331,7 +335,8 @@ int log_do_checkpoint(journal_t *journal
 				retry = 1;
 				break;
 			}
--			retry = __flush_buffer(journal, jh, bhs, &batch_count, &drop_count);
-+			retry = __flush_buffer(journal, jh, bhs, &batch_count, 
-+					&drop_count, transaction);
-		} while (jh != last_jh && !retry);
+-			retry = __process_buffer(journal, jh, bhs,&batch_count);
++			retry = __process_buffer(journal, jh, bhs,&batch_count,
++					transaction);
+		}
 
 		if (batch_count) {
 @@ -597,6 +602,8 @@ void __journal_insert_checkpoint(struct 
diff --git a/lustre/kernel_patches/patches/qsnet-rhel4-2.6.patch b/lustre/kernel_patches/patches/qsnet-rhel4-2.6.patch
index b4a82803b9..6d584b4b7a 100644
--- a/lustre/kernel_patches/patches/qsnet-rhel4-2.6.patch
+++ b/lustre/kernel_patches/patches/qsnet-rhel4-2.6.patch
@@ -1198,9 +1198,9 @@ Index: linux-269-5502/mm/memory.c
  out:
  	return VM_FAULT_MINOR;
 @@ -1813,6 +1824,7 @@ retry:
+ 
  	/* no need to invalidate: a not-present page shouldn't be cached */
  	update_mmu_cache(vma, address, entry);
- 	lazy_mmu_prot_update(entry);
 +	ioproc_update_page(vma, address);
  	spin_unlock(&mm->page_table_lock);
  out:
diff --git a/lustre/kernel_patches/patches/rollback-raid5ch-to-55.patch b/lustre/kernel_patches/patches/rollback-raid5ch-to-55.patch
new file mode 100644
index 0000000000..5c4eab5b8e
--- /dev/null
+++ b/lustre/kernel_patches/patches/rollback-raid5ch-to-55.patch
@@ -0,0 +1,329 @@
+--- linux-2.6.9-67/drivers/md/raid5.c	2007-11-21 21:12:50.000000000 -0700
++++ linux-2.6.9-55.0.12/drivers/md/raid5.c	2007-11-02 01:10:35.000000000 -0700
+@@ -49,7 +49,7 @@
+  * This macro is used to determine the 'next' bio in the list, given the sector
+  * of the current stripe+device
+  */
+-#define r5_next_bio(bio, sect) ( ( (bio)->bi_sector + ((bio)->bi_size>>9) < sect + STRIPE_SECTORS) ? (bio)->bi_next : NULL)
++#define r5_next_bio(bio, sect) ( ( bio->bi_sector + (bio->bi_size>>9) < sect + STRIPE_SECTORS) ? bio->bi_next : NULL)
+ /*
+  * The following can be used to debug the driver
+  */
+@@ -232,7 +232,6 @@ static struct stripe_head *__find_stripe
+ }
+ 
+ static void unplug_slaves(mddev_t *mddev);
+-static void raid5_unplug_device(request_queue_t *q);
+ 
+ static struct stripe_head *get_active_stripe(raid5_conf_t *conf, sector_t sector,
+ 					     int pd_idx, int noblock) 
+@@ -727,10 +726,6 @@ static void compute_parity(struct stripe
+ 				ptr[count++] = page_address(sh->dev[i].page);
+ 				chosen = sh->dev[i].towrite;
+ 				sh->dev[i].towrite = NULL;
+-
+-				if (test_and_clear_bit(R5_Overlap, &sh->dev[i].flags))
+-					wake_up(&conf->wait_for_overlap);
+-
+ 				if (sh->dev[i].written) BUG();
+ 				sh->dev[i].written = chosen;
+ 				check_xor();
+@@ -743,10 +738,6 @@ static void compute_parity(struct stripe
+ 			if (i!=pd_idx && sh->dev[i].towrite) {
+ 				chosen = sh->dev[i].towrite;
+ 				sh->dev[i].towrite = NULL;
+-
+-				if (test_and_clear_bit(R5_Overlap, &sh->dev[i].flags))
+-					wake_up(&conf->wait_for_overlap);
+-
+ 				if (sh->dev[i].written) BUG();
+ 				sh->dev[i].written = chosen;
+ 			}
+@@ -803,7 +794,7 @@ static void compute_parity(struct stripe
+  * toread/towrite point to the first in a chain. 
+  * The bi_next chain must be in order.
+  */
+-static int add_stripe_bio(struct stripe_head *sh, struct bio *bi, int dd_idx, int forwrite)
++static void add_stripe_bio (struct stripe_head *sh, struct bio *bi, int dd_idx, int forwrite)
+ {
+ 	struct bio **bip;
+ 	raid5_conf_t *conf = sh->raid_conf;
+@@ -820,13 +811,10 @@ static int add_stripe_bio(struct stripe_
+ 	else
+ 		bip = &sh->dev[dd_idx].toread;
+ 	while (*bip && (*bip)->bi_sector < bi->bi_sector) {
+-		if ((*bip)->bi_sector + ((*bip)->bi_size >> 9) > bi->bi_sector)
+-			goto overlap;
++		BUG_ON((*bip)->bi_sector + ((*bip)->bi_size >> 9) > bi->bi_sector);
+ 		bip = & (*bip)->bi_next;
+ 	}
+-	if (*bip && (*bip)->bi_sector < bi->bi_sector + ((bi->bi_size)>>9))
+-		goto overlap;
+-
++/* FIXME do I need to worry about overlapping bion */
+ 	if (*bip && bi->bi_next && (*bip) != bi->bi_next)
+ 		BUG();
+ 	if (*bip)
+@@ -841,7 +829,7 @@ static int add_stripe_bio(struct stripe_
+ 		(unsigned long long)sh->sector, dd_idx);
+ 
+ 	if (forwrite) {
+-		/* check if page is covered */
++		/* check if page is coverred */
+ 		sector_t sector = sh->dev[dd_idx].sector;
+ 		for (bi=sh->dev[dd_idx].towrite;
+ 		     sector < sh->dev[dd_idx].sector + STRIPE_SECTORS &&
+@@ -853,13 +841,6 @@ static int add_stripe_bio(struct stripe_
+ 		if (sector >= sh->dev[dd_idx].sector + STRIPE_SECTORS)
+ 			set_bit(R5_OVERWRITE, &sh->dev[dd_idx].flags);
+ 	}
+-	return 1;
+-
+- overlap:
+-	set_bit(R5_Overlap, &sh->dev[dd_idx].flags);
+-	spin_unlock_irq(&conf->device_lock);
+-	spin_unlock(&sh->lock);
+-	return 0;
+ }
+ 
+ 
+@@ -920,8 +901,6 @@ static void handle_stripe(struct stripe_
+ 			spin_lock_irq(&conf->device_lock);
+ 			rbi = dev->toread;
+ 			dev->toread = NULL;
+-			if (test_and_clear_bit(R5_Overlap, &dev->flags))
+-				wake_up(&conf->wait_for_overlap);
+ 			spin_unlock_irq(&conf->device_lock);
+ 			while (rbi && rbi->bi_sector < dev->sector + STRIPE_SECTORS) {
+ 				copy_data(0, rbi, dev->page, dev->sector);
+@@ -969,9 +948,6 @@ static void handle_stripe(struct stripe_
+ 			sh->dev[i].towrite = NULL;
+ 			if (bi) to_write--;
+ 
+-			if (test_and_clear_bit(R5_Overlap, &sh->dev[i].flags))
+-				wake_up(&conf->wait_for_overlap);
+-
+ 			while (bi && bi->bi_sector < sh->dev[i].sector + STRIPE_SECTORS){
+ 				struct bio *nextbi = r5_next_bio(bi, sh->dev[i].sector);
+ 				clear_bit(BIO_UPTODATE, &bi->bi_flags);
+@@ -1000,8 +976,6 @@ static void handle_stripe(struct stripe_
+ 			if (!test_bit(R5_Insync, &sh->dev[i].flags)) {
+ 				bi = sh->dev[i].toread;
+ 				sh->dev[i].toread = NULL;
+-				if (test_and_clear_bit(R5_Overlap, &sh->dev[i].flags))
+-					wake_up(&conf->wait_for_overlap);
+ 				if (bi) to_read--;
+ 				while (bi && bi->bi_sector < sh->dev[i].sector + STRIPE_SECTORS){
+ 					struct bio *nextbi = r5_next_bio(bi, sh->dev[i].sector);
+@@ -1441,7 +1415,6 @@ static int make_request (request_queue_t
+ 	if ( bio_data_dir(bi) == WRITE )
+ 		md_write_start(mddev);
+ 	for (;logical_sector < last_sector; logical_sector += STRIPE_SECTORS) {
+-		DEFINE_WAIT(w);
+ 		
+ 		new_sector = raid5_compute_sector(logical_sector,
+ 						  raid_disks, data_disks, &dd_idx, &pd_idx, conf);
+@@ -1450,28 +1423,17 @@ static int make_request (request_queue_t
+ 			(unsigned long long)new_sector, 
+ 			(unsigned long long)logical_sector);
+ 
+-	retry:
+-		prepare_to_wait(&conf->wait_for_overlap, &w, TASK_UNINTERRUPTIBLE);
+ 		sh = get_active_stripe(conf, new_sector, pd_idx, (bi->bi_rw&RWA_MASK));
+ 		if (sh) {
+-			if (!add_stripe_bio(sh, bi, dd_idx, (bi->bi_rw&RW_MASK))) {
+-				/* Add failed due to overlap.  Flush everything
+-				 * and wait a while
+-				 */
+-				raid5_unplug_device(mddev->queue);
+-				release_stripe(sh);
+-				schedule();
+-				goto retry;
+-			}
+-			finish_wait(&conf->wait_for_overlap, &w);
++
++			add_stripe_bio(sh, bi, dd_idx, (bi->bi_rw&RW_MASK));
++
+ 			raid5_plug_device(conf);
+ 			handle_stripe(sh);
+ 			release_stripe(sh);
+-
+ 		} else {
+ 			/* cannot get stripe for read-ahead, just give-up */
+ 			clear_bit(BIO_UPTODATE, &bi->bi_flags);
+-			finish_wait(&conf->wait_for_overlap, &w);
+ 			break;
+ 		}
+ 			
+@@ -1619,7 +1581,6 @@ static int run (mddev_t *mddev)
+ 
+ 	conf->device_lock = SPIN_LOCK_UNLOCKED;
+ 	init_waitqueue_head(&conf->wait_for_stripe);
+-	init_waitqueue_head(&conf->wait_for_overlap);
+ 	INIT_LIST_HEAD(&conf->handle_list);
+ 	INIT_LIST_HEAD(&conf->delayed_list);
+ 	INIT_LIST_HEAD(&conf->inactive_list);
+--- linux-2.6.9-67/include/linux/raid/raid5.h	2007-11-21 21:12:41.000000000 -0700
++++ linux-2.6.9-55.0.12/include/linux/raid/raid5.h	2004-10-18 15:54:55.000000000 -0600
+@@ -152,7 +152,6 @@ struct stripe_head {
+ #define	R5_Wantread	4	/* want to schedule a read */
+ #define	R5_Wantwrite	5
+ #define	R5_Syncio	6	/* this io need to be accounted as resync io */
+-#define	R5_Overlap	7	/* There is a pending overlapping request on this block */
+ 
+ /*
+  * Write method
+@@ -220,7 +219,6 @@ struct raid5_private_data {
+ 	atomic_t		active_stripes;
+ 	struct list_head	inactive_list;
+ 	wait_queue_head_t	wait_for_stripe;
+-	wait_queue_head_t	wait_for_overlap;
+ 	int			inactive_blocked;	/* release of inactive stripes blocked,
+ 							 * waiting for 25% to be free
+ 							 */        
+--- linux-2.6.9-67/drivers/md/raid6main.c	2007-11-21 21:12:41.000000000 -0700
++++ linux-2.6.9-55.0.12/drivers/md/raid6main.c	2007-11-02 01:10:20.000000000 -0700
+@@ -54,7 +54,7 @@
+  * This macro is used to determine the 'next' bio in the list, given the sector
+  * of the current stripe+device
+  */
+-#define r5_next_bio(bio, sect) ( ( (bio)->bi_sector + ((bio)->bi_size>>9) < sect + STRIPE_SECTORS) ? (bio)->bi_next : NULL)
++#define r5_next_bio(bio, sect) ( ( bio->bi_sector + (bio->bi_size>>9) < sect + STRIPE_SECTORS) ? bio->bi_next : NULL)
+ /*
+  * The following can be used to debug the driver
+  */
+@@ -740,10 +740,6 @@ static void compute_parity(struct stripe
+ 			if ( i != pd_idx && i != qd_idx && sh->dev[i].towrite ) {
+ 				chosen = sh->dev[i].towrite;
+ 				sh->dev[i].towrite = NULL;
+-
+-				if (test_and_clear_bit(R5_Overlap, &sh->dev[i].flags))
+-					wake_up(&conf->wait_for_overlap);
+-
+ 				if (sh->dev[i].written) BUG();
+ 				sh->dev[i].written = chosen;
+ 			}
+@@ -902,7 +898,7 @@ static void compute_block_2(struct strip
+  * toread/towrite point to the first in a chain.
+  * The bi_next chain must be in order.
+  */
+-static int add_stripe_bio(struct stripe_head *sh, struct bio *bi, int dd_idx, int forwrite)
++static void add_stripe_bio (struct stripe_head *sh, struct bio *bi, int dd_idx, int forwrite)
+ {
+ 	struct bio **bip;
+ 	raid6_conf_t *conf = sh->raid_conf;
+@@ -919,13 +915,10 @@ static int add_stripe_bio(struct stripe_
+ 	else
+ 		bip = &sh->dev[dd_idx].toread;
+ 	while (*bip && (*bip)->bi_sector < bi->bi_sector) {
+-		if ((*bip)->bi_sector + ((*bip)->bi_size >> 9) > bi->bi_sector)
+-			goto overlap;
+-		bip = &(*bip)->bi_next;
++		BUG_ON((*bip)->bi_sector + ((*bip)->bi_size >> 9) > bi->bi_sector);
++		bip = & (*bip)->bi_next;
+ 	}
+-	if (*bip && (*bip)->bi_sector < bi->bi_sector + ((bi->bi_size)>>9))
+-		goto overlap;
+-
++/* FIXME do I need to worry about overlapping bion */
+ 	if (*bip && bi->bi_next && (*bip) != bi->bi_next)
+ 		BUG();
+ 	if (*bip)
+@@ -940,7 +933,7 @@ static int add_stripe_bio(struct stripe_
+ 		(unsigned long long)sh->sector, dd_idx);
+ 
+ 	if (forwrite) {
+-		/* check if page is covered */
++		/* check if page is coverred */
+ 		sector_t sector = sh->dev[dd_idx].sector;
+ 		for (bi=sh->dev[dd_idx].towrite;
+ 		     sector < sh->dev[dd_idx].sector + STRIPE_SECTORS &&
+@@ -952,13 +945,6 @@ static int add_stripe_bio(struct stripe_
+ 		if (sector >= sh->dev[dd_idx].sector + STRIPE_SECTORS)
+ 			set_bit(R5_OVERWRITE, &sh->dev[dd_idx].flags);
+ 	}
+-	return 1;
+-
+- overlap:
+-	set_bit(R5_Overlap, &sh->dev[dd_idx].flags);
+-	spin_unlock_irq(&conf->device_lock);
+-	spin_unlock(&sh->lock);
+-	return 0;
+ }
+ 
+ 
+@@ -1022,8 +1008,6 @@ static void handle_stripe(struct stripe_
+ 			spin_lock_irq(&conf->device_lock);
+ 			rbi = dev->toread;
+ 			dev->toread = NULL;
+-			if (test_and_clear_bit(R5_Overlap, &dev->flags))
+-				wake_up(&conf->wait_for_overlap);
+ 			spin_unlock_irq(&conf->device_lock);
+ 			while (rbi && rbi->bi_sector < dev->sector + STRIPE_SECTORS) {
+ 				copy_data(0, rbi, dev->page, dev->sector);
+@@ -1073,9 +1057,6 @@ static void handle_stripe(struct stripe_
+ 			sh->dev[i].towrite = NULL;
+ 			if (bi) to_write--;
+ 
+-			if (test_and_clear_bit(R5_Overlap, &sh->dev[i].flags))
+-				wake_up(&conf->wait_for_overlap);
+-
+ 			while (bi && bi->bi_sector < sh->dev[i].sector + STRIPE_SECTORS){
+ 				struct bio *nextbi = r5_next_bio(bi, sh->dev[i].sector);
+ 				clear_bit(BIO_UPTODATE, &bi->bi_flags);
+@@ -1104,8 +1085,6 @@ static void handle_stripe(struct stripe_
+ 			if (!test_bit(R5_Insync, &sh->dev[i].flags)) {
+ 				bi = sh->dev[i].toread;
+ 				sh->dev[i].toread = NULL;
+-				if (test_and_clear_bit(R5_Overlap, &sh->dev[i].flags))
+-					wake_up(&conf->wait_for_overlap);
+ 				if (bi) to_read--;
+ 				while (bi && bi->bi_sector < sh->dev[i].sector + STRIPE_SECTORS){
+ 					struct bio *nextbi = r5_next_bio(bi, sh->dev[i].sector);
+@@ -1597,7 +1576,6 @@ static int make_request (request_queue_t
+ 	if ( bio_data_dir(bi) == WRITE )
+ 		md_write_start(mddev);
+ 	for (;logical_sector < last_sector; logical_sector += STRIPE_SECTORS) {
+-		DEFINE_WAIT(w);
+ 
+ 		new_sector = raid6_compute_sector(logical_sector,
+ 						  raid_disks, data_disks, &dd_idx, &pd_idx, conf);
+@@ -1606,27 +1584,17 @@ static int make_request (request_queue_t
+ 		       (unsigned long long)new_sector,
+ 		       (unsigned long long)logical_sector);
+ 
+-	retry:
+-		prepare_to_wait(&conf->wait_for_overlap, &w, TASK_UNINTERRUPTIBLE);
+ 		sh = get_active_stripe(conf, new_sector, pd_idx, (bi->bi_rw&RWA_MASK));
+ 		if (sh) {
+-			if (!add_stripe_bio(sh, bi, dd_idx, (bi->bi_rw&RW_MASK))) {
+-				/* Add failed due to overlap.  Flush everything
+-				 * and wait a while
+-				 */
+-				raid6_unplug_device(mddev->queue);
+-				release_stripe(sh);
+-				schedule();
+-				goto retry;
+-			}
+-			finish_wait(&conf->wait_for_overlap, &w);
++
++			add_stripe_bio(sh, bi, dd_idx, (bi->bi_rw&RW_MASK));
++
+ 			raid6_plug_device(conf);
+ 			handle_stripe(sh);
+ 			release_stripe(sh);
+ 		} else {
+ 			/* cannot get stripe for read-ahead, just give-up */
+ 			clear_bit(BIO_UPTODATE, &bi->bi_flags);
+-			finish_wait(&conf->wait_for_overlap, &w);
+ 			break;
+ 		}
+ 
+@@ -1774,7 +1742,6 @@ static int run (mddev_t *mddev)
+ 
+ 	conf->device_lock = SPIN_LOCK_UNLOCKED;
+ 	init_waitqueue_head(&conf->wait_for_stripe);
+-	init_waitqueue_head(&conf->wait_for_overlap);
+ 	INIT_LIST_HEAD(&conf->handle_list);
+ 	INIT_LIST_HEAD(&conf->delayed_list);
+ 	INIT_LIST_HEAD(&conf->inactive_list);
diff --git a/lustre/kernel_patches/patches/tcp-rto_proc-2.6.9.patch b/lustre/kernel_patches/patches/tcp-rto_proc-2.6.9.patch
index f3c6023488..0f94dd572a 100644
--- a/lustre/kernel_patches/patches/tcp-rto_proc-2.6.9.patch
+++ b/lustre/kernel_patches/patches/tcp-rto_proc-2.6.9.patch
@@ -3,11 +3,11 @@ Index: linux+rhel4+chaos/include/linux/sysctl.h
 --- linux+rhel4+chaos.orig/include/linux/sysctl.h
 +++ linux+rhel4+chaos/include/linux/sysctl.h
 @@ -348,6 +348,8 @@ enum
- 	NET_TCP_TSO_WIN_DIVISOR=107,
- 	NET_TCP_BIC_BETA=108,
  	NET_IPV4_ICMP_ERRORS_USE_INBOUND_IFADDR=109,
-+	NET_TCP_RTO_MAX=110,
-+	NET_TCP_RTO_INIT=111,
+ 	NET_IPV4_TCP_WORKAROUND_SIGNED_WINDOWS=110,
+ 	NET_TCP_SLOW_START_AFTER_IDLE=111,
++	NET_TCP_RTO_MAX=112,
++	NET_TCP_RTO_INIT=113,
  };
  
  enum {
diff --git a/lustre/kernel_patches/patches/vfs-keep-inode-hashed-for-clear-inode.patch b/lustre/kernel_patches/patches/vfs-keep-inode-hashed-for-clear-inode.patch
index 86764a4af6..449dd660ff 100644
--- a/lustre/kernel_patches/patches/vfs-keep-inode-hashed-for-clear-inode.patch
+++ b/lustre/kernel_patches/patches/vfs-keep-inode-hashed-for-clear-inode.patch
@@ -14,13 +14,13 @@
  		nr_disposed++;
  	}
 @@ -317,7 +323,6 @@
- 			continue;
- 		invalidate_inode_buffers(inode);
- 		if (!atomic_read(&inode->i_count)) {
--			hlist_del_init(&inode->i_hash);
- 			list_move(&inode->i_list, dispose);
- 			inode->i_state |= I_FREEING;
- 			count++;
+ 		else {
+ 			invalidate_inode_buffers(inode);
+ 			if (!atomic_read(&inode->i_count)) {
+-				hlist_del_init(&inode->i_hash);
+ 				list_move(&inode->i_list, dispose);
+ 				inode->i_state |= I_FREEING;
+ 				count++;
 @@ -455,7 +460,6 @@
  			if (!can_unuse(inode))
  				continue;
diff --git a/lustre/kernel_patches/patches/vfs_intent-2.6-rhel4.patch b/lustre/kernel_patches/patches/vfs_intent-2.6-rhel4.patch
index 0b8f12f605..b5aa18b254 100644
--- a/lustre/kernel_patches/patches/vfs_intent-2.6-rhel4.patch
+++ b/lustre/kernel_patches/patches/vfs_intent-2.6-rhel4.patch
@@ -697,8 +697,8 @@ diff -rup RH_2_6_9_55.orig/fs/nfs/dir.c RH_2_6_9_55/fs/nfs/dir.c
 diff -rup RH_2_6_9_55.orig/fs/nfs/nfs4proc.c RH_2_6_9_55/fs/nfs/nfs4proc.c
 --- RH_2_6_9_55.orig/fs/nfs/nfs4proc.c
 +++ RH_2_6_9_55/fs/nfs/nfs4proc.c
-@@ -770,17 +770,17 @@ nfs4_atomic_open(struct inode *dir, stru
- 	struct nfs4_state *state;
+@@ -770,27 +770,27 @@ nfs4_atomic_open(struct inode *dir, stru
+ 	struct nfs4_inc_open *inc_open;
  
  	if (nd->flags & LOOKUP_CREATE) {
 -		attr.ia_mode = nd->intent.open.create_mode;
@@ -712,12 +712,23 @@ diff -rup RH_2_6_9_55.orig/fs/nfs/nfs4proc.c RH_2_6_9_55/fs/nfs/nfs4proc.c
 +		BUG_ON(nd->intent.it_flags & O_CREAT);
  	}
  
+ 	/* track info in case the open never completes */
+ 	if (!(inc_open = kmalloc(sizeof(*inc_open), GFP_KERNEL)))
+ 		return ERR_PTR(-ENOMEM);
  	cred = rpcauth_lookupcred(NFS_SERVER(dir)->client->cl_auth, 0);
 -	state = nfs4_do_open(dir, &dentry->d_name, nd->intent.open.flags, &attr, cred);
 +	state = nfs4_do_open(dir, &dentry->d_name, nd->intent.it_flags, &attr, cred);
  	put_rpccred(cred);
- 	if (IS_ERR(state))
- 		return (struct inode *)state;
+ 	if (IS_ERR(state)) {
+ 		kfree(inc_open);
+		return (struct inode *)state;
+	}
+	inc_open->task = current;
+-	inc_open->flags = nd->intent.open.flags;
++	inc_open->flags = nd->intent.it_flags;
+	INIT_LIST_HEAD(&inc_open->state);
+	spin_lock(&state->inode->i_lock);
+	list_add(&inc_open->state, &state->inc_open);
 diff -rup RH_2_6_9_55.orig/fs/open.c RH_2_6_9_55/fs/open.c
 --- RH_2_6_9_55.orig/fs/open.c
 +++ RH_2_6_9_55/fs/open.c
diff --git a/lustre/kernel_patches/patches/vfs_races-2.6-rhel4.patch b/lustre/kernel_patches/patches/vfs_races-2.6-rhel4.patch
index 3632a41b3f..04ac6fe2c0 100644
--- a/lustre/kernel_patches/patches/vfs_races-2.6-rhel4.patch
+++ b/lustre/kernel_patches/patches/vfs_races-2.6-rhel4.patch
@@ -22,7 +22,7 @@ diff -urp RH_2_6_9_42_0_3.orig/fs/dcache.c RH_2_6_9_42_0_3/fs/dcache.c
   */
   
 -void d_rehash(struct dentry * entry)
-+void __d_rehash(struct dentry * entry, int lock)
++void d_rehash_cond(struct dentry * entry, int lock)
  {
  	struct hlist_head *list = d_hash(entry->d_parent, entry->d_name.hash);
  
@@ -39,12 +39,12 @@ diff -urp RH_2_6_9_42_0_3.orig/fs/dcache.c RH_2_6_9_42_0_3/fs/dcache.c
 +		spin_unlock(&dcache_lock);
  }
  
-+EXPORT_SYMBOL(__d_rehash);
++EXPORT_SYMBOL(d_rehash_cond);
 +
 +void d_rehash(struct dentry * entry)
 +{
-+	__d_rehash(entry, 1);
-+ }
++	d_rehash_cond(entry, 1);
++}
 +
  #define do_switch(x,y) do { \
  	__typeof__ (x) __tmp = x; \
diff --git a/lustre/kernel_patches/series/2.6-rhel4.series b/lustre/kernel_patches/series/2.6-rhel4.series
index c1bbc2ffe5..732273538b 100644
--- a/lustre/kernel_patches/series/2.6-rhel4.series
+++ b/lustre/kernel_patches/series/2.6-rhel4.series
@@ -15,6 +15,7 @@ qsnet-rhel4-2.6.patch
 linux-2.6-binutils-2.16.patch
 vm-tunables-rhel4.patch 
 tcp-rto_proc-2.6.9.patch
+rollback-raid5ch-to-55.patch
 raid5-stats.patch
 raid5-configurable-cachesize.patch
 raid5-large-io.patch
diff --git a/lustre/kernel_patches/targets/2.6-rhel4.target.in b/lustre/kernel_patches/targets/2.6-rhel4.target.in
index 1b4aadfe0a..6dfecc64c5 100644
--- a/lustre/kernel_patches/targets/2.6-rhel4.target.in
+++ b/lustre/kernel_patches/targets/2.6-rhel4.target.in
@@ -1,5 +1,5 @@
 lnxmaj="2.6.9"
-lnxrel="55.0.12.EL"
+lnxrel="67.EL"
 
 KERNEL=linux-${lnxmaj}-${lnxrel}.tar.bz2
 SERIES=2.6-rhel4.series
diff --git a/lustre/kernel_patches/which_patch b/lustre/kernel_patches/which_patch
index 04cb2cea08..363e262e7c 100644
--- a/lustre/kernel_patches/which_patch
+++ b/lustre/kernel_patches/which_patch
@@ -3,7 +3,7 @@ SERIES                VERSION                  COMMENT
 SUPPORTED KERNELS:
 2.6-suse              SLES9 before SP1         already in SLES9 SP1 kernel
 2.6-suse-newer        SLES9: 2.6.5-7.287.3      extra patches for SLES9 after SP1
-2.6-rhel4             RHEL4: 2.6.9-55.0.12.EL
+2.6-rhel4             RHEL4: 2.6.9-67.EL
 2.6-sles10            SLES10: 2.6.16.54-0.2.3
 2.6-rhel5.series      RHEL5: 2.6.18-53.1.4.el5
 2.6.18-vanilla.series kernel.org: 2.6.18.8
-- 
GitLab