Re: Question about prio_changed_dl()

From: luca abeni
Date: Thu Feb 25 2016 - 09:26:19 EST


Hi Peter,

On Thu, 25 Feb 2016 15:01:49 +0100
Peter Zijlstra <peterz@xxxxxxxxxxxxx> wrote:
[...]
> > so, prio_changed_dl() invokes switched_to_dl() if
> > task_on_rq_queued() is false, but in this case switched_to_dl()
> > does nothing... Am I missing something, or the
> > } else
> > switched_to_dl(rq, p);
> > is useless?
>
> Agreed, see below.
>
> > (BTW, it seems to me that switched_to_dl() is never invoked, for
> > some reason...)
>
> Hmm, it should be invoked if you do sched_setattr() to get
> SCHED_DEADLINE.

Sorry, that was me being confused...
It is prio_changed_dl() that is not invoked when the deadline
parameters are changed (I am testing a change to fix this - it actually
is included in the "Move the remaining __dl_{sub,add}_ac() calls from
core.c to deadline.c" patch I posted on Monday; I am going to extract
it in a separate patch).
switched_to_dl() is correctly invoked.

>
> ---
> Subject: sched/deadline: Remove superfluous call to switched_to_dl()

This is what I was thinking about, yes :)


Thanks,
Luca

>
> if (A || B) {
>
> } else if (A && !B) {
>
> }
>
> If A we'll take the first branch, if !A we will not satisfy the
> second. Therefore the second branch will never be taken.
>
> Cc: Juri Lelli <juri.lelli@xxxxxxx>
> Reported-by: luca abeni <luca.abeni@xxxxxxxx>
> Signed-off-by: Peter Zijlstra (Intel) <peterz@xxxxxxxxxxxxx>
> ---
> kernel/sched/deadline.c | 3 +--
> 1 file changed, 1 insertion(+), 2 deletions(-)
>
> diff --git a/kernel/sched/deadline.c b/kernel/sched/deadline.c
> index 57b939c81bce..c161c53d9424 100644
> --- a/kernel/sched/deadline.c
> +++ b/kernel/sched/deadline.c
> @@ -1768,8 +1768,7 @@ static void prio_changed_dl(struct rq *rq,
> struct task_struct *p, */
> resched_curr(rq);
> #endif /* CONFIG_SMP */
> - } else
> - switched_to_dl(rq, p);
> + }
> }
>
> const struct sched_class dl_sched_class = {
>
>