The following commit has been merged in the linux branch: commit 80f506918fdaaca6b574ba931536a58ce015c7be Merge: a3bafbbbb5ac49355aa35e6a722eac6ef1dff19a 2ec24ff1d1875defa742c76c9c7d74dca06b7e1f Author: Linus Torvalds torvalds@linux-foundation.org Date: Tue Oct 13 10:21:33 2009 -0700
Merge branch 'for-linus' of git://git.kernel.dk/linux-2.6-block
* 'for-linus' of git://git.kernel.dk/linux-2.6-block: cciss: Add cciss_allow_hpsa module parameter cciss: Fix multiple calls to pci_release_regions blk-settings: fix function parameter kernel-doc notation writeback: kill space in debugfs item name writeback: account IO throttling wait as iowait elv_iosched_store(): fix strstrip() misuse cfq-iosched: avoid probable slice overrun when idling cfq-iosched: apply bool value where we return 0/1 cfq-iosched: fix think time allowed for seekers cfq-iosched: fix the slice residual sign cfq-iosched: abstract out the 'may this cfqq dispatch' logic block: use proper BLK_RW_ASYNC in blk_queue_start_tag() block: Seperate read and write statistics of in_flight requests v2 block: get rid of kblock_schedule_delayed_work() cfq-iosched: fix possible problem with jiffies wraparound cfq-iosched: fix issue with rq-rq merging and fifo list ordering
diff --combined kernel/sched.c index 76c0e96,074f753..8d25be0 --- a/kernel/sched.c +++ b/kernel/sched.c @@@ -2515,17 -2515,22 +2515,17 @@@ void sched_fork(struct task_struct *p, __sched_fork(p);
/* * Revert to default priority/policy on fork if requested. */ if (unlikely(p->sched_reset_on_fork)) { - if (p->policy == SCHED_FIFO || p->policy == SCHED_RR) + if (p->policy == SCHED_FIFO || p->policy == SCHED_RR) { p->policy = SCHED_NORMAL; - - if (p->normal_prio < DEFAULT_PRIO) - p->prio = DEFAULT_PRIO; + p->normal_prio = p->static_prio; + }
if (PRIO_TO_NICE(p->static_prio) < 0) { p->static_prio = NICE_TO_PRIO(0); + p->normal_prio = p->static_prio; set_load_weight(p); }
@@@ -2536,11 -2541,6 +2536,11 @@@ p->sched_reset_on_fork = 0; }
+ /* + * Make sure we do not leak PI boosting priority to the child. + */ + p->prio = current->normal_prio; + if (!rt_prio(p->prio)) p->sched_class = &fair_sched_class;
@@@ -2581,6 -2581,8 +2581,6 @@@ void wake_up_new_task(struct task_struc BUG_ON(p->state != TASK_RUNNING); update_rq_clock(rq);
- p->prio = effective_prio(p); - if (!p->sched_class->task_new || !current->se.on_rq) { activate_task(rq, p, 0); } else { @@@ -6718,9 -6720,6 +6718,6 @@@ EXPORT_SYMBOL(yield) /* * This task is about to go to sleep on IO. Increment rq->nr_iowait so * that process accounting knows that this is a task in IO wait state. - * - * But don't do that if it is a deliberate, throttling IO wait (this task - * has set its backing_dev_info: the queue against which it should throttle) */ void __sched io_schedule(void) {