Subject: patch for vs2.3.0.36.29.6 on 2.6.32.39
From: Corey Wright <undefined@pobox.com>
Date: Sat, 23 Apr 2011 22:04:55 -0500
Sat, 23 Apr 2011 22:04:55 -0500
applying patch-2.6.32.28-vs2.3.0.36.29.6.diff to 2.6.32.39 generated the
following rejects:

fs/proc/array.c
 * removal of CONFIG_S390 (from patch context)
fs/proc/base.c
 * reaper variable initialization delayed until after validity check(s)
kernel/sched.c
 * removal of USER_SCHED (from patch context)
kernel/sched_fair.c
 * clock => clock_task (due to addition of IRQ_TIME_ACCOUNTING)
kernel/user.c
 * removal of USER_SCHED (and this file)

the attached patch applies the failed patches.

instructions
1. apply patch-2.6.32.28-vs2.3.0.36.29.6.diff to 2.6.32.39
2. apply attached patch-2.6.32.28-39-vs2.3.0.36.29.6-fixes.diff to
   2.6.32.39-vs2.3.0.36.29.6

tests
1. compile
2. testme.sh
3. testfs.sh (ext[234])
4. cgroups (cpu.shares)

corey
--
undefined@pobox.com


diff -urNpd linux-2.6.32.39-vs2.3.0.36.29.6.failed/fs/proc/array.c linux-2.6.32.39-vs2.3.0.36.29.6/fs/proc/array.c
--- linux-2.6.32.39-vs2.3.0.36.29.6.failed/fs/proc/array.c	2011-04-23 11:08:10.000000000
-0500
+++ linux-2.6.32.39-vs2.3.0.36.29.6/fs/proc/array.c	2011-04-23 11:26:09.000000000 -0500
@@ -379,6 +379,7 @@ int proc_pid_status(struct seq_file *m, 
 	task_sig(m, task);
 	task_cap(m, task);
 	cpuset_task_status_allowed(m, task);
+	task_vs_id(m, task);
 	task_context_switch_counts(m, task);
 	return 0;
 }
diff -urNpd linux-2.6.32.39-vs2.3.0.36.29.6.failed/fs/proc/base.c linux-2.6.32.39-vs2.3.0.36.29.6/fs/proc/base.c
--- linux-2.6.32.39-vs2.3.0.36.29.6.failed/fs/proc/base.c	2011-04-23 11:08:10.000000000
-0500
+++ linux-2.6.32.39-vs2.3.0.36.29.6/fs/proc/base.c	2011-04-23 11:23:48.000000000 -0500
@@ -2837,7 +2837,7 @@ int proc_pid_readdir(struct file * filp,
 		goto out_no_task;
 	nr = filp->f_pos - FIRST_PROCESS_ENTRY;
 
-	reaper = get_proc_task(filp->f_path.dentry->d_inode);
+	reaper = get_proc_task_real(filp->f_path.dentry->d_inode);
 	if (!reaper)
 		goto out_no_task;
 
diff -urNpd linux-2.6.32.39-vs2.3.0.36.29.6.failed/kernel/sched.c linux-2.6.32.39-vs2.3.0.36.29.6/kernel/sched.c
--- linux-2.6.32.39-vs2.3.0.36.29.6.failed/kernel/sched.c	2011-04-23 11:08:10.000000000
-0500
+++ linux-2.6.32.39-vs2.3.0.36.29.6/kernel/sched.c	2011-04-23 11:26:09.000000000 -0500
@@ -9949,6 +9949,10 @@ void __init sched_init(void)
 			global_rt_period(), global_rt_runtime());
 #endif /* CONFIG_RT_GROUP_SCHED */
 
+#ifdef CONFIG_FAIR_GROUP_SCHED
+	init_cfs_bandwidth(&init_task_group);
+#endif
+
 #ifdef CONFIG_CGROUP_SCHED
 	list_add(&init_task_group.list, &task_groups);
 	INIT_LIST_HEAD(&init_task_group.children);
diff -urNpd linux-2.6.32.39-vs2.3.0.36.29.6.failed/kernel/sched_fair.c linux-2.6.32.39-vs2.3.0.36.29.6/kernel/sched_fair.c
--- linux-2.6.32.39-vs2.3.0.36.29.6.failed/kernel/sched_fair.c	2011-04-23 11:08:10.000000000
-0500
+++ linux-2.6.32.39-vs2.3.0.36.29.6/kernel/sched_fair.c	2011-04-23 11:26:09.000000000
-0500
@@ -793,14 +793,25 @@ __update_curr(struct cfs_rq *cfs_rq, str
 	update_min_vruntime(cfs_rq);
 }
 
-static void update_curr(struct cfs_rq *cfs_rq)
+static void update_curr_task(struct sched_entity *curr,
+		unsigned long delta_exec)
+{
+	struct task_struct *curtask = task_of(curr);
+
+	trace_sched_stat_runtime(curtask, delta_exec, curr->vruntime);
+	cpuacct_charge(curtask, delta_exec);
+	account_group_exec_runtime(curtask, delta_exec);
+}
+
+static int update_curr_common(struct cfs_rq *cfs_rq, unsigned long *delta)
 {
 	struct sched_entity *curr = cfs_rq->curr;
-	u64 now = rq_of(cfs_rq)->clock_task;
+	struct rq *rq = rq_of(cfs_rq);
+	u64 now = rq->clock_task;
 	unsigned long delta_exec;
 
 	if (unlikely(!curr))
-		return;
+		return 1;
 
 	/*
 	 * Get the amount of time the current task was running
diff -urNpd linux-2.6.32.39-vs2.3.0.36.29.6.failed/Makefile linux-2.6.32.39-vs2.3.0.36.29.6/Makefile
--- linux-2.6.32.39-vs2.3.0.36.29.6.failed/Makefile	2011-04-23 11:08:10.000000000 -0500
+++ linux-2.6.32.39-vs2.3.0.36.29.6/Makefile	2011-04-23 11:26:09.000000000 -0500
@@ -1,7 +1,7 @@
 VERSION = 2
 PATCHLEVEL = 6
 SUBLEVEL = 32
-EXTRAVERSION = .39
+EXTRAVERSION = .39-vs2.3.0.36.29.6
 NAME = Man-Eating Seals of Antiquity
 
 # *DOCUMENTATION*