diff --git a/lustre/kernel_patches/patches/ext3-extents-2.4.20.patch b/lustre/kernel_patches/patches/ext3-extents-2.4.20.patch
index ed392a63aa7e03849b9eeaa3d7d09d7e67737b68..f2108d0df0fedfc0528352779ef7c4e50bd24f0c 100644
--- a/lustre/kernel_patches/patches/ext3-extents-2.4.20.patch
+++ b/lustre/kernel_patches/patches/ext3-extents-2.4.20.patch
@@ -1,8 +1,8 @@
 Index: linux-2.4.24/fs/ext3/extents.c
 ===================================================================
 --- linux-2.4.24.orig/fs/ext3/extents.c	2003-01-30 13:24:37.000000000 +0300
-+++ linux-2.4.24/fs/ext3/extents.c	2004-01-26 20:52:25.000000000 +0300
-@@ -0,0 +1,2260 @@
++++ linux-2.4.24/fs/ext3/extents.c	2004-01-28 20:01:16.000000000 +0300
+@@ -0,0 +1,2254 @@
 +/*
 + * Copyright (C) 2003 Alex Tomas <alex@clusterfs.com>
 + *
@@ -1842,7 +1842,7 @@ Index: linux-2.4.24/fs/ext3/extents.c
 +		/* try to find previous block */
 +		if (path[depth].p_ext)
 +			return path[depth].p_ext->e_start +
-+				path[depth].p_ext->e_num - 1;
++				path[depth].p_ext->e_num;
 +		
 +		/* it looks index is empty
 +		 * try to find starting from index itself */
@@ -1903,7 +1903,7 @@ Index: linux-2.4.24/fs/ext3/extents.c
 +	tree->cex = (struct ext3_extent *) &EXT3_I(inode)->i_cached_extent;
 +}
 +
-+#if 0
++#if EXT3_MULTIBLOCK_ALLOCATOR
 +static int
 +ext3_ext_new_extent_cb(struct ext3_extents_tree *tree,
 +			struct ext3_ext_path *path,
@@ -1925,14 +1925,10 @@ Index: linux-2.4.24/fs/ext3/extents.c
 +
 +	goal = ext3_ext_find_goal(inode, path);
 +	count = newex->e_num;
-+#ifdef EXT3_MULTIBLOCK_ALLOCATOR
-+	pblock = ext3_new_block(handle, inode, goal, &count, NULL, &err);
-+	EXT_ASSERT(count <= num);
++	pblock = ext3_new_blocks(handle, inode, &count, goal, &err);
++	EXT_ASSERT(count <= newex->e_num);
 +	/* FIXME: error handling here */
 +	EXT_ASSERT(err == 0);
-+#else
-+	pblock = 0;
-+#endif
 +
 +	/* insert new extent */
 +	newex->e_start = pblock;
@@ -1941,12 +1937,11 @@ Index: linux-2.4.24/fs/ext3/extents.c
 +	if (err)
 +		goto out;
 +
++
 +	/* correct on-disk inode size */
 +	if (newex->e_num > 0) {
 +		new_i_size = (loff_t) newex->e_block + newex->e_num;
 +		new_i_size = new_i_size << inode->i_blkbits;
-+		if (new_i_size > i_size_read(inode))
-+			new_i_size = i_size_read(inode);
 +		if (new_i_size > EXT3_I(inode)->i_disksize) {
 +			EXT3_I(inode)->i_disksize = new_i_size;
 +			err = ext3_mark_inode_dirty(handle, inode);
@@ -1965,14 +1960,13 @@ Index: linux-2.4.24/fs/ext3/extents.c
 +	struct ext3_extents_tree tree;
 +	int err;
 +
++	ext3_init_tree_desc(&tree, inode);
 +	ext_debug(&tree, "blocks %lu-%lu requested for inode %u\n",
 +			block, block + num,(unsigned) inode->i_ino);
-+
-+	ext3_init_tree_desc(&tree, inode);
-+	down(&EXT3_I(inode)->truncate_sem);
++	down_write(&EXT3_I(inode)->truncate_sem);
 +	err = ext3_ext_walk_space(&tree, block, num, ext3_ext_new_extent_cb);
 +	ext3_ext_invalidate_cache(&tree);
-+	up(&EXT3_I(inode)->truncate_sem);
++	up_write(&EXT3_I(inode)->truncate_sem);
 +
 +	return err;
 +}
@@ -2266,7 +2260,7 @@ Index: linux-2.4.24/fs/ext3/extents.c
 Index: linux-2.4.24/fs/ext3/ialloc.c
 ===================================================================
 --- linux-2.4.24.orig/fs/ext3/ialloc.c	2004-01-14 02:58:45.000000000 +0300
-+++ linux-2.4.24/fs/ext3/ialloc.c	2004-01-24 16:58:08.000000000 +0300
++++ linux-2.4.24/fs/ext3/ialloc.c	2004-01-26 23:17:19.000000000 +0300
 @@ -592,11 +592,13 @@
   		iloc.bh = NULL;
   		goto fail;
@@ -2286,7 +2280,7 @@ Index: linux-2.4.24/fs/ext3/ialloc.c
 Index: linux-2.4.24/fs/ext3/inode.c
 ===================================================================
 --- linux-2.4.24.orig/fs/ext3/inode.c	2004-01-14 02:58:45.000000000 +0300
-+++ linux-2.4.24/fs/ext3/inode.c	2004-01-24 16:58:08.000000000 +0300
++++ linux-2.4.24/fs/ext3/inode.c	2004-01-26 23:17:19.000000000 +0300
 @@ -848,6 +848,15 @@
  	goto reread;
  }
@@ -2371,7 +2365,7 @@ Index: linux-2.4.24/fs/ext3/inode.c
 Index: linux-2.4.24/fs/ext3/Makefile
 ===================================================================
 --- linux-2.4.24.orig/fs/ext3/Makefile	2004-01-14 02:58:45.000000000 +0300
-+++ linux-2.4.24/fs/ext3/Makefile	2004-01-24 16:58:08.000000000 +0300
++++ linux-2.4.24/fs/ext3/Makefile	2004-01-26 23:17:19.000000000 +0300
 @@ -13,7 +13,7 @@
  
  obj-y    := balloc.o bitmap.o dir.o file.o fsync.o ialloc.o inode.o iopen.o \
@@ -2384,7 +2378,7 @@ Index: linux-2.4.24/fs/ext3/Makefile
 Index: linux-2.4.24/fs/ext3/super.c
 ===================================================================
 --- linux-2.4.24.orig/fs/ext3/super.c	2004-01-14 02:58:45.000000000 +0300
-+++ linux-2.4.24/fs/ext3/super.c	2004-01-24 16:58:08.000000000 +0300
++++ linux-2.4.24/fs/ext3/super.c	2004-01-26 23:17:19.000000000 +0300
 @@ -530,6 +530,7 @@
  	int i;
  
@@ -2416,7 +2410,7 @@ Index: linux-2.4.24/fs/ext3/super.c
 Index: linux-2.4.24/fs/ext3/ioctl.c
 ===================================================================
 --- linux-2.4.24.orig/fs/ext3/ioctl.c	2004-01-14 02:58:42.000000000 +0300
-+++ linux-2.4.24/fs/ext3/ioctl.c	2004-01-24 16:58:08.000000000 +0300
++++ linux-2.4.24/fs/ext3/ioctl.c	2004-01-26 23:17:19.000000000 +0300
 @@ -174,6 +174,10 @@
  			return ret;
  		}
