if [ "$CONFIG_SMP" = "y" -a "$CONFIG_X86_CMPXCHG" = "y" ]; then
define_bool CONFIG_HAVE_DEC_LOCK y
fi
-Index: linux-p4smp/include/asm-i386/current.h
+Index: linux-p4smp/arch/i386/vmlinux.lds.in
+===================================================================
+--- linux-p4smp.orig/arch/i386/vmlinux.lds.in 2004-06-14 13:13:07.000000000 -0700
++++ linux-p4smp/arch/i386/vmlinux.lds.in 2004-06-14 13:41:19.000000000 -0700
+@@ -1,6 +1,7 @@
+
+ #define __ASSEMBLY__
+ #include <asm/page.h>
++#include <asm/current.h>
+
+ /* ld script to make i386 Linux kernel
+ * Written by Martin Mares <mj@atrey.karlin.mff.cuni.cz>;
+@@ -51,7 +52,7 @@
+
+ _edata = .; /* End of data section */
+
+- . = ALIGN(8192); /* init_task */
++ . = ALIGN(THREAD_SIZE); /* init_task */
+ .data.init_task : { *(.data.init_task) }
+
+ entry_tramp_start = .;
===================================================================
--- linux-p4smp.orig/include/asm-i386/current.h 2004-06-14 13:13:07.000000000 -0700
+++ linux-p4smp/include/asm-i386/current.h 2004-06-14 13:41:19.000000000 -0700
--- /dev/null
+Index: linux-2.4.20-30.9/fs/ext3/inode.c
+===================================================================
+--- linux-2.4.20-30.9.orig/fs/ext3/inode.c 2004-05-18 13:55:49.000000000 -0700
++++ linux-2.4.20-30.9/fs/ext3/inode.c 2004-05-18 13:59:46.000000000 -0700
+@@ -2217,6 +2217,10 @@
+
+ memcpy(nei->i_data, oei->i_data, sizeof(nei->i_data));
+ memset(oei->i_data, 0, sizeof(oei->i_data));
++ if (EXT3_I(old_inode)->i_flags & EXT3_EXTENTS_FL) {
++ EXT3_I(new_inode)->i_flags |= EXT3_EXTENTS_FL;
++ ext3_extents_initialize_blockmap(handle, old_inode);
++ }
+
+ nei->i_disksize = oei->i_disksize;
+ nei->i_state |= EXT3_STATE_DELETE;
+@@ -2447,6 +2451,12 @@
+
+ brelse (iloc.bh);
+
++ if (EXT3_I(inode)->i_flags & EXT3_EXTENTS_FL) {
++ inode->u.ext3_i.i_cached_extent[0] = 0;
++ inode->u.ext3_i.i_cached_extent[1] = 0;
++ inode->u.ext3_i.i_cached_extent[2] = 0;
++ }
++
+ if (S_ISREG(inode->i_mode)) {
+ inode->i_op = &ext3_file_inode_operations;
+ inode->i_fop = &ext3_file_operations;
--- /dev/null
+Index: linux-2.4.24/fs/ext3/inode.c
+===================================================================
+--- linux-2.4.24.orig/fs/ext3/inode.c 2004-05-18 12:34:48.000000000 -0700
++++ linux-2.4.24/fs/ext3/inode.c 2004-05-18 12:47:50.000000000 -0700
+@@ -2244,6 +2244,12 @@
+ else
+ inode->u.ext3_i.i_extra_isize = 0;
+
++ if (EXT3_I(inode)->i_flags & EXT3_EXTENTS_FL) {
++ inode->u.ext3_i.i_cached_extent[0] = 0;
++ inode->u.ext3_i.i_cached_extent[1] = 0;
++ inode->u.ext3_i.i_cached_extent[2] = 0;
++ }
++
+ if (S_ISREG(inode->i_mode)) {
+ inode->i_op = &ext3_file_inode_operations;
+ inode->i_fop = &ext3_file_operations;
+@@ -2659,6 +2665,10 @@
+
+ memcpy(nei->i_data, oei->i_data, sizeof(nei->i_data));
+ memset(oei->i_data, 0, sizeof(oei->i_data));
++ if (EXT3_I(old_inode)->i_flags & EXT3_EXTENTS_FL) {
++ EXT3_I(new_inode)->i_flags |= EXT3_EXTENTS_FL;
++ ext3_extents_initialize_blockmap(handle, old_inode);
++ }
+
+ nei->i_disksize = oei->i_disksize;
+ nei->i_state |= EXT3_STATE_DELETE;