diff -Nru linux-old/fs/inode.c linux-new/fs/inode.c
--- linux-old/fs/inode.c	2002-10-23 21:47:49.000000000 -0400
+++ linux-new/fs/inode.c	2002-10-23 21:49:44.000000000 -0400
@@ -17,6 +17,7 @@
 #include <linux/swapctl.h>
 #include <linux/prefetch.h>
 #include <linux/locks.h>
+#include <linux/compiler.h>
 
 /*
  * New inode.c implementation.
@@ -296,6 +297,12 @@
 			 * so we have to start looking from the list head.
 			 */
 			tmp = head;
+
+			if (unlikely(current->need_resched)) {
+				spin_unlock(&inode_lock);
+				schedule();
+				spin_lock(&inode_lock);
+			}
 		}
 	}
 