@@ -2431,7 +2425,7 @@ Index: linux-2.4.24/fs/ext3/ioctl.c
 Index: linux-2.4.24/include/linux/ext3_fs.h
 ===================================================================
 --- linux-2.4.24.orig/include/linux/ext3_fs.h	2004-01-14 02:58:45.000000000 +0300
-+++ linux-2.4.24/include/linux/ext3_fs.h	2004-01-24 16:58:08.000000000 +0300
++++ linux-2.4.24/include/linux/ext3_fs.h	2004-01-26 23:17:19.000000000 +0300
 @@ -184,6 +184,7 @@
  #define EXT3_IMAGIC_FL			0x00002000 /* AFS directory */
  #define EXT3_JOURNAL_DATA_FL		0x00004000 /* file data should be journaled */
@@ -2485,7 +2479,7 @@ Index: linux-2.4.24/include/linux/ext3_fs.h
 Index: linux-2.4.24/include/linux/ext3_extents.h
 ===================================================================
 --- linux-2.4.24.orig/include/linux/ext3_extents.h	2003-01-30 13:24:37.000000000 +0300
-+++ linux-2.4.24/include/linux/ext3_extents.h	2004-01-24 19:28:54.000000000 +0300
++++ linux-2.4.24/include/linux/ext3_extents.h	2004-01-26 23:17:19.000000000 +0300
 @@ -0,0 +1,212 @@
 +/*
 + * Copyright (C) 2003 Alex Tomas <alex@clusterfs.com>
@@ -2513,13 +2507,13 @@ Index: linux-2.4.24/include/linux/ext3_extents.h
 + * other hard changes happens much more often
 + * this is for debug purposes only
 + */
-+#define AGRESSIVE_TEST_
++#define AGRESSIVE_TEST
 +
 +/*
 + * if CHECK_BINSEARCH defined, then results of binary search
 + * will be checked by linear search
 + */
