diff -urN oldtree/block/cfq-iosched.c newtree/block/cfq-iosched.c
--- oldtree/block/cfq-iosched.c	2006-09-26 15:08:09.000000000 -0400
+++ newtree/block/cfq-iosched.c	2006-09-26 15:10:58.000000000 -0400
@@ -1182,6 +1182,10 @@
 			 */
 			cfqq->ioprio_class = task_policy_ioprio_class(tsk);
 			cfqq->ioprio = task_nice_ioprio(tsk);
+#ifdef CONFIG_STAIRCASE
+                        if (cfqq->ioprio_class == IOPRIO_CLASS_IDLE)
+                                cfq_clear_cfqq_idle_window(cfqq);
+#endif
 			break;
 		case IOPRIO_CLASS_RT:
 			cfqq->ioprio = task_ioprio(tsk);
diff -urN oldtree/include/linux/ioprio.h newtree/include/linux/ioprio.h
--- oldtree/include/linux/ioprio.h	2006-09-26 15:08:09.000000000 -0400
+++ newtree/include/linux/ioprio.h	2006-09-26 15:10:17.000000000 -0400
@@ -56,6 +56,10 @@
 {
 	if (rt_task(task))
 		return IOPRIO_CLASS_RT;
+#ifdef CONFIG_STAIRCASE
+        if (idleprio_task(task))
+                return IOPRIO_CLASS_IDLE;
+#endif
 	return IOPRIO_CLASS_BE;
 }
 
@@ -64,6 +68,12 @@
 	if (rt_task(task))
 		return (MAX_RT_PRIO - task->rt_priority) * IOPRIO_BE_NR /
 			(MAX_RT_PRIO + 1);
+#ifdef CONFIG_STAIRCASE
+        if (iso_task(task))
+                return 0;
+        if (idleprio_task(task))
+                return IOPRIO_BE_NR - 1;
+#endif
 	return (task_nice(task) + 20) / 5;
 }
 
Files oldtree/scripts/kconfig/mconf and newtree/scripts/kconfig/mconf differ
