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
new file mode 100644
index 0000000000000000000000000000000000000000..86764a4af6179d34044d198cdfe8015f08eba7a6
--- /dev/null
+++ b/lustre/kernel_patches/patches/vfs-keep-inode-hashed-for-clear-inode.patch
@@ -0,0 +1,32 @@
+--- a/fs/inode.c.orig	2007-10-01 16:42:24.567821866 +0100
++++ b/fs/inode.c	2007-10-01 16:43:30.022037788 +0100
+@@ -288,6 +288,12 @@
+ 		if (inode->i_data.nrpages)
+ 			truncate_inode_pages(&inode->i_data, 0);
+ 		clear_inode(inode);
++
++		spin_lock(&inode_lock);
++		hlist_del_init(&inode->i_hash);
++		spin_unlock(&inode_lock);
++
++		wake_up_inode(inode);
+ 		destroy_inode(inode);
+ 		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++;
+@@ -455,7 +460,6 @@
+ 			if (!can_unuse(inode))
+ 				continue;
+ 		}
+-		hlist_del_init(&inode->i_hash);
+ 		list_move(&inode->i_list, &freeable);
+ 		inode->i_state |= I_FREEING;
+ 		nr_pruned++;
+
diff --git a/lustre/kernel_patches/series/2.6-rhel4.series b/lustre/kernel_patches/series/2.6-rhel4.series
index e725571b2a7683f160f6d5121d9523707451685e..a9ee4e7063175db8a46d2557926fb3039697d6e5 100644
--- a/lustre/kernel_patches/series/2.6-rhel4.series
+++ b/lustre/kernel_patches/series/2.6-rhel4.series
@@ -29,3 +29,4 @@ quota-umount-race-fix.patch
 quota-deadlock-on-pagelock-ext3.patch
 dynamic-locks-2.6.9.patch
 export-nr_free_buffer_pages.patch
+vfs-keep-inode-hashed-for-clear-inode.patch