-+#define CHECK_BINSEARCH_
++#define CHECK_BINSEARCH
 +
 +/*
 + * if EXT_DEBUG is defined you can use 'extdebug' mount option
@@ -2702,7 +2696,7 @@ Index: linux-2.4.24/include/linux/ext3_extents.h
 Index: linux-2.4.24/include/linux/ext3_fs_i.h
 ===================================================================
 --- linux-2.4.24.orig/include/linux/ext3_fs_i.h	2004-01-24 19:30:22.000000000 +0300
-+++ linux-2.4.24/include/linux/ext3_fs_i.h	2004-01-24 19:54:39.000000000 +0300
++++ linux-2.4.24/include/linux/ext3_fs_i.h	2004-01-26 23:17:19.000000000 +0300
 @@ -76,6 +76,8 @@
  	 * by other means, so we have truncate_sem.
  	 */
diff --git a/lustre/kernel_patches/patches/ext3-extents-2.4.21-suse2.patch b/lustre/kernel_patches/patches/ext3-extents-2.4.21-suse2.patch
index ee68dc0128aa15ed595447adebf9d4d9f53f3796..01f1152b2c51a66506bdad4b62dd450a2869244a 100644
--- a/lustre/kernel_patches/patches/ext3-extents-2.4.21-suse2.patch
+++ b/lustre/kernel_patches/patches/ext3-extents-2.4.21-suse2.patch
@@ -1,8 +1,8 @@
 Index: linux-2.4.21-suse2/fs/ext3/extents.c
 ===================================================================
 --- linux-2.4.21-suse2.orig/fs/ext3/extents.c	2003-01-30 13:24:37.000000000 +0300
-+++ linux-2.4.21-suse2/fs/ext3/extents.c	2004-01-26 22:51:30.000000000 +0300
-@@ -0,0 +1,2261 @@
++++ linux-2.4.21-suse2/fs/ext3/extents.c	2004-01-28 20:15:12.000000000 +0300
+@@ -0,0 +1,2255 @@
 +/*
 + * Copyright (C) 2003 Alex Tomas <alex@clusterfs.com>
 + *
@@ -1842,7 +1842,7 @@ Index: linux-2.4.21-suse2/fs/ext3/extents.c
 +		/* try to find previous block */
 +		if (path[depth].p_ext)
 +			return path[depth].p_ext->e_start +
-+				path[depth].p_ext->e_num - 1;
++				path[depth].p_ext->e_num;
 +		
 +		/* it looks index is empty
 +		 * try to find starting from index itself */
@@ -1903,7 +1903,7 @@ Index: linux-2.4.21-suse2/fs/ext3/extents.c
 +	tree->cex = (struct ext3_extent *) &EXT3_I(inode)->i_cached_extent;
 +}
 +
-+#if 0
++#if EXT3_MULTIBLOCK_ALLOCATOR
 +static int
 +ext3_ext_new_extent_cb(struct ext3_extents_tree *tree,
 +			struct ext3_ext_path *path,
@@ -1925,14 +1925,10 @@ Index: linux-2.4.21-suse2/fs/ext3/extents.c
 +
 +	goal = ext3_ext_find_goal(inode, path);
 +	count = newex->e_num;
-+#ifdef EXT3_MULTIBLOCK_ALLOCATOR
-+	pblock = ext3_new_block(handle, inode, goal, &count, NULL, &err);
-+	EXT_ASSERT(count <= num);
++	pblock = ext3_new_blocks(handle, inode, &count, goal, &err);
++	EXT_ASSERT(count <= newex->e_num);
 +	/* FIXME: error handling here */
 +	EXT_ASSERT(err == 0);
-+#else
-+	pblock = 0;
-+#endif
 +
 +	/* insert new extent */
 +	newex->e_start = pblock;
@@ -1941,12 +1937,11 @@ Index: linux-2.4.21-suse2/fs/ext3/extents.c
 +	if (err)
 +		goto out;
 +
++
 +	/* correct on-disk inode size */
 +	if (newex->e_num > 0) {
 +		new_i_size = (loff_t) newex->e_block + newex->e_num;
 +		new_i_size = new_i_size << inode->i_blkbits;
-+		if (new_i_size > i_size_read(inode))
-+			new_i_size = i_size_read(inode);
 +		if (new_i_size > EXT3_I(inode)->i_disksize) {
 +			EXT3_I(inode)->i_disksize = new_i_size;
 +			err = ext3_mark_inode_dirty(handle, inode);
@@ -1965,14 +1960,13 @@ Index: linux-2.4.21-suse2/fs/ext3/extents.c
 +	struct ext3_extents_tree tree;
 +	int err;
 +
++	ext3_init_tree_desc(&tree, inode);
 +	ext_debug(&tree, "blocks %lu-%lu requested for inode %u\n",
 +			block, block + num,(unsigned) inode->i_ino);
-+
-+	ext3_init_tree_desc(&tree, inode);
-+	down(&EXT3_I(inode)->truncate_sem);
++	down_write(&EXT3_I(inode)->truncate_sem);
 +	err = ext3_ext_walk_space(&tree, block, num, ext3_ext_new_extent_cb);
 +	ext3_ext_invalidate_cache(&tree);
-+	up(&EXT3_I(inode)->truncate_sem);
++	up_write(&EXT3_I(inode)->truncate_sem);
 +
 +	return err;
 +}