diff -u linux-2.6.24/debian/changelog linux-2.6.24/debian/changelog --- linux-2.6.24/debian/changelog +++ linux-2.6.24/debian/changelog @@ -1,3 +1,9 @@ +linux (2.6.24-15.26ubuntu1) hardy; urgency=low + + * foo + + -- Thomas Jaeger Mon, 07 Apr 2008 00:58:44 -0400 + linux (2.6.24-15.26) hardy; urgency=low [Colin Ian King] diff -u linux-2.6.24/kernel/sched_fair.c linux-2.6.24/kernel/sched_fair.c --- linux-2.6.24/kernel/sched_fair.c +++ linux-2.6.24/kernel/sched_fair.c @@ -1110,6 +1110,16 @@ set_next_entity(cfs_rq_of(se), se); } +#ifdef CONFIG_FAIR_GROUP_SCHED +static void moved_group_fair(struct task_struct *p) +{ + struct cfs_rq *cfs_rq = task_cfs_rq(p); + + update_curr(cfs_rq); + place_entity(cfs_rq, &p->se, 1); +} +#endif + /* * All the scheduling class methods: */ @@ -1132,6 +1142,10 @@ .set_curr_task = set_curr_task_fair, .task_tick = task_tick_fair, .task_new = task_new_fair, + +#ifdef CONFIG_FAIR_GROUP_SCHED + .moved_group = moved_group_fair, +#endif }; #ifdef CONFIG_SCHED_DEBUG diff -u linux-2.6.24/include/linux/sched.h linux-2.6.24/include/linux/sched.h --- linux-2.6.24/include/linux/sched.h +++ linux-2.6.24/include/linux/sched.h @@ -848,6 +848,10 @@ void (*set_curr_task) (struct rq *rq); void (*task_tick) (struct rq *rq, struct task_struct *p); void (*task_new) (struct rq *rq, struct task_struct *p); + +#ifdef CONFIG_FAIR_GROUP_SCHED + void (*moved_group) (struct task_struct *p); +#endif }; struct load_weight { only in patch2: unchanged: --- linux-2.6.24.orig/kernel/sched.c +++ linux-2.6.24/kernel/sched.c @@ -7118,6 +7118,11 @@ set_task_cfs_rq(tsk, task_cpu(tsk)); +#ifdef CONFIG_FAIR_GROUP_SCHED + if (tsk->sched_class->moved_group) + tsk->sched_class->moved_group(tsk); +#endif + if (on_rq) { if (unlikely(running)) tsk->sched_class->set_curr_task(rq);