From 3e6264887a4c74e2837cf33ab16ebf56c865b30f Mon Sep 17 00:00:00 2001 From: Andy Bavier Date: Thu, 31 Jan 2008 19:12:05 +0000 Subject: [PATCH] Tried to fix a couple of minor bugs in Vserver CPU scheduler. --- patch-2.6.22.14-vs2.3.0.29.diff | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/patch-2.6.22.14-vs2.3.0.29.diff b/patch-2.6.22.14-vs2.3.0.29.diff index e23d4036e..68caf136d 100644 --- a/patch-2.6.22.14-vs2.3.0.29.diff +++ b/patch-2.6.22.14-vs2.3.0.29.diff @@ -26062,7 +26062,7 @@ diff -NurpP --minimal linux-2.6.22.10/kernel/vserver/proc.c linux-2.6.22.10-vs2. diff -NurpP --minimal linux-2.6.22.10/kernel/vserver/sched.c linux-2.6.22.10-vs2.3.0.29/kernel/vserver/sched.c --- linux-2.6.22.10/kernel/vserver/sched.c 1970-01-01 01:00:00 +0100 +++ linux-2.6.22.10-vs2.3.0.29/kernel/vserver/sched.c 2007-08-15 23:32:49 +0200 -@@ -0,0 +1,413 @@ +@@ -0,0 +1,418 @@ +/* + * linux/kernel/vserver/sched.c + * @@ -26154,6 +26154,7 @@ diff -NurpP --minimal linux-2.6.22.10/kernel/vserver/sched.c linux-2.6.22.10-vs2 +#ifdef CONFIG_VSERVER_HARDCPU + delta_min[0] = delta - integral; + vxd_check_range(delta_min[0], 0, sched_pc->interval[0]); ++ delta = integral; +#endif + /* advance time */ + sched_pc->norm_time += delta; @@ -26226,10 +26227,14 @@ diff -NurpP --minimal linux-2.6.22.10/kernel/vserver/sched.c linux-2.6.22.10-vs2 + /* next interval? */ + if (!sched_pc->fill_rate[0]) + delta_min[0] = HZ; -+ else if (tokens > sched_pc->fill_rate[0]) -+ delta_min[0] += sched_pc->interval[0] * -+ tokens / sched_pc->fill_rate[0]; -+ else ++ else if (tokens > sched_pc->fill_rate[0]) { ++ long integral; ++ integral = sched_pc->interval[0] * ++ (tokens / sched_pc->fill_rate[0]); ++ delta_min[0] = integral - delta_min[0]; ++ if (tokens % sched_pc->fill_rate[0]) ++ delta_min[0] += sched_pc->interval[0]; ++ } else + delta_min[0] = sched_pc->interval[0] - delta_min[0]; + vxd_check_range(delta_min[0], 0, INT_MAX); + -- 2.43.0